Research
LYR Performance Note #013 モデル

ベンチで賢かったAIが、本番で急に間違え始めた

「テストの点」と「本番の実力」がずれた、たった一つの理由

2026-07-22 シリーズ第3回 7 min 量子化微調整評価デプロイ

微調整した8Bモデルが、ベンチマークでは優等生なのに、本番想定では小さい4Bに負けた(21対11)。器の限界に見えた。

犯人はモデルでも学習でもなく、学習した環境と本番の環境で精度が違っていたことだった。同じアダプターを両方の土台に載せて比べると、23対2で環境のずれだと分かった。

本番の圧縮を織り込んで仕込み直すと、8Bは4Bを上回った。腕を仕込む条件と、出す条件を揃える。それだけで、消えていた腕前がそのまま出た。

勝つはずの手札があった。

翻訳の品質を上げたい。ならばモデルは大きいほうがいい——8B(80億パラメータ)は、小さい4Bより多くのことを覚えていて、微妙な文脈を読み取れる。実際、前回の微調整で仕込んだ8Bは、手元のベンチマークで文句なしの成績を出していた。あとは本番に載せるだけ。そう思っていた。

ところが、本番想定の環境に載せて品質を測り直すと、その8Bが、小さいはずの4Bに負けた。ある評価では21対11。順序が逆だ。大きいモデルのほうが賢いはず——なのに、本番では小さいモデルのほうが勝っている。

一度は、こう結論しかけた。「Liveの翻訳は、素直に4Bに載せよう」と。大きいモデルは、この用途には向かないのだ、と。

それが間違いだった。8Bは弱くなっていない。測っていた8Bと、本番に載せた8Bが、別物だったのだ。

ベンチと本番で、モデルの「精度」が違っていた

種明かしをする前に、言葉を1つだけ。量子化(りょうしか)とは、モデルという「巨大な数字の山」を、より少ないビット数で保存し直して軽くする圧縮技術だ。詳しくは第1回に書いたが、要点はこうだ——本番のGPUで速く・安く動かすために、モデルは圧縮して載せる。

ここに落とし穴があった。ワークフローが、無自覚にこうなっていた。

  • 微調整(学習)は、高精度のまま行う。数字を細かく持ったBF16という形式で、モデルに翻訳の腕を仕込む。
  • 本番(デプロイ)は、圧縮して動かす。4分の1に縮めたINT4という形式で載せて、速さとコストを稼ぐ。

つまり、腕を仕込んだときの姿と、お客に出したときの姿が、違っていた。ベンチマークは高精度の姿で測り、本番は圧縮した姿で動く。テストの答案と、本番の答案を、別の人間が書いていたようなものだ。

同じアダプター、違う土台で、結果が裏返った

疑いを確かめるのは、拍子抜けするほど簡単だった。まったく同じ微調整(アダプター)を、2つの土台の上に載せて、同じ40問で戦わせればいい。

  • 土台A=高精度(BF16)。学習したときと同じ姿。
  • 土台B=圧縮(INT4)。本番でデプロイする姿。

(アダプターとは、土台のモデルに後付けする「腕の補正パーツ」のこと。土台が変わっても、載せる補正は寸分同じにした。)

結果が、露骨だった。審判は opus(第三者の高性能AIに2つの訳を並べ、どちらが良いかを判定させる手法)に任せた。

同じアダプター・土台だけ違う・40問中・opus判定勝ち引き分け負け重大な欠陥
高精度(BF16)=学習時と同じ231523
圧縮(INT4)=本番デプロイ2152322

同じ腕前を仕込んだはずのモデルが、土台を圧縮しただけで、勝ち23が2に転落した。しかも欠陥の中身を目で追うと、主語の取り違え(誰が言った台詞かを間違える)と否定の反転(「〜しない」を「〜する」にひっくり返す)——文の骨を折るタイプの誤りは、すべて圧縮側から出ていた。高精度側に残った欠陥3件は、いずれもそれ以外の軽微なものだった。

ベンチの好成績は、本番では再現しなかった。理由は性能でも学習の失敗でもない。測った姿と、動かす姿が、違った。それだけだった。

なぜ、圧縮すると腕が鈍るのか

不思議に思うかもしれない。第1回では「圧縮しても賢さはほぼ落ちない(品質−1ポイント)」と書いたはずだ。話が違うではないか、と。

