Ollama モデルファイル

AI・機械学習

注意: Modelfile の構文は開発中です。

モデルファイルは、Ollamaでモデルを作成・共有するための設計図です。


おススメ記事

DifyとローカルLLMを使用して複数のエージェントを設定して議論する方法
この記事では、DifyとOllamaを使用してローカルLLMを構築し、複数のLLMエージェントを設定してAIが社会に与える影響について議論を行い、その結果を記事として生成する手順について説明します。前提条件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 あなたはスーパーマリオブラザーズのマリオで、アシスタントとして行動しています。

これを使用するには:

  1. ファイルとして保存します (例: Modelfile)
  2. ollama create choose-a-model-name -f <ファイルの場所 例: ./Modelfile>'
  3. ollama run choose-a-model-name
  4. モデルの使用を開始します!

その他の例は 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 インストラクションを最初に配置しています。

コメント

タイトルとURLをコピーしました