Ein Modelfile ist die Blaupause zum Erstellen und Teilen von angepassten Modellen mithilfe von Ollama.
Inhaltsverzeichnis
Format
Das Format des Modelfile:
# Kommentar
INSTRUCTION arguments| Instruction | Description |
|---|---|
FROM (required) | Definiert das zu verwendende Basismodell. |
PARAMETER | Legt die Parameter fest, mit denen Ollama das Modell ausführt. |
TEMPLATE | Die vollständige Prompt-Vorlage, die an das Modell gesendet wird. |
SYSTEM | Gibt die Systemnachricht an, die in der Vorlage festgelegt wird. |
ADAPTER | Definiert die (Q)LoRA-Adapter, die auf das Modell angewendet werden sollen. |
LICENSE | Gibt die rechtliche Lizenz an. |
MESSAGE | Gibt den Nachrichtenverlauf an. |
REQUIRES | Gibt die vom Modell erforderliche Mindestversion von Ollama an. |
Beispiele
Grundlegendes Modelfile
Ein Beispiel für ein Modelfile, das eine Mario-Blaupause erstellt:
FROM llama3.2
# Legt die Temperatur auf 1 fest [höher ist kreativer, niedriger ist kohärenter]
PARAMETER temperature 1
# Legt die Größe des Kontextfensters auf 4096 fest, dies steuert, wie viele Token das LLM als Kontext zur Generierung des nächsten Tokens verwenden kann
PARAMETER num_ctx 4096
# Legt eine benutzerdefinierte Systemnachricht fest, um das Verhalten des Chat-Assistenten zu definieren
SYSTEM You are Mario from super mario bros, acting as an assistant.So verwenden Sie diese:
- Speichern Sie sie als Datei (z. B.
Modelfile) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>ollama run choose-a-model-name- Beginnen Sie mit der Nutzung des Modells!
Um das Modelfile eines bestimmten Modells anzuzeigen, verwenden Sie den Befehl ollama show --modelfile.
shell
ollama show --modelfile llama3.2# Modelfile generiert von "ollama show"
# Um ein neues Modelfile auf Basis dieses zu erstellen, ersetzen Sie die FROM-Zeile durch:
# 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"Anweisungen
FROM (Erforderlich)
Die FROM-Anweisung definiert das Basismodell, das beim Erstellen eines Modells verwendet wird.
FROM <model name>:<tag>Aus vorhandenem Modell erstellen
FROM llama3.2Eine Liste der verfügbaren Basismodelle
BasismodelleWeitere Modelle finden Sie unter
Aus einem Safetensors-Modell erstellen
FROM <model directory>Das Modellverzeichnis sollte die Safetensors-Gewichte für eine unterstützte Architektur enthalten.
Derzeit unterstützte Modellarchitekturen:
- Llama (einschließlich Llama 2, Llama 3, Llama 3.1 und Llama 3.2)
- Mistral (einschließlich Mistral 1, Mistral 2 und Mixtral)
- Gemma (einschließlich Gemma 1 und Gemma 2)
- Phi3
Aus einer GGUF-Datei erstellen
FROM ./ollama-model.ggufDer Speicherort der GGUF-Datei sollte als absoluter Pfad oder relativ zum Speicherort des Modelfile angegeben werden.
PARAMETER
Die PARAMETER-Anweisung definiert einen Parameter, der beim Ausführen des Modells festgelegt werden kann.
PARAMETER <parameter> <parametervalue>Gültige Parameter und Werte
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | Legt die Größe des Kontextfensters fest, das zur Generierung des nächsten Tokens verwendet wird. (Standard: 2048) | int | num_ctx 4096 |
| repeat_last_n | Legt fest, wie weit das Modell zurückblickt, um Wiederholungen zu vermeiden. (Standard: 64, 0 = deaktiviert, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | Legt fest, wie stark Wiederholungen bestraft werden. Ein höherer Wert (z. B. 1,5) bestraft Wiederholungen stärker, während ein niedrigerer Wert (z. B. 0,9) nachsichtiger ist. (Standard: 1,1) | float | repeat_penalty 1.1 |
| temperature | Die Temperatur des Modells. Eine Erhöhung der Temperatur führt dazu, dass das Modell kreativer antwortet. (Standard: 0,8) | float | temperature 0.7 |
| seed | Legt den Zufallsstartwert fest, der für die Generierung verwendet wird. Wenn Sie diesen auf eine bestimmte Zahl setzen, generiert das Modell für denselben Prompt immer denselben Text. (Standard: 0) | int | seed 42 |
| stop | Legt die zu verwendenden Stop-Sequenzen fest. Wenn dieses Muster auftritt, stoppt das LLM die Generierung von Text und gibt das Ergebnis zurück. Mehrere Stop-Muster können festgelegt werden, indem mehrere separate stop-Parameter in einem Modelfile angegeben werden. | string | stop "AI assistant:" |
| num_predict | Maximale Anzahl von Tokens, die bei der Textgenerierung vorhergesagt werden sollen. (Standard: -1, unendliche Generierung) | int | num_predict 42 |
| draft_num_predict | Maximale Anzahl von spekulativen Entwurfs-Tokens, die pro Schritt vorhergesagt werden sollen, wenn ein Entwurfsmodell verfügbar ist. Separate Entwurfsmodelle verwenden standardmäßig 4; eingebettete MTP-Tensoren erfordern die Festlegung dieses Parameters. Setzen Sie ihn auf 0, um die spekulative Generierung zu deaktivieren. | int | draft_num_predict 4 |
| top_k | Reduziert die Wahrscheinlichkeit, unsinnigen Text zu generieren. Ein höherer Wert (z. B. 100) liefert vielfältigere Antworten, während ein niedrigerer Wert (z. B. 10) konservativer ist. (Standard: 40) | int | top_k 40 |
| top_p | Funktioniert zusammen mit Top-K. Ein höherer Wert (z. B. 0,95) führt zu vielfältigerem Text, während ein niedrigerer Wert (z. B. 0,5) fokussierteren und konservativeren Text generiert. (Standard: 0,9) | float | top_p 0.9 |
| min_p | Alternative zu Top-P und zielt darauf ab, ein Gleichgewicht zwischen Qualität und Vielfalt zu gewährleisten. Der Parameter p repräsentiert die Mindestwahrscheinlichkeit, die ein Token haben muss, um berücksichtigt zu werden, relativ zur Wahrscheinlichkeit des wahrscheinlichsten Tokens. Beispiel: Bei p=0,05 und einer Wahrscheinlichkeit von 0,9 für das wahrscheinlichste Token werden Logits mit einem Wert unter 0,045 herausgefiltert. (Standard: 0,0) | float | min_p 0.05 |
TEMPLATE
TEMPLATE der vollständigen Prompt-Vorlage, die an das Modell übergeben wird. Sie kann optional eine Systemnachricht, eine Benutzernachricht und die Antwort des Modells enthalten. Hinweis: Die Syntax kann modellspezifisch sein. Vorlagen verwenden die Go-Template-Syntax.
Template-Variablen
| Variable | Description |
|---|---|
{{.System}} | Die Systemnachricht, die zur Festlegung benutzerdefinierten Verhaltens verwendet wird. |
{{.Prompt}} | Die Benutzer-Prompt-Nachricht. |
{{.Response}} | Die Antwort des Modells. Bei der Generierung einer Antwort wird Text nach dieser Variable weggelassen. |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""SYSTEM
Die SYSTEM-Anweisung gibt die Systemnachricht an, die in der Vorlage verwendet werden soll, falls zutreffend.
SYSTEM """<system message>"""ADAPTER
Die ADAPTER-Anweisung gibt einen fein abgestimmten LoRA-Adapter an, der auf das Basismodell angewendet werden soll. Der Wert des Adapters sollte ein absoluter Pfad oder ein Pfad relativ zum Modelfile sein. Das Basismodell sollte mit einer FROM-Anweisung angegeben werden. Wenn das Basismodell nicht mit dem Basismodell übereinstimmt, von dem der Adapter abgestimmt wurde, ist das Verhalten inkonsistent.
Safetensor-Adapter
ADAPTER <path to safetensor adapter>Derzeit unterstützte Safetensor-Adapter:
- Llama (einschließlich Llama 2, Llama 3 und Llama 3.1)
- Mistral (einschließlich Mistral 1, Mistral 2 und Mixtral)
- Gemma (einschließlich Gemma 1 und Gemma 2)
GGUF-Adapter
ADAPTER ./ollama-lora.ggufLICENSE
Die LICENSE-Anweisung ermöglicht es Ihnen, die rechtliche Lizenz anzugeben, unter der das mit diesem Modelfile verwendete Modell geteilt oder verteilt wird.
LICENSE """
<license text>
"""MESSAGE
Die MESSAGE-Anweisung ermöglicht es Ihnen, einen Nachrichtenverlauf anzugeben, den das Modell bei der Antwortgenerierung verwenden soll. Verwenden Sie mehrere Iterationen des MESSAGE-Befehls, um einen Dialog aufzubauen, der das Modell dazu leitet, auf ähnliche Weise zu antworten.
MESSAGE <role> <message>Gültige Rollen
| Role | Description |
|---|---|
| system | Alternative Möglichkeit, die SYSTEM-Nachricht für das Modell bereitzustellen. |
| user | Eine Beispielnachricht für das, was der Benutzer gefragt haben könnte. |
| assistant | Eine Beispielnachricht für die Art und Weise, wie das Modell antworten soll. |
Beispielkonversation
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
Die REQUIRES-Anweisung ermöglicht es Ihnen, die vom Modell erforderliche Mindestversion von Ollama anzugeben.
REQUIRES <version>Die Version sollte eine gültige Ollama-Version sein (z. B. 0.14.0).
Hinweise
- Das
Modelfileist nicht case-sensitive. In den Beispielen werden großgeschriebene Anweisungen verwendet, um sie einfacher von Argumenten unterscheiden zu können. - Anweisungen können in beliebiger Reihenfolge angegeben werden. In den Beispielen steht die
FROM-Anweisung zuerst, um die Lesbarkeit zu erhöhen.