本日、私たちは AI コード生成の限界を押し広げる最先端のブレークスルーを発表します。NinjaTech AI のサイエンスチームは、「マルチプログラミング言語アンサンブル」(MPLE) という新しいコード生成アプローチを開発しました。
このアプローチをLlama 3.1 405B Instructで使用したところ、HumanEvalベンチマークで測定したOpenAIのGPT-4OやAnthropicのSonnet 3.5よりも統計的に優れたパフォーマンスを示すことができました。これらの結果と私たちのアプローチの詳細は、に公開されている当社の技術論文に記載されています。 arxiv.org。
このブログ記事では、すべてのAIアシスタントのコード生成機能を大幅に強化する可能性のあるマルチプログラミング言語アンサンブル(MPLE)に関連する3つの重要な発見について詳しく説明します。
- コード生成のためのエージェントワークフロー (MPLE) アプローチでは、費用対効果の高い方法で精度が 2 ~ 9% 向上します。
- MPLEをリフレクションやモンテカルロツリーサーチ(MCTS)などの高度な推論手法と統合し、既存のLLMモデルに適用すると、パフォーマンスがさらに向上します。
- 驚いたことに、llama3.1-405b-instructを搭載したMPLE+MCTSテクニックが次の精度に達することがわかりました。 ヒューマンエバル・ベンチマークで 96.25%。
コード生成の課題
コードを書くには、プログラミング言語を深く理解し、複雑なアイデアを実行可能なコードに変換する能力が必要なため、難しい場合があります。さらに、開発者はデバッグ、最適化、互換性などの問題にも取り組まなければならず、コーディングプロセスがさらに複雑で時間がかかる可能性があります。
ここで役立つのが AI です。大規模言語モデル (LLM) は、ユーザーの指示に従って大量のコードをすばやく生成できます。私たちが立ち上げてから MyNinja.ai 2024年5月下旬には、約17万3,000人の開発者からの734,000を超えるコーダータスクを処理しました。
しかし、AI コード生成によってコード作成の課題がすべて解消されるわけではありません。LLM は 100% 信頼できるわけではありません。コード生成時にエラーが発生する可能性があります。
LLMがエラーを起こす理由は、従来のAIコード生成アプローチが単一のプログラミング言語に依存していたため、言語固有のエラーやバイアスが生じる可能性があるためです。たとえば、LLM は Python でトレーニングされているため、Python コード生成でうまく機能する可能性があります。しかし、C++ コードや Java コードを作成するように求められても、エラー処理やライブラリの使用方法が異なるため、正確な結果が得られない場合があります。LLM が正確なコードを生成するのに苦労するもう 1 つの理由は、人間が読めるテキスト (つまり、ユーザーのプロンプト) をコードに変換するのが難しいことです。
この問題の解決策の 1 つは、より多くのモデルトレーニングに投資することです。企業は、コーディングに関する質問に最初の試行で答えられるように、LLM のトレーニングにより多くの時間と費用を費やすことができます。これはゼロショット学習と呼ばれます。つまり、モデルは例なしでプロンプトだけで正解を生成し、事前の知識のみに基づいて適切な応答を生成します。しかし、ゼロショットアプローチでは、モデルの精度を向上させるために莫大な時間と費用 (1,000万ドルから1億ドル以上) の投資が必要です。
しかし 推論コストは過去2年間で100倍以上減少しました そして彼らはそれを続け、CodeGenのエージェントワークフローという新しい方法を生み出しました。
当社のソリューション:マルチプログラミング言語アンサンブル (MPLE)
私たちのチームは、マルチプログラミング言語アンサンブル(MPLE)と呼ばれるAIコード生成への新しいアプローチを提案しました。このアプローチでは、複数のプログラミング言語の長所を活用して、マルチショットアプローチを使用してより正確で堅牢なコードを生成します。
最初の試行(シングルショット)でモデルに頼って正解を出すのではなく(シングルショット)、LLMと何度もやり取りして正しい応答を生成します。モデルとやり取りするたびに、別のプログラミング言語を使用してユーザーの問題を解決するようにモデルに依頼します。これにより、LLM の本来の強み、つまり 1 つのプログラミング言語から別のプログラミング言語にコードを翻訳できる機能を活用できます。
MPLEは、それぞれ異なるプログラミング言語に精通した専門家のチームで、最初の試行で最も正確なコードを作成するために協力していると考えてください。各エキスパート (またはプログラミング言語) はそれぞれ独自の強みを発揮し、それぞれの長所を組み合わせることで、より正確で信頼性の高いソリューションを生み出すことができます。MPLEは、システムがユーザーから要求された正しいコードを生成するまでの間、これらすべての専門家に「専門知識」を提供するよう求めています。
MPLE の仕組みは次のとおりです。
- 初期コード生成: ユーザーがコード関連の質問をシステムに求めると、AIモデルはユーザーが要求したプログラミング言語で初期応答を生成します。
- 多言語サンプリングと翻訳: 応答がユーザーに返される前に、コードの品質と正確性が確認されます。コードがすべてのテストに合格しなかった場合、モデルは別のプログラミング言語で新しいコードを生成します。その後、新しいコードはユーザー要求のプログラミング言語に翻訳されます。この代替バージョンは、代替言語の長所を活用し、テストの失敗の原因となったエラーを排除できる可能性があるという点で、元のバージョンとは異なります。
- 反復的改良: 改良されたコードバージョンは、テストケースに対して再度テストされます。すべてのテストに合格しなかった場合は、あるバージョンがすべてのテストに合格するまで、さまざまなコーディング言語を繰り返し処理します。プロセスが完了すると、応答 (つまり、最終バージョンのコード) がユーザーに返されます。
- アンサンブル統合: イテレーションを通じて、アンサンブルフレームワークは複数の言語の長所を統合し、プログラムを段階的に改良します。フレームワークは、各言語固有のコード生成を個々の「弱い専門家」として扱うことで、その出力を組み合わせて言語固有のエラーやバイアスを軽減します。

