DeepSeek-Coder-V2 に関する論文を Gemini Paper Summarizer で要約しました。
【注意】AI の説明には誤りが含まれる可能性があり、正確さは保証できません。詳細は原論文を確認してください。
DeepSeek の要約シリーズです。
- AIで論文を読む: DeepSeek LLM
- AIで論文を読む: DeepSeek-V2
- AIで論文を読む: DeepSeek-Coder-V2 ← この記事
- AIで論文を読む: DeepSeek-V3
目次
Abstract
我々は、コード特有のタスクにおいてGPT4-Turboに匹敵する性能を達成するオープンソースの混合専門家(MoE)コード言語モデルであるDeepSeek-Coder-V2を発表する。具体的には、DeepSeek-Coder-V2は、DeepSeek-V2の中間チェックポイントから、さらに6兆トークンを追加して事前学習されている。この継続的な事前学習を通じて、DeepSeek-Coder-V2は、一般的な言語タスクにおいて同等の性能を維持しながら、DeepSeek-V2のコーディングおよび数学的推論能力を大幅に向上させる。DeepSeek-Coder-33Bと比較して、DeepSeek-Coder-V2は、推論および一般的な能力だけでなく、コード関連タスクのさまざまな側面において著しい進歩を示す。さらに、DeepSeek-Coder-V2は、プログラミング言語のサポートを86から338に拡大し、コンテキスト長を16Kから128Kに拡張する。標準的なベンチマーク評価では、DeepSeek-Coder-V2は、コーディングおよび数学ベンチマークにおいて、GPT4-Turbo、Claude 3 Opus、Gemini 1.5 Proなどのクローズドソースモデルと比較して優れた性能を達成する。
概要
DeepSeek-Coder-V2は、6兆トークンで追加学習されたMoEモデルであり、コードと数学の推論能力を大幅に向上させ、GPT-4 Turboに匹敵する性能を達成し、128Kのコンテキスト長と338のプログラミング言語をサポートする。
問題意識
本論文は、コードインテリジェンスの分野において、クローズドソースモデル(GPT-4 Turboなど)とオープンソースモデルとの間に存在する性能差を縮めることを目指す。特に、DeepSeek-Coder-V2という新しいオープンソースのコード言語モデルを提案し、その性能を向上させるための手法を詳細に説明する。このモデルは、コード生成、数学的推論、一般的な自然言語タスクにおいて、クローズドソースモデルに匹敵する性能を達成することを目指す。また、サポートするプログラミング言語の数を大幅に増やし、コンテキスト長を拡張することで、より複雑なコーディングタスクに対応できるようにする。
手法
本論文では、DeepSeek-Coder-V2という、オープンソースの混合エキスパート(MoE)コード言語モデルを提案する。このモデルは、コード固有のタスクにおいてGPT4-Turboに匹敵する性能を達成する。具体的には、DeepSeek-Coder-V2は、DeepSeek-V2の中間チェックポイントから追加の6兆トークンで事前学習されている。この継続的な事前学習により、DeepSeek-Coder-V2は、一般的な言語タスクで同等の性能を維持しながら、コーディングおよび数学的推論能力を大幅に向上させる。DeepSeek-Coder-33Bと比較して、DeepSeek-Coder-V2は、コード関連タスク、推論、および一般的な能力のさまざまな側面で大きな進歩を示す。さらに、DeepSeek-Coder-V2は、サポートするプログラミング言語を86から338に拡張し、コンテキスト長を16Kから128Kに拡張する。標準的なベンチマーク評価では、DeepSeek-Coder-V2は、GPT4-Turbo、Claude 3 Opus、Gemini 1.5 Proなどのクローズドソースモデルと比較して、コーディングおよび数学ベンチマークで優れたパフォーマンスを達成する。
新規性
この論文の新規性は、以下の点にまとめられる。
DeepSeek-Coder-V2 の導入:
コードと数学的推論能力の向上:
- 継続的な事前学習により、DeepSeek-Coder-V2 は DeepSeek-V2 のコーディング能力と数学的推論能力を大幅に向上させている。
- 一般的な言語タスクにおいても、同等の性能を維持している。
- DeepSeek-Coder-33B と比較して、コード関連タスク、推論能力、一般的な能力のさまざまな側面で大幅な進歩を示している。
サポートするプログラミング言語とコンテキスト長の拡張:
- サポートするプログラミング言語を 86 から 338 に拡張している。
- コンテキスト長を 16K から 128K に拡張している。
ベンチマーク評価における優れた性能:
オープンソースの1000億パラメータコードモデル:
- コードインテリジェンスの分野を前進させるために、オープンソースの 1000 億パラメータコードモデルを開発する最初の試みである。
- DeepSeek-Coder-V2 236B は、コーディングと数学のタスクの両方で、GPT4-Turbo、Claude 3 Opus、Gemini 1.5 Pro などの最先端のクローズドソースモデルを凌駕する結果を示している。
寛容なライセンスでの公開:
- DeepSeek-Coder-V2 モデルは、研究と無制限の商用利用の両方を可能にする寛容なライセンスの下で公開されている。
これらの点から、DeepSeek-Coder-V2 は、オープンソースのコードモデルの性能を大幅に向上させ、クローズドソースモデルとのギャップを埋めるための重要な一歩であると言える。特に、大規模な事前学習、拡張されたコンテキスト長、および優れたベンチマーク性能は、このモデルの重要な貢献を示している。
章構成
- 1 Introduction
- 1.1 Contributions
- 1.2 Summary of Evaluations and Metrics
- 2 Data Collection
- 3 Training Policy
- 3.1 Training Strategy
- 3.2 Model Architecture
- 3.3 Training Hyper-Parameters
- 3.4 Long Context Extension
- 3.5 Alignment
- 3.5.1 Supervised Fine-Tuning
- 3.5.2 Reinforcement Learning
- 4 Experimental Results
- 4.1 Code Generation
- 4.2 Code Completion
- 4.2.1 Repository-Level Code Completion Evaluation
- 4.2.2 Fill-in-the-Middle Code Completion
- 4.3 Code Fixing
- 4.4 Code Understanding and Reasoning
- 4.5 Mathematical Reasoning
- 4.6 General Natural Language
- 5 Conclusion
- References
- A Supported Programming Languages
1. Introduction
オープンソースコミュニティは、StarCoder、CodeLlama、DeepSeek-Coder、Codestralなどのコードモデルの開発を通じて、コードインテリジェンスの進歩に大きく貢献してきた。これらのモデルは、クローズドソースモデルの性能に近づきつつあるものの、GPT4-Turbo、Claude 3 Opus、Gemini 1.5 Proなどの最先端モデルとの間には依然として差が存在する。このギャップを埋め、オープンソースコードモデルのさらなる発展を促進するため、DeepSeek-Coder-V2シリーズが導入された。これらのモデルは、DeepSeek-V2を基盤とし、6兆トークンの追加コーパスで事前学習されている。
1.1. 貢献
本研究の主な貢献は以下の通りである。
- DeepSeek-Coderを基盤とした160億および2360億パラメータのDeepSeek-Coder-V2を導入する。MoEフレームワークを採用し、24億および210億のアクティブパラメータで多様な計算およびアプリケーションニーズを効率的にサポートする。さらに、DeepSeek-Coder-V2は338のプログラミング言語と128Kトークンの最大コンテキスト長をサポートする。
- コードインテリジェンス分野を前進させるため、初の1000億パラメータのオープンソースコードモデルを開発する試みを行う。実験結果から、DeepSeek-Coder-V2 236Bは、コーディングと数学の両タスクで、GPT4-Turbo、Claude 3 Opus、Gemini 1.5 Proなどの最先端のクローズドソースモデルを凌駕することが示された。
- DeepSeek-Coder-V2モデルは、研究と無制限の商用利用の両方を許可する寛容なライセンスの下で公開される。
1.2. 評価と指標の概要
- コード: コード生成ベンチマーク評価において、DeepSeek-Coder-V2は、すべてのオープンソースモデルを大幅に上回り、GPT4-Turbo、Claude 3 Opus、Gemini 1.5 Proなどの主要なクローズドソースモデルと同等の性能を示す。特に、HumanEvalで90.2%、MBPPで76.2%(EvalPlus評価パイプラインで新たな最先端結果を確立)、LiveCodeBenchで43.4%のスコアを達成。さらに、DeepSeek-Coder-V2は、SWEBenchで10%を超えるスコアを達成した初のオープンソースモデルである。
- 数学: DeepSeek-Coder-V2は、GSM8Kのような初等的なベンチマークと、MATH、AIME、Math Odysseyなどの高度な競技レベルのベンチマークの両方で、GPT-40、Gemini 1.5 Pro、Claude 3 Opusなどのトップクローズドソースモデルに匹敵する強力な数学的推論能力を示す。特に、DeepSeek-Coder-V2は、MATHベンチマークで75.7%の精度を達成し、GPT-40が達成した最先端の76.6%の精度にほぼ匹敵する。さらに、AIME 2024競技会ではこれらのクローズドソースモデルの性能を上回る。
- 自然言語: DeepSeek-Coder-V2は、DeepSeek-V2と同等の一般的な言語性能を維持する。例えば、OpenAIのsimple-evalパイプラインでMMLUで79.2%を達成する。GPT-4を評価者とした主観的な評価では、DeepSeek-Coder-V2はarena-hardで65.0、MT-benchで8.77、alignbenchで7.84を達成する。これらのスコアは、他のコード特化モデルよりも大幅に優れており、一般的なオープンソースモデルに匹敵する。
2. Data Collection
DeepSeek-Coder-V2の事前学習データは、主にソースコード60%、数学コーパス10%、自然言語コーパス30%で構成される。自然言語コーパスはDeepSeek-V2の学習データセットから直接サンプリングされるため、ここではコードと数学データの収集、クリーニング、フィルタリングプロセスに焦点を当てる。また、比較分析実験を通じてこのデータの品質を検証する。
GitHub上の2023年11月以前に作成された公開リポジトリを収集し、DeepSeek-Coder(Guo et al., 2024)で使用されたものと同じフィルタリングルールと重複排除を適用して、低品質および重複したソースコードをフィルタリングする。フィルタリングルールを要約すると、まず、平均行長が100文字を超えるファイル、または最大行長が1000文字を超えるファイルをフィルタリングする。また、アルファベット文字が25%未満のファイルも削除する。XSLTプログラミング言語を除き、最初の100文字に<?xml version=
という文字列が含まれるファイルもフィルタリングする。HTMLファイルについては、可視テキストとHTMLコードの比率を考慮し、可視テキストがコードの少なくとも20%を占め、かつ100文字以上であるファイルを保持する。JSONおよびYAMLファイルについては、文字数が50〜5000文字のファイルのみを保持する。これらのフィルタリングルールと重複排除を適用することで、338のプログラミング言語と、マークダウンやissueなどの185Bのコード関連テキストを含む821Bのコードを取得する。
Common Crawlからコード関連および数学関連のウェブテキストを収集するために、DeepSeekMath(Shao et al., 2024)と同じパイプラインに従う。具体的には、StackOverflow、PyTorchドキュメントなどのライブラリサイト、StackExchangeなどの数学ウェブサイトを初期シードコーパスとして選択する。このシードコーパスを使用して、fastTextモデル(Joulin et al., 2016)をトレーニングし、より多くのコード関連および数学関連のウェブページをリコールする。中国語などの言語ではスペースによるトークン化ができないため、DeepSeek-V2のByte Pair Encoding(BPE)トークナイザーを使用し、fastTextのリコール精度を大幅に向上させる。各ドメインについて、最初の反復で収集されたウェブページの割合を計算し、10%以上のウェブページが収集されたドメインをコード関連または数学関連として分類する。次に、これらの識別されたドメイン内のコード関連または数学関連コンテンツに関連付けられたURLにアノテーションを付ける。収集されていないウェブページは、シードコーパスに追加される。3回のデータ収集反復後、ウェブページから700億のコード関連トークンと221Bの数学関連トークンを収集する。さらに、GitHubから高品質のソースコードを収集するために、GitHubにも同じパイプラインを適用し、2回のデータ収集反復で94Bのソースコードを収集する。初期シードコーパスは、詳細な説明を含む高品質のソースコードを手動で収集することによって構築される。最終的に、新しいコードコーパスは、GitHubとCommon Crawlから収集された1,170Bのコード関連トークンで構成される。
新しいコードコーパスの効果を実証するために、1Bパラメーターモデルを使用してアブレーションスタディ(表1参照)を実施し、DeepSeek-Coderのトレーニングに使用されたコーパスと比較する。1Tトークンを使用して新しいコードコーパスで1Bモデルを事前トレーニングした結果、HumanEval(30.5%から36.0%)およびMBPP(44.6%から49.0%)ベンチマークでそれぞれ5.5%と4.4%の精度向上が見られた。さらに、2Tトークンで1Bモデルをトレーニングすると、HumanEvalとMBPPのスコアがそれぞれ37.2%と54.0%に上昇し、さらなる改善が見られた。したがって、新しいコードコーパスは、DeepSeek-Coderのトレーニングに使用されたコードコーパスよりも優れている。
3. Training Policy
3.1. 訓練戦略
DeepSeek-Coder-V2 16Bモデルでは、Next-Token PredictionとFill-In-Middle (FIM)の2つの訓練目標を使用する。FIM訓練では、PSM (Prefix, Suffix, Middle) モードを採用し、コンテンツをPrefix, Suffix, Middleの順に再構築する。この構造は、ドキュメントレベルで適用され、FIMは0.5の割合で使用される。DeepSeek-Coder-V2 236Bモデルでは、Next-Token Predictionのみを使用する。
3.2. モデルアーキテクチャ
モデルのアーキテクチャはDeepSeekV2と同様である。ハイパーパラメータ設定の16Bと236Bは、それぞれDeepSeek-V2-LiteとDeepSeek-V2に対応する。訓練中に勾配値の不安定性や急上昇が見られたため、指数関数的正規化を従来の正規化手法に戻した。
3.3. 訓練ハイパーパラメータ
DeepSeek V2の方式に準拠し、AdamWオプティマイザを使用する。β₁=0.9、β₂=0.95、重み減衰は0.1に設定する。バッチサイズと学習率はDeepSeek-V2の仕様に従って調整する。学習率のスケジューリングには、コサイン減衰戦略を採用し、2000ステップのウォームアップ後、学習率を初期値の10%まで徐々に減少させる。DeepSeek-Coder-V2とDeepSeek-Coder-V2-Liteは同じ方法で訓練される。DeepSeek-Coder-V2では、DeepSeek-V2の中間チェックポイントから訓練を継続し、合計10.2Tの高品質トークンで事前訓練を行う。
3.4. 長いコンテキストの拡張
DeepSeek-V2に続き、Yarnを用いてDeepSeek-Coder-V2のコンテキスト長を128Kに拡張する。YarnのハイパーパラメータはDeepSeek-V2と同じで、スケールsを40、αを1、βを32とする。長いコンテキストを扱う能力を強化するために、2段階でモデルを訓練する。第一段階では、シーケンス長32K、バッチサイズ1152で1000ステップ訓練する。第二段階では、シーケンス長128K、バッチサイズ288で1000ステップ追加訓練を行う。
3.5. アラインメント
3.5.1. 教師ありファインチューニング
DeepSeek-Coder-V2 Chatを構築するため、コードと数学データを混合したインストラクション訓練データセットを作成する。DeepSeek-CoderとDeepSeek-Mathからコード関連のインストラクションデータ20kと数学関連のデータ30kを収集する。一般能力を維持するため、DeepSeek-V2のインストラクションデータからもデータをサンプリングする。最終的に、300Mトークンのインストラクションデータセットを使用する。訓練には、100ステップのウォームアップと初期学習率5e-6のコサインスケジューラを使用し、バッチサイズは合計1Mトークンと1Bトークンとする。
3.5.2. 強化学習
DeepSeek-Coder-V2の能力を最大限に引き出すために、強化学習(RL)技術を採用する。コードと数学に関連するプロンプトを様々なソースから収集し、各コードプロンプトには対応するテストケースを付与する。フィルタリング後、約40kのデータが残る。報酬モデルは、RL訓練で重要な役割を果たす。数学的選好データは、正解ラベルを用いて取得する。コード選好データは、コンパイラからの0-1フィードバック(テストケースの合格/不合格)を使用するが、テストケースが限られている場合があるため、コンパイラからのフィードバックを直接使用するのではなく、コンパイラによって提供されたデータで報酬モデルを訓練し、RL訓練中に報酬モデルからのシグナルを使用する。
4. Experimental Results
本論文では、DeepSeek-Coder-V2 を、コーディング、数学、自然言語の3つのタスクで評価する。DeepSeek-Coder-V2 と、最先端の既存の大規模言語モデルを比較する。
4.1. コード生成
HumanEval と MBPP ベンチマークを用いて評価する。HumanEval は164個の Python タスクから構成され、MBPP は MBPP-Plus バージョンを使用する。多言語能力を評価するため、HumanEval を C++, Java, PHP, TypeScript, C#, Bash, JavaScript, Swift, R, Julia, D, Rust, Racket の7つの言語に拡張した。結果として、DeepSeek-Coder-V2-Instruct は、HumanEval で 75.3% の平均スコアを達成し、これは GPT-4o に次ぐ2位である。特に Java と PHP で最高のスコアを示し、Python, C++, C#, TypeScript, JavaScript でも高い性能を示す。DeepSeek-Coder-V2-Lite-Instruct も、より大きなモデルを上回る性能を示す。
4.2. コード補完
4.2.1. リポジトリレベルのコード補完評価
RepoBench を用いて、35B 未満のオープンソースコードモデルの能力を評価する。データセットは、Python と Java のリポジトリから構成され、2023年12月のデータを使用する。評価は、2k, 4k, 8k, 12k, 16k のコンテキスト長で行う。結果として、DeepSeek-Coder-V2-Lite-Base は、24億のアクティブパラメータしか持たないにもかかわらず、Python で DeepSeek-Coder-Base 33B モデルと同等、Java で DeepSeek-Coder-Base 7B モデルと同等のコード補完能力を達成する。
4.2.2. Fill-in-the-Middle コード補完
DeepSeek-Coder-V2-Lite は、プリトレーニング中に 0.5 の FIM レートで学習される。この手法により、モデルは周囲のコンテキストを使用してコードを補完する。評価は、Python, Java, JavaScript の3つの言語で行う。結果として、DeepSeek-Coder-V2-Lite-Base は、Python で 80.0%, Java で 89.1%, JavaScript で 87.2% のスコアを達成し、平均スコアは 86.4% となる。
4.3. コード修正
Defects4J, SWE-bench, Aider データセットを用いて、バグ修正能力を評価する。Defects4J は、実際のソフトウェアバグのコレクションであり、SWE-bench は GitHub からの実際のソフトウェアの問題を評価する。Aider は、Python ソースファイルの修正能力を評価する。結果として、DeepSeek-Coder-Instruct は、Aider で 73.7% の最高スコアを達成する。
4.4. コード理解と推論
CRUXEval ベンチマークを用いて、コード推論能力を評価する。CRUXEval は、Python 関数と対応する入出力例から構成され、モデルは入出力の予測を行う。DeepSeek-Coder-V2-Instruct は、CruxEval-I-COT で 70.0%, CruxEval-O-COT で 75.1% のスコアを達成する。
4.5. 数学的推論
GSM8K, MATH, AIME 2024, Math Odyssey ベンチマークを用いて、数学的推論能力を評価する。結果として、DeepSeek-Coder-V2 は、MATH ベンチマークで 75.7%, Math Odyssey で 53.7% の精度を達成し、AIME 2024 では他のモデルよりも多くの問題を解く。
4.6. 一般的な自然言語
DeepSeek-Coder-V2 は、DeepSeek-V2 の上に構築されており、自然言語能力を継承している。DeepSeek-Coder-V2 Instruct と DeepSeek-V2 Chat を、BBH, MMLU, ARC, TriviaQA, NaturalQuestions, AGIEval, CLUEWSC, C-Eval, CMMLU などの標準ベンチマークで比較する。また、Arena-Hard, AlpacaEval 2.0, MT-Bench, Alignbench などのオープンエンドな生成能力も評価する。結果として、DeepSeek-Coder-V2-Lite-Instruct は、BBH や Arena-Hard などの推論能力を必要とするベンチマークで優れており、DeepSeek-Coder-V2 Instruct は、Arena-Hard でより優れた性能を示す。一方、DeepSeek-V2 Chat は、MT-bench, AlpacaEval 2.0, Alignbench でわずかに良い結果を示す。
5. Conclusion
DeepSeek-Coder-V2は、コード知能の分野をさらに発展させるために導入された。DeepSeek-V2を基盤とし、高品質かつ多様なソースから得られた6兆トークンで継続的に事前学習されている。この継続的な事前学習を通じて、DeepSeek-Coder-V2は、DeepSeek-V2と同等の一般的な言語性能を維持しつつ、コーディングおよび数学的推論能力を大幅に向上させている。DeepSeek-Coderと比較して、DeepSeek-Coder-V2は、サポートするプログラミング言語の数を86から338に増やし、最大コンテキスト長を16Kから128Kトークンに拡張している。実験結果から、DeepSeek-Coder-V2は、コードおよび数学に特化したタスクにおいて、GPT-4 Turbo、Claude 3 Opus、Gemini 1.5 Proなどの最先端のクローズドソースモデルに匹敵する性能を達成していることが示された。
標準的なベンチマークでは優れた性能を発揮するものの、GPT-4 Turboのような現在の最先端モデルと比較すると、指示追従能力にはまだ大きな差があることが判明した。この差は、SWEbenchのような複雑なシナリオやタスクにおいて、性能が低い原因となっている。したがって、コードモデルには、強力なコーディング能力だけでなく、現実世界の複雑なプログラミングシナリオに対応するための優れた指示追従能力も必要であると考える。今後は、モデルの指示追従能力を向上させることに重点を置き、現実世界の複雑なプログラミングシナリオへの対応を改善し、開発プロセスの生産性を向上させることを目指す。
References
コード生成モデルに関する研究:
評価ベンチマークに関する研究:
- HumanEval: コード生成モデルの性能を評価するためのPythonのタスクセット。
- MBPP: プログラム合成のベンチマークデータセット。
- LiveCodeBench: コード生成モデルを評価するための、コンテスト形式のプログラミング問題を集めたベンチマーク。
- SWE-bench: 実際のGitHubのissueを解決するコード生成能力を評価するベンチマーク。
- Defects4J: ソフトウェアのバグ修正能力を評価するためのデータセット。
- Aider: コード編集能力を評価するためのベンチマーク。
- RepoBench: リポジトリレベルでのコード補完を評価するベンチマーク。
- CruxEval: コードの理解と推論能力を評価するベンチマーク。
- GSM8K: 小学校レベルの算数問題を評価するベンチマーク。
- MATH: 高度な数学問題を評価するベンチマーク。
- AIME: アメリカの数学オリンピックの招待試験の問題。
- Math Odyssey: 数学的な問題を評価するベンチマーク。
- MMLU: 大規模な多肢選択式質問応答ベンチマーク。
- ARC: 推論能力を評価するためのベンチマーク。
- TriviaQA: 質問応答のための大規模なデータセット。
- Natural Questions: 質問応答のためのデータセット。
- AGIEval: 人間中心の評価ベンチマーク。
- CLUEWSC: 中国語の言語理解ベンチマーク。
- C-Eval: 中国語の多分野評価ベンチマーク。
- CMMLU: 中国語の多分野理解ベンチマーク。
- Arena-Hard: ライブデータから生成された高品質なベンチマーク。
- AlpacaEval: 自動評価をバイアス除去するためのベンチマーク。
- MT-Bench: チャットボットの評価ベンチマーク。
- Alignbench: 中国語のLLMアライメントベンチマーク。
その他の研究:
このリストは、コードインテリジェンスの分野における最先端の研究と、DeepSeek-Coder-V2の開発における主要な参考資料を示している。
A. Supported Programming Languages
以下は、論文に記載されているサポートされているプログラミング言語のリストを要約したものである。
この論文では、DeepSeek-Coder-V2が非常に多くのプログラミング言語をサポートしていることが示されている。具体的には、ABAP、ActionScript、Ada、Agdaのような比較的一般的でない言語から、C、C++、Java、Python、JavaScriptのような広く使われている言語まで、多岐にわたる。さらに、HTML、CSS、SQLのようなマークアップ言語やデータ操作言語、そして、Assembly、Verilog、VHDLのようなハードウェア記述言語もサポートされている。このリストには、特定の分野や用途に特化した言語も含まれており、例えば、ゲーム開発のUnity3D Asset、統計解析のR、数式処理のMATLABなどがある。
この広範なサポートは、DeepSeek-Coder-V2が多様なプログラミングタスクと開発環境に対応できることを示唆している。また、このモデルが、さまざまなプログラミング言語を使用する開発者にとって有用なツールとなる可能性を示している。