run_id で残す、再現可能な検証の型
AI 公開日 初級

run_id で残す、再現可能な検証の型

ローカルLLM検証でいちばん大切なのは結果の数字より、条件と結果を後から比較できる記録の型です。

クムビーバー
クムビーバー 現場実装 / Platform Engineer

現場実装の クムビーバー です。前回、ワケハトが「比較できる座標軸が必要」と書きました。その座標軸を実装で支える最小単位が run_id です。これは業界標準の仕様名ではなく、この連載(社内検証)での呼び方です。同等の一意な実行IDがあれば名前は問いません。

ローカルLLMの検証で失敗しやすいのは、印象の良いデモを一度見て「これでいこう」と決めてしまうことです。数週間後、設定を変えたのか、プロンプトを変えたのか、モデルを差し替えたのかが分からなくなり、比較不能になります。

図1: run_id に条件と結果を束ねる
図1: run_id に条件と結果を束ねる

ポイント
数字より先に、後から比較できる run_id の束ね方を固定します。

フォルダ整理だけでは足りない理由

日付フォルダに結果を置くだけでも整理にはなります。ただし次が起きると壊れます。

  • 同じ日に複数プロファイルを試す
  • 途中でパラメータを変えて上書き保存する
  • 「前回より速くなった」の前回が誰の記憶か分からない
  • 失敗 run を消してしまい、再発時に手がかりがない

一意な run_id があれば、比較レポートも自動化できます。社内基盤では概ね次の形です。

results/<日付>/<run_id>/

run_id には日時、モデル、プロファイル、短い乱数が入り、衝突しにくくします。名前の美しさより、後から辿れることが目的です。

1回の run に残すべきもの

成果物役割無いと困る場面
メタ情報git commit、モデル、ランタイム、プロファイル、コマンド、endpoint「どの版で測ったか」が消える
起動プロファイルのスナップショットそのとき実際に使った設定YAMLを後から編集して記憶とズレる
ハードウェア概要ホスト / GPU / Docker のプローブ開発機と実機を混同する
性能メトリクスリクエスト単位と要約p95 や error を説明できない
品質結果タスクごとの合否・詳細速度だけで誤採用する
人間可読サマリ次に変える1軸会議が数字の読み上げで終わる
ランタイムログコンテナやコマンドの出力起動失敗をモデル劣化と誤認する

「数字だけ」や「チャットのスクショだけ」では足りません。数字は条件とセットで初めて意味を持ちます。

良い比較のための運用ルール

1. 感覚で確定しない

同じメトリクス、同じ評価スイートで並べます。「体感で速い」は仮説生成には使えますが、採用理由にはしません。

2. 変更は1軸

ランタイム、KV、コンテキスト長、同時実行数を同時に変えないでください。勝ち負けが分かっても、学びが残りません。

3. 失敗も残す

エンドポイント未応答で評価が 0 点だった run も資産です。ハーネスの穴や起動漏れが見えます。失敗を消す文化は、同じ失敗を高くつきます。

4. 公開前に洗う

ホスト名、トークン、内部URLを除去してから共有します。再現性と機密は両立できます。

実務の流れ(詳細)

  1. プロファイルを選ぶ
  2. dry-run で起動定義を確認する
  3. 起動し、health を待つ
  4. latency / concurrency / throughput を測る
  5. 用途別スイートで品質を見る
  6. 同じ run_id 配下に集約する
  7. 過去 run と比較し、採用候補を更新する
  8. known_issues か next action を一文で残す

この型があると、「前回より速くなったが JSON が崩れた」「同時実行を上げたらエラー率が悪化した」といったトレードオフが見えます。

チームに導入するときの最小セット

全部を一度に完璧にしなくて構いません。最初の1週間は次だけでも効果があります。

  • run_id(または同等の一意名)を必ず切る
  • 使ったプロファイル名を残す
  • 成功/失敗と error rate を残す
  • 「次に変える1軸」を残す

ここができてから、メトリクスの粒度やGPUスナップショットを増やしても遅くありません。

よくある崩れ方と防ぎ方

崩れ方症状防ぎ方
上書き保存昨日の条件が消えるrun ごとにディレクトリを分ける
口頭共有「あの速い方」が誰にも分からないrun_id をチケット/議事録に貼る
成功 run だけ保管失敗原因が再現しない失敗も残し、失敗種別を書く
設定後編集スナップショットと現行YAMLがズレる実行時に設定をコピーして保存
環境混在開発機の数字を実機扱いするhardware snapshot を必須にする

特に「設定後編集」は気づきにくいです。実行時点のプロファイルをスナップショットしないと、後から見ると別物になります。

サマリに書く一文テンプレ

人間可読サマリは長くなくて構いません。次の型で十分です。

  1. 何を試したか(モデル / プロファイル / 変えたい軸)
  2. 何が分かったか(速度・品質・安定性の要点)
  3. 次に何を変えるか(1軸だけ)
  4. 採用判断(候補継続 / 足切り / 要再試験)

この4行があるだけで、翌週の自分が助かります。会議でも「数字の読み上げ」から「次の実験計画」へ移れます。

チェックリスト(run 締め作業)

  • [ ] run_id が一意か
  • [ ] メタ情報に endpoint / profile / commit があるか
  • [ ] 性能要約と品質要約が両方あるか(片方欠けるなら理由を書く)
  • [ ] error rate と成功件数が説明できるか
  • [ ] 次の1軸が書かれているか
  • [ ] 公開・共有前に機微情報を除去したか

つまずいたこと

run_id を導入する前は、「先週より良くなった気がする」が社内の共通言語でした。ログは残っているのに、どの設定で、どのスイートで、どの環境ラベルかが結びついておらず、再現依頼が来るたびに半日溶けました。

一番つらかったのは、良い結果ほど再現手順が曖昧なことです。担当者の端末依存、手動の環境変数、名前のない実験フォルダ。run_id は華やかな機能ではなく、その泥沼から抜けるための地味な杭です。

この回の要点

  • run_id に設定・スイート・環境ラベルを結びつける
  • 良い結果ほど再現手順を厚く残す
  • 『先週より良い気がする』を共通言語にしない

いま公開しているのは評価の型です。実機ベンチの数字は、再計測と匿名化が済んだものから順に足します。合格ラインや用途別プロファイルの未確定は残っています。

次は「dry-run 文化で壊さないローカルLLM起動」へ進みます。いまのメモを1行残してから読むと、連載の筋がつながりやすくなります。

Related

関連記事

Contact

検証や観光DXの進め方について、お気軽にご相談ください。