このアプローチは新しいモデルではなく、モデルを再トレーニングする必要もないことに注意することが重要です。これは、既存のLLMとの複数のやりとりを調整して、マルチショットアプローチを使用して可能な限り最善の答えを生み出すシステムです。推論コストが下がり続けるにつれて、経済的に実行可能なAIを活用した結果の未来は、複雑な質問に答えるために大量のトークンが生成される、推論を多用する手法を活用するエージェント型ワークフローによって導かれると考えています。
テストによる MPLE の検証
MPLE フレームワークを、広く認知されている 2 つのコード生成ベンチマークでテストしました。 HumanEval そして ヒューマネバル・プラス。これらのベンチマークは、LLM がユーザープロンプトに基づいて機能的なコードを生成する能力を測定します。
HumanEval は、入力がプログラムの意図する機能を説明するユーザープロンプトであるテキストからコードへの生成タスク向けに設計されています。その後、LLM の出力は、指定された要件を満たす単体テストに合格できるかどうかに基づいて評価されます。Humaneval-Plus は HumanEval を拡張し、コードの堅牢性と正確性を厳密に評価するためのテストケースを多数追加しています。
Pass @1 を使って MPLE の有効性を測定しました。このコード評価方法では、生成されたコードが 1 回目の試行で正常に完了したタスクの割合を測定します。
当社独自のLLMと、GPT-4o、クロード・ソネット-3.5、Llama3.1-405bなどのよく知られたモデルの両方を使用して実験を行いました。
私たちのテストでは、提案された MPLE フレームワークにより、ベースラインと比較して、テスト対象のすべてのLLMで Pass @1 の精度が一貫して向上することがわかりました。たとえば、 GPT3.5-Turboの精度は、ベースラインの65.83パーセントからMPLE搭載時の74.17パーセントに向上しましたは、複数のプログラミング言語を活用して言語固有の偏見やエラーを減らすことの有効性を強調しています(表1を参照)。

