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.