Plik Modelfile jest szablonem służącym do tworzenia i udostępniania niestandardowych modeli za pomocą Ollamy.
Spis treści
Format
Format pliku Modelfile:
# komentarz
INSTRUCTION arguments| Instruction | Description |
|---|---|
FROM (wymagane) | Określa podstawowy model, który zostanie użyty. |
PARAMETER | Ustawia parametry określające, w jaki sposób Ollama uruchomi model. |
TEMPLATE | Pełny szablon zapytania, który zostanie wysłany do modelu. |
SYSTEM | Określa wiadomość systemową, która zostanie ustawiona w szablonie. |
ADAPTER | Określa adaptery (Q)LoRA, które zostaną zastosowane do modelu. |
LICENSE | Określa licencję prawną. |
MESSAGE | Określa historię wiadomości. |
REQUIRES | Określa minimalną wersję Ollamy wymaganą przez model. |
Przykłady
Podstawowy plik Modelfile
Przykład pliku Modelfile służącego do utworzenia szablonu modelu Mario:
FROM llama3.2
# ustawia temperaturę na 1 [wyższa wartość zwiększa kreatywność, niższa – spójność]
PARAMETER temperature 1
# ustawia rozmiar okna kontekstowego na 4096; parametr ten kontroluje, ile tokenów LLM może użyć jako kontekst do wygenerowania następnego tokenu
PARAMETER num_ctx 4096
# ustawia niestandardową wiadomość systemową, aby określić zachowanie asystenta czatu
SYSTEM You are Mario from super mario bros, acting as an assistant.Aby go użyć:
- Zapisz go jako plik (np.
Modelfile) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>ollama run choose-a-model-name- Zacznij używać modelu!
Aby wyświetlić plik Modelfile danego modelu, użyj polecenia ollama show --modelfile.
shell
ollama show --modelfile llama3.2# Plik Modelfile wygenerowany przez polecenie "ollama show"
# Aby utworzyć nowy plik Modelfile na podstawie tego, zastąp wiersz FROM poniższym:
# FROM llama3.2:latest
FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>""""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"Instrukcje
FROM (wymagane)
Instrukcja FROM określa podstawowy model, który zostanie użyty podczas tworzenia nowego modelu.
FROM <model name>:<tag>Tworzenie na podstawie istniejącego modelu
FROM llama3.2Lista dostępnych modeli bazowych
Modele bazoweDodatkowe modele można znaleźć na tej stronie
Tworzenie na podstawie modelu Safetensors
FROM <model directory>Katalog z modelem powinien zawierać wagi Safetensors dla obsługiwanej architektury.
Obecnie obsługiwane architektury modeli:
- Llama (w tym Llama 2, Llama 3, Llama 3.1 i Llama 3.2)
- Mistral (w tym Mistral 1, Mistral 2 i Mixtral)
- Gemma (w tym Gemma 1 i Gemma 2)
- Phi3
Tworzenie na podstawie pliku GGUF
FROM ./ollama-model.ggufŚcieżka do pliku GGUF powinna być podana jako ścieżka bezwzględna lub względna względem lokalizacji pliku Modelfile.
PARAMETER
Instrukcja PARAMETER określa parametr, który można ustawić podczas uruchamiania modelu.
PARAMETER <parameter> <parametervalue>Dozwolone parametry i ich wartości
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | Ustawia rozmiar okna kontekstowego używanego do wygenerowania następnego tokenu. (Wartość domyślna: 2048) | int | num_ctx 4096 |
| repeat_last_n | Określa, jak daleko wstecz model ma się odnieść, aby zapobiec powtórzeniom. (Wartość domyślna: 64, 0 = wyłączone, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | Określa siłę kary za powtórzenia. Wyższa wartość (np. 1,5) spowoduje silniejszą karę za powtórzenia, podczas gdy niższa wartość (np. 0,9) będzie bardziej pobłażliwa. (Wartość domyślna: 1,1) | float | repeat_penalty 1.1 |
| temperature | Temperatura modelu. Zwiększenie temperatury spowoduje, że model będzie odpowiadać bardziej kreatywnie. (Wartość domyślna: 0,8) | float | temperature 0.7 |
| seed | Ustawia ziarno generatora liczb losowych używanego podczas generowania. Ustawienie tej wartości na konkretną liczbę spowoduje, że model wygeneruje ten sam tekst dla tego samego zapytania. (Wartość domyślna: 0) | int | seed 42 |
| stop | Określa sekwencje zatrzymania generowania. Gdy model napotka ten wzorzec, przestanie generować tekst i zwróci wynik. Wiele wzorców zatrzymania można ustawić, podając wiele oddzielnych parametrów stop w pliku Modelfile. | string | stop "AI assistant:" |
| num_predict | Maksymalna liczba tokenów do przewidzenia podczas generowania tekstu. (Wartość domyślna: -1, generowanie nieskończone) | int | num_predict 42 |
| draft_num_predict | Maksymalna liczba tokenów wstępnych spekulacyjnych do przewidzenia na krok, gdy jest dostępny model wstępny. Dla oddzielnych modeli wstępnych wartość domyślna wynosi 4; do osadzonych tensorów MTP wymagane jest ustawienie tego parametru. Ustawienie na 0 wyłącza generowanie spekulacyjne. | int | draft_num_predict 4 |
| top_k | Zmniejsza prawdopodobieństwo generowania treści bezsensownych. Wyższa wartość (np. 100) spowoduje bardziej zróżnicowane odpowiedzi, podczas gdy niższa wartość (np. 10) będzie bardziej konserwatywna. (Wartość domyślna: 40) | int | top_k 40 |
| top_p | Działa w połączeniu z parametrem top-k. Wyższa wartość (np. 0,95) spowoduje bardziej zróżnicowany tekst, podczas gdy niższa wartość (np. 0,5) wygeneruje bardziej skupiony i konserwatywny tekst. (Wartość domyślna: 0,9) | float | top_p 0.9 |
| min_p | Alternatywa dla parametru top*p, mająca na celu zapewnienie równowagi między jakością a różnorodnością. Parametr p reprezentuje minimalne prawdopodobieństwo, jakie musi mieć token, aby został uwzględniony, w stosunku do prawdopodobieństwa najbardziej prawdopodobnego tokenu. Na przykład, dla p=0,05 i najbardziej prawdopodobnego tokenu o prawdopodobieństwie 0,9, logity o wartości mniejszej niż 0,045 są filtrowane. (Wartość domyślna: 0,0) | float | min_p 0.05 |
TEMPLATE
TEMPLATE to pełny szablon zapytania, który jest przekazywany do modelu. Może on opcjonalnie zawierać wiadomość systemową, wiadomość użytkownika oraz odpowiedź modelu. Uwaga: składnia może być specyficzna dla danego modelu. Szablony wykorzystują składnię szablonów Go.
Zmienne szablonu
| Variable | Description |
|---|---|
{{.System}} | Wiadomość systemowa używana do określenia niestandardowego zachowania. |
{{.Prompt}} | Wiadomość z zapytaniem użytkownika. |
{{.Response}} | Odpowiedź modelu. Podczas generowania odpowiedzi tekst znajdujący się po tej zmiennej jest pomijany. |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""SYSTEM
Instrukcja SYSTEM określa wiadomość systemową, która zostanie użyta w szablonie, o ile ma to zastosowanie.
SYSTEM """<system message>"""ADAPTER
Instrukcja ADAPTER określa dostrojony adapter LoRA, który ma zostać zastosowany do modelu bazowego. Wartość adaptera powinna być ścieżką bezwzględną lub względną względem pliku Modelfile. Model bazowy powinien być określony za pomocą instrukcji FROM. Jeśli model bazowy nie jest taki sam, jak model bazowy, na którym adapter był dostrajany, zachowanie modelu będzie nieprzewidywalne.
Adapter Safetensor
ADAPTER <path to safetensor adapter>Obecnie obsługiwane adaptery Safetensor:
- Llama (w tym Llama 2, Llama 3 i Llama 3.1)
- Mistral (w tym Mistral 1, Mistral 2 i Mixtral)
- Gemma (w tym Gemma 1 i Gemma 2)
Adapter GGUF
ADAPTER ./ollama-lora.ggufLICENSE
Instrukcja LICENSE pozwala określić licencję prawną, na mocy której model używany z tym plikiem Modelfile jest udostępniany lub dystrybuowany.
LICENSE """
<license text>
"""MESSAGE
Instrukcja MESSAGE pozwala określić historię wiadomości, której model ma użyć podczas odpowiadania. Użyj wielu wystąpień polecenia MESSAGE, aby zbudować konwersację, która poprowadzi model do udzielenia odpowiedzi w podobny sposób.
MESSAGE <role> <message>Dozwolone role
| Role | Description |
|---|---|
| system | Alternatywny sposób podania wiadomości SYSTEM dla modelu. |
| user | Przykładowa wiadomość, którą mógł zadać użytkownik. |
| assistant | Przykładowa wiadomość, na jaką model powinien odpowiedzieć. |
Przykładowa konwersacja
MESSAGE user Is Toronto in Canada?
MESSAGE assistant yes
MESSAGE user Is Sacramento in Canada?
MESSAGE assistant no
MESSAGE user Is Ontario in Canada?
MESSAGE assistant yesREQUIRES
Instrukcja REQUIRES pozwala określić minimalną wersję Ollamy wymaganą przez model.
REQUIRES <version>Wersja powinna być prawidłową wersją Ollamy (np. 0.14.0).
Uwagi
- plik
Modelfilenie jest wrażliwy na wielkość liter. W przykładach użyto wielkich liter dla instrukcji, aby łatwiej było je odróżnić od argumentów. - Instrukcje mogą być podane w dowolnej kolejności. W przykładach instrukcja
FROMjest pierwsza, aby zachować czytelność.