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| Instruction | Description |
|---|---|
FROM (required) | Définit le modèle de base à utiliser. |
PARAMETER | Définit les paramètres selon lesquels Ollama exécutera le modèle. |
TEMPLATE | Le modèle de prompt complet à envoyer au modèle. |
SYSTEM | Spécifie le message système qui sera défini dans le template. |
ADAPTER | Définit les adaptateurs (Q)LoRA à appliquer au modèle. |
LICENSE | Spécifie la licence légale. |
MESSAGE | Spécifie l'historique des messages. |
REQUIRES | Spé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 :
- Enregistrez-le dans un fichier (par ex.
Modelfile) ollama create choose-a-model-name -f <emplacement du fichier, par ex. ./Modelfile>ollama run choose-a-model-name- 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 }}<|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'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.2Une liste des modèles de base disponibles
Modèles de baseDes 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.ggufL'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
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | Définit la taille de la fenêtre de contexte utilisée pour générer le token suivant. (Par défaut : 2048) | int | num_ctx 4096 |
| repeat_last_n | Dé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) | int | repeat_last_n 64 |
| repeat_penalty | Dé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) | float | repeat_penalty 1.1 |
| temperature | La température du modèle. Augmenter la température rendra les réponses du modèle plus créatives. (Par défaut : 0,8) | float | temperature 0.7 |
| seed | Dé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) | int | seed 42 |
| stop | Dé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. | string | stop "AI assistant:" |
| num_predict | Nombre maximum de tokens à prédire lors de la génération de texte. (Par défaut : -1, génération infinie) | int | num_predict 42 |
| draft_num_predict | Nombre 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. | int | draft_num_predict 4 |
| top_k | Ré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) | int | top_k 40 |
| top_p | Fonctionne 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) | float | top_p 0.9 |
| min_p | Alternative 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) | float | min_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
| Variable | Description |
|---|---|
{{.System}} | Le message système utilisé pour spécifier un comportement personnalisé. |
{{.Prompt}} | Le message de prompt de l'utilisateur. |
{{.Response}} | 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 }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>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.ggufLICENSE
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
| Role | Description |
|---|---|
| system | Manière alternative de fournir le message SYSTEM au modèle. |
| user | Un exemple de message que l'utilisateur aurait pu poser. |
| assistant | Un 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 yesREQUIRES
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
Modelfilen'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
FROMest placée en premier pour garantir une lisibilité optimale.