矛盾はしていない。効きどころが違うのだ。

微調整で仕込む腕前は、モデル全体に薄く広く乗る補正だ。「この文脈なら主語はこちら」「この語調はこう訳す」という、僅差の判断を正しい側へ倒すための、繊細な上乗せ。ところが圧縮は、まさにその僅差の部分を最初に削る。数字を粗く丸めると、大勢は動かないが、きわどい判断は反転しやすい。せっかく微調整で倒した「主語」「否定」が、圧縮の丸め誤差で、また逆に倒れてしまう。

比喩を使えばこうだ。腕を仕込むときは、高精度の——目盛りの細かい定規で線を引いた。ところが本番では、目盛りの粗い定規に持ち替えて、その線を写し取ろうとした。細かく引いた線ほど、粗い定規では写しきれない。

直し方は、「本番の姿で仕込む」

原因がこれなら、直し方は明快だ。本番でデプロイするのと同じ圧縮した土台の上で、微調整を仕込み直す。目盛りの粗い定規を、最初から使って線を引く。丸め誤差を織り込んだ上で腕前を作れば、その腕前は本番でそのまま出る。この「学習と本番の精度を揃える」やり方を、quant-aware(本番精度を織り込んだ)学習と呼んでいる。

同じ40問で測り直した。

Live翻訳 40問・opus判定勝ち引き分け負け
本番精度で仕込み直した8B vs 本番形式(INT8)の4B16159
本番精度で仕込み直した8B vs 旧・不一致の8B20128

一番はっきり効いたのは、旧来の不一致な8Bとの直接対決だ。20対8で上回り、なかでも優劣が決定的だった問だけを数えると10対0——主語と否定の誤りは、すべて旧来側に残り、仕込み直した側はきれいだった。相手を「本番形式のままの4B」に替えても、8Bは非後退だった(16勝/引分15/9敗、n=40。引分が15あるため「勝ち越し」と断ずるには足りないが、少なくとも負けてはいない)。「4Bに負ける」という思い込みは、ここで崩れた。マンガ翻訳でも、原文丸写し(echo)ゼロを434問で維持した。

「Liveは4Bに」という判断は、撤回した。8Bは、最初から弱くなどなかった。

モデルを疑う前に、測り方を疑う

一番こたえたのは、あやうくモデルの器(capacity)のせいにするところだった、という点だ。「8Bは、この用途には向かない」。もっともらしい仮説だし、そう結論すれば話は早い。だが真犯人は、モデルの中ではなく、モデルを測る手順のほうにいた。学習と本番で環境がずれていた——モデルの問題ではなく、システムの問題だった。

「賢いはずのAIが、本番で急に馬鹿になる」。この現象を見たとき、真っ先に疑うべきはモデルの実力ではない。ベンチと本番が、本当に同じ条件かである。

教訓

  1. モデルより先に、測り方を疑え。 賢いはずのAIが本番で急に間違え始めたら、疑うのはモデルの器ではなく測定の手順だ。同じアダプターを学習時と本番の両方の姿に載せれば、犯人がモデルか環境かを切り分けられる(23対2で後者だった)。

  2. 腕を仕込む条件と、出す条件を揃える。 微調整と圧縮は別工程だが、噛み合わせを誤ると仕込んだ腕前が本番で消える。学習から配信までを一続きの系として揃えて、初めて品質が届く。

  3. 大きな設計判断ほど、土俵の公平性を検証する。 8Bから4Bへの切り替えが、測定のずれ一つで危うく決まりかけた。「向いていない」と結論する前に、比べている条件が本当にフェアかを確かめる。


付録:生データ

条件: すべて Live 40問、opus pairwise 判定(勝ち/引き分け/負け)。

実験結果条件・留保
診断(同一アダプター・土台違い)BF16土台 = 23勝/15分/2負、INT4土台 = 2勝/15分/23負重大欠陥 3 対 22。主語誤り・否定反転はすべてINT4側
修正実証(本番精度で仕込み直した8B)vs 4B-INT8 = 16/15/9(非後退)、vs 旧・不一致8B = 20/12/8優劣が決定的な問では 10対0。quant-aware SFT-aug→CPO
マンガecho(原文丸写し)0/434 を維持副作用なし
撤回した誤結論「Liveは4Bに」(旧8Bが 21対11 で負け)学習BF16→本番INT4 の不一致が生んだ見かけの負けだった