論文概要(Abstract)
DeepSeek-V3は671Bパラメータ(トークンあたり37Bアクティブ)のMixture-of-Experts(MoE)言語モデルである。Multi-head Latent Attention(MLA)とDeepSeekMoEアーキテクチャを採用し、補助損失フリーの負荷分散戦略とマルチトークン予測(MTP)訓練目標を導入した。14.8兆トークンで事前学習後、SFTとRLを実施。全学習にわずか278万H800 GPU時間(推定約$560万)しか要しない驚異的コスト効率を達成し、オープンソース最高性能を記録した。
この記事は Zenn記事: 2026年2月版 日本語LLM選定ガイド の深掘りです。
情報源
- arXiv ID: 2412.19437
- URL: https://arxiv.org/abs/2412.19437
- 著者: DeepSeek-AI
- 発表年: 2024
- 分野: cs.CL, cs.AI
背景と動機(Background & Motivation)
フロンティアLLMの開発は性能とコストのトレードオフに直面している。密(Dense)モデルのスケーリングはGPU時間の指数的増加を招き、GPT-4クラスの学習には数千万〜数億ドルのコストがかかるとされる。MoEアーキテクチャはスパース計算により効率的なスケーリングを実現するが、従来手法には2つの課題があった。
第一に、MoEの負荷分散に使用される補助損失(auxiliary loss)が主訓練目標と競合し、性能を劣化させる。従来のSwitch TransformerやGShard等では、$\alpha = 0.01$程度の補助損失でエキスパート間の均等な利用を促すが、この損失項が主損失の最適化を阻害するというジレンマがあった。
第二に、大規模MoEのクロスノード通信がボトルネックとなり、学習効率が密モデルに劣る場合があった。DeepSeek-V3はこれらの課題を同時に解決するアーキテクチャと学習フレームワークを提案している。
主要な貢献(Key Contributions)
- 補助損失フリー負荷分散: 動的バイアス項でルーティングを調整し、主損失の勾配に干渉せずロードバランスを実現
- マルチトークン予測(MTP): 次トークンに加え次の次のトークンも予測し、学習効率と推論速度を向上
- FP8混合精度学習: 671Bパラメータ規模でFP8学習を世界初検証、BF16比50%メモリ削減
- DualPipeアルゴリズム: パイプライン並列のバブル率を$(p-1)/(2m-1)$に低減
- DeepSeek-R1からの知識蒸留: 長Chain-of-Thoughtモデルから標準LLMへの推論能力転移
技術的詳細(Technical Details)
Multi-head Latent Attention(MLA)
MLAは標準Multi-Head Attention(MHA)のKVキャッシュを低ランク圧縮する手法である。標準MHAでは$n_h \times d_h$次元のKey・Valueベクトルをトークンごとにキャッシュする必要があるが、MLAは潜在ベクトルに圧縮することで大幅にメモリを削減する。
KV圧縮の流れは以下の通りである。まず隠れ状態$\mathbf{h}_t$からダウンプロジェクション行列$\mathbf{W}^{DKV}$で潜在ベクトルを生成する。
\[\mathbf{c}_t^{KV} = \mathbf{W}^{DKV} \mathbf{h}_t\]ここで$\mathbf{c}_t^{KV} \in \mathbb{R}^{d_c}$、$d_c = 512$である。
次にアップロジェクション行列でKey・Valueを復元する。
\[\mathbf{k}_t^C = \mathbf{W}^{UK} \mathbf{c}_t^{KV}, \quad \mathbf{v}_t^C = \mathbf{W}^{UV} \mathbf{c}_t^{KV}\]RoPE(Rotary Position Embedding)は分離して適用する。
\[\mathbf{k}_t^R = \text{RoPE}(\mathbf{W}^{KR} \mathbf{h}_t)\]最終的なKeyは$\mathbf{k}_t = [\mathbf{k}_t^C; \mathbf{k}_t^R]$となる。
ここで、
- $n_h = 128$: Attentionヘッド数
- $d_h = 128$: ヘッド次元
- $d_c = 512$: KV圧縮次元
- $d_c’ = 1536$: Query圧縮次元
- $d_h^R = 64$: 分離RoPE次元
KVキャッシュ圧縮率: 標準MHAでは$n_h \times d_h = 128 \times 128 = 16{,}384$要素/トークンが必要だが、MLAでは$d_c = 512$のみで済む。約32倍の圧縮を実現する。
DeepSeekMoEアーキテクチャ
DeepSeekMoEの特徴は細粒度エキスパート分割と共有エキスパート分離の2点である。
DeepSeek-V3のMoE構成は以下の通りである。
| パラメータ | 値 |
|---|---|
| 総パラメータ数 | 671B |
| アクティブパラメータ/トークン | 37B |
| Transformer層数 | 61 |
| 隠れ次元 | 7168 |
| 総エキスパート数 | 257(共有1 + ルーティング256) |
| アクティブエキスパート/トークン | 8(共有1 + ルーティング7) |
| FFN中間次元 | 2048 |
ルーティング関数はSigmoid関数を用いる。
\[s_{i,t} = \sigma(\mathbf{h}_t \cdot \mathbf{e}_i)\]ここで$\mathbf{e}i$はエキスパート$i$の重心ベクトル、$s{i,t}$はトークン$t$のエキスパート$i$への親和度である。上位8件のエキスパートが選択される。
補助損失フリー負荷分散
従来のMoE学習では補助損失$\mathcal{L}_\text{Bal} = \alpha \sum_i f_i \cdot P_i$($\alpha \approx 0.01$)を加えてエキスパート利用の均等化を図る。しかしこの損失が主訓練目標と競合し、性能劣化を引き起こす。
DeepSeek-V3はバイアス項$b_i$を各エキスパートに導入する。
\[s'_{i,t} = s_{i,t} + b_i\]ルーティング判定には$s’{i,t}$を使用するが、実際の計算重みには$s{i,t}$(バイアスなし)を使用する。これにより主損失の勾配にバイアス項が影響しない。
バイアスの動的更新規則は以下の通りである。
\[b_i \leftarrow \begin{cases} b_i - \gamma & \text{エキスパート$i$が過負荷の場合} \\ b_i + \gamma & \text{エキスパート$i$が過少の場合} \end{cases}\]ここで$\gamma = 0.001$はバイアス更新速度である。
補完的に極めて軽量なシーケンスレベルバランス損失($\alpha = 0.0001$、従来の100分の1)も併用する。この設計により、性能劣化なしに安定した負荷分散を実現する。
マルチトークン予測(MTP)
標準LLMは各位置で次の1トークンのみを予測する。MTPはこれを拡張し、追加$D$トークンを予測する。DeepSeek-V3では$D = 1$、つまり次トークンと次の次のトークンの2トークンを予測する。
MTPモジュールは逐次的(sequential)に構成される。各モジュールは前モジュールの表現と次トークンの埋め込みを入力として受け取り、次のトークンを予測する。
損失関数は以下の通りである。
\[\mathcal{L}_\text{MTP} = \frac{\lambda}{D} \sum_{k=1}^{D} \mathcal{L}_{\text{CE}}^{(k)}\]ここで$\lambda = 0.3$はMTP損失の重み、$\mathcal{L}_{\text{CE}}^{(k)}$は深さ$k$での交差エントロピー損失である。
MTPの利点は3つある。(1) 学習効率の向上(各サンプルが$D+1$個の予測目標を提供)、(2) モデルの先読み計画能力の向上、(3) 推論時のSpeculative Decodingへの活用。
DualPipeアルゴリズム
標準パイプライン並列のバブル比率は$(p-1)/m$($p$: パイプラインステージ数、$m$: マイクロバッチ数)である。DualPipeは2つのデータストリームを逆方向に同時処理し、一方の計算と他方の通信をオーバーラップさせる。
\[\text{バブル比率}_\text{DualPipe} = \frac{p-1}{2m-1}\]DeepSeek-V3では$p = 16$で運用し、バブル率を大幅に低減している。
FP8混合精度学習
671Bパラメータ規模でのFP8学習を世界で初めて検証した。
- Forward: 活性化・重みにE4M3フォーマット使用
- Backward: 勾配にE5M2フォーマット使用
- 累積精度: 行列乗算の累積はFP32で実行
- 量子化粒度: タイル単位(活性化: 1×128、重み: 128×1)
- マスター重み: FP32で保持
BF16比で50%のメモリ削減を実現しつつ、訓練の安定性を維持。14.8兆トークンの全学習過程で損失スパイクやロールバックは一切発生しなかった。
実装のポイント(Implementation)
学習インフラの構成は以下の通りである。
| 並列化手法 | 設定 |
|---|---|
| Pipeline Parallelism | 16ステージ |
| Expert Parallelism | 64 |
| Data Parallelism | 2(ZeRO-1) |
| Tensor Parallelism | 不使用 |
Tensor Parallelismを使用しない点が特異である。通常この規模ではTPが必須とされるが、DeepSeek-V3ではクロスノード通信帯域の制約を考慮し、代わりにExpert Parallelism 64で分散している。
クロスノードAll-to-All通信にはカスタムRDMAカーネルを使用し、TCP/IPスタックを迂回して低レイテンシを実現。計算と通信の完全オーバーラップにより、2048基のH800 GPUで3.7Bトークン/秒のスループットを達成した。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# MLA (Multi-head Latent Attention) の簡易実装例
import torch
import torch.nn as nn
class MultiHeadLatentAttention(nn.Module):
"""Multi-head Latent Attention with KV compression.
Args:
d_model: Hidden dimension (7168 for DeepSeek-V3)
n_heads: Number of attention heads (128)
d_c: KV compression dimension (512)
d_rope: Decoupled RoPE dimension (64)
"""
def __init__(self, d_model: int, n_heads: int, d_c: int, d_rope: int):
super().__init__()
self.d_h = d_model // n_heads
self.n_heads = n_heads
self.d_c = d_c
# KV down-projection (compress)
self.W_dkv = nn.Linear(d_model, d_c, bias=False)
# KV up-projection (decompress)
self.W_uk = nn.Linear(d_c, d_model, bias=False)
self.W_uv = nn.Linear(d_c, d_model, bias=False)
# Decoupled RoPE projection
self.W_kr = nn.Linear(d_model, d_rope * n_heads, bias=False)
# Output projection
self.W_o = nn.Linear(d_model, d_model, bias=False)
def forward(self, h: torch.Tensor) -> torch.Tensor:
"""Forward pass with KV cache compression.
Args:
h: Hidden states (batch, seq_len, d_model)
Returns:
Output tensor (batch, seq_len, d_model)
"""
B, T, D = h.shape
# Compress KV: (B, T, d_c) — only this is cached
c_kv = self.W_dkv(h)
# Decompress to K, V
k_c = self.W_uk(c_kv) # (B, T, d_model)
v = self.W_uv(c_kv) # (B, T, d_model)
# Standard attention with compressed KV
# (Simplified: omitting multi-head reshape and RoPE for clarity)
scores = torch.matmul(h, k_c.transpose(-2, -1)) / (self.d_h ** 0.5)
attn = torch.softmax(scores, dim=-1)
out = torch.matmul(attn, v)
return self.W_o(out)
Production Deployment Guide
AWS実装パターン(コスト最適化重視)
DeepSeek-V3/V3.2のAPI利用または自前デプロイを想定した構成を示す。
| 規模 | 月間リクエスト | 推奨構成 | 月額コスト | 主要サービス |
|---|---|---|---|---|
| Small | ~3,000 (100/日) | Serverless | $50-150 | Lambda + Bedrock + DynamoDB |
| Medium | ~30,000 (1,000/日) | Hybrid | $300-800 | Lambda + ECS Fargate + ElastiCache |
| Large | 300,000+ (10,000/日) | Container | $2,000-5,000 | EKS + Karpenter + EC2 Spot |
Small構成の詳細(月額$50-150):
- Lambda: 1GB RAM, 60秒タイムアウト ($20/月)
- Bedrock (Claude 3.5 Haiku): Prompt Caching有効 ($80/月)
- DynamoDB: On-Demand ($10/月)
- CloudWatch: 基本監視 ($5/月)
コスト削減テクニック:
- Spot Instances使用で最大90%削減(EKS + Karpenter)
- Bedrock Batch API使用で50%割引
- Prompt Caching有効化で30-90%削減
コスト試算の注意事項: 上記は2026年2月時点のAWS ap-northeast-1(東京)リージョン料金に基づく概算値です。最新料金は AWS料金計算ツール で確認してください。
Terraformインフラコード
Small構成 (Serverless): Lambda + Bedrock + DynamoDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 5.0"
name = "deepseek-routing-vpc"
cidr = "10.0.0.0/16"
azs = ["ap-northeast-1a", "ap-northeast-1c"]
private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
enable_nat_gateway = false
enable_dns_hostnames = true
}
resource "aws_iam_role" "lambda_bedrock" {
name = "lambda-bedrock-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = { Service = "lambda.amazonaws.com" }
}]
})
}
resource "aws_iam_role_policy" "bedrock_invoke" {
role = aws_iam_role.lambda_bedrock.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Action = ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream"]
Resource = "arn:aws:bedrock:ap-northeast-1::foundation-model/anthropic.claude-3-5-haiku*"
}]
})
}
resource "aws_lambda_function" "llm_handler" {
filename = "lambda.zip"
function_name = "deepseek-routing-handler"
role = aws_iam_role.lambda_bedrock.arn
handler = "index.handler"
runtime = "python3.12"
timeout = 60
memory_size = 1024
environment {
variables = {
BEDROCK_MODEL_ID = "anthropic.claude-3-5-haiku-20241022-v1:0"
DYNAMODB_TABLE = aws_dynamodb_table.cache.name
ENABLE_PROMPT_CACHE = "true"
}
}
}
resource "aws_dynamodb_table" "cache" {
name = "llm-prompt-cache"
billing_mode = "PAY_PER_REQUEST"
hash_key = "prompt_hash"
attribute { name = "prompt_hash"; type = "S" }
ttl { attribute_name = "expire_at"; enabled = true }
}
運用・監視設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import boto3
cloudwatch = boto3.client('cloudwatch')
# Bedrock トークン使用量アラート
cloudwatch.put_metric_alarm(
AlarmName='bedrock-token-spike',
ComparisonOperator='GreaterThanThreshold',
EvaluationPeriods=1,
MetricName='TokenUsage',
Namespace='AWS/Bedrock',
Period=3600,
Statistic='Sum',
Threshold=500000,
AlarmActions=['arn:aws:sns:ap-northeast-1:123456789:cost-alerts'],
AlarmDescription='Bedrockトークン使用量異常(コスト急増)'
)
コスト最適化チェックリスト
- ~100 req/日 → Lambda + Bedrock (Serverless) - $50-150/月
- ~1000 req/日 → ECS Fargate + Bedrock (Hybrid) - $300-800/月
- 10000+ req/日 → EKS + Spot (Container) - $2,000-5,000/月
- Spot Instances優先(最大90%削減)
- Bedrock Batch API使用(50%割引)
- Prompt Caching有効化(30-90%削減)
- AWS Budgets月額予算設定
- CloudWatch アラーム設定
- 日次コストレポート(SNS/Slack通知)
- 未使用リソース定期削除
実験結果(Results)
| ベンチマーク | DeepSeek-V3 | GPT-4o | Claude 3.5 Sonnet | Llama-3.1-405B |
|---|---|---|---|---|
| MMLU | 88.5 | 87.2 | 88.3 | 88.6 |
| MATH-500 | 90.2 | 76.6 | 78.3 | 73.8 |
| AIME 2024 | 39.2 | 9.3 | 16.0 | 23.8 |
| HumanEval | 82.6 | 90.2 | 89.0 | 89.0 |
| DROP | 91.6 | 83.7 | 88.3 | 91.6 |
| GPQA-Diamond | 59.1 | 49.9 | 65.0 | 51.1 |
| C-Eval(中国語) | 86.5 | 85.5 | 88.0 | 73.3 |
数学ベンチマークでの突出した性能が注目に値する。MATH-500で90.2(GPT-4oに13.6ポイント差)、AIME 2024で39.2(GPT-4oの4倍以上)を記録。一方コーディングではGPT-4oに及ばない(HumanEval: 82.6 vs 90.2)。学習コストは全体で278万H800 GPU時間、推定約$560万という破格のコスト効率である。
実運用への応用(Practical Applications)
Zenn記事で述べた「DeepSeek-V3.2は約1/6の料金でスコア0.79」という評価の技術的根拠がこの論文にある。MoEのスパース計算(671B中37Bのみアクティブ)によりAPI推論コストが密モデルの約$1/18$に抑えられ、入力$0.28/1Mトークンという低価格を実現している。
実運用での活用パターンは以下の通りである。
- チャットボット: コスト効率に優れ、大量リクエストを低コスト処理可能
- RAG: 128Kコンテキストを活用した大規模ドキュメント処理
- 数学・推論タスク: AIME/MATHでの高性能を活かした技術計算
ただしデプロイには複数GPU(Expert Parallelism=64の要件)が必要なため、自前デプロイのハードルは高い。API利用が現実的な選択肢である。
関連研究(Related Work)
- DeepSeek-V2 (arXiv:2405.04434): MLAとDeepSeekMoEの原論文。236B総パラメータ、21Bアクティブ。V3はこれを大幅にスケールアップ
- Switch Transformer (Fedus et al., 2022): MoEの先駆的研究。補助損失による負荷分散を採用(V3はこれを解消)
- DeepSeek-R1 (arXiv:2501.12948): 強化学習による推論能力の誘導。V3はR1からの知識蒸留で推論力を獲得
まとめと今後の展望
DeepSeek-V3は補助損失フリー負荷分散・MTP・FP8学習・DualPipeの4つの革新により、フロンティア級性能を$560万という異例の低コストで実現した。Zenn記事で指摘した「DeepSeekの圧倒的コスト効率」の技術的根拠は、MoEのスパース計算とFP8学習にある。2025年以降のDeepSeek-V3.1/V3.2ではR1統合による推論力強化が進み、日本語性能も向上している。
参考文献
- arXiv: https://arxiv.org/abs/2412.19437
- Code: https://github.com/deepseek-ai/DeepSeek-V3
- Related Zenn article: https://zenn.dev/0h_n0/articles/3a4f2089113d8e