Skip to content

Un Modelfile est le plan de référence pour créer et partager des modèles personnalisés à l'aide d'Ollama.

Table of Contents

Format

Le format du Modelfile :

# commentaire
INSTRUCTION arguments
InstructionDescription
FROM (required)Définit le modèle de base à utiliser.
PARAMETERDéfinit les paramètres selon lesquels Ollama exécutera le modèle.
TEMPLATELe modèle de prompt complet à envoyer au modèle.
SYSTEMSpécifie le message système qui sera défini dans le template.
ADAPTERDéfinit les adaptateurs (Q)LoRA à appliquer au modèle.
LICENSESpécifie la licence légale.
MESSAGESpécifie l'historique des messages.
REQUIRESSpécifie la version minimale d'Ollama requise par le modèle.

Examples

Basic Modelfile

Un exemple de Modelfile créant un plan de référence pour Mario :

FROM llama3.2
# définit la température à 1 [plus la valeur est élevée, plus les réponses sont créatives, plus elle est basse, plus elles sont cohérentes]
PARAMETER temperature 1
# définit la taille de la fenêtre de contexte à 4096, ce qui contrôle le nombre de tokens que le LLM peut utiliser comme contexte pour générer le token suivant
PARAMETER num_ctx 4096

# définit un message système personnalisé pour spécifier le comportement de l'assistant de chat
SYSTEM You are Mario from super mario bros, acting as an assistant.

Pour l'utiliser :

  1. Enregistrez-le dans un fichier (par ex. Modelfile)
  2. ollama create choose-a-model-name -f <emplacement du fichier, par ex. ./Modelfile>
  3. ollama run choose-a-model-name
  4. Commencez à utiliser le modèle !

Pour afficher le Modelfile d'un modèle donné, utilisez la commande ollama show --modelfile.

shell
ollama show --modelfile llama3.2
# Modelfile généré par "ollama show"
# Pour construire un nouveau Modelfile basé sur celui-ci, remplacez la ligne FROM par :
# 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'instruction FROM définit le modèle de base à utiliser lors de la création d'un modèle.

FROM <model name>:<tag>

Build from existing model

FROM llama3.2
Modèles de base

Une liste des modèles de base disponibles

Modèles de base

Des modèles supplémentaires sont disponibles à l'adresse

Build from a Safetensors model

FROM <model directory>

Le répertoire du modèle doit contenir les poids Safetensors pour une architecture prise en charge.

Architectures de modèle actuellement prises en charge :

  • Llama (y compris Llama 2, Llama 3, Llama 3.1 et Llama 3.2)
  • Mistral (y compris Mistral 1, Mistral 2 et Mixtral)
  • Gemma (y compris Gemma 1 et Gemma 2)
  • Phi3

Build from a GGUF file

FROM ./ollama-model.gguf

L'emplacement du fichier GGUF doit être spécifié sous la forme d'un chemin absolu ou relatif à l'emplacement du Modelfile.

PARAMETER

L'instruction PARAMETER définit un paramètre pouvant être défini lors de l'exécution du modèle.

PARAMETER <parameter> <parametervalue>

Valid Parameters and Values

