Um Modelfile é a planta baixa para criar e compartilhar modelos personalizados usando o Ollama.
Table of Contents
Formato
O formato do Modelfile:
# comentário
INSTRUCTION arguments| Instruction | Description |
|---|---|
FROM (required) | Define o modelo base a ser usado. |
PARAMETER | Define os parâmetros de como o Ollama executará o modelo. |
TEMPLATE | O template de prompt completo a ser enviado para o modelo. |
SYSTEM | Especifica a mensagem de sistema que será definida no template. |
ADAPTER | Define os adaptadores (Q)LoRA a serem aplicados ao modelo. |
LICENSE | Especifica a licença legal. |
MESSAGE | Especifica o histórico de mensagens. |
REQUIRES | Especifica a versão mínima do Ollama exigida pelo modelo. |
Exemplos
Modelfile Básico
Um exemplo de um Modelfile que cria uma planta baixa do Mario:
FROM llama3.2
# define a temperatura como 1 [maior é mais criativo, menor é mais coerente]
PARAMETER temperature 1
# define o tamanho da janela de contexto como 4096, isso controla quantos tokens o LLM pode usar como contexto para gerar o próximo token
PARAMETER num_ctx 4096
# define uma mensagem de sistema personalizada para especificar o comportamento do assistente de chat
SYSTEM You are Mario from super mario bros, acting as an assistant.Para usar este arquivo:
- Salve-o como um arquivo (ex:
Modelfile) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>ollama run choose-a-model-name- Comece a usar o modelo!
Para visualizar o Modelfile de um modelo específico, use o comando ollama show --modelfile.
shell
ollama show --modelfile llama3.2# Modelfile gerado pelo comando "ollama show"
# Para criar um novo Modelfile baseado neste, substitua a linha FROM por:
# 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"Instruções
FROM (Required)
A instrução FROM define o modelo base a ser usado ao criar um modelo.
FROM <model name>:<tag>Criar a partir de um modelo existente
FROM llama3.2Uma lista de modelos base disponíveis
Modelos BaseModelos adicionais podem ser encontrados em
Criar a partir de um modelo Safetensors
FROM <model directory>O diretório do modelo deve conter os pesos Safetensors para uma arquitetura compatível.
Arquiteturas de modelo atualmente suportadas:
- Llama (incluindo Llama 2, Llama 3, Llama 3.1 e Llama 3.2)
- Mistral (incluindo Mistral 1, Mistral 2 e Mixtral)
- Gemma (incluindo Gemma 1 e Gemma 2)
- Phi3
Criar a partir de um arquivo GGUF
FROM ./ollama-model.ggufO local do arquivo GGUF deve ser especificado como um caminho absoluto ou relativo ao local do Modelfile.
PARAMETER
A instrução PARAMETER define um parâmetro que pode ser configurado quando o modelo é executado.
PARAMETER <parameter> <parametervalue>Parâmetros e Valores Válidos
| Parameter | Description | Value Type | Example Usage |
|---|---|---|---|
| num_ctx | Define o tamanho da janela de contexto usada para gerar o próximo token. (Padrão: 2048) | int | num_ctx 4096 |
| repeat_last_n | Define o quão para trás o modelo deve olhar para evitar repetições. (Padrão: 64, 0 = desativado, -1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | Define o quão fortemente as repetições serão penalizadas. Um valor mais alto (ex: 1,5) penalizará as repetições mais fortemente, enquanto um valor mais baixo (ex: 0,9) será mais tolerante. (Padrão: 1,1) | float | repeat_penalty 1.1 |
| temperature | A temperatura do modelo. Aumentar a temperatura fará com que o modelo responda de forma mais criativa. (Padrão: 0,8) | float | temperature 0.7 |
| seed | Define a semente do número aleatório a ser usada para a geração. Definir este valor para um número específico fará com que o modelo gere o mesmo texto para o mesmo prompt. (Padrão: 0) | int | seed 42 |
| stop | Define as sequências de parada a serem usadas. Quando este padrão for encontrado, o LLM parará de gerar texto e retornará. Vários padrões de parada podem ser definidos especificando múltiplos parâmetros stop separados em um modelfile. | string | stop "AI assistant:" |
| num_predict | Número máximo de tokens a prever ao gerar texto. (Padrão: -1, geração infinita) | int | num_predict 42 |
| draft_num_predict | Número máximo de tokens de rascunho especulativos a prever por passo quando um modelo de rascunho está disponível. Modelos de rascunho separados têm como padrão 4; tensores MTP embutidos exigem a definição deste parâmetro. Defina como 0 para desativar o rascunho especulativo. | int | draft_num_predict 4 |
| top_k | Reduz a probabilidade de gerar conteúdo sem sentido. Um valor mais alto (ex: 100) fornecerá respostas mais diversificadas, enquanto um valor mais baixo (ex: 10) será mais conservador. (Padrão: 40) | int | top_k 40 |
| top_p | Funciona em conjunto com o top-k. Um valor mais alto (ex: 0,95) levará a texto mais diversificado, enquanto um valor mais baixo (ex: 0,5) gerará texto mais focado e conservador. (Padrão: 0,9) | float | top_p 0.9 |
| min_p | Alternativa ao topp, e visa garantir um equilíbrio entre qualidade e variedade. O parâmetro _p representa a probabilidade mínima para que um token seja considerado, relativa à probabilidade do token mais provável. Por exemplo, com p=0,05 e o token mais provável tendo uma probabilidade de 0,9, logits com valor menor que 0,045 são filtrados. (Padrão: 0,0) | float | min_p 0.05 |
TEMPLATE
TEMPLATE do template de prompt completo a ser passado para o modelo. Ele pode incluir (opcionalmente) uma mensagem de sistema, uma mensagem do usuário e a resposta do modelo. Observação: a sintaxe pode ser específica de cada modelo. Os templates usam a sintaxe de templates Go.
Variáveis de Template
| Variable | Description |
|---|---|
{{.System}} | A mensagem de sistema usada para especificar comportamento personalizado. |
{{.Prompt}} | A mensagem de prompt do usuário. |
{{.Response}} | A resposta do modelo. Ao gerar uma resposta, o texto após esta variável é omitido. |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""SYSTEM
A instrução SYSTEM especifica a mensagem de sistema a ser usada no template, se aplicável.
SYSTEM """<system message>"""ADAPTER
A instrução ADAPTER especifica um adaptador LoRA ajustado que deve ser aplicado ao modelo base. O valor do adaptador deve ser um caminho absoluto ou um caminho relativo ao Modelfile. O modelo base deve ser especificado com uma instrução FROM. Se o modelo base não for o mesmo modelo base a partir do qual o adaptador foi ajustado, o comportamento será errático.
Adaptador Safetensor
ADAPTER <path to safetensor adapter>Adaptadores Safetensor atualmente suportados:
- Llama (incluindo Llama 2, Llama 3 e Llama 3.1)
- Mistral (incluindo Mistral 1, Mistral 2 e Mixtral)
- Gemma (incluindo Gemma 1 e Gemma 2)
Adaptador GGUF
ADAPTER ./ollama-lora.ggufLICENSE
A instrução LICENSE permite que você especifique a licença legal sob a qual o modelo usado com este Modelfile é compartilhado ou distribuído.
LICENSE """
<license text>
"""MESSAGE
A instrução MESSAGE permite que você especifique um histórico de mensagens para o modelo usar ao responder. Use múltiplas iterações do comando MESSAGE para construir uma conversa que guiará o modelo a responder de forma semelhante.
MESSAGE <role> <message>Papéis Válidos
| Role | Description |
|---|---|
| system | Forma alternativa de fornecer a mensagem SYSTEM para o modelo. |
| user | Uma mensagem de exemplo do que o usuário poderia ter perguntado. |
| assistant | Uma mensagem de exemplo de como o modelo deve responder. |
Exemplo de conversa
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
A instrução REQUIRES permite que você especifique a versão mínima do Ollama exigida pelo modelo.
REQUIRES <version>A versão deve ser uma versão válida do Ollama (ex: 0.14.0).
Notas
- O
Modelfilenão diferencia maiúsculas de minúsculas. Nos exemplos, instruções em maiúsculas são usadas para facilitar a distinção em relação aos argumentos. - As instruções podem estar em qualquer ordem. Nos exemplos, a instrução
FROMvem primeiro para manter a legibilidade.