[論文レビュー] Magicoder: Empowering Code Generation with OSS-Instruct
Magicoder は OSS-Instruct (75k data) および Evol-Instruct で訓練されたオープンソースのコード LLM のファミリー(7B)。Python、マルチリンガル、データサイエンスのタスク全般におけるコード生成を向上させ、大規模モデルや ChatGPT に対抗し、ベンチマークで時には凌ぐ。
We introduce Magicoder, a series of fully open-source (code, weights, and data) Large Language Models (LLMs) for code that significantly closes the gap with top code models while having no more than 7B parameters. Magicoder models are trained on 75K synthetic instruction data using OSS-Instruct, a novel approach to enlightening LLMs with open-source code snippets to generate diverse instruction data for code. Our main motivation is to mitigate the inherent bias of the synthetic data generated by LLMs through the wealth of open-source references for the production of more realistic and controllable data. The orthogonality of OSS-Instruct and other data generation methods like Evol-Instruct further enables us to build an enhanced MagicoderS. Both Magicoder and MagicoderS substantially outperform state-of-the-art code models with similar or even larger sizes on a wide range of coding benchmarks. Notably, MagicoderS-CL-7B based on CodeLlama even surpasses the prominent ChatGPT on HumanEval+ (66.5 vs. 65.9 in pass@1 ). Overall, OSS-Instruct opens a new direction for crafting diverse synthetic instruction data for code using abundant open-source references.
研究の動機と目的
- オープンソースのコードを指示ソースとして活用することで、コード生成の合成指示データのバイアスを軽減する。
- 実際のオープンソースのコード断片から高品質で多様性があり、制御可能な指示調整データを作成する。
- Magicoder および Magicoder-S を含む一連のオープンソース Code LLM を構築・評価し、同程度または小さいスケールのベースラインを上回る。
- OSS-Instruct が言語やドメインを横断したパースの改善に有効であることを示し、データとウェイトを公開することでオープンな研究を促進する。
提案手法
- OSS-Instruct を用いて、シードとなるオープンソースのコード断片から 75K の合成コーディング問題と解答を生成する。
- OSS-Instruct データのデコンタミネーションを行い、標準ベンチマークとの重複を除去する。
- CodeLlama-Python-7B をファインチューニングして Magicoder-CL を作成し、さらに Evol-Instruct でファインチューニングして Magicoder-S-CL を作成する。
- HumanEval、MBPP、MultiPL-E、DS-1000 を対象に評価し、EvalPlus 拡張機能(HumanEval+、MBPP+)を使用する。
- 言語分布に関するアブレーションを実施し、OSS-Instruct をコメント-関数ペアの直接ファインチューニングと比較する。
- オープンソースのモデル重み、トレーニングデータ、およびコード。

実験結果
リサーチクエスチョン
- RQ1OSS-Instruct はデータのバイアスを低減し、コード生成の指示チューニング品質を向上させるか?
- RQ2Magicoder および Magicoder-S のバリアントは、多様なベンチマークにおいて、最先端のオープンソースモデルおよび ChatGPT と比較してどの程度性能を発揮するか?
- RQ3トレーニングデータの言語分布が Python およびマルチリンガルのコード生成性能に与える影響は何か?
- RQ4コメント-関数ペアのような意味的には関連するがノイズの多いデータに対して、直接のファインチューニングより OSS-Instruct のほうが効果的か?
主な発見
- Magicoder-CL はベースの CodeLlama-Python-7B を上回り、同程度または小さいサイズの他のオープンソースモデルを上回る。
- Magicoder-S-CL は結果をさらに改善し、HumanEval+ で ChatGPT を凌ぎ、HumanEval では同等または上回る。
- Magicoder-CL および Magicoder-S-CL は 7B パラメータのモデルの中で最先端性能を達成し、マルチリンガルおよびデータサイエンスタスク(DS-1000)で高い性能を示す。
- Magicoder-DS および Magicoder-S-DS(DeepSeek-Coder に基づく)は高い pass@1 スコアを達成し、Magicoder-S-DS は HumanEval で 76.8 を達成し、少ないファインチューニング Token でより大きなベースラインよりも上回る。
- OSS-Instruct データは多様性があり、Self-Instruct や関連手法より HumanEval への類似度が低く、改善がリークによるものではないことを示している。
- コメント-関数ペアへの直接ファインチューニングは性能を低下させる可能性がある一方、OSS-Instruct データは著しい向上をもたらす。

より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。