Skip to content

Modelfile — это чертёж для создания и распространения кастомных моделей с помощью Ollama.

Содержание

Формат

Формат файла Modelfile:

# comment
INSTRUCTION arguments
ИнструкцияОписание
FROM (обязательный)Задаёт базовую модель для использования.
PARAMETERЗадаёт параметры, определяющие, как Ollama будет запускать модель.
TEMPLATEПолный шаблон запроса, который будет отправляться модели.
SYSTEMЗадаёт системное сообщение, которое будет указано в шаблоне.
ADAPTERЗадаёт адаптеры (Q)LoRA, которые будут применены к модели.
LICENSEЗадаёт юридическую лицензию.
MESSAGEЗадаёт историю сообщений.
REQUIRESЗадаёт минимальную версию Ollama, необходимую для работы модели.

Примеры

Базовый Modelfile

Пример файла Modelfile, создающего шаблон модели Марио:

FROM llama3.2
# устанавливает температуру равной 1 [чем выше значение, тем более креативным будет ответ, чем ниже — тем более связным]
PARAMETER temperature 1
# устанавливает размер контекстного окна равным 4096, это определяет, сколько токенов LLM может использовать в качестве контекста для генерации следующего токена
PARAMETER num_ctx 4096

# задаёт пользовательское системное сообщение для определения поведения чат-ассистента
SYSTEM Вы — Марио из Super Mario Bros, работающий в качестве ассистента.

Чтобы использовать этот файл:

  1. Сохраните его как файл (например, Modelfile)
  2. ollama create choose-a-model-name -f <расположение файла, например ./Modelfile>
  3. ollama run choose-a-model-name
  4. Начните использовать модель!

Чтобы посмотреть Modelfile указанной модели, используйте команду ollama show --modelfile.

shell
ollama show --modelfile llama3.2
# Modelfile сгенерирован командой "ollama show"
# Чтобы создать новый Modelfile на основе этого, замените строку FROM на:
# 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"

Инструкции

FROM (обязательный)

Инструкция FROM задаёт базовую модель, которая будет использоваться при создании модели.

FROM <model name>:<tag>

Создание на основе существующей модели

FROM llama3.2
Базовые модели

Список доступных базовых моделей

Базовые модели

Дополнительные модели можно найти здесь

Создание на основе модели Safetensors

FROM <model directory>

В каталоге модели должны находиться веса Safetensors для поддерживаемой архитектуры.

В настоящее время поддерживаются следующие архитектуры моделей:

  • Llama (включая Llama 2, Llama 3, Llama 3.1 и Llama 3.2)
  • Mistral (включая Mistral 1, Mistral 2 и Mixtral)
  • Gemma (включая Gemma 1 и Gemma 2)
  • Phi3

Создание на основе файла GGUF

FROM ./ollama-model.gguf

Расположение файла GGUF должно быть указано как абсолютный путь или относительно расположения файла Modelfile.

PARAMETER

Инструкция PARAMETER задаёт параметр, который можно установить при запуске модели.

PARAMETER <parameter> <parametervalue>

Допустимые параметры и их значения

