大規模言語モデルはセルフデバッグできるようになった – 開発者はますます仕事がなくなるか?

masapoco
投稿日
2023年4月14日 18:38
brain

AIの台頭により、失われる仕事の筆頭にまさかソフトウェア開発者が挙げられる日が来ようとは想像もしていなかったが、ここ数ヶ月、開発者の仕事を奪おうとする新しいAIツールが続々と登場している。最初はGitHub Copilotで、開発者のコード生成を引き受けた。Amazonもこの分野に参入し、戦争は激化している。そして今、研究者たちが大規模言語モデル(LLM)がセルフデバッグする方法を発見したことで、デバッグさえも奪われようとしている

Google Brainの研究者が発表した論文で、LLMが自分のコードをデバッグできるようにする技術が実証された。この方法を用いると、LLMはテキストからSQLへの生成で最大9%、コード翻訳で10%近い精度を向上させることができたという。この方法は、初期の改善として注目されており、他の方法とともに、DevOpsのパラダイムシフトを呼び起こす可能性がある。

この論文は、「Teaching Large Language Models To Self-Debug」と題され、自己デバッグを可能にする新しい方法について説明している。このアプローチは、LLMの中核的な強みである、自然言語でコードを説明する能力を活用したものだ。LLMに自然言語で説明させることで、LLMは自分自身の間違いを特定し、それを修正することができる。

このアプローチは、額面上は極めてシンプルに見えるかも知れないが、その効果は実証されている。LLMは、SQLのSpiderデータセット、C++からPythonへの翻訳のTranscoder、PythonのMBPPなど、さまざまなコード生成ベンチマークで最先端の性能を達成することが出来た。より良いコードを作成するだけでなく、セルフデバッグはサンプルの効率を向上させ、それぞれのアウトプットがセルフデバッグを使用しないアウトプットよりも「価値」があることを意味する。

このアプローチは、人間のプログラマーにヒントを得たと研究者は述べている。プログラマーは、一回でコードを正しく理解することはあまりなく、自分が作ったものをもう一度見てみる傾向にある。LLMにこの機能を持たせることは、過去にもSelf-RefineReflexionといった研究論文で試みられていた。しかし、セルフデバッグは、最も少ないリソースで、最も最適なアウトプットを提供するアプローチであるようだ。

セルフデバッグのためのワークフローはかなり直感的だ。最初のステップでは、モデルがコードを生成し、それが実行される。このコードが実行される間、モデルはコードを説明し、実行結果と一緒に「フィードバック・メッセージ」を作成する。このメッセージはLLMにフィードバックされ、プログラミングが正常に実行されるまで、このプロセスが繰り返される。

このアプローチに加え、研究チームは、いくつかのプロンプトと実行ベースのコード選択を組み合わせた。数回のプロンプト入力により、LLMは入出力構文を学習し、すべての出力に説明生成コンポーネントを統合することができるようになった。実行ベースのコード選択により、LLMは様々なサンプルから最適な最終予測を選択することができ、サンプル効率を向上させることができる。

論文にあるように、このモデルは、間違った出力に対して説明を与えることで、繰り返し自分自身を改善することが出来る。この方法は、LLMから直接コードを受け取るよりも多くのステップを必要とするかもしれないが、追加のトレーニングや微調整を必要としないため、既存のコード生成LLMに簡単に組み込むことができる可能性があることを意味する。

このアプローチなどにより、次世代のオートコーダはセルフデバッグができるようになるかも知れない。このことは、「ディスラプターになるのか、イネーブラーになるのか」という非常に重要な問いを提起している。

オートコーディングプラットフォームを自分たちの職業に対する脅威と考える人がいる一方で、オートコーディングプラットフォームには開発者の能力を向上させる能力があると感じる人もいる。

GitHub Copilotが行った調査によると、AIペアプログラマによって88%のプログラマが生産性が向上したと感じ、96%が反復作業のスピードが上がったと回答している。実際、ソフトウェアを使用している開発者のほぼ3/4が、Copilotのおかげで流れに身を任せることができたと述べており、ペアプログラマを使用している人は、使用していない人に比べて55%多くタスクを完了させている。