ParameterDescriptionValue TypeExample Usage
num_ctxDéfinit la taille de la fenêtre de contexte utilisée pour générer le token suivant. (Par défaut : 2048)intnum_ctx 4096
repeat_last_nDéfinit la profondeur de regard en arrière du modèle pour éviter les répétitions. (Par défaut : 64, 0 = désactivé, -1 = num_ctx)intrepeat_last_n 64
repeat_penaltyDéfinit la force de la pénalité appliquée aux répétitions. Une valeur plus élevée (par ex. 1,5) appliquera une pénalité plus forte aux répétitions, tandis qu'une valeur plus basse (par ex. 0,9) sera plus indulgente. (Par défaut : 1,1)floatrepeat_penalty 1.1
temperatureLa température du modèle. Augmenter la température rendra les réponses du modèle plus créatives. (Par défaut : 0,8)floattemperature 0.7
seedDéfinit la graine du générateur de nombres aléatoires à utiliser pour la génération. Définir cette valeur à un nombre spécifique fera générer le même texte par le modèle pour le même prompt. (Par défaut : 0)intseed 42
stopDéfinit les séquences d'arrêt à utiliser. Lorsque ce motif est rencontré, le LLM arrête de générer du texte et renvoie le résultat. Plusieurs motifs d'arrêt peuvent être définis en spécifiant plusieurs paramètres stop distincts dans un Modelfile.stringstop "AI assistant:"
num_predictNombre maximum de tokens à prédire lors de la génération de texte. (Par défaut : -1, génération infinie)intnum_predict 42
draft_num_predictNombre maximum de tokens de brouillon spéculatifs à prédire par étape lorsqu'un modèle de brouillon est disponible. Les modèles de brouillon distincts ont une valeur par défaut de 4 ; les tenseurs MTP intégrés nécessitent la définition de ce paramètre. Définissez-le à 0 pour désactiver le brouillon spéculatif.intdraft_num_predict 4
top_kRéduit la probabilité de générer du contenu incohérent. Une valeur plus élevée (par ex. 100) donnera des réponses plus diversifiées, tandis qu'une valeur plus basse (par ex. 10) sera plus conservatrice. (Par défaut : 40)inttop_k 40
top_pFonctionne conjointement avec top-k. Une valeur plus élevée (par ex. 0,95) générera du texte plus diversifié, tandis qu'une valeur plus basse (par ex. 0,5) générera du texte plus ciblé et conservateur. (Par défaut : 0,9)floattop_p 0.9
min_pAlternative au topp, visant à garantir un équilibre entre qualité et diversité. Le paramètre _p représente la probabilité minimale pour qu'un token soit pris en compte, par rapport à la probabilité du token le plus probable. Par exemple, avec p=0,05 et le token le plus probable ayant une probabilité de 0,9, les logits avec une valeur inférieure à 0,045 sont filtrés. (Par défaut : 0,0)floatmin_p 0.05

TEMPLATE

Le TEMPLATE du modèle de prompt complet à transmettre au modèle. Il peut inclure (éventuellement) un message système, un message utilisateur et la réponse du modèle. Remarque : la syntaxe peut être spécifique à chaque modèle. Les templates utilisent la syntaxe de template Go.

Template Variables

VariableDescription
&#123;&#123;.System&#125;&#125;Le message système utilisé pour spécifier un comportement personnalisé.
&#123;&#123;.Prompt&#125;&#125;Le message de prompt de l'utilisateur.
&#123;&#123;.Response&#125;&#125;La réponse du modèle. Lors de la génération d'une réponse, le texte après cette variable est omis.
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'instruction SYSTEM spécifie le message système à utiliser dans le template, le cas échéant.

SYSTEM """<system message>"""

ADAPTER

L'instruction ADAPTER spécifie un adaptateur LoRA fine-tuné qui doit être appliqué au modèle de base. La valeur de l'adaptateur doit être un chemin absolu ou un chemin relatif au Modelfile. Le modèle de base doit être spécifié à l'aide de l'instruction FROM. Si le modèle de base n'est pas le même que celui à partir duquel l'adaptateur a été fine-tuné, le comportement sera erratique.

Safetensor adapter

ADAPTER <path to safetensor adapter>

Adaptateurs Safetensor actuellement pris en charge :

  • Llama (y compris Llama 2, Llama 3 et Llama 3.1)
  • Mistral (y compris Mistral 1, Mistral 2 et Mixtral)
  • Gemma (y compris Gemma 1 et Gemma 2)

GGUF adapter

ADAPTER ./ollama-lora.gguf

LICENSE

L'instruction LICENSE vous permet de spécifier la licence légale sous laquelle le modèle utilisé avec ce Modelfile est partagé ou distribué.

LICENSE """
<license text>
"""

MESSAGE

L'instruction MESSAGE vous permet de spécifier un historique de messages que le modèle utilisera pour répondre. Utilisez plusieurs itérations de la commande MESSAGE pour construire une conversation qui guidera le modèle pour répondre de manière similaire.

MESSAGE <role> <message>

Valid roles

RoleDescription
systemManière alternative de fournir le message SYSTEM au modèle.
userUn exemple de message que l'utilisateur aurait pu poser.
assistantUn exemple de message de la façon dont le modèle doit répondre.

Example conversation

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 yes

REQUIRES

L'instruction REQUIRES vous permet de spécifier la version minimale d'Ollama requise par le modèle.

REQUIRES <version>

La version doit être une version valide d'Ollama (par ex. 0.14.0).

Notes

  • Le Modelfile n'est pas sensible à la casse. Dans les exemples, les instructions en majuscules sont utilisées pour les distinguer plus facilement des arguments.
  • Les instructions peuvent être dans n'importe quel ordre. Dans les exemples, l'instruction FROM est placée en premier pour garantir une lisibilité optimale.