Skip to content

Un Modelfile è il progetto per creare e condividere modelli personalizzati utilizzando Ollama.

Table of Contents

Format

Il formato del Modelfile:

# commento
ISTRUZIONE argomenti
InstructionDescription
FROM (required)Definisce il modello base da utilizzare.
PARAMETERImposta i parametri per l'esecuzione del modello da parte di Ollama.
TEMPLATEIl modello di prompt completo da inviare al modello.
SYSTEMSpecifica il messaggio di sistema che verrà impostato nel modello.
ADAPTERDefinisce gli adattatori (Q)LoRA da applicare al modello.
LICENSESpecifica la licenza legale.
MESSAGESpecifica la cronologia dei messaggi.
REQUIRESSpecifica 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:

  1. Salvalo come file (ad es. Modelfile)
  2. ollama create choose-a-model-name -f <percorso del file es. ./Modelfile>
  3. ollama run choose-a-model-name
  4. 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 }}&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;

{{ .System }}&lt;|eot_id|&gt;{{ end }}{{ if .Prompt }}&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;

{{ .Prompt }}&lt;|eot_id|&gt;{{ end }}&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;

{{ .Response }}&lt;|eot_id|&gt;"""
PARAMETER stop "&lt;|start_header_id|&gt;"
PARAMETER stop "&lt;|end_header_id|&gt;"
PARAMETER stop "&lt;|eot_id|&gt;"
PARAMETER stop "&lt;|reserved_special_token"

Instructions

FROM (Required)

L'istruzione FROM definisce il modello base da utilizzare durante la creazione di un modello.

FROM &lt;nome modello&gt;:&lt;tag&gt;

Build from existing model

FROM llama3.2
Modelli base

Un elenco di modelli base disponibili

Modelli base

Modelli aggiuntivi sono disponibili all'indirizzo

Build from a Safetensors model

FROM &lt;directory modello&gt;

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.gguf

Il 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 &lt;parametro&gt; &lt;valore parametro&gt;

Valid Parameters and Values

ParameterDescriptionValue TypeExample Usage
num_ctxImposta la dimensione della finestra di contesto utilizzata per generare il token successivo. (Predefinito: 2048)intnum_ctx 4096
repeat_last_nImposta quanto indietro il modello deve guardare per prevenire ripetizioni. (Predefinito: 64, 0 = disabilitato, -1 = num_ctx)intrepeat_last_n 64
repeat_penaltyImposta 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)floatrepeat_penalty 1.1
temperatureLa temperatura del modello. Aumentare la temperatura renderà le risposte del modello più creative. (Predefinito: 0,8)floattemperature 0.7
seedImposta 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)intseed 42
stopImposta 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.stringstop "AI assistant:"
num_predictNumero massimo di token da prevedere durante la generazione di testo. (Predefinito: -1, generazione infinita)intnum_predict 42
draft_num_predictNumero 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.intdraft_num_predict 4
top_kRiduce 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)inttop_k 40
top_pFunziona 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)floattop_p 0.9
min_pAlternativa 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)floatmin_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

VariableDescription
&#123;&#123;.System&#125;&#125;Il messaggio di sistema utilizzato per specificare un comportamento personalizzato.
&#123;&#123;.Prompt&#125;&#125;Il messaggio di prompt dell'utente.
&#123;&#123;.Response&#125;&#125;La risposta del modello. Durante la generazione di una risposta, il testo dopo questa variabile viene omesso.
TEMPLATE """{{ if .System }}&lt;|im_start|&gt;system
{{ .System }}&lt;|im_end|&gt;
{{ end }}{{ if .Prompt }}&lt;|im_start|&gt;user
{{ .Prompt }}&lt;|im_end|&gt;
{{ end }}&lt;|im_start|&gt;assistant
"""

SYSTEM

L'istruzione SYSTEM specifica il messaggio di sistema da utilizzare nel modello, se applicabile.

SYSTEM """&lt;system message&gt;"""

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 &lt;percorso dell'adattatore safetensor&gt;

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.gguf

LICENSE

L'istruzione LICENSE consente di specificare la licenza legale secondo cui il modello utilizzato con questo Modelfile è condiviso o distribuito.

LICENSE """
&lt;testo della licenza&gt;
"""

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 &lt;ruolo&gt; &lt;messaggio&gt;

Valid roles

RoleDescription
systemModo alternativo per fornire il messaggio SYSTEM al modello.
userUn messaggio di esempio di ciò che l'utente potrebbe aver chiesto.
assistantUn 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 &lt;versione&gt;

La versione deve essere una versione valida di Ollama (ad es. 0.14.0).

Notes

  • Il Modelfile non 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à.