OpenAIの元CTO Mirror Moratiが設立したThinking Machines Labが、大規模言語モデルの非決定性問題に対する解決策を発表した。同じプロンプトに対して毎回異なる回答が生成される現象の根本原因をバッチサイズの変動にあると特定し、バッチサイズを一定に保つことで完全に決定論的な推論を実現することに成功した研究内容を解説している。

Mirror Moratiの新たな挑戦:非決定性問題への取り組み
私たちはついに、OpenAIの元CTOであるMirror MoratiがThinking Machinesで何を構築しているのかを知ることができました。これまで完全に謎に包まれていましたが、今回手がかりを得ることができ、それは興味深く複雑なものです。すべてを詳しく解説していきます。
まず簡単にThinking Machinesについて説明しましょう。本日、Thinking Machines Labは研究ブログ「Connectionism」を開始します。私たちの最初のブログ投稿は「LLM推論における非決定性の打破」です。これが何を意味するのか分からなくても大丈夫です。すべて説明いたします。
非決定性とは何か
人工知能の文脈において、おそらく皆さんも気づいたことがあるでしょう。全く同じプロンプトをモデルに2回、3回、4回与えても、異なる応答が返ってきます。これが非決定性なのです。同じ入力が常に同じ出力につながるとは限りません。実際、頻繁に異なる結果になります。
しかし彼らが最初の文で述べているように、再現性は科学的進歩の基盤です。ところが、大規模言語モデルから再現可能な結果を得ることは驚くほど困難なのです。そして、これこそが彼らが解決しようとしている問題なのです。
彼らは、LLMに全く同じプロンプトを与えて、毎回全く同じ応答を得られるようにしたいと考えています。これが極めて価値のある使用例は数多くありますが、価値のない場合もあります。例えば、クリエイティブライティングを考えてみてください。面白い楽しい物語を書こうとしている時に、必ずしも全く同じ応答は求めていません。
非決定性の原因究明
彼らは応答のランダム性を打破しようとしているだけでなく、実際にその原因を特定したと考えています。ChatGPTに同じ質問を複数回することで異なる結果が得られることがあります。これ自体は驚くことではありません。言語モデルから結果を得ることにはサンプリングが含まれるからです。サンプリングとは基本的に、すべての潜在的な結果を見て、最も信頼度の高いものを選択することを意味します。
しかし、モデルの応答の温度を0まで下げても、温度設定を見たことがない方のために説明すると、これは基本的に次のトークンの選択におけるサンプリングのランダム性を減らすことを意味します。温度が0であれば決定論的になるはずですが、やはりそうはなりません。
技術的原因の分析
では、なぜ大規模言語モデルは決定論的でないのでしょうか。当然そういうものだと思われるかもしれませんが、もちろんそうなっている理由があります。
一般的な仮説の一つは、浮動小数点の非結合性と並行実行の何らかの組み合わせが、どの並行コアが最初に完了するかに基づいて非決定性をもたらすというものです。この文には非常に技術的な用語がたくさん含まれていますので、すべて分解して説明いたします。
浮動小数点数とは小数点を持つ数のことです。5.23のような数を思い浮かべてください。しかし、浮動小数点の精度をどう知るのでしょうか。小数点以下何桁まで精度を持つのでしょうか。ある時点で無限に続けることはできません。そのため丸める必要があり、その丸めがランダム性を引き起こします。
次に、並行実行についてです。GPUに数学的計算を与えると、同時に多くの計算を実行しますが、一般的にどれが最初に完了するかは分かりません。GRQのような企業は、チップが完全に対称的で、計算を入力した際に結果が返ってくるまでの時間が正確に分かるため、この問題を本当に解決していると思います。
しかし、どの結果が最初に返ってくるかのランダム性が分からない場合、それも応答の全体的な非決定性に加わります。
真の原因:バッチサイズ
Thinking Machinesは、この仮説は完全に間違っているわけではないが、全体像を明らかにしていないと述べています。例えば、GPUであっても、同じデータで同じ行列乗算を繰り返し実行すると、常にビット単位で等しい結果が得られます。確実に浮動小数点数を使用しており、GPUには確実に多くの並行性があります。なぜこのテストでは非決定性が見られないのでしょうか。
論文によると、真の犯人はバッチサイズです。こう考えてみてください。質問をすると、その質問は他の人の質問とカープールに入れられます。このカープールがバッチと呼ばれるものです。
システムが非常に忙しい時、カープールは非常に大きくなります。より多くのことを成し遂げようとしているからです。そして静かな時は非常に小さくなります。そのサイズが、AI内部で行う細かい計算、数学の順序を静かに変更します。異なる順序により、わずかに異なる合計が生まれ、時には異なる次の単語が生まれます。覚えておいてください、すべてのLLMは単に次の単語を予測しているだけなのです。
時には、このために次の単語が異なります。小さな変化、物事の順序におけるわずかな差異がすべてを変えてしまうのです。
Lindyによるソリューション
これはすべて非常に複雑ですが、複雑でないものがあります。今日の動画のスポンサーであるLindyです。Lindyはエージェントとアプリをバイブコーディングするのに最適な方法です。5分以内に完全に機能するオンライン教育プラットフォームを構築したいとします。
Lindyの新しいビルド機能を使えばそれが可能です。まず、構築したいものを説明します。エージェントに自分が誰かを知らせ、「オンライン教育プラットフォームを構築して」と伝えます。Lindyは単にコードを生成するだけではありません。ベストプラクティスを研究し、フロントエンドを構築し、ここが重要な部分ですが、私のバイブコーディングのチュートリアル動画を見たことがある方なら、テストがすべてだということをご存知でしょう。
もちろん、Lindyはすべてのテストを書いてくれます。Lindyはまた、デプロイする前に構築するすべての機能についてQAを実行します。これを見てください。5分以内に、ユーザー登録、無料コースアクセス、Stripeチェックアウトでのプレミアムアップグレード、ユーザーダッシュボードを持つ完全にデプロイされた教育プラットフォームを手に入れることができます。
以前なら数週間かかり、開発者によって構築されれば数千ドルのコストがかかったかもしれませんが、Lindyは組み込まれたQAプロセスのおかげで数分で構築しました。Lindyはコードを構築するだけでなく、動作するコードを出荷します。説明欄の私のリンクを使ってサインアップすれば、20ドル相当のクレジットを完全に無料で獲得できます。それでは、Lindyで何を構築するのでしょうか。コメントで教えてください。
再びLindyに感謝します。それでは動画に戻りましょう。
実際の解決策
では、実際の解決策は何でしょうか。それを説明するのは少なくとも非常にシンプルです。バッチのサイズに関係なく、カープールを同じ速度で進ませ続けるのです。すべてを同じに保つとわずかに遅くなるかもしれませんが、得られる一貫性は実際にはるかに価値があります。
この論文では、これらすべてが行われる実際の数学について詳しく説明し、多くの技術的詳細について述べていますが、正直に言って、私の理解を少し超えています。そのため、一般的な用語で皆さんのために分解しているだけです。
これら2つの修正について、類推で説明してみましょう。ボウルを作るレストランを想像してください。この最初の修正では、各ボウルの重さを同じにする必要があります。キッチンが混雑していても空いていても、何があっても、ボウルの重さを同じにするのです。速度は少し失うことになりますが、得られる全体的な一貫性ははるかに価値があります。
次に、混合工程も同じに保ちます。材料を全く同じ方法で混ぜるのです。そのバッチがどれだけ混雑していても、安定したセットアップを1つ選択するのです。
そして、話すべき3番目の修正があります。同じ順序で味見することです。このキッチンの類推を続けましょう。物をまとまりで焼いても、入れた順番に味見したいのです。
AIでは、モデルは書いたものを振り返ります。これが「attention is all you need」のアテンション部分です。テキストを異なるチャンクサイズに切ると、これらの小さな計算の順序が変わる可能性があります。そのため、毎回同じスライスを使用するのです。
実験結果の検証
では、実際に機能したのでしょうか。彼らはQwen 235Bを使用し、「リチャード・ファインマンについて教えて」というプロンプトで温度0で1,000回の補完をサンプリングし、それぞれ1,000トークンを生成しました。
驚くべきことに、80の一意の補完を生成し、その中で最も一般的なものが78回発生しました。これがベースラインの種類です。その後、バッチ不変カーネルを有効にすると、1,000の補完すべてが同一になりました。答はイエスで、完全に効果的でした。
非決定性を打破することの重要性
なぜ非決定性を打破することがそれほど重要なのでしょうか。同じ入力から同じ出力が得られれば、信頼、デバッグ、監査、検証がはるかに容易になります。何が得られるかが分かっていれば、使用するのが単純に容易になります。
さらに、ベンチマークを実行する際に、実際に安定した入力と出力が得られ、したがってベンチマークがより信頼できるものになります。ユーザーは出力をより良く信頼できます。そして、モデルがなぜそのように考えるのかを監査して理解しようとする際も、それが容易になります。
完全な論文へのリンクを下に掲載します。非常に複雑であることをお伝えしておきます。もしそれを読めるなら、おめでとうございます。AIにおいて大幅に先を行っています。この動画を楽しんでいただけたなら、いいねとチャンネル登録をご検討ください。次の動画でお会いしましょう。


コメント