マガジン

モデルの更新を追うか固定するか:ローカルAIの再現性を保つ記録の付け方

AIを使いこなす

Claudeで執筆し、GPTで自動校閲・修正しています。

記録カードを保存用と比較用に分ける手元と、机に置かれた外付けストレージ。
記事の内容をもとに制作したAI生成イメージです。実際の製品画面や検証結果の写真ではありません。

結論から言うと、「前と同じ条件で使いたい」用途なら固定、「新しい性能を試したい」用途なら追う、と使い分けるのが現実的です。ただし固定するといっても、モデルの名前だけを控えるのでは足りません。同じモデルでも、実行環境側が変わって出力がずれる可能性があるためです。 そこでこの記事では、「固定するもの」と「記録だけしておくもの」を分け、1枚で運用できる記録テンプレートを用意しました。更新を追う場合も、新しい版を別行で記録して同じ確認用プロンプトで比べる、という流れにすれば混乱しません。

この記事の目次
  1. 「完全に同じ出力」は約束されない
  2. 何を固定し、何を記録するか
  3. 運用記録テンプレート
  4. 記録を取る手順
  5. 追うか固定するかの判断表
  6. 固定したモデルの保管で気をつけること

「完全に同じ出力」は約束されない

まず期待値を整理します。PyTorchの公式ドキュメントには、リリースやコミット、プラットフォームが違うと完全に再現できる結果は保証されないという趣旨の記述があります。乱数シードを揃える方法や、決定論的な処理を強制する設定(性能が落ちる場合がある)も説明されています。

これはPyTorchについての記述で、お使いのアプリ(Ollama、LM Studioなど)にそのまま当てはまるとは限りません。ただ、ローカルで推論する環境では、モデルの重み以外にも、ソフトのバージョン、GPUやCPU、ドライバが出力に関わりうると考えておくのが安全です。

そのため目標は「完全一致」ではなく、「ずれたときに原因を絞り込める記録を残すこと」に置くのが現実的です。

何を固定し、何を記録するか

Ollamaの一覧APIでは、モデルごとに名前、更新日時、サイズ、digest、形式・ファミリー・パラメータ数・量子化レベルが返ります。モデル詳細APIでも、量子化レベル、parameters、template、ライセンスなどが取れます。記録すべき項目はおおむねこの顔ぶれと重なります。

  • モデルの実体:名前とタグ、digest(取得できるもの)、量子化。Ollamaのライブラリではタグ名にq4_K_Mやfp16といった量子化の表記が入っているものがあり、タグごとにIDとサイズも並びます。タグは名札、digestは中身を示す識別子と捉え、両方残します。
  • Hugging Faceから取る場合:huggingface_hubのダウンロード機能では、revisionにブランチ、タグ、コミットハッシュを指定できます。コミットハッシュは短縮形ではなく完全な長さが必要です。固定するなら、ブランチ名(mainなど)ではなくコミットハッシュを控えます。
  • 生成設定:OllamaのModelfileにはtemperature、seed、num_ctx、top_k、top_p、num_predict、stopなどのパラメータがあり、SYSTEMやTEMPLATEも定義できます。既定値はモデルや実行環境の設定にも左右されるため、「デフォルト」とだけ記録するのでは不十分です。デフォルトに頼らず、実際に使った値を明示的に書き残してください。
  • 実行環境:アプリのバージョン、OS、GPU、ドライバ。Modelfileには最低限のOllamaバージョンを指定するREQUIRESもあります。

運用記録テンプレート

テキストファイルやスプレッドシートにそのまま貼れる形です。値は説明用の例で、実際に測定・実行したものではありません。

【モデル記録】 ID: M-001
記録日: 2026-10-28
用途: 議事録の要約(社内メモ用)

■ モデルの実体
入手元: Ollama / Hugging Face / LM Studio など(配布URL、リポジトリID、取得ファイル名も記録)
モデル名とタグ: (例) example-model:8b-instruct-q4_K_M
digest またはコミットハッシュ: (例) 取得した値をそのまま貼る
形式 / パラメータ数 / 量子化: (例) gguf / 8B / Q4_K_M
ライセンス: (配布元の表記を確認して記入)