ПараметрОписаниеТип значенияПример использования
num_ctxЗадаёт размер контекстного окна, используемого для генерации следующего токена. (Значение по умолчанию: 2048)intnum_ctx 4096
repeat_last_nЗадаёт, как далеко в истории модель будет «смотреть назад», чтобы предотвратить повторения. (Значение по умолчанию: 64, 0 = отключено, -1 = num_ctx)intrepeat_last_n 64
repeat_penaltyЗадаёт силу штрафа за повторения. Более высокое значение (например, 1,5) будет сильнее штрафовать за повторения, а более низкое (например, 0,9) будет более мягким. (Значение по умолчанию: 1,1)floatrepeat_penalty 1.1
temperatureТемпература модели. Увеличение значения температуры делает ответы модели более креативными. (Значение по умолчанию: 0,8)floattemperature 0.7
seedЗадаёт сид (начальное значение генератора случайных чисел) для генерации. Установка конкретного числа приведёт к тому, что модель будет генерировать одинаковый текст для одинакового запроса. (Значение по умолчанию: 0)intseed 42
stopЗадаёт стоп-последовательности. При обнаружении этого шаблона LLM прекратит генерацию текста и вернёт результат. Несколько стоп-последовательностей можно задать, указав несколько отдельных параметров stop в файле Modelfile.stringstop "AI assistant:"
num_predictМаксимальное количество токенов для предсказания при генерации текста. (Значение по умолчанию: -1, бесконечная генерация)intnum_predict 42
draft_num_predictМаксимальное количество предполагаемых черновых токенов для предсказания на каждом шаге, если доступна черновая модель. Для отдельных черновых моделей значение по умолчанию равно 4; для встроенных тензоров MTP требуется установка этого параметра. Установите значение 0, чтобы отключить предполагаемую генерацию.intdraft_num_predict 4
top_kСнижает вероятность генерации бессмысленного текста. Более высокое значение (например, 100) даёт более разнообразные ответы, а более низкое (например, 10) — более консервативные. (Значение по умолчанию: 40)inttop_k 40
top_pРаботает совместно с top-k. Более высокое значение (например, 0,95) приводит к более разнообразному тексту, а более низкое (например, 0,5) — к более сфокусированному и консервативному. (Значение по умолчанию: 0,9)floattop_p 0.9
min_pАльтернатива параметру topp, направленная на обеспечение баланса между качеством и разнообразием. Параметр _p представляет собой минимальную вероятность токена, при которой он учитывается, относительно вероятности наиболее вероятного токена. Например, при p=0,05 и вероятности наиболее вероятного токена, равной 0,9, логиты со значением менее 0,045 фильтруются. (Значение по умолчанию: 0,0)floatmin_p 0.05

TEMPLATE

TEMPLATE — полный шаблон запроса, который передаётся модели. Он может (опционально) включать системное сообщение, сообщение пользователя и ответ модели. Примечание: синтаксис может отличаться в зависимости от модели. Шаблоны используют синтаксис шаблонов Go template syntax.

Переменные шаблона

ПеременнаяОписание
&#123;&#123;.System&#125;&#125;Системное сообщение, используемое для задания пользовательского поведения.
&#123;&#123;.Prompt&#125;&#125;Сообщение с пользовательским запросом.
&#123;&#123;.Response&#125;&#125;Ответ модели. При генерации ответа текст после этой переменной опускается.
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

Инструкция SYSTEM задаёт системное сообщение, которое будет использоваться в шаблоне, если это применимо.

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

ADAPTER

Инструкция ADAPTER задаёт дообучённый адаптер LoRA, который должен применяться к базовой модели. Значение адаптера должно быть абсолютным путём или путём, относительным расположения файла Modelfile. Базовая модель должна быть задана инструкцией FROM. Если базовая модель не совпадает с той, на которой был дообучен адаптер, поведение будет нестабильным.

Адаптер Safetensor

ADAPTER <path to safetensor adapter>

В настоящее время поддерживаются следующие адаптеры Safetensor:

  • Llama (включая Llama 2, Llama 3 и Llama 3.1)
  • Mistral (включая Mistral 1, Mistral 2 и Mixtral)
  • Gemma (включая Gemma 1 и Gemma 2)

Адаптер GGUF

ADAPTER ./ollama-lora.gguf

LICENSE

Инструкция LICENSE позволяет задать юридическую лицензию, в соответствии с которой модель, используемая с этим файлом Modelfile, распространяется или делится.

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

MESSAGE

Инструкция MESSAGE позволяет задать историю сообщений, которую модель будет использовать при формировании ответа. Используйте несколько команд MESSAGE, чтобы собрать диалог, который подскажет модели, как отвечать в похожих ситуациях.

MESSAGE <role> <message>

Допустимые роли

РольОписание
systemАльтернативный способ задания системного сообщения для модели.
userПример сообщения, которое мог бы отправить пользователь.
assistantПример сообщения, которое должна возвращать модель.

Пример диалога

MESSAGE user Торонто находится в Канаде?
MESSAGE assistant да
MESSAGE user Сакраменто находится в Канаде?
MESSAGE assistant нет
MESSAGE user Онтарио находится в Канаде?
MESSAGE assistant да

REQUIRES

Инструкция REQUIRES позволяет задать минимальную версию Ollama, необходимую для работы модели.

REQUIRES <version>

Версия должна быть корректной версией Ollama (например, 0.14.0).

Примечания

  • Файл Modelfile не чувствителен к регистру. В примерах инструкции указаны в верхнем регистре, чтобы было проще отличать их от аргументов.
  • Инструкции могут быть указаны в любом порядке. В примерах инструкция FROM указана первой для удобства чтения.