Modelfile — це креслення для створення та поширення кастомізованих моделей за допомогою Ollama.
Зміст
Формат
Формат файлу Modelfile:
# коментар
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 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- Почніть використовувати модель!
Щоб переглянути 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 }}<|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Список доступних базових моделей
Базові моделіДодаткові моделі можна знайти за посиланням
Створити на основі моделі 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) | int | num_ctx 4096 |
| repeat_last_n | Задає, наскільки далеко в історії модель буде дивитися, щоб запобігти повторенням. (За замовчуванням: 64, 0 = вимкнено, -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 | Задає послідовності зупинки генерації. Коли модель зустрічає цей шаблон, вона припиняє генерацію тексту і повертає результат. Кілька послідовностей зупинки можна задати, вказавши кілька окремих параметрів stop у Modelfile. | string | stop "AI assistant:" |
| num_predict | Максимальна кількість токенів для передбачення під час генерації тексту. (За замовчуванням: -1, необмежена генерація) | int | num_predict 42 |
| draft_num_predict | Максимальна кількість токенів попереднього проєкту для передбачення на кожному кроці, коли доступна модель попереднього проєкту. Для окремих моделей попереднього проєкту значення за замовчуванням дорівнює 4; для вбудованих тензорів MTP потрібно встановити цей параметр. Встановіть 0, щоб вимкнути генерацію з попереднім проєктуванням. | int | draft_num_predict 4 |
| 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 | Альтернатива параметру topp, призначена для забезпечення балансу між якістю та різноманітністю. Параметр _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, який слід застосувати до базової моделі. Значення адаптера має бути абсолютним шляхом або шляхом, відносним до файлу 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.ggufLICENSE
Інструкція LICENSE дозволяє вказати ліцензійний договір, на умовах якого поширюється або розповсюджується модель, що використовується з цим Modelfile.
LICENSE """
<license text>
"""MESSAGE
Інструкція MESSAGE дозволяє задати історію повідомлень, яку модель буде використовувати під час формування відповіді. Використовуйте кілька інструкцій MESSAGE, щоб побудувати діалог, який навчить модель відповідати подібним чином.
MESSAGE <role> <message>Дійсні ролі
| Роль | Опис |
|---|---|
| system | Альтернативний спосіб надання моделі системного повідомлення. |
| user | Приклад повідомлення, яке міг надіслати користувач. |
| assistant | Приклад повідомлення, у формі якого модель має відповідати. |
Приклад діалогу
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 yesREQUIRES
Інструкція REQUIRES дозволяє задати мінімальну версію Ollama, необхідну для роботи моделі.
REQUIRES <version>Версія має бути дійсною версією Ollama (наприклад, 0.14.0).
Примітки
- Файл
Modelfileне чутливий до регістру. У прикладах інструкції записані великими літерами, щоб легше відрізняти їх від аргументів. - Інструкції можуть бути у будь-якому порядку. У прикладах інструкція
FROMйде першою для зручності читання.