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# "ollama show"によって生成されたModelfile
# このModelfileを基に新しい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利用可能なベースモデルのリスト
Base Models追加のモデルはこちらで見つけることができます
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.ggufGGUFファイルの場所は、絶対パスまたは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 | 使用する停止シーケンスを設定します。このパターンが検出されると、LLMはテキスト生成を停止して返します。複数の停止パターンは、Modelfile内で複数の個別のstopパラメータを指定することで設定できます。 | 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 | 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アダプターを指定します。アダプターの値は、絶対パスまたは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 | モデルに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命令を最初に配置しています。