Devinの最初のオープンソースモデルがOpenAI O3を打ち破る!

AGIに仕事を奪われたい
この記事は約8分で読めます。

4,438 文字

Devin's FIRST Open Source Model Shatters OpenAI O3!
Kevin-32B is a 32-billion-parameter open-source language model (“K(ernel D)evin”) developed by Cognition AI in collabora...

Devinの最初のオープンソースモデルはCUDAカーネルプログラマー、つまりGPUプログラマーです。この32億パラメータのファインチューンされたオープンソースモデルがO3を打ち負かしたのです。OpenAIの旗艦モデルが32億パラメータのファインチューンモデルに敗れたのです。非常に興味深いことに、彼らは様々な細かいファインチューニング技術を駆使しています。
このビデオではこのモデルについて詳細に見ていきます。このモデルは「Kevin」と呼ばれています。つまり「Kernel」と「Devin」を組み合わせたものです。なぜこの名前になったのかはわかりません。彼らはファインチューニングにマルチターン強化学習というものを使用しています。
また、思考連鎖(chain of thought)を使ったファインチューニングをする際に、コンテキストウィンドウが爆発的に増加する問題をどう処理したかという点も非常に興味深いです。でも先に話を進める前に、このモデルとは何なのでしょうか?このモデルはGPUカーネルプログラマーです。NVIDIA GPUやCUDAを使用する場合、特定のタスクを実行するGPUカーネルを書くためにカーネルプログラミングやCUDAプログラミングを理解している人が必要です。
これはPythonプログラマーのようなものですが、カーネルプログラマーを作る必要があり、それ自体がニッチなスキルです。世界中でGPUプログラミングができるプログラマーはそれほど多くありません。彼らが発見したのは、推論時のスケーリングだけでカーネルプログラミングを行おうとしている企業が多いが、モデルに知識がなければ役に立たないということです。
そこで彼らがしたのは、カーネルプログラミングの知識を持たせるために、スタンフォード大学がリリースした「Kernel Bench」というベンチマークを使用しました。Kernel Benchは「LLMはGPUカーネルを書けるか?」というベンチマークです。このベンチマークを使用したのですが、これは約250の質問があります。
250のPyTorchベースの古典的な深層学習タスクがあり、モデルが最適化されたCUDAカーネルを書けるかどうかを評価するものです。彼らはその250の質問のうち、レベル2の180のタスクをモデルのトレーニングに使用し、20のタスクをホールドアウトデータセットとしました。この全体が印象的ですが、少し引っかかる点があります。それは、彼らがKernel Benchデータセットを使ってモデルをトレーニングし、同じKernel Benchデータセットで評価しているということです。
もちろん、180のタスクでトレーニングし、20のタスクで評価するという、典型的な機械学習のアプローチだと反論できるでしょう。Kaggleコンペでも見られるような、トレーニングデータセットとテストデータセットを分けるアプローチです。しかし、これが強化学習で行われたと言われると、私の脳ではなぜか素晴らしいことだとは理解できません。間違っているかもしれませんが、この点についてはぜひ皆さんの考えをお聞きしたいです。
この疑問や私の視点は置いておいて、これは非常に優れたモデルであり、いくつかのことを本当にうまくやっています。例えば、彼らが「マルチターントレーニング方法」と呼ぶものがあります。彼らはモデルを反復的なフィードバックループに通し、この反復的なフィードバックループが優れたプログラマーを作るのだと言っています。
つまり、AからBという解決策に直接行くのではなく、A→A1→A2→A3→A4→A5と進み、最終的にBという最終解決策に到達するということです。彼らが行っているのもまさにそれで、思考連鎖を含む初期プロンプトから始め、カーネルを生成し、それが正常に動作しているかを評価し、その評価情報を再びフィードバックし、最終的に再トレーニングを行います。これがGRPOを使用したマルチターン強化学習です。
しかし、興味深いことに、これは2つの異なる問題を引き起こします。1つは「コンテキストウィンドウの爆発」と呼ばれるものです。確かに10万トークンまで処理できるモデルはありますが、10万トークンを超えたらどうするのでしょうか?何らかの解決策が必要です。
2つ目は、スコアを与える際の問題です。彼らは1つの成功報酬を与えています。強化学習は報酬に関するものですが、彼らは軌跡全体に対して単一の報酬を与え、それをどのカーネルによって達成された最大スコアとして定義し、このシーケンスをトレーニングに使用しています。
これも問題となります。なぜなら、どの特定のステップやカーネルでこのスコアが生成されたのかわからないからです。したがって、どのカーネルを最適化すべきかという知識がないのです。
これら2つの問題は、正直なところ非常に単純な答えで対処されました。まず、推論のための思考連鎖を削除しました。思考連鎖が非常に長くなると、思考連鎖を削除し、その要約だけを追加しました。これによりコンテキストを保持しつつ、思考連鎖全体を含める必要がなくなりました。
これは非常に素朴な解決策ですが、興味深いものです。2つ目は、「割引スコアの合計」と呼ばれる新しい報酬を使用したことです。これはマルコフ決定過程のようなものです。彼らが試みたのは、各改良ステップを独自のトレーニングサンプルとして扱うことです。
彼らは前のスコアに依存するスコアを作りました。これはまさにマルコフ連鎖決定過程のようです。天気の例で言えば、明日の天気は今日の天気に基づくようなものです。彼らは新しい報酬関数を使用しました。
これらが彼らが行った2つの回避策であり、その結果は非常に印象的です。平均スコアを見ると、Kevinという32億パラメータのモデルは65%のスコアを獲得し、重要な点がまだあります。このモデルは65%のスコアを獲得し、OpenAIの旗艦モデルであるO3は35%しか獲得していません。O4 miniでさえ36%です。
中国企業Quenの思考モデルであるQWは、32億パラメータのモデルで23%しか獲得していません。これはインストラクトモデルではなく、ベースモデルです。ここで非常に興味深いのは、この32億パラメータのKevinが、実はQuen 32億パラメータモデルをファインチューンしただけのモデルだということです。
彼らは文字通りQuenの32億パラメータモデルを取り、それをファインチューンしました。KevinをQで始めるべきだったかもしれませんね。これはQuenの32億パラメータモデルをベースにしています。このモデルはHugging Faceのモデルハブで利用可能で、今すぐ使い始めることができます。
既存のQuenのような中国のモデルを取り、いくつかの革新的な新しいステップでファインチューンするだけで、実行に多くの計算リソースを必要とするOpenAIの独自モデルであるO3のパフォーマンスをほぼ2倍にできるというのは非常に興味深いです。
実際、このモデルが優れているだけでなく、実行に多くの計算リソースを必要としないという点も重要です。さまざまな評価セットでの様々なモデル比較があり、それらすべての比較において、このモデルは素晴らしい仕事をしています。
例えば、32億パラメータのKevinモデルとQuenの思考モデルQW(32億パラメータ)、そしてシングルターンモデル(マルチターンモデルではない)を比較してみましょう。つまり3つの異なるモデルがあります。1つはシングルターンモデル、2つ目はKevinの32億マルチターンモデル、そして3つ目はQWQです。
シングルターントレーニングがある程度のブーストを与えていますが、最大のブーストを与えたのはマルチターントレーニングであり、これが多くの人々が今後行うことだと思います。彼らはまだ様々な実験を続けていますが、この全体の非常に興味深い側面があります。
彼らが発見したのは、思考連鎖の応答が生成されるとき、「okay」(オーケー)で始まらない思考連鎖はほとんどがジャンクだということです。彼らはこれを「non-okay比率」と呼んでいます。思考連鎖が「okay, so」で始まるならそれは良いのですが、「okay」で始まらないなら、それは将来のジャンクの強い予測因子となります。そのため、「okay」で始まらなければそれは「not okay」(良くない)ということになります。35〜40ステップ後あたりから多くの「non-okay」が生成され始め、不安定性や繰り返し、無意味な応答、純粋なジャンクが生まれ始めます。
例えば、モデルが「okay amigos」と言ったり、「I need to optimize this 3D tensor matrix multiplication(この3Dテンソル行列乗算を最適化する必要があります)」「okay holy crap(なんてこった)」「I need to get this code optimized(このコードを最適化する必要があります)」と8回目の改良ステップで言ったりします。モデルはフラストレーションを感じているようです。「Let me see the error is about(エラーについて見てみましょう)」。
モデルが生成するものは奇妙です。これが通常のGPUカーネルプログラマーがやることなのかはわかりませんが、主なポイントは、モデルが不安定な領域に逸脱しているということです。
強化学習を行うとき、強化学習に望むことの1つは、モデルを既存の分布から離れさせることであり、これはKL係数(発散)によって管理されています。彼らはそれも調整し、最終的にバランスを取りました。
オープンソースモデルを取り、新しい革新的な技術でファインチューンし、さらに推論時テスト時スケーリングを追加し、最終的にそのモデルがカーネルプログラミングのようなニッチなタスクでOpenAIのO3モデルに匹敵するほど優れたパフォーマンスを発揮するというのは非常に興味深く、驚くべきことです。
このモデルはすでにHugging Faceで利用可能です。残りの5〜10分を使って、このブログ記事を一語一語読み、データセットとモデルを探索することを強くお勧めします。特にカーネルプログラミングに興味がある場合は。ぜひ皆さんの意見をお聞かせください。
OpenAIの非常に近いパートナーであるDevinがこのようなことをやったことにも非常に驚いています。どれだけの他のアメリカ企業が中国のモデルを取り、私たちに知らせることなくその上に革新を起こしているのか分かりません。また別の動画でお会いしましょう。ハッピープロンプティング!

コメント

タイトルとURLをコピーしました