■ 生成設定
temperature: 0.2
seed: 42
num_ctx: 8192
top_p / top_k: (実際に適用した値。未指定なら参照した既定値とその出典・版を記録)
num_predict: 1024
stop: (使用した停止文字列。なければ「なし」)
システムプロンプト: prompts/system_v3.txt (別ファイルで版管理)
テンプレート変更: なし / あり(内容)

■ 実行環境
アプリと版: (例) Ollama x.y.z
OS / GPU / ドライバ: (例) 自分の環境
ModelfileのFROM: (使った場合)

■ 確認用プロンプト
テスト入力: tests/prompt_01.txt 〜 prompt_05.txt (機密のない説明用データ)
基準出力の保存先: baseline/M-001/
判定メモ: 構成が同じか / 数字の抜けがないか / 文体

■ 状態
固定中 / 検証中 / 廃止
次回見直し日:

記録を取る手順

手元のOllamaで取るなら、一覧APIと詳細APIを呼び、結果をそのままファイルに保存します。以下は呼び出し方の例で、この記事のために実行して確かめたものではありません。保存先のrecordsフォルダを先に作成し、アドレスは自分の環境に合わせてください。

curl http://localhost:11434/api/tags > records/tags_2026-10-28.json
curl http://localhost:11434/api/show -d '{"model": "モデル名:タグ"}' > records/show_M-001.json

JSONを保存しておけば、digestや量子化レベル、parameters、templateを手で書き写さずに済みます。ただし、モデル詳細のparametersだけでは、リクエストや環境変数による上書き設定まで記録できません。APIや環境変数で指定した値も別途保存してください。LM Studioなど画面操作が中心のアプリでは、モデル名、量子化、設定画面の値を画面のスクリーンショットとあわせて控えてください(公式資料ではモデルごとの読み込み設定を確認できます。この記事では実機の画面は確認していません)。

あとは確認用プロンプトを5本ほど決め、固定した設定で一度出力して保存します。更新後に同じ入力を流し、基準出力と見比べるための土台になります。

追うか固定するかの判断表

  • 同じ手順の業務で毎回同じ品質が欲しい、方針:固定、理由と運用:digestやコミットハッシュ、設定値を記録。アプリの更新前に記録を取り直す
  • 検証・比較の記録を残したい、方針:固定、理由と運用:比較中は1要素だけ変える
  • 新モデルを試したい、方針:追う(別行で)、理由と運用:旧版は消さず、新しい記録IDで確認用プロンプトを流して比べる
  • 日常のアイデア出しや雑談、方針:追ってよい、理由と運用:最低限、使ったモデル名と日付だけ控える
  • 以前と同じモデルか確かめたい、方針:使用する版を照合、理由と運用:digestやコミットハッシュが記録と同じか確認

「追う」場合は、更新を受け入れる条件を先に決めておくと迷いません。例えば、確認用プロンプト5本のうち、構成が崩れたものが1本以下なら切り替える、といった基準です。この数字は一例なので、用途に合わせて変えてください。

固定したモデルの保管で気をつけること

固定を続けるには、旧版の重みと必要な設定ファイルを手元に残し、その版を選んで実行する必要があります。digestやコミットハッシュを記録するだけでは固定できません。配布元で入れ替えや削除があると、あとから同じものを取れない可能性があるためです。ディスク容量と相談し、重要な版だけバックアップしてください。

また、モデルごとにライセンスの条件が異なります。業務や公開物に使う場合は、配布元の記載を記録欄に写し、不明な点は条件を読んだうえで判断してください。

見直し日を決めておくのもコツです。固定しっぱなしにせず、月に一度などの頻度で「更新版を試す行」を1本足す運用なら、再現性と新しさを両立しやすくなります。

出典・参考資料