# DeepSeek-V3 Technical Report > [!abstract] 概要 > DeepSeek-V3 は 671B 総パラメータ(トークンあたり 37B 活性化)の [[Mixture-of-Experts]](MoE)大規模言語モデルである。効率的な推論と低コスト訓練のために [[Multi-head Latent Attention]](MLA)と DeepSeekMoE アーキテクチャを採用し、補助損失なし(auxiliary-loss-free)の負荷分散戦略とマルチトークン予測(MTP)訓練目的関数を導入する。14.8 兆トークンで事前学習し、教師ありファインチューニングと強化学習を経て、オープンソースモデルで最高性能を達成し GPT-4o や Claude-3.5-Sonnet に匹敵する。訓練コストは 2,788K H800 GPU 時間(約 557 万ドル)で、全訓練過程で回復不能なロススパイクやロールバックは発生しなかった。 ## 論文情報 - **著者**: [[DeepSeek-AI]](200 名超の研究者) - **発表**: arXiv:2412.19437, 2024-12-26(v2: 2025-02-18) - **分類**: cs.CL, cs.AI - **チェックポイント**: https://github.com/deepseek-ai/DeepSeek-V3 ## 概要 DeepSeek-V3 は DeepSeek-V2 のアーキテクチャを継承しつつ、3 つの革新を加えた MoE 大規模言語モデルである。(1) 補助損失なしの負荷分散戦略、(2) マルチトークン予測訓練目的関数、(3) FP8 混合精度訓練フレームワーク。2,048 台の NVIDIA H800 GPU クラスタで 14.8 兆トークンを 2 ヶ月弱で事前学習し、総コスト 2,788K GPU 時間(約 557 万ドル)で完了した。 ## 問題設定 オープンソースの大規模言語モデルは閉源モデルとの性能差を縮める努力を続けているが、訓練コストが膨大であることが課題である。効率的な推論と低コストの訓練を両立しながら、閉源モデルに匹敵するフロンティア性能を達成するオープンソースモデルの構築が目的。 ## 提案手法 ### Multi-head Latent Attention (MLA) DeepSeek-V2 で検証済みの [[Multi-head Latent Attention]] を継承する。キーとバリューを低ランク圧縮し、推論時の KV キャッシュを大幅に削減する。 - KV 圧縮次元 $d_c = 512$($\ll d_h n_h$)の潜在ベクトル $c_t^{KV}$ にキーとバリューを圧縮する - 圧縮されたベクトル $c_t^{KV}$ と RoPE 用の分離キー $k_t^R$ のみをキャッシュする - クエリも同様に低ランク圧縮し、訓練時のアクティベーションメモリを削減する - 標準の Multi-Head Attention と同等の性能を維持しつつ KV キャッシュを大幅に削減する モデル設定: アテンションヘッド数 $n_h = 128$、ヘッドあたり次元 $d_h = 128$、KV 圧縮次元 $d_c = 512$、クエリ圧縮次元 $d_c' = 1536$、RoPE 用分離次元 $d_h^R = 64$。 ### DeepSeekMoE と補助損失なしの負荷分散 DeepSeekMoE は従来の MoE アーキテクチャ(GShard 等)より細粒度のエキスパートを使い、一部を共有エキスパートとして分離する。 - 共有エキスパート $N_s = 1$、ルーティングエキスパート $N_r = 256$ - 各トークンが 8 個のルーティングエキスパートを活性化($K_r = 8$) - ゲーティングにシグモイド関数を使用し、選択されたアフィニティスコアの正規化でゲーティング値を算出 - 各エキスパートの中間隠れ次元は 2048 **補助損失なし負荷分散**: 従来の MoE は補助損失で負荷分散を促すが、大きすぎる補助損失はモデル性能を損なう。DeepSeek-V3 はエキスパートごとにバイアス項 $b_i$ を導入し、アフィニティスコアに加算してルーティングを決定する。バイアス項はルーティングのみに使い、ゲーティング値は元のアフィニティスコアから算出する。訓練中バッチ全体のエキスパート負荷を監視し、過負荷エキスパートのバイアスを $\gamma$ だけ減少、低負荷のバイアスを増加させる。この動的調整によりトークンドロップなしで良好な負荷分散を維持する。 極端な不均衡の防止にはシーケンス単位の補助損失(バランス係数 $\alpha = 0.0001$)を補完的に使うが、極めて小さい値であり性能への影響は最小限。 **ノード制限ルーティング**: 通信コスト削減のため、各トークンは最大 $M = 4$ ノードにのみ送信される。 ### マルチトークン予測 (MTP) 次トークン予測に加え、追加の $D$ トークンを予測する訓練目的関数。DeepSeek-V3 は $D = 1$(各トークンが 1 つ追加のトークンを予測)に設定する。 - $D$ 個の逐次 MTP モジュールで追加トークンを予測する - 各モジュールは共有エンベディング層、共有出力ヘッド、Transformer ブロック、線形射影行列からなる - 前の深度の表現と次トークンのエンベディングを連結・線形射影して入力とする - 各予測深度で因果連鎖を保持する(並列予測ではなく逐次予測) - MTP 損失: $\mathcal{L}_{MTP} = \frac{\lambda}{D} \sum_{k=1}^{D} \mathcal{L}_{MTP}^k$(重み $\lambda$ は最初の 10T トークンで 0.3、残りで 0.1) - 推論時は MTP モジュールを破棄でき、推論コストは増えない - MTP モジュールを投機的復号に再利用可能(第 2 トークンの受容率 85〜90%、TPS 1.8 倍) ### FP8 混合精度訓練 671B 規模のモデルで FP8 訓練の実現可能性と有効性を初めて検証する。 - GEMM 演算(Fprop、Dgrad、Wgrad)を FP8 精度で実行し、理論上の計算速度を BF16 の 2 倍にする - 精度に敏感な構成要素(エンベディング、出力ヘッド、MoE ゲーティング、正規化、アテンション)は高精度(BF16/FP32)を維持する **細粒度量子化**: タイル単位(アクティベーション: 1x128)とブロック単位(重み: 128x128)でスケーリングし、外れ値による量子化精度の低下を抑える。 **高精度累積**: NVIDIA H800 の FP8 GEMM の累積精度は約 14 ビットに制限される。$N_C = 128$ 要素の間隔で部分結果を CUDA コアの FP32 レジスタに昇格させ、累積精度を向上させる。 **E4M3 統一**: 従来の E4M3/E5M2 ハイブリッドに代え、すべてのテンソルに E4M3 を使用する。細粒度量子化により動的範囲の制限を緩和する。 **オンライン量子化**: 遅延量子化ではなく、各タイル/ブロックの最大絶対値をオンラインで計算してスケーリング。BF16 ベースラインとの相対損失誤差は 0.25% 以下。 **低精度ストレージ・通信**: アクティベーションの FP8 キャッシュ、AdamW オプティマイザの 1 次・2 次モーメントの BF16 化、MoE dispatch のアクティベーション FP8 化により、メモリ消費と通信帯域を削減する。 ### DualPipe パイプライン並列化 MoE のクロスノードエキスパート並列化により、計算と通信の比率が約 1:1 になる。[[DualPipe]] はこの課題を解決する革新的なパイプライン並列化アルゴリズムである。 - 各チャンクを 4 構成要素に分割: アテンション、All-to-All ディスパッチ、MLP、All-to-All コンバイン - 逆伝播のアテンションと MLP はさらに「入力に対する逆伝播」と「重みに対する逆伝播」に分割 - フォワードとバックワードのチャンクペアを再配置し、計算と通信の SM 比率を手動で調整 - All-to-All 通信と PP 通信の両方を完全に計算中に隠蔽する - 双方向パイプラインスケジューリング: パイプラインの両端からマイクロバッチを同時投入 - バブルは $(PP/2 - 1)(F\&B + B - 3W)$ で、1F1B の $(PP - 1)(F + B)$ や ZB1P の $(PP - 1)(F + B - 2W)$ より大幅に小さい - パラメータのコピーは 2 倍になるが、大きな EP サイズを使うためメモリ増加は軽微 - ピークアクティベーションメモリは $PP + 1$ で、マイクロバッチ数増加に伴い増えない **クロスノード All-to-All 通信カーネル**: IB(50 GB/s)と NVLink(160 GB/s, 約 3.2 倍)の帯域差を活用する。各トークンは最大 4 ノードに送信され、IB でターゲットノードに到達後、NVLink でターゲットエキスパートの GPU に転送する。IB と NVLink 通信を完全にオーバーラップさせ、ノードあたり平均 3.2 エキスパートを追加コストなしで選択可能にする。20 SM で IB・NVLink 帯域を完全利用する。 **メモリ節約**: RMSNorm と MLA アップ射影の逆伝播時の再計算、EMA パラメータの CPU メモリ保持、MTP モジュールと主モデルのエンベディング・出力ヘッドの物理共有を行う。 ## 新規性 1. **補助損失なし負荷分散の導入**: エキスパートバイアス項の動的調整で、モデル性能を損なわずに負荷分散を実現する初のアプローチ。バッチ単位の負荷分散がシーケンス単位より柔軟であり、エキスパートのドメイン特化を促進する 2. **MTP の訓練目的関数としての有効性実証**: 推論コストを増やさず(MTP モジュールは推論時に破棄可能)に訓練信号を密にし、ベンチマーク性能を向上させる。投機的復号への転用で 1.8 倍の TPS 向上 3. **FP8 訓練の超大規模検証**: 671B パラメータで初めて FP8 訓練の実現可能性を実証。細粒度量子化と高精度累積の組み合わせが鍵 4. **DualPipe**: 計算と通信の完全なオーバーラップを実現する双方向パイプライン並列化。モデルのさらなるスケーリングにおいて、計算対通信比を一定に保てば通信オーバーヘッドをほぼゼロに維持できる 5. **DeepSeek-R1 からの蒸留**: 長い思考連鎖(CoT)モデルの推論能力を標準 LLM に蒸留する手法。応答長と正確さのバランスを制御する ## 実験設定 ### 訓練インフラ - **クラスタ**: 2,048 台の NVIDIA H800 GPU(ノードあたり 8 GPU、NVLink/NVSwitch 接続、ノード間 InfiniBand) - **フレームワーク**: HAI-LLM(自社開発の軽量訓練フレームワーク) - **並列化**: 16-way PP、64-way EP(8 ノードにまたがる)、ZeRO-1 DP ### 事前学習 - Transformer 層数 61、隠れ次元 7168、671B 総パラメータ(37B 活性化) - 14.8T トークン、最大シーケンス長 4K - オプティマイザ: AdamW($\beta_1 = 0.9$, $\beta_2 = 0.95$, weight_decay = 0.1) - 学習率: 0→$2.2 \times 10^{-4}$(ウォームアップ 2K ステップ)→定数→$2.2 \times 10^{-5}$(コサイン減衰 4.3T トークン)→$7.3 \times 10^{-6}$ - バッチサイズ: 3072→15360(最初の 469B トークンで漸増) - FIM(Fill-in-Middle)戦略を適用率 0.1 で使用 - トークナイザ: Byte-level BPE、語彙サイズ 128K ### コンテキスト長拡張 YaRN を適用し 2 段階で拡張: - 第 1 段階: 4K→32K(1000 ステップ、バッチサイズ 1920) - 第 2 段階: 32K→128K(1000 ステップ、バッチサイズ 480) - Needle In A Haystack テストで 128K まで安定した性能を確認 ### 事後学習 - **SFT**: 1.5M インスタンス、2 エポック、コサイン減衰($5 \times 10^{-6}$→$1 \times 10^{-6}$) - 推論データは DeepSeek-R1 で生成し、リジェクションサンプリングで高品質化 - **RL**: GRPO(Group Relative Policy Optimization)を使用。クリティックモデルを不要にし、グループスコアからベースラインを推定 - ルールベース RM(数学・コード)とモデルベース RM(自由形式)を併用 - 自己報酬: DeepSeek-V3 自身の投票評価を Constitutional AI 的にフィードバックに使用 ## 実験結果 ### 訓練コスト | 段階 | GPU 時間 | コスト | |---|---|---| | 事前学習 | 2,664K | $5.328M | | コンテキスト拡張 | 119K | $0.238M | | 事後学習 | 5K | $0.01M | | **合計** | **2,788K** | **$5.576M** | 1 兆トークンあたり 180K H800 GPU 時間(クラスタ上で約 3.7 日)。 ### ベースモデル性能 DeepSeek-V3-Base は活性化パラメータ 37B で、LLaMA-3.1 405B Base(活性化 405B)を多くのベンチマークで上回る。 主要な結果: - MMLU: 87.1(対 Qwen2.5 72B: 85.0、LLaMA-3.1 405B: 84.4) - MMLU-Pro: 64.4(対 Qwen2.5 72B: 58.3、LLaMA-3.1 405B: 52.8) - BBH: 87.5(対 LLaMA-3.1 405B: 82.9) - HumanEval: 65.2(対 LLaMA-3.1 405B: 54.9) - MATH: 61.6(対 Qwen2.5 72B: 54.4、LLaMA-3.1 405B: 49.0) ### チャットモデル性能 - MMLU: 88.5、MMLU-Pro: 75.9、GPQA-Diamond: 59.1 - MATH-500: 90.2(対 GPT-4o: 74.6、Claude-3.5-Sonnet: 78.3) - AIME 2024: 39.2(対 GPT-4o: 9.3、Claude-3.5-Sonnet: 16.0) - Codeforces: 51.6 パーセンタイル - SWE-bench Verified: 42.0(対 Claude-3.5-Sonnet: 50.8) - Arena-Hard: 85.5(オープンソースモデルとして初の 85% 超え) - AlpacaEval 2.0: 70.0(対 GPT-4o: 51.1、Claude-3.5-Sonnet: 52.0) - 中国語 SimpleQA: 64.8(対 GPT-4o: 59.3) ### アブレーション結果 **MTP**: 小規模 MoE(15.7B)と大規模 MoE(228.7B)の両方で、MTP が多くのベンチマークで一貫した性能向上を示す。とくにコード(HumanEval: 44.5→53.7)と数学(GSM8K: 72.3→74.0)で顕著。 **補助損失なし負荷分散**: 小規模・大規模の両方で、純粋な補助損失ベース手法に対し一貫した性能向上。大規模モデルで HumanEval 40.2→46.3、GSM8K 70.7→74.5 の改善。 **バッチ単位対シーケンス単位**: 同程度のバッチ単位負荷分散を達成する場合、バッチ単位の補助損失は補助損失なし手法と同等の性能を達成する(1B MoE で検証損失 2.253 対 2.258)。 ## 考察 - **訓練の安定性**: 全訓練過程で回復不能なロススパイクもロールバックも発生しなかった。これは大規模 LLM 訓練では稀有である - **DeepSeek-R1 からの蒸留**: DeepSeek-V2.5 ベースの検証で LiveCodeBench 31.1→37.4、MATH-500 74.6→83.2 の改善。ただし平均応答長が増加するトレードオフがある - **投機的復号**: MTP モジュールの第 2 トークン受容率 85〜90% で、TPS 1.8 倍を達成 - **ハードウェア設計への提言**: 通信タスクの SM からのオフロード、IB/NVLink 統一インタフェース、Tensor Core の FP8 累積精度の向上、タイル/ブロック単位量子化のネイティブサポート、オンライン量子化の TMA 融合、転置 GEMM のサポート ## 強み / 弱点・課題 ### 強み - **圧倒的なコスト効率**: 671B モデルを 557 万ドルで訓練。LLaMA-3.1 405B の活性化パラメータの約 1/11 で同等以上の性能を達成 - **訓練の安定性**: ロススパイクなし・ロールバックなしは産業的に大きな利点 - **アーキテクチャの体系性**: MLA・DeepSeekMoE・MTP・FP8・DualPipe の各技術が独立に検証され、相互に整合する - **推論効率**: MLA による KV キャッシュ削減、MTP による投機的復号、MoE による疎な活性化が推論コストを抑制 - **オープンソース**: チェックポイントが公開されており、研究コミュニティへの貢献が大きい ### 弱点・課題 - **デプロイメント要件**: 効率的な推論のための推奨デプロイ単位が大きい(プリフィル: 4 ノード 32 GPU、デコーディング: 40 ノード 320 GPU)。小規模チームには負担となる - **英語事実知識**: SimpleQA で GPT-4o(38.2)や Claude-3.5-Sonnet(28.4)に後れを取る(24.9) - **エンジニアリングタスク**: SWE-bench Verified で Claude-3.5-Sonnet(50.8)に後れを取る(42.0) - **蒸留の出力長**: DeepSeek-R1 からの蒸留は性能を向上させるが、応答長が増加するトレードオフがある - **DualPipe のパラメータ重複**: パイプライン並列化でモデルパラメータを 2 倍保持する必要がある(EP サイズが大きいため影響は軽微)