DeepSeek-V3架构详解
00:00
深入分析 DeepSeek-V3 的架构创新,包括 MLA、DeepSeekMoE、MTP 和 DualPipe
DeepSeek-V3架构详解
DeepSeek-V3 是 2024 年最具创新性的开源 LLM。它引入了 MLA(多头潜在注意力)、改进的 MoE、多 Token 预测和 DualPipe 并行——每一项都是对标准 Transformer 的重大改进。
类型: 概念 前置条件: Phase 10 Lesson 14(开源模型架构详解) 预计时间: ~45 分钟
学习目标
- 理解 DeepSeek-V3 的整体架构设计
- 掌握 MLA(多头潜在注意力)的原理
- 理解 DeepSeekMoE 的辅助损失无关负载均衡
- 分析 V3 的训练效率和性能
架构概览
| 特性 | DeepSeek-V3 |
|---|---|
| 参数量 | 671B(总),37B(每 token 激活) |
| 层数 | 61 |
| 隐藏维度 | 7168 |
| 注意力头 | 128 |
| MoE 专家数 | 256 |
| 激活专家数 | 8 |
| 训练数据 | 14.8T token |
| 训练成本 | ~$5.6M(2048 H800 GPU) |
MLA(多头潜在注意力)
MLA 通过低秩压缩 KV Cache,大幅减少推理时的内存占用:
class MultiHeadLatentAttention(nn.Module):
"""简化的 MLA"""
def __init__(self, d_model, n_heads, kv_lora_rank=512):
super().__init__()
self.n_heads = n_heads
self.d_head = d_model // n_heads
self.kv_lora_rank = kv_lora_rank
# Q 投影
self.q_proj = nn.Linear(d_model, d_model, bias=False)
# KV 压缩投影(关键创新)
self.kv_compress = nn.Linear(d_model, kv_lora_rank, bias=False)
self.k_decompress = nn.Linear(kv_lora_rank, d_model, bias=False)
self.v_decompress = nn.Linear(kv_lora_rank, d_model, bias=False)
self.out_proj = nn.Linear(d_model, d_model, bias=False)
def forward(self, x, kv_cache=None):
B, T, C = x.shape
# Q 正常投影
q = self.q_proj(x).view(B, T, self.n_heads, self.d_head).transpose(1, 2)
# KV 压缩到低秩空间
kv_latent = self.kv_compress(x) # [B, T, kv_lora_rank]
# 更新 KV Cache(只缓存压缩后的 latent,而非完整 KV)
if kv_cache is not None:
kv_latent = torch.cat([kv_cache, kv_latent], dim=1)
# 从 latent 解压缩 K 和 V
k = self.k_decompress(kv_latent).view(B, -1, self.n_heads, self.d_head).transpose(1, 2)
v = self.v_decompress(kv_latent).view(B, -1, self.n_heads, self.d_head).transpose(1, 2)
# 标准注意力计算
attn = torch.softmax(q @ k.transpose(-2, -1) / (self.d_head ** 0.5), dim=-1)
out = attn @ v
out = out.transpose(1, 2).contiguous().view(B, T, C)
return self.out_proj(out), kv_latent
MLA 的 KV Cache 大小仅为标准 MHA 的约 1/7(512 维 vs 7168 维)。
DeepSeekMoE
DeepSeekMoE 使用辅助损失无关的负载均衡策略:
- 256 个路由专家 + 1 个共享专家
- 每个 token 激活 8 个路由专家 + 1 个共享专家
- 无辅助损失:通过偏置项调整实现负载均衡
关键术语
| 术语 | 通俗说法 | 实际含义 |
|---|---|---|
| MLA | ”压缩注意力” | Multi-head Latent Attention,通过低秩压缩 KV Cache |
| 辅助损失无关 | ”不需要额外损失” | 不依赖辅助损失函数实现 MoE 负载均衡 |
| 共享专家 | ”公共知识” | 所有 token 都经过的专家,捕获通用知识 |