Skip to content

Un Modelfile es el plano para crear y compartir modelos personalizados usando Ollama.

Índice

Formato

El formato del Modelfile:

# comentario
INSTRUCTION argumentos
InstrucciónDescripción
FROM (obligatorio)Define el modelo base a usar.
PARAMETEREstablece los parámetros para cómo Ollama ejecutará el modelo.
TEMPLATELa plantilla de prompt completa que se enviará al modelo.
SYSTEMEspecifica el mensaje del sistema que se establecerá en la plantilla.
ADAPTERDefine los adaptadores (Q)LoRA que se aplicarán al modelo.
LICENSEEspecifica la licencia legal.
MESSAGEEspecifica el historial de mensajes.
REQUIRESEspecifica la versión mínima de Ollama requerida por el modelo.

Ejemplos

Modelfile básico

Un ejemplo de un Modelfile que crea un plano de Mario:

FROM llama3.2
# establece la temperatura a 1 [más alto es más creativo, más bajo es más coherente]
PARAMETER temperature 1
# establece el tamaño de la ventana de contexto a 4096, esto controla cuántos tokens puede usar el LLM como contexto para generar el siguiente token
PARAMETER num_ctx 4096

# establece un mensaje de sistema personalizado para especificar el comportamiento del asistente de chat
SYSTEM You are Mario from super mario bros, acting as an assistant.

Para usar esto:

  1. Guárdalo como un archivo (ej. Modelfile)
  2. ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>
  3. ollama run choose-a-model-name
  4. ¡Comienza a usar el modelo!

Para ver el Modelfile de un modelo determinado, usa el comando ollama show --modelfile.

shell
ollama show --modelfile llama3.2
# Modelfile generado por "ollama show"
# Para construir un nuevo Modelfile basado en este, reemplaza la línea FROM con:
# 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"

Instrucciones

FROM (Obligatorio)

La instrucción FROM define el modelo base a usar al crear un modelo.

FROM <model name>:<tag>

Construir a partir de un modelo existente

FROM llama3.2
Base Models

Una lista de modelos base disponibles

Base Models

Se pueden encontrar modelos adicionales en

Construir a partir de un modelo Safetensors

FROM <model directory>

El directorio del modelo debe contener los pesos Safetensors para una arquitectura compatible.

Arquitecturas de modelo compatibles actualmente:

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

Construir a partir de un archivo GGUF

FROM ./ollama-model.gguf

La ubicación del archivo GGUF debe especificarse como una ruta absoluta o relativa a la ubicación del Modelfile.

PARAMETER

La instrucción PARAMETER define un parámetro que se puede establecer al ejecutar el modelo.

PARAMETER <parameter> <parametervalue>

Parámetros y valores válidos

