Skip to content

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.

Щоб використовувати цей файл:

  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Задає послідовності зупинки генерації. Коли модель зустрічає цей шаблон, вона припиняє генерацію тексту і повертає результат. Кілька послідовностей зупинки можна задати, вказавши кілька окремих параметрів 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 синтаксис шаблонів.

Змінні шаблону

ЗміннаОпис
&#123;&#123;.System&#125;&#125;Системне повідомлення, яке використовується для визначення кастомної поведінки.
&#123;&#123;.Prompt&#125;&#125;Повідомлення із запитом користувача.
&#123;&#123;.Response&#125;&#125;Відповідь моделі. Під час генерації відповіді текст після цієї змінної ігнорується.
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.gguf

LICENSE

Інструкція 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 yes

REQUIRES

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

REQUIRES <version>

Версія має бути дійсною версією Ollama (наприклад, 0.14.0).

Примітки

  • Файл Modelfile не чутливий до регістру. У прикладах інструкції записані великими літерами, щоб легше відрізняти їх від аргументів.
  • Інструкції можуть бути у будь-якому порядку. У прикладах інструкція FROM йде першою для зручності читання.