はじめに:揺らぐAI応答――その“謎”が明らかに
元OpenAIの幹部も参加するスタートアップ Thinking Machines Lab が、「AIが同じ入力でも毎回少し異なる応答を返す」――この長年の謎の“根っこ”を突き止めた。通説だったGPU並列処理ではなく、「バッチ不変性(batch invariance)」の欠如こそが主原因、というのだ。彼らの論文「Defeating Nondeterminism in LLM Inference(LLM推論における非決定性の打破)」が、それを鮮やかに示している。TechCrunch+2Dataconomy+2
従来の仮説:GPU + 浮動小数点演算の“非結合性”
AIの“非決定的”応答が起きる理由として、これまでもっとも広く信じられてきたのが以下のような仮説だ:
-
GPUは多数のコアを用いて並列演算を行う。TechCrunch+2Dataconomy+2
-
演算の順序がコアの完了タイミングなどの微妙な要因で変わる。eu.36kr.com+2note(ノート)+2
-
浮動小数点数(floating‑point)の演算は「非結合性」を持ち、(a + b) + c と a + (b + c) の結果が必ずしも同じにならない。順序の違いが誤差として出る。note(ノート)+2eu.36kr.com+2
この組み合わせにより、同一プロンプトでも、環境によって(特にGPU内部での並列処理/演算順序の違いにより)出力が微妙に異なる、という説明が「常識」とされてきた。note(ノート)+1
Thinking Machines Labの発見:真の原因は“バッチ不変性の欠如”
しかし、Horace He 氏らはこの仮説だけでは説明できない現象があることを指摘する。たとえば、GPU上で行列乗算(matrix multiplication)を同じデータで何度も繰り返しても、理論上「決定的(bit‑レベルで完全に同じ)」な結果が得られる実験がある。これが示すのは、「GPU + 浮動小数点演算」が原因かもしれないが、それだけでは“いつも揺らぐ”理由にはならない、ということ。eu.36kr.com+2Dataconomy+2
彼らが導いた答えはこうだ:
サーバー側の“バッチサイズの変動”によって、推論時に使われるGPUカーネルの内部戦略が変わる。これが浮動小数点演算の非結合性と組み合わさって、出力のビット単位での違いを生む。TechCrunch+2eu.36kr.com+2
この「バッチ不変性の欠如(lack of batch invariance)」が非決定性の“元凶”というわけだ。eu.36kr.com+2note(ノート)+2
バッチ不変性とは何か?
「バッチ不変性(batch invariance)」とは、以下の性質を指す:
-
推論時に扱われるバッチ(まとめて処理される複数の入力)サイズが変わっても、
-
そのバッチに含まれる入力の数や他の同時処理中の仕事(他のユーザーのリクエストなど)に依存せず、
-
各入力に対して常に「同じ計算戦略」を通じて処理され、
-
結果として、同じ入力であれば常にビット単位で同じ応答が得られる。
Think Machines Lab は、多くの現行GPU/カーネル実装が、この「バッチ不変性」を満たしていないと指摘している。バッチサイズが大きい/小さい、他のリクエストとまとめられているかどうか、KVキャッシュの状態など、さまざまな要素で内部の計算手順が変わってしまうためだ。eu.36kr.com+2Dataconomy+2
解決へのアプローチ:3種の主要演算の再設計
Horace He 氏らは、非決定性を克服するために、以下のようなコア演算(operations)を“バッチ不変なカーネル”で再設計する必要があると提案している。性能低下を最小限に抑えつつ、決定性を確保することが目的だ。eu.36kr.com+1
演算 | 問題点 | 対応策 |
---|---|---|
RMSNorm(正規化処理) | バッチサイズが小さい時に“Split‑Reduction”などの戦略で処理順序が変わる → 演算のリダクション部分で不整合が生じる。eu.36kr.com | 常に「データパラレル」の戦略を使うなどして、バッチサイズに関係なく同じ計算順序/戦略を用いるようにする。eu.36kr.com |
行列乗算(MatMul) | バッチが異なると、Tensor Coreを使う/使わない、あるいは分割戦略(Split‑Kなど)が異なることがあり、結果に差が出る。eu.36kr.com | 全ての入力シェイプ(行列サイズ)に対して同じカーネル設定をあらかじめコンパイルしておき、どんなバッチサイズでもこれを用い続ける。性能低下はあるが、実験ではおおよそ 20%ほどの劣化で済んでいる。eu.36kr.com |
アテンション(Attention) | シーケンス長、KVキャッシュの有無、チャンク分割(chunking/prefill vs decoding)などによって処理パスが変わる → リダクションの経路が変わることに起因する非決定性。eu.36kr.com+1 | KVキャッシュを使う前にキャッシュと現在のデータを常に統一したレイアウトで扱うようにする。固定分割サイズ(fixed‑size splits)を採用するなどし、チャンク/分割戦略をバッチの構成に依存しすぎないようにする。note(ノート)+1 |
この発見の意義と今後の影響
この研究の意味するところは大きい。
-
再現性/信頼性の向上:同じ入力で同じ出力を得られるAIは、研究用途、産業用途(特に規制の厳しい金融・医療など)で非常に価値が高い。TechCrunch+1
-
強化学習(RL)との親和性:推論結果の揺らぎが少なければ、RLの報酬設計や学習の安定性も高まる。ヒューリスティックな補正を減らせる可能性がある。Dataconomy+1
-
製品化可能性:Thinking Machines Lab は、この技術を近い将来のプロダクトに組み込む意向を示しており、研究成果を単なる理論ではなく実用レベルに落とし込むことが期待されている。TechCrunch+1
残る課題と注意点
ただし、この“決定性への道”が完全にバラ色というわけではない。以下のようなトレードオフや議論点が残っている:
-
性能(スピード/効率)の低下
完全なバッチ不変性を持たせるためには、現在の最適化されたカーネル戦略を制限したり、使い慣れた高速なGPU最適化を使わないこともあり得る。実験では約20%の性能低下が報告されている。eu.36kr.com -
運用環境の複雑さ
サーバーの負荷やリアルタイムでのバッチサイズの変動を制御するのは難しい。完全に同じバッチ構成を再現することは現実的には難しいケースも多い。 -
創造性とのバランス
AI応答が“少し変わる”ことで、多様性や創造性が生まれるという側面もある。応答が完全に決定的になることが常に望ましいかどうかは、用途によって異なるだろう。 -
コミュニティでの検証と普及
Thinking Machines Lab の報告は非常に注目に値するが、今後、この手法が他の LLM 実装(異なるハードウェア、異なるライブラリ)で再現されるかどうか、またその際のパフォーマンスの落ち込みがどの程度か、が鍵となる。eu.36kr.com+1
結び:AIは「気まぐれ」ではなくできるだけ「予測可能」に
Thinking Machines Lab のこの研究は、AIの「毎回答えがすこし違う」という現象を、単なる仕様・制約として受け入れるのではなく、「技術的に解決可能な問題」として扱う点で画期的だ。AIの信頼性・再現性を求める動きの中で、一つの大きなマイルストーンになる可能性がある。
私たちユーザーや開発者としても、この発見がどう実装され、どのように応答の“揺らぎ”を減らしていくかを注視していきたい。
0 件のコメント:
コメントを投稿