測って比べて、次は1つだけ変える
AI 公開日 中級

測って比べて、次は1つだけ変える

ローカルLLM運用を、単発チューニングではなく改善ループとして回す方法を紹介します。

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

現場実装の クムビーバー です。ローカルLLMの改善は、単発のチューニング大会になりがちです。「昨日より速い気がする」は再現できず資産になりません。

この回の答え

改善は単発チューニングではなく、通し番号前提のループです。測って比べ、次に動かす軸は1つだけ決めます。

この回だけの用語

用語ひとことで
スパイラル測る→比べる→次の1軸を決める、の繰り返し改善ループ
run_id1回の計測に付ける追跡ID。再現の鍵
dry-run実起動の前に、生成される定義を確認する
1軸次に変える変数は基本1つ。因果を残すため
best_profile母集団内の暫定リーダー。stable 昇格は別ゲート
known_issues分かっている副作用・制約のメモ
図1: 追跡可能なスパイラル
図1: 追跡可能なスパイラル

ループの骨格

  1. 候補モデルを登録する
  2. 起動プロファイルを作る
  3. dry-run で起動定義を確認する
  4. 実起動する
  5. healthcheck する
  6. latency / throughput を測る
  7. 必要なら長文ベンチを足す
  8. 用途別 eval を回す
  9. ログとGPUメトリクスを集める
  10. results に保存する
  11. 比較レポートを作る
  12. best_profile を更新する
  13. known_issues を書く
  14. 次の設定パターンを作る
  15. また dry-run へ戻る

ワンコマンドで benchmark → eval → report まで繋ぐ運用もある一方、問題切り分け中は途中停止できる粒度も必要です。全部自動で回すことと、途中で止められることは両立させます。

段階でまとめると

フェーズステップ成果物
準備1〜3レジストリ、profile、dry-run 出力
実行4〜5起動済みサービス、health OK
計測6〜9性能/品質/メトリクス
判断10〜13run、レポート、known_issues
次へ14〜15次の1軸と新しい dry-run

「良い」の定義を先に置く

感覚で勝ち負けを決めない、が原則です。比較対象は次を揃えます。

  • 同じメトリクス(tok/s、TTFT、latency、error rate)
  • 同じ評価スイート
  • 変える軸は1つ
  • 同じ環境ラベル(harness / real-gpu)

たとえば「TRT-LLM に変えたら速くなった」を言うなら、モデル・context・KV・workload を固定し、runtime だけ変えた run が必要です。軸が2つ動くと、学びが消えて成功談だけが残ります。

1軸の例

「全部盛りで速くなった」はデモには向きますが、次の障害対応には向きません。

現場で短縮するコツ

  • 門番スモークを先に置く
  • 失敗の種類を分類する(未起動 / OOM / 出力不正)
  • 毎回全部を測らず、仮説に必要な計測だけにする
  • レポートの「次に試すべき改善案」を次ループの入力にする
  • 長い議論の前に dry-run 差分を見る
  • stable を急がず、制約付き testing を許容する

スパイラルは速さより、意思決定が前に進むことが目的です。1日で15ステップを全部回す必要はありません。今日は 3〜5 と 8 だけ、明日は 6 と 11、でも構いません。止まらず、記録が繋がることが重要です。

よくある空転パターン

パターン症状戻し方
軸だらけ何が効いたか不明直前の安定 profile に戻し1軸化
門番スキップ重い計測のあとで基礎不足発覚smoke を最初に固定
記録なし勝負口頭の勝ち負けだけ残るrun_id 必須化
自動実行信仰失敗時に分解できないステップ停止ポイントを残す
改善案なしレポート次ループが始まらない「次の1軸」欄を必須にする

チェックリスト(1ループ終了時)

  • [ ] run_id がある
  • [ ] 変えた軸が1つだけ書かれている
  • [ ] 性能と品質の要約が並んでいる
  • [ ] 失敗分類がある(成功時も「該当なし」でよい)
  • [ ] best_profile / known_issues の更新有無が明示されている
  • [ ] 次の1軸が次の担当者に渡せる形である

ワンコマンド運用との付き合い方

自動化は便利ですが、スパイラルの敵ではありません。ただし「全部まとめて成功/失敗」だけ見える状態は危険です。社内では、連結実行を使いつつも、次を残しています。

  • dry-run だけ止まれる
  • health 失敗で評価に進まない
  • smoke 失敗で重いベンチをスキップできる
  • レポートに「止まったステップ」が残る

つまり自動化は、手作業を消すためではなく、同じ手順を毎回同じ順で踏むために使います。問題が起きたら分解できる粒度がない自動化は、改善ループではなくブラックボックスです。

つまずいたこと

改善を一度に三つ入れると、何が効いたか分からず、ロールバックもできません。分かっていても、期限前になると同時打ちしたくなります。

つまずきは精神論ではなく、1軸変更を強制する記録フォーマットがなかったことでした。スパイラルは綺麗な図より、欲を削る装置です。

この回の要点

  • 一度に変える軸は1つ
  • 同時打ちした改善はロールバック不能とみなす
  • 記録フォーマットで欲を削る

1軸ずつの改善ループは公開の型です。週次で「良くなった」と宣言するための実機数字は、再計測と匿名化が済んだものから足し、合格ラインは用途合意後です。

次は「どの設定が勝つか:7段の優先順位」です。次の1軸を変える前に、効いている設定が見える状態へ戻します。

よくある質問

なぜスパイラルにするのですか?

「昨日より速い気がする」は再現できず資産にならないためです。追跡可能なループにします。

一度に何軸まで触りますか?

基本は次の1軸です。複数を同時に動かすと因果が消えます。

15ステップは全部必須ですか?

骨格は残し、現場では短縮してよいです。省略した手順は記録に残します。

Related

関連記事

Contact

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