DeepSeek モデルアーキテクチャ徹底解説
DeepSeek の中核技術革新を深く理解する: MoE (Mixture of Experts)、MLA (Multi-head Latent Attention)、MTP (Multi-Token Prediction)、FP8 混合精度トレーニング。原理からコード、アーキテクチャからパフォーマンスまで、DeepSeek テクノロジースタックを完全に習得。
探索を始めるDeepSeek モデルアーキテクチャ全体像
DeepSeek V3 と R1 の技術アーキテクチャ全体像。総パラメータ 671B、活性化パラメータ 37B、数々の世界的革新。
DeepSeek V3 アーキテクチャ概要
DeepSeek V3 は中核設計として MoE(Mixture of Experts)混合エキスパートアーキテクチャを採用しています。総パラメータ数は 671B ですが、推論時にはトークンごとに 37B のパラメータのみが活性化されます。これはスパース活性化メカニズムによるもので、各トークンは全パラメータを活性化するのではなく、少数のエキスパートサブネットワークにのみルーティングされます。
V3 アーキテクチャの中核コンポーネントは次のとおりです。
| アーキテクチャコンポーネント | 技術説明 | 主要パラメータ |
|---|---|---|
| Transformer Backbone | Transformer ベースの Decoder-only アーキテクチャ | 61 層 Transformer |
| DeepSeekMoE | 細粒度エキスパート分割 + 共有エキスパート分離 | 256 ルーティングエキスパート + 8 共有エキスパート |
| MLA | マルチヘッド潜在注意、低ランク KV 圧縮 | KV Cache を元の 1/5〜1/10 に圧縮 |
| MTP | マルチトークン予測、将来の N トークンを同時に予測 | 深さ M = 1(追加トークンを 1 つ予測) |
| FP8 Training | 超大規模モデルで初めて FP8 トレーニングを検証 | トレーニングコスト 557 万ドル |
V3 と R1 のアーキテクチャ比較
V3 と R1 は同じ基盤アーキテクチャ(MoE + MLA)を共有していますが、トレーニング戦略と目的が異なります。
| 比較項目 | DeepSeek V3 | DeepSeek R1 |
|---|---|---|
| 基本アーキテクチャ | 671B MoE + MLA | V3アーキテクチャ(671B)に基づく |
| 学習方法 | 教師あり事前学習 + SFT | 強化学習(RL)+ コールドスタートSFT |
| 中核能力 | 一般的な対話、文章作成、翻訳、知識Q&A | 推論、数学、プログラミング、論理的思考 |
| 推論モード | 直接回答生成 | Chain-of-Thought推論 |
| コンテキストウィンドウ | 160K | 160K(671B)/ 128K(蒸留版) |
671Bパラメータの全体像
DeepSeek V3の671Bパラメータの分布は以下の通りです:
Embedding層
語彙サイズ128K、埋め込み次元7168。マルチヘッド潜在注意機構によりKVを低次元潜在空間に圧縮し、パラメータ数を大幅に削減します。
- 語彙埋め込み: 128K x 7168
- 位置エンコーディング: RoPE(回転位置エンコーディング)
Transformer層
61層のTransformer。各層はMLA注意モジュールとDeepSeekMoE FFNモジュールを含みます。最初の3層は高密度FFN(非MoE)を使用します。
- 61層のDecoder-only
- 58層のMoE + 3層のDense FFN
MoEエキスパート層
256のルーティングエキスパート + 8の共有エキスパート。各トークンは8つのルーティングエキスパート + 1つの共有エキスパートを活性化します。各エキスパートは小さなFFNネットワークです。
- 256ルーティングエキスパート + 8共有エキスパート
- Top-8ゲーティングルーティング
活性化パラメータ
トークンあたり37Bの活性化パラメータ。スパース活性化により、各推論計算にはわずか5.5%のパラメータのみが参加し、計算コストを大幅に削減します。
- 37B / 671B = 5.5% 活性化率
- 推論コスト90%以上削減
MoE 混合専門家アーキテクチャの詳細
MoE(Mixture of Experts)は DeepSeek の核心的なアーキテクチャ革新です。671B パラメータのうちわずか 37B のみが活性化され、推論コストを大幅に削減します。
専門家ルーティングメカニズム
従来の Transformer では、各トークンは同じ FFN 層で処理されます。MoE アーキテクチャは FFN 層を複数の「専門家」サブネットワークに置き換え、各トークンはゲーティングネットワーク(Gate)を介して最も関連性の高い専門家を選択して計算します。
DeepSeek V3 の MoE 設計は以下の通りです:
- 総専門家数:256 のルーティング専門家(Routed Expert)+ 8 の共有専門家(Shared Expert)
- トークンごとの活性化:8 のルーティング専門家 + 1 の共有専門家 = 9 の専門家が計算に参加
- ゲーティング戦略:Top-K Gating、K = 8(256 の専門家からスコアが最も高い 8 つを選択)
- 共有専門家:8 の専門家はすべてのトークンに対して常に活性化され、一般的な知識を捕捉します。
Top-K ゲーティングメカニズム
ゲーティングネットワークは線形層であり、トークンの隠れ状態を 256 次元の専門家スコアベクトルにマッピングします。次に、スコアが最も高い K 個の専門家を選択し、softmax 正規化によって各専門家の重みを計算します:
gate_logits = Linear(hidden_states) # [batch, seq, 256]
topk_weights, topk_indices = topk_softmax(gate_logits, k=8) # Top-8 専門家を選択
expert_output = sum(weight * expert[expert_idx](hidden_states) for each selected expert)
shared_output = shared_expert(hidden_states) # 共有専門家は常に活性化
final_output = expert_output + shared_output
ここで topk_softmax は最初に Top-K 専門家を選択し、次に選択された専門家間で softmax を実行します。選択されなかった専門家は計算に参加しません。
Auxiliary-Loss-Free 負荷分散
従来の MoE モデルは通常、補助損失(auxiliary loss)を使用して専門家の負荷分散を促進し、「専門家の崩壊」を防ぎます。つまり、ほとんどのトークンが少数の専門家にルーティングされ、残りの専門家がアイドル状態になることを防ぎます。しかし、補助損失はトレーニングの複雑さを増し、モデルのパフォーマンスに影響を与える可能性があります。
DeepSeek は革新的な auxiliary-loss-free 負荷分散戦略を提案しました:
- Expert Bias 動的調整:各専門家はバイアス項(bias)を維持し、トレーニング中に専門家の負荷に応じて動的に調整します。負荷が高い専門家はバイアスを下げ、負荷が低い専門家はバイアスを上げます。
- シーケンスレベルの補助損失:トークンレベルではなくシーケンスレベルで軽微なバランス制約を適用し、各シーケンス内の専門家の使用分布が均一になるようにします。
- 相補的スケジューリング:特定の専門家の負荷が高すぎる場合、システムは一部のトークンを次善の利用可能な専門家に自動的にルーティングします。
なぜ MoE は効率的なのか?
MoE アーキテクチャの核心的な利点は スパース活性化にあります。671B の総パラメータは膨大な知識容量を提供しますが、各推論ではわずか 37B(5.5%)のみが活性化され、計算量は同規模の高密度モデルよりもはるかに少なくなります。
計算量の削減
高密度の671Bモデルは、各推論で全671Bパラメータを計算する必要があります。MoEは37Bの活性化パラメータのみを計算し、計算量は高密度モデルの約1/18です。
- FLOPsが約94%削減
- 推論遅延が約90%削減
知識容量の維持
毎回少数のパラメータのみが活性化されるにもかかわらず、671Bの総パラメータ規模により、モデルは高密度モデルよりもはるかに多くの知識を格納でき、異なる専門家が異なる分野に特化しています。
- 671Bの総知識容量
- 専門家の専門化
トレーニングコストの最適化
スパース活性化とFP8混合精度トレーニングにより、DeepSeek V3のトレーニングコストは557万ドルに削減され、同等の高密度モデルの1/10から1/20です。
- 総コスト557万ドル
- H800 GPUクラスター
MLA マルチヘッド潜在注意メカニズム
Multi-head Latent Attention(MLA)はDeepSeekの注意機構の革新であり、低ランクKV圧縮により推論時のメモリ使用量を大幅に削減します。
従来のMHAの問題
標準的なマルチヘッド注意(Multi-Head Attention, MHA)では、各トークンは後続のトークンの自己回帰生成をサポートするためにKeyとValueベクトルをキャッシュする必要があります。長いシーケンスでは、KVキャッシュのメモリ使用量が急速に増加します:
KV_Cache = 2 * num_layers * num_heads * d_head * seq_len * batch_size
# DeepSeek V3(128ヘッド、128次元、61層、128Kコンテキスト)の場合:
# トークンあたりのKVキャッシュは約61 * 2 * 128 * 128 = 1,998,848フロート = 7.6 MB
# 128KコンテキストのKVキャッシュは約7.6 MB * 128K ≈ 973 GB(許容不可)
MLAの核心的なアイデア:低ランクKV圧縮
MLAの核心的な革新は、KeyとValueを低次元の潜在空間に投影してから注意計算を行うことです。具体的には:
- KV圧縮投影:元の高次元のKey/Valueをダウンプロジェクション行列を使用して低次元の潜在ベクトル
c_KV(次元は元よりはるかに小さい)に圧縮します。 - 潜在ベクトルのキャッシュ:推論時には、完全なKeyとValue行列ではなく、低次元の潜在ベクトル
c_KVのみをキャッシュします。 - アッププロジェクションによる復元:注意計算時に、アッププロジェクション行列を使用して潜在ベクトルを完全なKeyとValueに復元します。
# 1. 圧縮投影(トレーニング時と推論時の両方で実行)
c_KV = W_down_KV @ hidden_states # [batch, seq, d_latent] d_latent << d_model
# 2. 潜在ベクトルのキャッシュ(推論時のみ)
KV_Cache = c_KV # 低次元の潜在ベクトルのみをキャッシュ
# 3. アッププロジェクションによる復元(注意計算時)
k = W_up_K @ c_KV # 完全なKeyに復元
v = W_up_V @ c_KV # 完全なValueに復元
# 4. 標準的な注意計算
q = W_q @ hidden_states
attention = softmax(q @ k^T / sqrt(d_head)) @ v
output = W_o @ attention
RoPE分離設計
RoPE(Rotary Position Embedding)は、現代のTransformerで広く使用されている位置エンコーディング手法です。しかし、RoPEは低ランク圧縮と競合します:RoPEはKeyベクトルに作用しますが、MLAはKeyとValueの結合表現を圧縮します。
DeepSeekの解決策はRoPE分離です:QueryとKeyをそれぞれ2つの部分に分割します — 一方はRoPEで処理され(位置情報を捕捉)、他方は処理されません(内容情報を保持)。RoPE部分は個別に処理され、KV圧縮には参加しません。
# Query分割
q_rope = W_qr @ hidden_states # 位置部分、RoPE あり
q_rope = RoPE(q_rope)
# Key 分割
k_content = W_kc @ c_KV # コンテンツ部分、潜在ベクトルから復元
k_rope = W_kr @ hidden_states # 位置部分、個別に計算
k_rope = RoPE(k_rope)
# 連結後、アテンションを計算
q = concat(q_content, q_rope)
k = concat(k_content, k_rope)
attention = softmax(q @ k^T / sqrt(d_head)) @ v
メモリ節約の計算
MLA の KV キャッシュ圧縮効果は顕著です。潜在次元を d_latent、元の KV 次元を d_model とします:
MLA 圧縮効果
DeepSeek V3 では、d_latent = 512、従来の MHA の KV 次元は 128 * 128 = 16384 です。圧縮率は約 32:1 です。
- 潜在次元: 512
- 元の KV 次元: 16384
- 圧縮率: ~32x
実際の効果
128K コンテキストウィンドウでは、MLA は KV キャッシュを約 973 GB から約 40 GB に削減し、単一 GPU での長文脈推論を可能にします。
- 従来の MHA: ~973 GB
- MLA: ~40 GB
- 節約: ~96%
スループット向上
KV キャッシュが小さいほど、メモリ読み書きが減り、スループットが向上します。MLA により、長文脈推論のスループットが 3〜5 倍向上します。
- メモリ帯域幅の節約: ~90%
- スループット向上: 3-5x
MTP マルチトークン予測メカニズム
Multi-Token Prediction (MTP) により、モデルは複数の将来トークンを同時に予測し、トレーニング効率と推論品質を向上させます。
MTP の動作原理
従来の自己回帰モデルは、各ステップで次のトークンのみを予測します。MTP では、各ステップで次の N 個のトークンを同時に予測します(DeepSeek V3 では M = 1、つまり追加で 1 トークン予測し、合計 2 トークン)。
MTP の核となる考え方は、モデルのバックボーンネットワークが隠れ状態を出力した後、複数の独立した「予測ヘッド」を使用して、t+1, t+2, ..., t+M 位置のトークンをそれぞれ予測することです。
# メインモデル順伝播
hidden = transformer(input_tokens) # メインモデル出力
# 最初の予測ヘッド(t+1 を予測、標準の next-token prediction)
logits_1 = lm_head(hidden) # 次のトークンを予測
loss_1 = cross_entropy(logits_1, tokens[:, 1:])
# 2 番目の予測ヘッド(t+2 を予測)
hidden_2 = MTP_Module(hidden, embedding(tokens[:, :-1])) # MTP モジュール
logits_2 = mtp_head(hidden_2) # 次の次のトークンを予測
loss_2 = cross_entropy(logits_2, tokens[:, 2:])
total_loss = loss_1 + lambda * loss_2 # 重み付き組み合わせ
MTP モジュール設計
MTP モジュールは軽量な Transformer 層で、メインモデルの隠れ状態と現在のトークンの埋め込みを入力として受け取り、将来のトークンの予測を出力します:
- 入力融合:メインモデルの隠れ状態と現在のトークンの埋め込みを連結し、線形層で融合します。
- Transformer ブロック:標準の Transformer 層(アテンションと FFN を含む)で、融合された表現をさらに処理します。
- 出力ヘッド:共有の LM Head が処理された表現を語彙分布にマッピングします。
トレーニング効率の向上
MTP はトレーニング段階でより強力な学習信号を提供します。モデルは次のトークンだけでなく、その後のトークンも予測する必要があるため、より長期的な依存関係を学習することを余儀なくされます。
より強力なトレーニング信号
複数の予測ターゲットにより、より豊富な勾配信号が得られ、モデルの収束が速くなります。各トレーニングステップで得られる情報量は従来の 2 倍です。
- 収束速度が約 30% 向上
- 同じデータ量でより良い結果
長期的な計画能力
MTP はモデルに「先読み」を強制し、長距離依存関係のモデリングを向上させます。これは R1 の推論能力向上の重要な理由の 1 つでもあります。
- 長距離依存関係のモデリング向上
- 推論の一貫性向上
推論フェーズ:MTP モジュールは破棄可能
MTP の重要な設計は、MTP モジュールは推論時に完全に破棄できることです。推論時にはメインモデルの標準的な next-token prediction のみが使用され、MTP モジュールは推論計算に参加しないため、推論速度に影響しません。
MTP による推論高速化は主に、トレーニング段階でより良い表現を学習したため、メインモデル(MTP モジュールを含まない)の推論品質が向上し、同じタスクで必要な推論ステップが少なくなることに現れます。
FP8 混合精度トレーニング技術
DeepSeek は超大規模モデルで FP8 トレーニングの実現可能性を初めて検証し、トレーニングコストを 557 万ドルに削減しました。
FP8 vs BF16 vs FP32
ディープラーニングトレーニングで一般的に使用されるデータ精度の比較:
| 精度フォーマット | 総ビット数 | 指数ビット | 仮数ビット | 動的範囲 | メモリ使用量 |
|---|---|---|---|---|---|
| FP32 | 32 | 8 | 23 | 3.4 x 10^38 | 4 バイト / パラメータ |
| BF16 | 16 | 8 | 7 | 3.4 x 10^38 | 2 バイト / パラメータ |
| FP8 E4M3 | 8 | 4 | 3 | 448 | 1 バイト / パラメータ |
FP8 のメモリ使用量は BF16 の半分、FP32 の 4 分の 1 ですが、動的範囲が小さい(E4M3 形式)ため、トレーニングの安定性が非常に重要です。
ブロック単位量子化(Block-wise Quantization)
DeepSeek は FP8 の動的範囲不足を解決するためにブロック単位量子化戦略を採用しています:
- ブロック戦略:アクティベーションと重みを 128x128 のブロックにグループ化し、各ブロックでスケールファクターを個別に計算します。
- オンラインスケーリング:スケールファクターは現在のブロックの最大絶対値に基づいて動的に計算され、量子化精度を保証します。
- 高精度累積:行列乗算の累積はFP32精度で行われ、量子化誤差の蓄積を防ぎます。
# 順伝播: FP8行列乗算
for each block (128x128) in activation_matrix:
scale = max(abs(block)) / 448 # E4M3の最大値は448
block_fp8 = round(block / scale) # FP8に量子化
output_block = block_fp8 @ weight_fp8 # FP8行列乗算
output_block = output_block * scale # 逆量子化
# 逆伝播: 勾配はBF16精度で計算
gradient = backward(output, loss) # BF16勾配
トレーニング安定性の保証
671B規模でのFP8トレーニングは非常に困難です。DeepSeekは複数の安定性対策を採用しています:
混合精度戦略
順伝播ではFP8計算(GEMM操作)を使用し、勾配計算とオプティマイザ状態はBF16/FP32を使用します。重要なパス(softmax、layernormなど)は高精度を維持します。
- 順伝播GEMM: FP8
- 勾配/オプティマイザ: BF16/FP32
- 重要な操作: 高精度
動的勾配スケーリング
トレーニング中に勾配スケーリング係数を動的に調整し、FP8のアンダーフローとオーバーフローを防ぎます。
- 適応的スケーリング係数
- オーバーフロー検出とフォールバック
総コスト557万ドル
FP8トレーニングによりメモリ要件が半減し、トレーニング速度が約40%向上します。DeepSeek V3は2048台のH800 GPUで約2ヶ月トレーニングされ、総コストはわずか557万ドルです。
- メモリ: 50%削減
- トレーニング速度: 40%向上
- 総コスト: 557万ドル
DeepSeekMoEアーキテクチャ最適化の詳細
細粒度エキスパート分割、共有エキスパート分離、動的ルーティング – DeepSeekMoEの3つの中核的最適化。
細粒度エキスパート分割
従来のMoEモデルは通常、少数の大きなエキスパート(例:8エキスパート、各エキスパートは完全なFFN)を使用します。DeepSeekMoEは各大きなエキスパートをさらに複数の小さなエキスパートに分割し、より細かい専門化を実現します:
- 分割戦略:1つの標準FFNエキスパート(例:8倍の中間次元)を2つの細粒度エキスパート(各4倍の中間次元)に分割し、各エキスパートはより細かい知識パターンに特化します。
- ルーティングの柔軟性:エキスパートが多いほど、より柔軟な組み合わせが可能です。異なるトークンは異なるエキスパートサブセットを選択でき、より正確な知識活性化を実現します。
- 負荷分散の利点:細粒度分割によりエキスパートの負荷がより均一になり、各エキスパートのパラメータ数が減少し、個々のエキスパートの過負荷リスクが低減します。
共有エキスパート分離
DeepSeekMoEは「共有エキスパート」の概念を導入し、ルーティングエキスパートから分離します:
常時活性化される汎用知識
8つの共有エキスパートはすべてのトークンに対して常に活性化され、分野横断的な汎用知識(構文、常識、基本的推論など)を捕捉します。ルーティング競争には参加せず、ベースライン能力を保証します。
- 8つの共有エキスパート
- 常時活性化、ルーティングなし
- 汎用知識を捕捉
オンデマンドの専門知識
256のルーティングエキスパートはTop-8ゲーティングで選択的に活性化され、各エキスパートは特定の分野(数学、プログラミング、医学、法律など)に特化します。
- 256のルーティングエキスパート
- Top-8選択的活性化
- 分野特化知識
動的ルーティングとエキスパート負荷統計
DeepSeekMoEのルーティングシステムはトレーニング中に動的に調整され、エキスパート負荷の均衡を確保します:
# 各トレーニングステップ後にエキスパートバイアスを更新
for expert in range(num_experts):
load = expert_token_count[expert] / total_tokens
if load > target_load * 1.2:
expert_bias[expert] -= learning_rate # 人気エキスパートのバイアスを下げる
elif load < target_load * 0.8:
expert_bias[expert] += learning_rate # 不人気エキスパートのバイアスを上げる
# ルーティング時にバイアスを加算
gate_logits = Linear(hidden_states) + expert_bias
topk_weights, topk_indices = topk_softmax(gate_logits, k=8)
この動的バイアスメカニズムにより、追加の補助損失関数を必要とせずにトレーニング中にエキスパート負荷が自動的に均衡化され、補助損失がモデル性能に与える潜在的な悪影響を回避します。
DeepSeek R1 推論アーキテクチャ詳細解説
強化学習に基づく推論強化モデル。GRPOアルゴリズム、思考連鎖の創発、知識蒸留——R1のコア技術の全体像。
RLトレーニングパイプライン
DeepSeek R1のトレーニングは複数の段階に分かれており、最終的に強力な推論能力を形成します:
| 段階 | 方法 | 目的 |
|---|---|---|
| 段階1:コールドスタートSFT | 少量の高品質な思考連鎖データでファインチューニング | モデルに基本的な推論形式と思考連鎖パターンを獲得させる |
| 段階2:推論RL | 推論タスクでGRPO強化学習を使用 | 数学、プログラミング、論理的推論能力を向上 |
| 段階3:拒否サンプリング | RLモデルからサンプリングし、高品質な出力を選別 | 高品質なSFTデータセットを構築 |
| 段階4:全領域SFT | 推論データと汎用データを混合してファインチューニング | 推論能力を維持しつつ汎用能力を回復 |
| 段階5:全領域RL | すべてのタスクでRLHFアライメントを使用 | 有用性、安全性、無害性を向上 |
GRPO(Group Relative Policy Optimization)
GRPOはDeepSeekが提案した強化学習アルゴリズムで、PPO(Proximal Policy Optimization)の改良版です。核心的な考え方は:
- グループ内相対優位性:各質問に対して複数の候補回答(グループ)を生成し、グループ内の平均報酬をベースラインとして相対優位性を計算します。絶対的な報酬値は使用しません。
- Criticモデル不要:従来のPPOではポリシーモデルと同規模のCritic(価値)モデルが必要ですが、GRPOはグループ内比較によりCriticモデルの必要性を排除し、トレーニングリソースを約50%節約します。
- KLダイバージェンス制約:損失関数で直接KLダイバージェンスを推定し、ポリシー更新の大きさを制限して、モデルが参照ポリシーから逸脱しすぎるのを防ぎます。
# 各質問に対して、G個の候補回答を生成
group_responses = [model.generate(question) for _ in range(G)]
group_rewards = [reward_model(question, r) for r in group_responses]
# グループ内相対優位性(平均を引き、標準偏差で割る)
mean_reward = mean(group_rewards)
std_reward = std(group_rewards)
advantages = [(r - mean_reward) / std_reward for r in group_rewards]
# ポリシー勾配更新
loss = -mean(advantages * log_prob_ratio - beta * kl_divergence)
model.update(loss)
報酬モデリング
R1の報酬モデルには2つの核心的な次元があります:
正確性報酬
数学問題では最終回答が正しいか、プログラミング問題ではコードがテストケースを通過するか、推論問題では結論が論理的に一貫しているかをチェックします。
- 回答の正確性検証
- コードのテスト合格率
- 論理的一貫性チェック
形式報酬
モデルが推論プロセスを専用タグ内に配置することを奨励し、出力形式を標準化し読みやすくします。これによりモデルが構造化された思考連鎖を形成するのに役立ちます。
- 推論プロセスの形式標準化
- 構造化された思考連鎖の出力
思考連鎖の創発
R1の最も驚くべき特徴は「思考連鎖の創発」です。純粋なRLトレーニング(R1-Zero)では、モデルは人間が注釈した推論ステップなしで自律的に以下を学習しました:
- 自己検証:推論中に中間ステップが正しいかどうかをチェックします。
- 反省とバックトラッキング:推論エラーを検出すると、以前のステップに自動的に戻って再推論します。
- 複数経路探索:複数の推論経路を試し、最も合理的な結果を選択します。
- 「Ahaモーメント」:モデルは推論中に人間の「ひらめき」に似た瞬間を示し、以前の推論経路を再評価して修正します。
小モデルへの知識蒸留
DeepSeekはR1 671Bの推論能力を小モデル(1.5Bから70B)に蒸留し、80万の厳選された推論サンプルを使用します:
データ選定
R1 671Bの出力から80万の高品質な推論サンプルを選定し、数学、プログラミング、科学的推論など複数の領域をカバーします。
- 80万の厳選サンプル
- 複数領域のカバレッジ
- 高品質フィルタリング
蒸留対象モデル
Qwen-2.5(1.5B/7B/14B/32B)とLlama-3.1/3.3(8B/70B)に基づいて蒸留し、小モデルが強力な推論能力を獲得できるようにします。
- Qwen-2.5シリーズ
- Llama-3.1/3.3シリーズ
- 1.5Bから70Bまで完全カバー
コアモジュールのコード実装
DeepSeek-V3 オープンソースコードに基づくコアモジュールの実装。実際の変数名と構造を使用。
MoE フォワード伝播
MLA アテンション実装
MTP モジュール実装
DeepSeek モデルのパフォーマンス分析
FLOPs 利用率、メモリ帯域幅、通信オーバーヘッド、スケーリング効率——DeepSeek のパフォーマンス全体像。
FLOPs 利用率
| 指標 | DeepSeek V3 | 説明 |
|---|---|---|
| 理論ピーク FLOPs | ~990 TFLOPS(H800 FP8) | 単一 H800 GPU の FP8 理論ピーク |
| 実際の達成 FLOPs | ~580 TFLOPS | トレーニング中の実際の計算スループット |
| FLOPs 利用率 | ~58.6% | 業界平均(通常 30-45%)をはるかに上回る |
DeepSeek は、慎重に設計された計算カーネルと通信オーバーラップ戦略により、非常に高い FLOPs 利用率を達成しています。58.6% の利用率は MoE モデルの中でもトップレベルです(MoE モデルは、スパースな活性化と all-to-all 通信のため、通常は高密度モデルよりも利用率が低くなります)。
メモリ帯域幅の分析
モデル重み
671B パラメータ、FP8 形式で保存。総重みメモリは約 671 GB(FP8)、BF16 形式では約 1342 GB。
- FP8: ~671 GB
- BF16: ~1342 GB
- FP8 を使用すると 50% 削減
KV キャッシュ(MLA)
MLA は KV キャッシュを従来方式の 1/32 に圧縮します。128K コンテキストでの KV キャッシュは約 40 GB。
- 従来の MHA: ~973 GB
- MLA: ~40 GB
- 削減: ~96%
オプティマイザ状態
AdamW オプティマイザは、モメンタムと分散(FP32)を保存する必要があり、パラメータあたり約 8 バイト。オプティマイザ状態は約 5.4 TB(FP32)。
- モメンタム: 671B * 4 バイト
- 分散: 671B * 4 バイト
- 合計: ~5.4 TB
通信オーバーヘッド
MoE モデルの分散トレーニングには、2 つの通信パターンが含まれます:
- All-Reduce(データ並列): すべての GPU 間で勾配を同期し、通信量は GPU 数に比例します。DeepSeek は 2048 台の H800 GPU を使用し、効率的な Ring All-Reduce アルゴリズムを採用しています。
- All-to-All(エキスパート並列):現在のGPUから対応するエキスパートが存在するGPUへトークンを送信します。これはMoEモデル特有の通信オーバーヘッドであり、DeepSeekはエキスパートの均等分散と通信オーバーラップ戦略によりこれを最小化しています。
スケーリング効率
| GPU数 | 1ステップあたりの時間 | スケーリング効率 | 説明 |
|---|---|---|---|
| 256 H800 | 約8.0秒 | 100%(ベースライン) | 強スケーリングのベースライン |
| 512 H800 | 約4.5秒 | 約89% | 通信オーバーヘッドの増加 |
| 1024 H800 | 約2.6秒 | 約77% | All-to-All通信オーバーヘッドが顕著 |
| 2048 H800 | 約1.5秒 | 約67% | トレーニング構成、スケーリング効率は依然として許容範囲 |
DeepSeek V3は2048基のH800 GPUで約67%のスケーリング効率を達成しています。671BパラメータのMoEモデルとしては、かなり優れた結果です。高密度モデルと比較して、MoEのAll-to-All通信がスケーリング効率の主要なボトルネックですが、DeepSeekは通信オーバーラップとエキスパート分布の最適化により、この影響を最小限に抑えています。
DeepSeek関連リソース
DeepSeekモデルの詳細を、使用方法からデプロイ、開発者エコシステムまで深く掘り下げます。
DeepSeek Model完全ガイド
DeepSeekの全モデルの完全な紹介:V3、R1、Coder、Janus、VL2、Prover。ダウンロード、デプロイ、使用法のワンストップガイド。
- モデルシリーズの完全なリスト
- Ollamaのダウンロードとデプロイ
- ベンチマーク性能比較
DeepSeekオープンソースモデル一覧
6大シリーズ、20以上のモデルの完全なリスト。V3、R1、Coder、Janus、VL2、Proverの全仕様、パラメータ数、適用シナリオ。
- 6大モデルシリーズ
- クイック比較表
- 適用シナリオガイド
DeepSeekモデルデプロイチュートリアル
Ollama、Docker、vLLM、Difyの4つのデプロイ方法。シングルマシンからクラスターまで、完全なコマンドとハードウェア構成の参考を添付。
- Ollamaワンクリックデプロイ
- Docker Composeオーケストレーション
- vLLM高性能推論
DeepSeekモデルの使い方
4つの使用方法を手取り足取り解説:公式App、Ollamaローカルデプロイ、API呼び出し、サードパーティプラットフォーム。初心者でも学べます。
- 公式App使用チュートリアル
- Ollamaローカル実行
- Python/JS API呼び出し
DeepSeek モデルアーキテクチャに関するFAQ
参考来源と関連資料
このページの技術内容はDeepSeekの公式論文と技術レポートに基づいており、ご自身で確認いただけます。
- DeepSeek-V3 Technical Report -- MoE/MLA/MTP/FP8の完全な技術レポート
- DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning -- R1の推論アーキテクチャとGRPOアルゴリズム
- GitHub -- deepseek-ai/DeepSeek-V3 -- オープンソースコードとモデル重み
- GitHub -- deepseek-ai/DeepSeek-R1 -- R1のオープンソースコードと蒸留モデル
- DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models -- DeepSeekMoEアーキテクチャ論文
- DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model -- MLAアテンション機構の原著論文