3行でいうと

  • Modelfileは、基にするモデル(FROM)と、指示(SYSTEM)、設定(PARAMETER)を書く設計書です。
  • ollama create 名前 -f Modelfile で保存し、ollama run 名前 で使えます。
  • 公式の表では、temperature は既定0.8、num_ctx は既定2048と書かれています。
  • 同じ公式資料でも、コンテキスト長の既定値の書き方が3か所でそろっていません。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。

先に結論

Modelfileは、短いテキストファイルです。「どのモデルを土台にするか」「最初にどんな役を与えるか」「どんな設定で動かすか」を書きます。そのファイルを ollama create に渡すと、土台のモデルをそのまま使いながら、設定だけが違う「自分用の名前」のモデルができます。

最初に覚えるのは、3つで足ります。

TEMPLATE(プロンプトの書式)は、最初は触らなくてよいと見ています。理由は後の節に書きます。これは見立てです。

前提:言葉の整理

いちばん小さい例

公式のCLIの説明にある、最小の例です。

FROM gemma4
SYSTEM """You are a happy cat."""

作るときは、公式のModelfileの説明にあるとおり、次の順に進みます。

  1. 上のような内容を Modelfile という名前で保存します。
  2. ollama create 好きな名前 -f ./Modelfile を実行します。
  3. ollama run 好きな名前 で使います。

公式文書の例です。この記事では、実行していません。モデル名のgemma4は、公式の例に出てくる名前です。お手元で使っているモデル名に置き換えてください。

なお、CLIの説明のページでは ollama create -f Modelfile と、名前を書かない形で載っています。Modelfileの説明のページは choose-a-model-name(好きな名前)を入れた形です。名前を入れる形のほうが、意味がはっきりしています。

書ける命令の一覧

公式のリファレンスに載っている命令は、次の8つです。

命令 公式の説明の要約
FROM(必須) 土台にするモデルを決める
PARAMETER モデルを動かすときの設定を決める
TEMPLATE モデルに送る、プロンプト全体の書式
SYSTEM 書式に差し込まれるシステムメッセージ
LICENSE 配布時の法的なライセンスを書く
MESSAGE 会話の履歴の例を書く
REQUIRES 必要なOllamaの最低バージョン(例:0.14.0)
CAPABILITY GGUF/MLXのモデルに能力を足す

FROMには、既存のモデル名、Safetensorsのモデルの入ったフォルダ、GGUFファイルを書けます。GGUFは、手元で動かすモデルでよく使われるファイル形式です。GGUFのパスは、絶対パスか、Modelfileから見た相対パスです。

MESSAGE は、「こう聞かれたら、こう答える」という例を並べる命令です。公式の例では、トロントはカナダかと聞かれて「yes」と返す問答を並べています。答え方の型を教えたいときに使えます。

実際に使う設定値

PARAMETERで使える設定のうち、よく話題になるものを、公式の表から抜き出します。

PARAMETERの主な値(公式の表)
名前 意味(公式の説明の要約) 既定値
num_ctx 次の語を作るときに使うコンテキストの大きさ 2048
temperature 上げると答えが創造的になる 0.8
top_k 小さいと保守的、大きいと多様な答えになる 40
top_p top_kと組み、小さいと焦点が絞られる 0.9
min_p 最も確からしい語に対する、最低限の確率の割合 0.0
repeat_penalty 繰り返しをどれだけ強く避けるか 1.0(無効)
repeat_last_n 繰り返しを防ぐため、どこまで遡るか 64
seed 固定すると同じ入力で同じ文章になる 0
num_predict 生成するトークンの最大数 -1(無制限)
stop この文字列が出たら生成をやめる なし

stopは、複数行書けば複数の停止文字列を指定できます。ほかに、draft_num_predict(下書きモデルを使う推測生成の設定)もありますが、ここでは扱いません。

名前をつけて保存して、管理する

保存と管理に使う命令は、公式のCLIの説明にそろっています。

既存のモデルのModelfileを見たいときは、公式のとおり ollama show --modelfile モデル名 を使います。出力の先頭に、「新しいModelfileを作るには、FROM行をこう置き換える」という案内が出る例が載っています。他人のモデルの設定を読んで、自分用に書き写す、という使い方ができます。

APIから作ることもできます。公式のAPIの説明には、from(土台)、model(新しい名前)、system(システムメッセージ)を渡す例があります。Modelfileのファイルを作らずに済みます。

試してから固める

いきなりModelfileに書く前に、対話の中で値を試す方法が、公式のFAQにあります。ollama run の中で /set parameter num_ctx 4096 のように打つと、その会話だけ値を変えられます。気に入った値が見つかってから、Modelfileに書く、という順番が楽だと思います。これは見立てです。

数字の注意:コンテキスト長の既定値が、そろっていません

今回読んだ公式資料で、コンテキスト長の既定値は、次のように書かれていました。

どれが今のバージョンの動きかは、この記事では確認していません。見立てです。Modelfileの PARAMETER num_ctx で値を書いておけば、既定値の違いに左右されません。大きくすると、その分メモリを使います。公式のページも、大きな値にするとメモリが増える、と注意しています。

また、ollama ps の表示には、公式のContext lengthのページの例で CONTEXT の列があります。実際に割り当てられた値は、そこで見られます。

Modelfileに書けないもの

よくある失敗

気をつけること

出典

更新履歴