MPLEをリフレクションおよびモンテカルロと統合するとより良い結果が得られます
私たちはMPLEをさらに推し進め、MPLEをリフレクションやMCTSなどの高度な推論技術と統合するシステムを設計しました。これらの手法は、特に戦略的または多段階の意思決定を必要とするタスクにおいて、LLMの問題解決能力と推論能力を高めるために使用されます。私たちの仮説は、これらのシステムを組み合わせると、MPLEだけを使用するよりもさらに高い結果が得られるというものでした。一連のテストを通じて、この仮説が正しいことを証明することができました。
また、Humaneval-Plusベンチマークを使用してMPLEをテストしたところ、その結果により、多言語アンサンブルアプローチの利点がさらに検証されました。特筆すべきは、 llama3.1-8bstructのパフォーマンスは、ベースラインの 60.00% からMPLE+リフレクションにより 71.88% に向上しました (表 2 を参照)。

さらに、MPLE+ReflectionとMPLE+MCTSは競争力のある結果をもたらし、複数のモデル(GPT-4Omini、GPT-4O、クロード・ソネット-3.5、およびllama3.1-405b-instruct)が87.50%を達成しました(表3を参照)。

私たちの結果は、MPLEフレームワークを、特に追加の推論アルゴリズムと組み合わせて使用した場合、複数のLLMにわたるコード生成を強化するための強力で柔軟なアプローチを提供することを明確に示しています。MPLE の一貫したパフォーマンスの向上は、AI 主導のソフトウェア開発における実用的な応用の可能性を浮き彫りにしています。
Llama 3.1-405bがMPLEとMCTSで最先端の結果を達成:96.25% の精度!
分析中、MPLEを適用したときのMPLEのパフォーマンスに特に感銘を受けました。MPLE+MCTSの組み合わせは、いくつかのモデルで最高の精度を達成しました。たとえば、llama3.1-405b-instructは、SOTA Pass @1 の精度が 96.25% に達しました(表4を参照)。

ザ・ロード・アヘッド
MPLEでできることの限界に挑戦し続ける中で、研究開発の新しい分野を開拓できることを楽しみにしています。重点分野としては、以下のものが挙げられます。
- より堅牢な評価指標の開発: MPLEのパフォーマンスを正確に測定するには、効果的な評価指標を作成することが重要です。より包括的な指標に重点を置くことで、フレームワークの正確性、信頼性、およびさまざまな分野にわたる実用的な適用性を確保できます。
- 現実世界の問題へのMPLEの適用: MPLEは、ビジネスプロセスの自動化、ソフトウェア開発パイプラインの最適化、サイバーセキュリティ対策の改善など、現実世界の複雑な課題に対処する可能性を秘めています。MPLEの一般化可能性と影響を評価するには、幅広いデータセットと実際のアプリケーションにわたってMPLEを評価することが重要になります。
- コーディングタスクのためのNinjaLLMの強化: 当社のNinjaLM 3.0(llama3.1-405bの微調整および量子化バージョン)は、以下で入手できます。 MyNinja.ai HumanEval(93.85%)とHumaneval-Plus(86.67%)で有望なスコアを達成しており、そのパフォーマンスをさらに向上させる道を歩んでいます。MPLE ベースの Ninja Coder を 1 か月以内にリリースする予定です。
MPLEに関する私たちの研究を世界と共有できることを嬉しく思います。このアプローチは LLM コード生成に大きな影響を与える可能性があると私たちは考えています。MPLEは言語特有のエラーやバイアスを減らし、より正確で堅牢なコード生成を可能にします。つまり、開発者がより大きな問題に取り組む時間が増えるということです。私たちはこの分野での研究と開発を続けることに全力を注いでおり、将来 MPLE の革新的な応用が見られることを楽しみにしています。
追伸将来のバグはずっと少なくなります :-)
追伸このブログ記事の作成には MyNinja.ai を使用しました。



