Файл модели Ollama (Modelfile)
Примечание
Синтаксис Modelfile находится в стадии разработки
Файл модели - это схема для создания моделей и обмена ими с Ollama.
содержание
- Формат
- Примеры
- Инструкции
- Примечания
Формат
Формат файла модели:
# comment INSTRUCTION arguments
Инструкция | Описание |
---|---|
FROM (Обязательно) | Определяет базовую модель для использования. |
PARAMETER | Задает параметры для того, как Ollama будет запускать модель. |
TEMPLATE | Полный шаблон приглашения для отправки модели. |
SYSTEM | Указывает системное сообщение, которое будет задано в шаблоне. |
ADAPTER | Определяет адаптеры (Q)LoRa для применения к модели. |
LICENSE | Указывает юридическую лицензию. |
MESSAGE | Указывает историю сообщений. |
Примеры
Базовый файл модели
Пример файла модели, создающего схему Марио:
FROM llama3.2 # sets the temperature to 1 [higher is more creative, lower is more coherent] PARAMETER temperature 1 # sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token PARAMETER num_ctx 4096 # sets a custom system message to specify the behavior of the chat assistant SYSTEM You are Mario from super mario bros, acting as an assistant.
Чтобы использовать это:
- Сохраните его в виде файла (например, Modelfile).
- ollama create choose-a-model-name -f <расположение файла, например ./Modelfile>
- ollama run choose-a-model-name
- Начните пользоваться моделью!
Чтобы просмотреть файл модели для данной модели, используйте команду ollama show --modelfile.
ollama show --modelfile llama3.2
Output:
# Файл модели, сгенерированный с помощью "ollama show" # Чтобы создать новый файл модели на основе этого файла, замените строку FROM на: # 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"
Инструкции
FROM (Обязательно)
Инструкция FROM определяет базовую модель, которая будет использоваться при создании модели.
FROM <model name>:<tag>
Сборка на основе существующей модели
FROM llama3.2
Список доступных базовых моделей: https://github.com/ollama/ollama#model-library Дополнительные модели можно найти по адресу: https://ollama.com/library
Построение на основе Safetensors - модели
FROM <model directory>
Каталог моделей должен содержать значения весов Safetensors для поддерживаемой архитектуры.
Поддерживаемые в настоящее время архитектуры моделей:
- Llama (including Llama 2, Llama 3, Llama 3.1, и Llama 3.2)
- Mistral (including Mistral 1, Mistral 2, и Mixtral)
- Gemma (including Gemma 1 и Gemma 2)
- Phi3
Сборка из файла GGUF
FROM ./ollama-model.gguf
The GGUF file location should be specified as an absolute path or relative to the Modelfile location.
PARAMETER
Инструкция PARAMETER определяет параметр, который может быть установлен при запуске модели.
PARAMETER <parameter> <parametervalue>
Допустимые параметры и значения
Parameter | Описание | Тип значения | Пример использования |
---|---|---|---|
num_ctx | Устанавливает размер контекстного окна, используемого для генерации следующего токена. (По умолчанию: 4096) | int | num_ctx 4096 |
repeat_last_n | Определяет, на какое расстояние модель должна возвращаться, чтобы предотвратить повторение. (По умолчанию: 64, 0 = disabled, -1 = num_ctx) | int | repeat_last_n 64 |
repeat_penalty | Устанавливает степень строгого наказания за повторения. Более высокое значение (например, 1,5) приведет к более строгому наказанию за повторения, в то время как более низкое значение (например, 0,9) будет более мягким. (По умолчанию: 1,1) | float | repeat_penalty 1.1 |
temperature | Температура модели. При повышении температуры модель будет реагировать более творчески. (По умолчанию: 0,8) | float | temperature 0.7 |
seed | Задает начальное значение случайного числа, которое будет использоваться для генерации. Установка этого значения на определенное число заставит модель генерировать один и тот же текст для одного и того же запроса. (По умолчанию: 0) | int | seed 42 |
stop | Устанавливает используемые последовательности остановок. При обнаружении этого шаблона LLM прекратит генерировать текст и вернет данные. Можно задать несколько шаблонов остановок, указав несколько отдельных параметров остановки в файле модели. | string | stop "AI assistant:" |
num_predict | Максимальное количество токенов, которое можно предсказать при генерации текста. (По умолчанию: -1, бесконечная генерация) | int | num_predict 42 |
top_k | Снижает вероятность появления бессмыслицы. Большее значение (например, 100) даст более разнообразные ответы, в то время как меньшее значение (например, 10) будет более консервативным. (По умолчанию: 40) | int | top_k 40 |
top_p | Работает совместно с top-k. Более высокое значение (например, 0,95) приведет к более разнообразному тексту, в то время как более низкое значение (например, 0,5) приведет к более целенаправленному и консервативному тексту. (По умолчанию: 0,9) | float | top_p 0.9 |
min_p | Альтернатива top_p и направлена на обеспечение баланса качества и разнообразия. Параметр p представляет минимальную вероятность того, что токен будет рассмотрен, по сравнению с вероятностью наиболее вероятного токена. Например, при p=0,05 и наиболее вероятном значении токена, имеющем вероятность 0,9, логиты со значением менее 0,045 будут отфильтрованы. (По умолчанию: 0,0) | float | min_p 0.05 |
TEMPLATE
TEMPLATE - полный шаблон запроса, который будет передан в модель. Он может включать (необязательно) системное сообщение, сообщение пользователя и ответ от модели. Примечание: синтаксис может зависеть от модели. В шаблонах используется синтаксис шаблона Go.
Переменные шаблона
Переменная | Описание |
---|---|
{{ .System }} | Системное сообщение, используемое для указания пользовательского поведения. |
{{ .Prompt }} | Сообщение с приглашением пользователя. |
{{ .Response }} | Ответ от модели. При генерации ответа текст после этой переменной опускается. |
TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant """
SYSTEM
Инструкция SYSTEM определяет системное сообщение, которое будет использоваться в шаблоне, если это применимо.
SYSTEM """<system message>"""
ADAPTER
Инструкция ADAPTER определяет адаптер точной настройки LoRa, который должен применяться к базовой модели. Значением адаптера должен быть абсолютный путь или путь относительно файла модели. Базовая модель должна быть указана с помощью инструкции FROM. Если базовая модель отличается от базовой модели, на основе которой был настроен адаптер, поведение будет неустойчивым.
Адаптер Safetenso
ADAPTER <path to safetensor adapter>
Поддерживаемые в настоящее время адаптеры Safetensor:
- Llama (включая Llama 2, Llama 3, and Llama 3.1)
- Mistral (включая Mistral 1, Mistral 2, and Mixtral)
- Gemma (включая Gemma 1 and Gemma 2)
Адаптер GGUF
ADAPTER ./ollama-lora.gguf
LICENSE
Инструкция LICENSE позволяет вам указать юридическую лицензию, под которой предоставляется общий доступ к модели, используемой с этим файлом модели.
LICENSE """ <license text> """
MESSAGE
Инструкция MESSAGE позволяет вам указать историю сообщений, которую модель будет использовать при ответе. Используйте несколько повторений команды MESSAGE, чтобы создать диалог, который поможет модели ответить аналогичным образом.
MESSAGE <role> <message>
Допустимые роли
Роль | Описание |
---|---|
system | Альтернативный способ предоставления системного сообщения для модели. |
user | Пример сообщения о том, что мог бы спросить пользователь. |
assistant | Пример сообщения о том, как должна реагировать модель. |
Example conversation
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
Примечания
- в файле модели регистр не учитывается. В примерах используются команды в верхнем регистре, чтобы их было легче отличить от аргументов.
- Инструкции могут быть в любом порядке. В примерах инструкция FROM стоит первой, чтобы ее было легко прочитать.