注意:
Modelfile
の構文は開発中です。
モデルファイルは、Ollamaでモデルを作成・共有するための設計図です。
おススメ記事
フォーマット
Modelfile
のフォーマット:
# コメント
INSTRUCTION 引数
インストラクション | 説明 |
---|---|
FROM (必須) |
使用するベースモデルを定義します。 |
PARAMETER |
Ollamaがモデルを実行する方法のパラメータを設定します。 |
TEMPLATE |
モデルに送信される完全なプロンプトテンプレートです。 |
SYSTEM |
テンプレートで設定されるシステムメッセージを指定します。 |
ADAPTER |
モデルに適用する (Q)LoRA アダプターを定義します。 |
LICENSE |
法的なライセンスを指定します。 |
MESSAGE |
メッセージ履歴を指定します。 |
例
基本的な Modelfile
マリオの設計図を作成する Modelfile
の例:
FROM llama3
# 温度を1に設定 [高いほどより創造的、低いほどより一貫性がある]
PARAMETER temperature 1
# コンテキストウィンドウサイズを4096に設定。これは、LLMが次のトークンを生成するためのコンテキストとして使用できるトークン数を制御します。
PARAMETER num_ctx 4096
# チャットアシスタントの動作を指定するカスタムシステムメッセージを設定
SYSTEM あなたはスーパーマリオブラザーズのマリオで、アシスタントとして行動しています。
これを使用するには:
- ファイルとして保存します (例:
Modelfile
) ollama create choose-a-model-name -f <ファイルの場所 例: ./Modelfile>'
ollama run choose-a-model-name
- モデルの使用を開始します!
その他の例は examples ディレクトリ で利用可能です。
指定されたモデルのModelfileを表示するには、ollama show --modelfile
コマンドを使用します。
> ollama show --modelfile llama3
# "ollama show"によって生成されたModelfile
# このModelfileに基づいて新しいModelfileを構築するには、FROM行を以下のように置き換えてください:
# FROM llama3: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>
llama3から構築
FROM llama3
利用可能なベースモデルのリスト:
https://github.com/ollama/ollama#model-library
binファイルから構築
FROM ./ollama-model.bin
このbinファイルの場所は、絶対パスまたは Modelfile
の場所からの相対パスで指定する必要があります。
PARAMETER
PARAMETER
インストラクションは、モデルの実行時に設定できるパラメータを定義します。
PARAMETER <parameter> <parametervalue>
有効なパラメータと値
パラメータ | 説明 | 値の型 | 使用例 |
---|---|---|---|
mirostat | Perplexityを制御するためのMirostatサンプリングを有効にします。 (デフォルト: 0, 0 = 無効, 1 = Mirostat, 2 = Mirostat 2.0) | int | mirostat 0 |
mirostat_eta | 生成されたテキストからのフィードバックにアルゴリズムがどれだけ素早く反応するかに影響します。学習率を下げると調整が遅くなり、学習率を上げるとアルゴリズムの応答性が高くなります。 (デフォルト: 0.1) | float | mirostat_eta 0.1 |
mirostat_tau | 出力の一貫性と多様性のバランスを制御します。値を下げると、よりフォーカスされた一貫性のあるテキストになります。 (デフォルト: 5.0) | float | mirostat_tau 5.0 |
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:" |
tfs_z | Tail free samplingは、出力からあまり可能性の高くないトークンの影響を減らすために使用されます。値が高いほど (例: 2.0) 影響がより減少し、1.0の値ではこの設定が無効になります。(デフォルト: 1) | float | tfs_z 1 |
num_predict | テキストを生成するときに予測するトークンの最大数。 (デフォルト: 128, -1 = 無限生成, -2 = コンテキストを埋める) | 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 |
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からの相対パスである必要があり、ファイルはGGML形式でなければなりません。アダプターはベースモデルから調整されている必要があります。そうでない場合、動作は未定義です。
ADAPTER ./ollama-lora.bin
LICENSE
LICENSE
インストラクションでは、このModelfileで使用されるモデルが共有または配布される法的ライセンスを指定できます。
LICENSE """
<license text>
"""
MESSAGE
MESSAGE
インストラクションでは、モデルが応答する際に使用するメッセージ履歴を指定できます。MESSAGEコマンドを複数回繰り返して会話を構築し、モデルが同様の方法で回答するように導きます。
MESSAGE <role> <message>
有効なロール
ロール | 説明 |
---|---|
system | モデルにSYSTEMメッセージを提供する別の方法。 |
user | ユーザーが尋ねた可能性のあるメッセージの例。 |
assistant | モデルがどのように応答すべきかのメッセージの例。 |
会話の例
MESSAGE user トロントはカナダにありますか?
MESSAGE assistant はい
MESSAGE user サクラメントはカナダにありますか?
MESSAGE assistant いいえ
MESSAGE user オンタリオはカナダにありますか?
MESSAGE assistant はい
備考
Modelfile
は大文字と小文字を区別しません。例では、引数と区別しやすいように大文字のインストラクションを使用しています。- インストラクションは任意の順序で指定できます。例では、読みやすくするために
FROM
インストラクションを最初に配置しています。
コメント