ParámetroDescripciónTipo de valorEjemplo de uso
num_ctxEstablece el tamaño de la ventana de contexto usada para generar el siguiente token. (Predeterminado: 2048)intnum_ctx 4096
repeat_last_nEstablece qué tan atrás debe mirar el modelo para evitar repeticiones. (Predeterminado: 64, 0 = desactivado, -1 = num_ctx)intrepeat_last_n 64
repeat_penaltyEstablece la fuerza con la que se penalizan las repeticiones. Un valor más alto (ej. 1.5) penalizará las repeticiones más fuertemente, mientras que un valor más bajo (ej. 0.9) será más indulgente. (Predeterminado: 1.1)floatrepeat_penalty 1.1
temperatureLa temperatura del modelo. Aumentar la temperatura hará que el modelo responda de forma más creativa. (Predeterminado: 0.8)floattemperature 0.7
seedEstablece la semilla de número aleatorio a usar para la generación. Establecer esto en un número específico hará que el modelo genere el mismo texto para el mismo prompt. (Predeterminado: 0)intseed 42
stopEstablece las secuencias de parada a usar. Cuando se encuentre este patrón, el LLM dejará de generar texto y devolverá el resultado. Se pueden establecer múltiples patrones de parada especificando múltiples parámetros stop separados en un modelfile.stringstop "AI assistant:"
num_predictNúmero máximo de tokens a predecir al generar texto. (Predeterminado: -1, generación infinita)intnum_predict 42
draft_num_predictNúmero máximo de tokens de borrador especulativo a predecir por paso cuando hay un modelo de borrador disponible. Los modelos de borrador separados tienen un valor predeterminado de 4; los tensores MTP integrados requieren establecer este parámetro. Establecer en 0 para desactivar el borrado especulativo.intdraft_num_predict 4
top_kReduce la probabilidad de generar contenido sin sentido. Un valor más alto (ej. 100) dará respuestas más diversas, mientras que un valor más bajo (ej. 10) será más conservador. (Predeterminado: 40)inttop_k 40
top_pFunciona junto con top-k. Un valor más alto (ej. 0.95) generará texto más diverso, mientras que un valor más bajo (ej. 0.5) generará texto más enfocado y conservador. (Predeterminado: 0.9)floattop_p 0.9
min_pAlternativa a topp, que busca garantizar un equilibrio entre calidad y variedad. El parámetro _p representa la probabilidad mínima para que un token sea considerado, en relación con la probabilidad del token más probable. Por ejemplo, con p=0.05 y el token más probable con una probabilidad de 0.9, se filtran los logits con un valor menor a 0.045. (Predeterminado: 0.0)floatmin_p 0.05

TEMPLATE

TEMPLATE de la plantilla de prompt completa que se pasará al modelo. Puede incluir (opcionalmente) un mensaje del sistema, un mensaje del usuario y la respuesta del modelo. Nota: la sintaxis puede ser específica de cada modelo. Las plantillas usan la sintaxis de plantillas de Go.

Variables de plantilla

VariableDescripción
&#123;&#123;.System&#125;&#125;El mensaje del sistema usado para especificar comportamiento personalizado.
&#123;&#123;.Prompt&#125;&#125;El mensaje de prompt del usuario.
&#123;&#123;.Response&#125;&#125;La respuesta del modelo. Al generar una respuesta, se omite el texto después de esta variable.
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

La instrucción SYSTEM especifica el mensaje del sistema que se usará en la plantilla, si aplica.

SYSTEM """&lt;system message&gt;"""

ADAPTER

La instrucción ADAPTER especifica un adaptador LoRA afinado que se debe aplicar al modelo base. El valor del adaptador debe ser una ruta absoluta o una ruta relativa al Modelfile. El modelo base debe especificarse con una instrucción FROM. Si el modelo base no es el mismo que el modelo base a partir del cual se afinó el adaptador, el comportamiento será errático.

Adaptador Safetensor

ADAPTER <path to safetensor adapter>

Adaptadores Safetensor compatibles actualmente:

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

Adaptador GGUF

ADAPTER ./ollama-lora.gguf

LICENSE

La instrucción LICENSE te permite especificar la licencia legal bajo la cual se comparte o distribuye el modelo usado con este Modelfile.

LICENSE """
&lt;license text&gt;
"""

MESSAGE

La instrucción MESSAGE te permite especificar un historial de mensajes que el modelo usará al responder. Usa múltiples iteraciones del comando MESSAGE para construir una conversación que guíe al modelo a responder de manera similar.

MESSAGE <role> <message>

Roles válidos

RolDescripción
systemForma alternativa de proporcionar el mensaje SYSTEM al modelo.
userUn mensaje de ejemplo de lo que el usuario podría haber preguntado.
assistantUn mensaje de ejemplo de cómo debe responder el modelo.

Ejemplo de conversación

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

La instrucción REQUIRES te permite especificar la versión mínima de Ollama requerida por el modelo.

REQUIRES <version>

La versión debe ser una versión válida de Ollama (ej. 0.14.0).

Notas

  • El Modelfile no distingue mayúsculas y minúsculas. En los ejemplos, se usan instrucciones en mayúsculas para facilitar su distinción de los argumentos.
  • Las instrucciones pueden estar en cualquier orden. En los ejemplos, la instrucción FROM está primero para que sea más fácil de leer.