Deepmind の AI はコーディングの技術を学習中
グレゴリー・バーバー
コンピューター サイエンスの分野では、分類ほど基本的なタスクはおそらくありません。 バブル、ヒープ、マージ - 好みに合わせて選択してください。 コンピューター内のデータを並べ替える方法は、徹底的に理論化され、何百万人もの初心者の練習問題として機能し、専門の開発者によって数十年にわたって最適化されてきました。 任意のプログラミング言語で sort() 関数を入力すると、そのコードは信頼できます。 触らないでください。 すでに素晴らしい機能を発揮しています。
しかし昨年、Google の Deepmind のエンジニアが開発した AI システムは、重要な点まで大幅に改善されました。 Deepmind が AlphaDev と呼ぶこのシステムは、一般的なコーディング言語である C++ で短いシーケンスを数値で並べ替える新しい方法を考案するという任務を負っていました。 これは、内部に潜入して AI にアセンブリ コードで新しいアルゴリズムを構築させることを意味します。これは、C++ などのプログラミング言語とコンピューター ハードウェアの間のギャップを埋める命令です。 C++ 開発者がコンピュータに「並べ替え」を指示すると、それらのコマンドは機械可読コードに変換され、コンピュータのメモリとプロセッサに何をすべきか、つまりデータをどこに移動するか、どのように変更するかを正確に指示します。 ビットと金属が接触する場所です。
実験はうまくいきました。 昨年 4 月以来、AI が考案した新しい並べ替えアルゴリズムのおかげで、C++ の実行速度が若干速くなりました。 しかし、今日の Nature 誌でこの研究について説明した AlphaDev のエンジニアによると、それは単なる最初のステップにすぎません。 「私たちはコンピューティング スタック全体を最適化したいと考えています」と、並べ替えプロジェクトを主導したディープマインドのスタッフ研究科学者ダニエル マンコウィッツ氏は言います。 Mankowitz 氏は、AlphaDev はソートだけでなく、ハッシュなどの他の基本的なタスクのアルゴリズムもすでに改良していると述べています。
「この研究は信じられないほどエキサイティングだと思います」と、この研究には関与していないMITのプログラム合成の専門家、アルマンド・ソーラー・レザマ氏は言う。 AI に新しい並べ替えアルゴリズムを考え出させると便利です。 さまざまなタスクにわたって最先端のコードの書き方を学習できる AI を構築することは、はるかに重要なことだと彼は言います。 これは、AlphaDev がコーディング技術そのものについて、より基本的なことを学び始めたことを意味します。
もちろん、それには重大な制約が伴います。 「これらは非常に小さなプログラムです」と彼は付け加えます。アセンブリ コードの命令は合計でも数十個に過ぎません。 しかし、これらの小さなプログラムは、人間が無理なく最適化されているため、コンピューターのパフォーマンスにとって大きなボトルネックとなることがよくあります。 全体として、AlphaDev の新しい C++ ソート アルゴリズムは、長い数値シーケンスをソートする場合に以前の方法よりも 1.7 パーセント効率が高く、5 項目のシーケンスでは最大 70 パーセント高速です。 マンコウィッツ氏は、これらの改善は規模が大きくなると積み重なっていくと言う。 AI が作成したコードが C++ の主要なオープンソース ライブラリである Libc++ に送信されて以来、アルゴリズムは 1 日に何兆回も使用されていると同氏は推定しています。
これらの改善は強化学習と呼ばれる技術のおかげで、これはディープマインドの AI がチェスや囲碁などのゲームをマスターするのに使用されるのと同じアプローチです。 このタイプの AI は実践することで学習します。 これは、アセンブリ プログラムの作成などの特定のタスクをゲームとして扱うことで機能し、AI はプログラムの効率を高める賢い動きをすることで報酬を受け取ります。 時間が経つにつれて、システムはこの報酬を最大化するように機能し、その結果、囲碁戦略が勝利したり、組み立てプログラムがより迅速になったりするようになります。 これは、単語やコードの書き方を学習するために膨大な量のデータに依存する GPT-4 のような大規模言語モデルに見られる種類の AI とは異なります。 これは、インターネットの論調を反映した文章を作成したり、コードの共通部分を作成したりするのに最適です。 しかし、AI がこれまで経験したことのないコーディングの課題に対して、斬新で最先端のソリューションを生み出すことはあまり得意ではありません。
ジェレミー・ホワイト
エミリー・マリン
WIREDスタッフ
ウィル・ナイト
チェスや囲碁と同じように、アセンブリ コードの作成は、多くの可能性のある手や失敗する可能性がある、トリッキーで終わりのない作業です。 C++ や Python などの最新のプログラミング言語では、人間の言語を反映した短いコマンドを使用してデータを移動するという本質が隠蔽されています。 このような「高級」言語が登場した 1950 年代には、プログラミングの問題は基本的に解決されたと考える人もいました。 それまで、プログラミングは基本的にアセンブリをいじっているだけでした。初期の高級言語の 1 つである Fortran は、そのコマンドが常に動作するアセンブリ コードに変換されるため、当初は「Fortran 自動コーディング システム」として販売されていました。 「Fortran は、人間よりも優れたコードをバグなしで書こうとしていたのです」と Solar-Lezama 氏は言います。 「今ではそれは笑い話に聞こえますが、それは本当でした。」
C++ や Fortran などの言語を改善するには、依然として基盤となるアセンブリをいじる必要があり、通常は無関係な手順を削除して、動作を高速化する方法を見つける必要があります。 アセンブリには高レベルのプログラミングのような形式的な構造や抽象化が欠けており、たった 1 つの間違いでアルゴリズムが壊れてしまう可能性があるため、AI がプレイしなければならないゲームは面白くありません。 「何度も何度も失敗するでしょう」とソーラーレザマ氏は説明する。
AlphaDev の革新性は、動作するアセンブリ プログラムの構造が AI コードで表現される方法を改善することです。 これにより、報酬システムが可能性をより適切に絞り込むことができます。 AI はより良く、より速くなります。
大まかに言えば、AI の並べ替えソリューションは見慣れたものに見えます。 いくつかの数値を昇順に並べる方法は限られています。 型破りな命令 (人間のプログラマーが試そうとも思わないような命令) を使用して、アセンブリ シーケンスからいくつかの命令をなんとか削減します。 マンコウィッツ氏はこれらの行動を、AlphaGoが2016年のグランドマスター・イ・セドルとのエキシビションマッチでプレイした悪名高いハンドである37手と比較している。 この動きはあまりにも奇妙だったので、観察者たちは当初、コンピューターが試合を失敗させたのではないかと考えた。 しかし、それは最終的にはコンピューターの勝利にとって極めて重要なものとなり、それ以来、ゲームのプレイ方法を変えてしまいました。
したがって、結果として得られるコードは少し奇妙に見えます。これは、コンピューターに非常に特殊な方法でデータを強制的に移動させる必要があるためです。 「これは決して経済的なコードの書き方ではありません」と、昨年の春に Deepmind の提案をレビューした Libc++ の寄稿者、Nikolas Klauser 氏は言います。 これにより、実際にコードを運用環境に導入するためのリスクが高まったと彼は言います。 何年も問題なく機能してきた並べ替えなどの基本的なアルゴリズムを、ほんのわずかな効率向上のために更新するのは危険です。 しかし、最終的にはすべてがうまくいきました。 コードの更新が完了しました。
マンコウィッツ氏は、AlphaDev が現在作成できるプログラムは小規模であり、人間の最善の試みを上回る、より大規模で複雑なアルゴリズムを生成するには、AI 開発における新たなブレークスルーが必要になる可能性が高いことを認めています。 しかし、Solar-Lezama のようなコード生成の専門家にとって、この研究は、より一般化された AI コーディングに向けた重要な一歩であり、Fortran とその「自動プログラミング」システムを振り返ることになります。 プログラマーは廃業したのでしょうか? 決してそうではありません。 プログラマーであることの意味は変わりましたか? 完全に。