Un Modelfile è il progetto per creare e condividere modelli personalizzati utilizzando Ollama.
Table of Contents
Format
Il formato del Modelfile:
# commento
ISTRUZIONE argomenti| Instruction | Description |
|---|---|
FROM (required) | Definisce il modello base da utilizzare. |
PARAMETER | Imposta i parametri per l'esecuzione del modello da parte di Ollama. |
TEMPLATE | Il modello di prompt completo da inviare al modello. |
SYSTEM | Specifica il messaggio di sistema che verrà impostato nel modello. |
ADAPTER | Definisce gli adattatori (Q)LoRA da applicare al modello. |
LICENSE | Specifica la licenza legale. |
MESSAGE | Specifica la cronologia dei messaggi. |
REQUIRES | Specifica la versione minima di Ollama richiesta dal modello. |
Examples
Basic Modelfile
Un esempio di Modelfile che crea un progetto Mario:
FROM llama3.2
# imposta la temperatura a 1 [più alto è più creativo, più basso è più coerente]
PARAMETER temperature 1
# imposta la dimensione della finestra di contesto a 4096, questo controlla quanti token il LLM può usare come contesto per generare il token successivo
PARAMETER num_ctx 4096
# imposta un messaggio di sistema personalizzato per specificare il comportamento dell'assistente chat
SYSTEM You are Mario from super mario bros, acting as an assistant.Per utilizzarlo:
- Salvalo come file (ad es.
Modelfile) ollama create choose-a-model-name -f <percorso del file es. ./Modelfile>ollama run choose-a-model-name- Inizia a utilizzare il modello!
Per visualizzare il Modelfile di un modello specifico, utilizza il comando ollama show --modelfile.
shell
ollama show --modelfile llama3.2# Modelfile generato da "ollama show"
# Per creare un nuovo Modelfile basato su questo, sostituisci la riga FROM con:
# 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"Instructions
FROM (Required)
L'istruzione FROM definisce il modello base da utilizzare durante la creazione di un modello.
FROM <nome modello>:<tag>Build from existing model
FROM llama3.2Un elenco di modelli base disponibili
Modelli baseModelli aggiuntivi sono disponibili all'indirizzo
Build from a Safetensors model
FROM <directory modello>La directory del modello deve contenere i pesi Safetensors per un'architettura supportata.
Architetture di modello attualmente supportate:
- Llama (inclusi Llama 2, Llama 3, Llama 3.1 e Llama 3.2)
- Mistral (inclusi Mistral 1, Mistral 2 e Mixtral)
- Gemma (inclusi Gemma 1 e Gemma 2)
- Phi3
Build from a GGUF file
FROM ./ollama-model.ggufIl percorso del file GGUF deve essere specificato come percorso assoluto o relativo alla posizione del Modelfile.
PARAMETER
L'istruzione PARAMETER definisce un parametro che può essere impostato durante l'esecuzione del modello.
PARAMETER <parametro> <valore parametro>Valid Parameters and Values
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | Imposta la dimensione della finestra di contesto utilizzata per generare il token successivo. (Predefinito: 2048) | int | num_ctx 4096 |
| repeat_last_n | Imposta quanto indietro il modello deve guardare per prevenire ripetizioni. (Predefinito: 64, 0 = disabilitato, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | Imposta quanto penalizzare fortemente le ripetizioni. Un valore più alto (ad es. 1,5) penalizzerà le ripetizioni in modo più forte, mentre un valore più basso (ad es. 0,9) sarà più tollerante. (Predefinito: 1,1) | float | repeat_penalty 1.1 |
| temperature | La temperatura del modello. Aumentare la temperatura renderà le risposte del modello più creative. (Predefinito: 0,8) | float | temperature 0.7 |
| seed | Imposta il seme del numero casuale da utilizzare per la generazione. Impostarlo su un numero specifico farà sì che il modello generi lo stesso testo per lo stesso prompt. (Predefinito: 0) | int | seed 42 |
| stop | Imposta le sequenze di arresto da utilizzare. Quando questo pattern viene rilevato, il LLM interrompe la generazione di testo e restituisce il risultato. È possibile impostare più pattern di arresto specificando più parametri stop separati in un Modelfile. | string | stop "AI assistant:" |
| num_predict | Numero massimo di token da prevedere durante la generazione di testo. (Predefinito: -1, generazione infinita) | int | num_predict 42 |
| draft_num_predict | Numero massimo di token di bozza speculativa da prevedere per passo quando è disponibile un modello di bozza. I modelli di bozza separati hanno come predefinito 4; i tensori MTP incorporati richiedono l'impostazione di questo parametro. Impostarlo su 0 per disabilitare la bozza speculativa. | int | draft_num_predict 4 |
| top_k | Riduce la probabilità di generare contenuti senza senso. Un valore più alto (ad es. 100) fornirà risposte più diverse, mentre un valore più basso (ad es. 10) sarà più conservativo. (Predefinito: 40) | int | top_k 40 |
| top_p | Funziona insieme a top-k. Un valore più alto (ad es. 0,95) porterà a un testo più diversificato, mentre un valore più basso (ad es. 0,5) genererà un testo più focalizzato e conservativo. (Predefinito: 0,9) | float | top_p 0.9 |
| min_p | Alternativa a topp, e mira a garantire un equilibrio tra qualità e varietà. Il parametro _p rappresenta la probabilità minima affinché un token venga considerato, relativa alla probabilità del token più probabile. Ad esempio, con p=0,05 e il token più probabile con una probabilità di 0,9, i logit con un valore inferiore a 0,045 vengono filtrati. (Predefinito: 0,0) | float | min_p 0.05 |
TEMPLATE
TEMPLATE è il modello di prompt completo da passare al modello. Può includere (facoltativamente) un messaggio di sistema, un messaggio dell'utente e la risposta del modello. Nota: la sintassi può essere specifica per ogni modello. I modelli utilizzano la sintassi dei template Go.
Template Variables
| Variable | Description |
|---|---|
{{.System}} | Il messaggio di sistema utilizzato per specificare un comportamento personalizzato. |
{{.Prompt}} | Il messaggio di prompt dell'utente. |
{{.Response}} | La risposta del modello. Durante la generazione di una risposta, il testo dopo questa variabile viene omesso. |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""SYSTEM
L'istruzione SYSTEM specifica il messaggio di sistema da utilizzare nel modello, se applicabile.
SYSTEM """<system message>"""ADAPTER
L'istruzione ADAPTER specifica un adattatore LoRA fine-tuning che deve essere applicato al modello base. Il valore dell'adattatore deve essere un percorso assoluto o un percorso relativo al Modelfile. Il modello base deve essere specificato con un'istruzione FROM. Se il modello base non è lo stesso da cui è stato fine-tuning l'adattatore, il comportamento sarà errático.
Safetensor adapter
ADAPTER <percorso dell'adattatore safetensor>Adattatori Safetensor attualmente supportati:
- Llama (inclusi Llama 2, Llama 3 e Llama 3.1)
- Mistral (inclusi Mistral 1, Mistral 2 e Mixtral)
- Gemma (inclusi Gemma 1 e Gemma 2)
GGUF adapter
ADAPTER ./ollama-lora.ggufLICENSE
L'istruzione LICENSE consente di specificare la licenza legale secondo cui il modello utilizzato con questo Modelfile è condiviso o distribuito.
LICENSE """
<testo della licenza>
"""MESSAGE
L'istruzione MESSAGE consente di specificare una cronologia di messaggi che il modello utilizzerà per rispondere. Utilizza più iterazioni del comando MESSAGE per creare una conversazione che guiderà il modello a rispondere in modo simile.
MESSAGE <ruolo> <messaggio>Valid roles
| Role | Description |
|---|---|
| system | Modo alternativo per fornire il messaggio SYSTEM al modello. |
| user | Un messaggio di esempio di ciò che l'utente potrebbe aver chiesto. |
| assistant | Un messaggio di esempio di come il modello dovrebbe rispondere. |
Example conversation
MESSAGE user Toronto è in Canada?
MESSAGE assistant sì
MESSAGE user Sacramento è in Canada?
MESSAGE assistant no
MESSAGE user Ontario è in Canada?
MESSAGE assistant sìREQUIRES
L'istruzione REQUIRES consente di specificare la versione minima di Ollama richiesta dal modello.
REQUIRES <versione>La versione deve essere una versione valida di Ollama (ad es. 0.14.0).
Notes
- Il
Modelfilenon fa distinzione tra maiuscole e minuscole. Negli esempi, le istruzioni in maiuscolo sono utilizzate per distinguerle più facilmente dagli argomenti. - Le istruzioni possono essere in qualsiasi ordine. Negli esempi, l'istruzione
FROMè la prima per mantenere una maggiore leggibilità.