小米、MiMoのツール呼び出し重複を9万ドルで修正

小米のMiMoチームは9月27日、技術ブログで、MiMo-V2.6のリリース後に開発者から繰り返し指摘されていた不具合を振り返った。コーディングエージェント内で、モデルが同じ、あるいはほぼ同じツール呼び出しを何度も発行し続け、コンテキストと計算リソースを消費しながらタスクは一向に進まないという問題だ。修正済みの重みはすでにオープンソース化されており、ファイル名にはMOPDというサフィックスが付く。APIプラットフォームは9月25日午前6時(北京時間)から新バージョンに切り替わっており、MiMo Desktopのユーザーには補償として当該期間の残りクォータが一括リセットされた。

「呼び出しが多い」と「呼び出しが重複している」を切り分ける

ブログは、呼び出し回数が多いこと自体を一律に不具合とはみなしていない。小米は状況を3つに分類する。並列呼び出しは複数の呼び出しがそれぞれ異なる情報を取得する正常な最適化であり、呼び出しの乱発はタスクに必要な数を単純に超えているケース、そして呼び出しの重複は環境の状態も既知の情報も変わっていないのに、モデルが同じ行動を繰り返すケースだ。チームが修正の対象としたのは3つ目の重複である。

小米の社内評価によれば、応答単位の重複率は許容ライン0.05%を大きく超えており、環境ごとの差も大きかった。

環境FlashPro
OpenCode1.02%0.54%
Claude Code0.27%0.10%
MiMo Desktop0.19%0.19%
MiMo Code0.11%0.07%

特にOpenCodeのFlash版が最も悪く、応答100回に1回程度は堂々巡りしていた計算になる。

根本原因は強化学習の段階にあった

チームが強化学習の各チェックポイントを追跡したところ、1ターンで10回を超える呼び出しを行ったサンプルの割合は、ステップ0の11.1%からステップ20には24.6%まで一貫して上昇していた。MiMo Code環境ではさらに顕著で、30.6%から41.7%まで跳ね上がっていた。学習時にはもともとペナルティが設定されていたが、それは1ターンで32回を超えた場合のみだった。ステップ15以降、このペナルティが発動するサンプルが明らかに増えており、32という閾値が緩すぎて、モデルが「多めに呼んでおいて損はない」という癖を身につけるのを止められなかったことを示している。

ブログには印象的な数字が示されている。修正前、モデルが12回目のツール呼び出しの時点でさらに呼び出しを続ける確率は94.56%で、呼び出しをやめる確率はわずか5.43%だった。ざっくり言えば、ほとんど自分から手を止めなかったということだ。

2つの修正案、コストは一桁違った

最も直接的な方法は、ペナルティの閾値を32回から8回に引き下げ、既存のMixRLパイプラインで再学習することだった。社内テストでは重複率が13.45%から3.83%まで下がったが、学習を20ステップ巻き戻して再学習する必要があり、小米の見積もりでは費用は約231万ドル、しかもデータセットを変えると効果が安定しないという課題もあった。

最終的に採用されたのはMOPD(マルチティーチャー・オンライン蒸留)と呼ばれる手法だ。社内で収集した重複サンプルを使い、「いつ止めるべきか」だけを学ぶ専用の強化学習ティーチャーを別途学習させる。学習はわずか12ステップ、サンプル数は約7000件のみ。その上で本体モデルを5ステップ巻き戻し、このティーチャーの誘導のもとで学習を続ける。全体でかかった費用は約9万ドルで、最初の案の4%程度に収まった。

効果としては、12回目の呼び出し時点で止める確率が5.43%から92.17%まで上昇した。ブログが示す累積停止確率のグラフによれば、修正前は59回目の呼び出しに達してようやく停止確率が50%を超えていたが、修正後は8回目の呼び出しの時点ですでに99.87%に達している。小米によれば、各プラットフォームで重複率が大きく低下し、コンテキストの長さが変わっても効果は一貫しており、全体のベンチマークスコアも落ちていないという。

V2.6の流れの中に位置づける

MiMo-V2.6は9月22日にリリースおよびオープンソース化された。当時、小米が最も強調していたのは事後学習の規模だった。報道された数字によれば、ProとFlashはそれぞれ30ステップの強化学習を行い、合計費用は約350万ドルにのぼるとされていた。その5日後に公開された今回の振り返りは、その学習が残した副作用を公にさらけ出す形になっており、「本来なら231万ドル余計にかかっていたかもしれない」という点まで明記している。

国内のモデル開発チームが公開後の不具合を自ら振り返って公表する例は多くなく、不採用となった修正案のコストまで並べて示すのはさらに珍しい。OpenCodeやClaude Codeで中国製モデルを使っている開発者にとってより実務的なのは、ここ数日でMiMoが同じファイルを何度も読み直したり同じコマンドを繰り返し実行したりする様子を見ていたなら、APIはすでに修正版に切り替わっており、自前でホストしている場合はMOPDサフィックス付きの重みに入れ替える必要があるという点だ。ここに挙げた重複率の数字はいずれも小米の社内評価によるもので、第三者による再検証結果はまだ公表されていない。

参考資料:小米MiMoチーム技術ブログ、CocoLoop;各環境の重複率・乱発率および2つの修正案の費用は、いずれも小米の社内評価に基づく。