開発者がAIツールから時折出てくるバグだらけのコードのデバッグに時間を費やしても、結果的に全体的にスムーズなワークフローになる。実際、デバッグはこのワークフローにおける最大の破壊要因だろう。この思いに共鳴して、Google Brainのリサーチサイエンティストで論文の研究者の一人であるXinyun Chenは、自己デバッグ能力の向上はLLMコーディングを強化するために最も重要なことの一つだと述べている。

Constitution AI、Reflexion、AutoGPTなどの他のアプローチと組み合わせると、来年の今頃には平均的なDevOpsワークフローが極めて異なるものになる可能性がある。Codiumの共同創業者兼CEOであるItamar Friedman氏は、ツイートの中で「『コードジェン』ツールを含むほとんどの現実世界のソフトウェア製品は、スタックモジュールとAIエージェントを備えた本格的なソリューションになるだろう」と述べている。これは、AIモデルが他のAIモデルを呼び出して一種の創発的な知性をシミュレートする「スタッキング」AIモデルについて言及したものだ。

これは開発者の仕事に大きな混乱をもたらすという議論があるが、業界の人々は同じ考えを持っていないようだ。


論文

参考文献

研究の要旨

大規模言語モデル(LLM)は、コード生成において優れた性能を発揮している。しかし、複雑なプログラミングタスクでは、一度に正しい解を生成することは困難であるため、いくつかの先行研究では、コード生成性能を向上させるためにプログラム修復アプローチを設計している。本研究では、大規模な言語モデルに対して、予測されたプログラムをデバッグするための数発のデモを教えるSelf-Debuggingを提案する。特に、Self-Debuggingは、大規模言語モデルにラバーダックデバッグを教えることができることを実証する。すなわち、コードの正しさやエラーメッセージに関するフィードバックがなくても、モデルは、自然言語で生成コードを説明することによって、間違いを特定することができる。Self-Debuggingは、テキストからSQLへの生成のためのSpiderデータセット、C++からPythonへの翻訳のためのTransCoder、テキストからPythonへの生成のためのMBPPなど、いくつかのコード生成ベンチマークで最先端の性能を達成した。予測の正しさを検証するユニットテストが存在しないSpiderベンチマークでは、コード説明を伴うセルフデバッグにより、ベースラインを常に2~3%改善し、最も難しいラベルの問題では予測精度を9%改善した。ユニットテストが利用できるTransCoderとMBPPでは、Self-Debuggingはベースラインの精度を最大12%向上させる。一方、フィードバックメッセージの活用や失敗した予測の再利用により、Self-Debuggingはサンプル効率を顕著に改善し、10倍以上の候補プログラムを生成するベースラインモデルと同等かそれ以上の性能を発揮することができる。



この記事が面白かったら是非シェアをお願いします!


  • twitter icon
    次の記事

    Twitter、有料サブスクリプション加入者向けに最大10,000文字までの投稿を解禁

    2023年4月15日 6:16
  • 前の記事

    Stability AI、より“フォトリアリスティック”に進化した、「Stable Diffusion XL」ベータ版を発表

    2023年4月14日 17:47
    stable diffusion xl 1
この記事を書いた人
masapoco

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


おすすめ記事

  • openai

    OpenAI、15秒の音声サンプルから感情豊かで自然な音声を合成できる「Voice Engine」を発表

  • a04c35e8e555c1cc7ae1d6a5f3159856

    MicrosoftとOpenAI、1000億ドル以上をかけて超人的AI開発のためのスーパーコンピューター「Stargate」を開発する計画

  • Sam Altman TechCrunch SF 2019 Day 2 Oct 3 cropped cropped

    ベンチャーキャピタリスト、OpenAIのSam Altman氏を“誇大妄想的”と非難

  • google logo image

    Googleが非営利団体を対象に2000万ドルの資金を提供し生成AI活用を支援

  • Pixel 8 in Rose.max 936x936.format webp

    Google、方針を転換しPixel 8にもGemini NanoによるオンデバイスAI機能を搭載へ

今読まれている記事