「GitHub Copilot のようなコード補完ツールは、100 万人以上の開発者に使用されており、コード作成速度を 55% 向上させています」と、Hugging Face のテクニカル リーダーである Philipp Schmid 氏は述べています。「Magicoder や OSS-INSTRUCT などのオープンソースのイノベーションが、OpenAI の GPT-3.5 や Google DeepMind の Gemini Ultra を上回っているのを見るのは、とてもうれしいことです。これらの進歩は、AI テクノロジーの急速な発展を示すだけでなく、この分野でイノベーションを推進するオープンソース コミュニティの重要な役割を浮き彫りにしています。」 コード生成 (プログラム合成とも呼ばれる) は、コンピューター サイエンスにおいて常に難しいトピックでした。過去数十年にわたり、記号的手法の研究に多くの研究が行われてきました。最近、コードでトレーニングされた大規模言語モデル (LLM) は、ユーザーの意図を正確に満たすコードの生成において大きな進歩を遂げ、実際のソフトウェア開発を支援するために広く使用されるようになりました。 当初は、GPT-3.5 Turbo (別名 ChatGPT) や GPT4 などのクローズドソース モデルが、さまざまなコード生成ベンチマークやリーダーボードを支配していました。コード生成の分野でオープンソース LLM の開発をさらに促進するために、LLM の命令追従能力をガイドする SELF-INSTRUCT が提案されています。コード領域では、実践者は通常、より強力な教師モデル (ChatGPT や GPT-4 など) を使用して合成コーディング命令を設計し、生成されたデータを使用してより弱い生徒モデル (CODELLAMA など) を微調整して、教師から知識を抽出します。 Code Alpaca を例に挙げます。Code Alpaca には、21 個のシード タスクを使用して ChatGPT に SELF-INSTRUCT を適用することによって生成された 20,000 個のコード命令が含まれています。 LLM のエンコード機能をさらに強化するために、Luo ら 2023b は、さまざまなヒューリスティック手法を使用してシードコード命令 (Code Alpaca など) の複雑さを高め、オープンソース モデルで SOTA 結果を達成した Code Evol-Instruct を提案しました。 これらのデータ生成方法は、LLM の命令追従機能を改善するのに効果的ですが、内部的には一連の厳密に定義された定義済みタスクまたはヒューリスティックに依存しています。たとえば、SELF-INSTRUCT を使用する Code Alpaca は 21 個のシード タスクのみに依存し、同じプロンプト テンプレートを使用して新しいコード命令を生成します。一方、Code Evol-Instruct は Code Alpaca をシードとして使用し、データセットを進化させるために 5 つのヒューリスティック手法のみに依存します。 Yu et al., 2023 および Wang et al., 2023a で述べられているように、このような方法は、LLM および事前定義されたタスクに固有の体系的なバイアスを大幅に継承する可能性があります。 この論文では、イリノイ大学アーバナ・シャンペーン校 (UIUC) の Lingming Zhang 氏のチームが、オープンソースから直接学習することで LLM の固有のバイアスを減らし、高品質で創造的なコード指示を作成する可能性を引き出す OSS-INSTRUCT を提案しました。
下の図 1 に示すように、OSS-INSTRUCT は強力な LLM を活用して、オープンソース環境から収集された任意のランダム コード スニペットからインスピレーションを得て、新しいコーディング問題を自動的に生成します。この例では、LLM は異なる関数からの 2 つの不完全なコード スニペットからヒントを得て、それらをうまくリンクして現実的な機械学習の問題を作成しました。 現実世界にはほぼ無限のオープンソース コードが存在するため、OSS-INSTRUCT はさまざまなシード コード スニペットを提供することで、多様で現実的かつ制御可能なコード命令を直接生成できます。研究者らは最終的に 75,000 個の合成データを生成し、CODELLAMA-PYTHON-7B を微調整して Magicoder-CL を取得しました。 OSS-INSTRUCT はシンプルですが効果的で、既存のデータ生成方法とは直交しており、組み合わせて使用することでモデル エンコーディング機能の限界をさらに押し広げることができます。そこで、110,000 エントリを含むオープンソースの Evol-Instruct 上で Magicoder-CL の微調整を続け、MagicoderS-CL が完成しました。 研究者らは、Python テキストからコードを生成する HumanEval と MBPP、多言語コードを生成する MultiPL-E、データ サイエンスの問題を解決するための DS-1000 など、幅広いプログラミング タスクで Magicoder と MagicoderS を評価しました。さらに、より厳密なモデル評価のために、強化された HumanEval+ および MBPP+ データセットを含む EvalPlus を採用しました。 EvalPlus 強化テストでは、ChatGPT や GPT-4 などの大規模コード モデルの実際の精度が、HumanEval や MBPP などの広く使用されているデータセットでの以前の評価と比較して平均で約 15% 低下することが実験的に確認されています。興味深いことに、EvalPlus は Zhang Lingming 教授のチームの最近の成果でもあります。わずか半年で業界で広く採用され、GitHub で 500 個のスターを獲得しました。 EvalPlus でのモデル評価の詳細については、EvalPlus リーダーボード (https://evalplus.github.io/) を参照してください。 結果は、Magicoder-CL と MagicoderS-CL の両方が基本的な CODELLAMA-PYTHON-7B を大幅に改善することを示しています。さらに、Magicoder-CL は、テストされたすべてのベンチマークにおいて、WizardCoder-CL-7B、WizardCoder-SC-15B、およびパラメータが 16B 以下のすべての調査された SOTA LLM よりも優れたパフォーマンスを発揮します。強化された MagicoderS-CL は、HumanEval で ChatGPT と同等の pass@1 結果 (70.7 vs. 72.6) を達成し、より厳格な HumanEval+ ではそれを上回り (66.5 vs. 65.9)、MagicoderS-CL がより堅牢なコードを生成できることを示しています。 MagicoderS-CL は、同じ規模のすべてのコード モデルの中で SOTA 結果も達成します。 DeepSeek-Coder モデル ファミリは最近、優れたエンコード パフォーマンスを実証しました。これまでに公開された技術的な詳細は限られているため、セクション 4.4 で簡単に説明します。それでも、彼らはDeepSeek-Coder-Base 6.7BにOSS-INSTRUCTを適用して、Magicoder-DSとMagicoderS-DSを作成しました。 Magicoder-DS と MagicoderS-DS は、CODELLAMA-PYTHON-7B に基づく以前の結果と一致しているだけでなく、より強力な DeepSeek-Coder-Base-6.7B のメリットも享受します。この利点は、HumanEval で驚異的な 76.8 パス@1 を達成した MagicoderS-DS によって実証されています。 MagicoderS-DS は、微調整トークンの数が 1/8 に削減されているにもかかわらず、HumanEval、HumanEval+、MBPP、MBPP+ でも DeepSeek-Coder-Instruct 6.7B よりも優れたパフォーマンスを発揮します。 OSS-INSTRUCT: オープンソースに基づく命令チューニング大まかに言えば、上の図 1 に示すように、OSS-INSTRUCT は、オープンソース環境 (GitHub など) から収集されたいくつかのシード コード スニペットに基づいてコーディングの問題とその解決策を生成するように LLM (ChatGPT など) にプロンプトを提供することで機能します。シードフラグメントは生成の制御可能性を提供し、LLM が現実世界のプログラミングシナリオを反映した多様なコーディング問題を作成することを促します。 コードの問題を生成する OSS-INSTRUCT は、オープン ソース環境から簡単に取得できるシード コード スニペットを活用します。この記事の研究者は、StarCoderData をシード コーパスとして直接使用しています。これは、StarCoder のトレーニングに使用される The Stack データセットのフィルター処理されたバージョンであり、さまざまなプログラミング言語で記述されたライセンスされたソース コード ドキュメントが含まれています。 StarCoderData を選択した理由は、これが広く採用されており、高品質のコード スニペットが多数含まれており、さらにデータ精製による後処理も行われているからです。 コーパス内の各コード ドキュメントについて、モデルがインスピレーションを得てコーディングの質問を生成するためのシード フラグメントとして、1 ~ 15 行の連続行をランダムに抽出します。最終的に、80,000 個のコード ドキュメントから 80,000 個の初期シード フラグメントが収集されました。そのうち 40,000 個は Python から、残りの 40,000 個は C++、Java、TypeScript、Shell、C#、Rust、PHP、Swift から均等に分散されました。収集された各シード コード スニペットは、下の図 2 に示すプロンプト テンプレートに適用され、教師モデルによって入力として取得され、エンコードの問題とその解決策が出力されます。 データのクリーニングと浄化 データをクリーニングする際、研究者は同じシードコードスニペットを共有するサンプルを除外しました。生成されたデータには他の種類のノイズ(不完全な解など)も存在しますが、Honovich et al. [2023]に触発されて、これらのノイズは除去されず、LLMによって学習できる貴重な情報がまだ含まれていると考えられています。 最後に、StarCoder Li et al., 2023 と同じロジックを使用して、HumanEval と MBPP からのドキュメント文字列またはソリューション、APPS からのドキュメント文字列、DS-1000 からのヒント、または GSM8K からのコーディングの質問を削除することにより、トレーニング データをクリーンアップします。実際、クリーンアップ プロセスでは、追加の 9 つのサンプルのみがフィルター処理されました。シード コーパス StarCoderData は厳密なデータ精製を受けているため、この観察結果から、OSS-INSTRUCT がシードを超えて追加のデータ漏洩を引き起こす可能性は低いと考えられます。最終的な OSS-INSTRUCT データセットには、約 75,000 個のエントリが含まれています。 OSS-INSTRUCTの定性的な例 下の図 3 は、OSS-INSTRUCT が LLM がシード コード スニペットからインスピレーションを得て、新しいコーディングの問題とソリューションを作成するのにどのように役立つかを示す定性的な例を示しています。たとえば、シェル スクリプトの例では、LLM が 1 行のシェル スクリプトを使用して Python コーディング問題を作成する方法を示しています。ライブラリのインポート例では、LLM がいくつかのインポート ステートメントを使用して現実的な機械学習の問題を作成する方法を示します。 同時に、クラス シグネチャの例は、SpringBootApplication などのアノテーションや bank などのキーワードを使用して不完全なクラス定義からインスピレーションを引き出す LLM の能力を示しています。これに基づいて、LLM は Spring Boot に基づく完全な銀行システムの実装を必要とする問題を生成しました。 全体として、OSS-INSTRUCT は、アルゴリズムの課題、現実世界の問題、単一関数コードの生成、ライブラリベースのプログラム完成、プログラム全体の開発、さらにはアプリケーション全体の構築など、さまざまなコード構造とセマンティクスを持つさまざまなコーディング タスクを作成するように LLM に刺激を与えることができます。 OSS-INSTRUCT によって生成されるデータのカテゴリを研究するために、研究者は、タスクの指示に基づいてさまざまなテキスト埋め込みを生成できる SOTA 埋め込みモデルの 1 つである INSTRUCTOR を使用しました。研究者たちは、OctoPack と GitHub のトピック タグにヒントを得て、コーディング関連の特定のカテゴリを 10 個手動で設計しました。下の図4に示すように、OSS-INSTRUCTの各サンプルの埋め込みとこれら10のカテゴリーの埋め込みとの間のコサイン類似度を計算し、カテゴリー分布を取得しました。全体的に、OSS-INSTRUCT は同じカテゴリ内で多様性とバランスを示しています。 生成された質問と解決策の長さの分布を以下の図 5 に示します。横軸は各問題/ソリューションのトークンの数を表し、縦軸は対応するサンプルの数を表します。 データ生成プロセスによって HumanEval のような問題や解決策がより多く生成されるかどうかを調査するために、研究者は 75,000 のデータセットの各サンプルを 164 の HumanEval サンプルのそれぞれとペアにし、TF-IDF 埋め込みを使用してそれらのコサイン類似度を計算し、次に各 OSS-INSTRUCT サンプルを類似度スコアが最も高い HumanEval サンプルに関連付けました。 研究者らはデータセットをそれぞれ Code Alpaca および evol-codealpaca-v1 と比較しました。前者はコーディング タスクに SELF-INSTRUCT を適用する 20K データセットであり、後者は 110K のコーディング命令を含む Evol-Instruct のオープン ソース実装です。公式の Code Evol-Instruct データセットはまだリリースされていないため、研究者はオープンソースの実装を使用しました。また、セクション 2.2 で説明したのと同じ方法を使用して、すべてのデータセットを精製しました。 下の図 6 の結果は、調査したすべてのデータ生成手法の中で OSS-INSTRUCT の平均類似度が最も低く、SELF-INSTRUCT の平均類似度が最も高いことを示しています。この結果は、OSS-INSTRUCT の改善が、単に同じ分布からのデータが含まれただけによるものではないことを示唆しています。 評価するPython テキストからコード生成 以下の表 1 は、さまざまなベンチマークにおける pass@1 のさまざまな LLM の結果を示しています。結果から最初にわかるのは、Magicoder-CL がベースの CODELLAMA-PYTHON7B に比べて大幅な改善を示し、CODELLAMA-PYTHON-34B と WizardCoder-CL-34B を除く、HumanEval および HumanEval+ で調査された他のすべてのオープン ソース モデルよりも優れていることです。 Magicoder-CL は WizardCoder-SC-15B を上回り、HumanEval および HumanEval+ 上の CODELLAMA-PYTHON-34B よりも大幅に改善されていることは注目に値します。 MagicoderS-CL は、トレーニングに直交 Evol-Instruct メソッドを使用することで、さらなる改善を実現します。 MagicoderS-CL は、HumanEval+ 上の ChatGPT および他のすべてのオープン ソース モデルよりも優れています。 さらに、HumanEval でのスコアは WizardCoder-CL-34B や ChatGPT よりもわずかに低いものの、より厳密な HumanEval+ データセットではこれらを上回っており、MagicoderS-CL がより堅牢なコードを生成できる可能性があることを示しています。 多言語コード生成 研究者らは、Python に加えて、MultiPL-E ベンチマークを使用して、以下の表 2 に示すように、Java、JavaScript、C++、PHP、Swift、Rust など、広く使用されている 6 つのプログラミング言語の包括的な評価を実施しました。 結果は、Magicoder-CL が、研究したすべてのプログラミング言語において、ベースとなる CODELLAMA-PYTHON-7B よりも大幅な改善を示していることを示しています。さらに、Magicoder-CL は、プログラミング言語の半分以上で SOTA 15B WizardCoder-SC よりも優れた結果を達成しています。さらに、MagicorderS-CL はすべてのプログラミング言語でパフォーマンスをさらに向上させ、わずか 7B のパラメータで WizardCoder-CL-34B に匹敵するパフォーマンスを実現します。 Magicoder-CL は非常に限られた多言語データのみを使用しますが、それでも同等またはより大規模な他の LLM よりも優れていることは注目に値します。さらに、評価フレームワークはモデルを補完形式で評価しますが、Magicorders は指示に基づいて微調整されているだけであるにもかかわらず、明らかな改善を示しています。これは、LLM がその形式外のデータから知識を学習できることを示しています。 データサイエンスのためのコード生成 DS-1000 データセットには、Python の 7 つの一般的なデータ サイエンス ライブラリからの 1,000 種類のデータ サイエンス コーディング問題が含まれており、各問題を検証するための単体テストが提供されます。 DS-1000 には補完モードと挿入モードの両方がありますが、基盤となる CODELLAMA-PYTHON は挿入をサポートしていないため、ここでは補完のみが評価されます。 以下の表 3 は、最近の INCODER、CodeGen、Code-Cushman-001、StarCoder、CODELLAMA-PYTHON、WizardCoder を含む評価結果を示しています。 結果は、Magicoder-CL-7B が、最先端の WizardCoder-CL-7B および WizardCoder-SC-15B を含む、評価されたすべてのベースラインよりも優れていることを示しています。 MagicoderS-CL-7B は、WizardCoder-SC-15B と比較して 8.3 パーセント ポイントの絶対的な改善を実現し、限界をさらに押し広げます。 DeepSeek-Coderとの比較 DeepSeek-Coder は、優れたエンコード パフォーマンスを発揮する最近リリースされたモデル ファミリです。執筆時点では技術的な詳細と指示データはまだ公開されていないため、ここで簡単に説明します。研究者らは、CODELLAMA-PYTHON-7B で実行したものと同じ微調整戦略を DeepSeek-Coder-Base-6.7B で使用して、Magicoder-DS と MagicoderS-DS を取得しました。 以下の表 4 は表 1 と同様の傾向を示しており、OSS-INSTRUCT を適用するとベース モデルが大幅に改善されることがわかります。特に、MagicoderS-DS バリアントは、トレーニング トークンの数を 1/8 にして、すべてのベンチマークで DeepSeek-Coder-Instruct-6.7B を上回り、これらのデータセットでは DeepSeek-Coder-Instruct-33B と同等のパフォーマンスを発揮します。 より詳しい技術的な詳細と実験結果については、原著論文を参照してください。 チームについてこの論文の著者は、すべてイリノイ大学アーバナ・シャンペーン校(UIUC)の張玲明教授のチームに所属しており、次のメンバーで構成されています。博士課程2年生で、研究分野は大規模AIモデルに基づくコード生成です。科学研究インターンであり、現在は清華大学の4年生である王哲さん。研究分野は機械学習と自然言語処理です。博士課程3年生で、研究分野はプログラミングシステムと機械学習です。博士課程2年生で、研究分野は大規模AIモデルに基づく自動ソフトウェアデバッグです。張玲明教授は現在、イリノイ大学コンピュータサイエンス学部の准教授です。主にソフトウェアエンジニアリング、機械学習、大規模コードモデルの研究に従事しています。詳しい情報については、張教授の個人ホームページ( https://lingming.cs.illinois.edu/ )をご覧ください。 |
<<: Google DeepMind が AI モデルが複雑な離散数学問題を計算できるようにする「FunSearch」トレーニング方法をリリース
2023年にAIが世界にどのような変化をもたらすかといえば、間違いなくビッグモデルの急速な発展が最...
[[385301]]核となる考え方は、次のように簡単にまとめることができます。ニューラル ネットワー...
デザイン界では有名なブランド、フィリップ・スタルク。国際宇宙ステーションの居住モジュールからスティー...
[[427319]] 01 データデータは、携帯電話に残すデジタルフットプリントから健康記録、買い物...
[[203224]]概要: 従来のモデルに別れを告げましょう。テクノロジー企業が機械学習に取り組む...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
設計、コーディングからテスト、導入、運用・保守まで、ソフトウェア開発の全プロセスをAIに任せることが...
11月10日、マイクロソフトは人工知能研究企業OpenAIに100億ドル以上を投資したにもかかわらず...
8月11日、2018年のCCFビッグデータ&Computational Intelligenceコン...
[[408814]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
Facebook の研究者は最近、インターネット上のランダムなラベルなし画像のセットから学習できる新...