Skip to content

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
InstructionDescription
FROM (required)Define o modelo base a ser usado.
PARAMETERDefine os parâmetros de como o Ollama executará o modelo.
TEMPLATEO template de prompt completo a ser enviado para o modelo.
SYSTEMEspecifica a mensagem de sistema que será definida no template.
ADAPTERDefine os adaptadores (Q)LoRA a serem aplicados ao modelo.
LICENSEEspecifica a licença legal.
MESSAGEEspecifica o histórico de mensagens.
REQUIRESEspecifica 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:

  1. Salve-o como um arquivo (ex: Modelfile)
  2. ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>
  3. ollama run choose-a-model-name
  4. 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 }}&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"

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.2
Modelos Base

Uma lista de modelos base disponíveis

Modelos Base

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

O 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 ​

ParameterDescriptionValue TypeExample Usage
num_ctxDefine o tamanho da janela de contexto usada para gerar o próximo token. (Padrão: 2048)intnum_ctx 4096
repeat_last_nDefine o quão para trás o modelo deve olhar para evitar repetições. (Padrão: 64, 0 = desativado, -1 = num_ctx)intrepeat_last_n 64
repeat_penaltyDefine 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)floatrepeat_penalty 1.1
temperatureA temperatura do modelo. Aumentar a temperatura fará com que o modelo responda de forma mais criativa. (Padrão: 0,8)floattemperature 0.7
seedDefine 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)intseed 42
stopDefine 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.stringstop "AI assistant:"
num_predictNúmero máximo de tokens a prever ao gerar texto. (Padrão: -1, geração infinita)intnum_predict 42
draft_num_predictNú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.intdraft_num_predict 4
top_kReduz 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)inttop_k 40
top_pFunciona 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)floattop_p 0.9
min_pAlternativa 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)floatmin_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 ​

VariableDescription
&#123;&#123;.System&#125;&#125;A mensagem de sistema usada para especificar comportamento personalizado.
&#123;&#123;.Prompt&#125;&#125;A mensagem de prompt do usuário.
&#123;&#123;.Response&#125;&#125;A resposta do modelo. Ao gerar uma resposta, o texto após esta variável é omitido.
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 ​

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

LICENSE ​

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 ​

RoleDescription
systemForma alternativa de fornecer a mensagem SYSTEM para o modelo.
userUma mensagem de exemplo do que o usuário poderia ter perguntado.
assistantUma 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 yes

REQUIRES ​

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 Modelfile nã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 FROM vem primeiro para manter a legibilidade.