DeepSeek 架构与训练创新

中国团队的开源大模型,以低成本高效率著称。


概述

DeepSeek 是深度求索公司开发的大语言模型系列,其核心创新在于通过架构优化大幅降低训练和推理成本,同时保持与顶级模型相当的性能。


核心创新一:MLA(Multi-head Latent Attention)

传统多头注意力的痛点

传统 MHA 的内存问题(以 GPT-3 规模为例):

每生成一个新 token,都要缓存之前所有 token 的 K 和 V

假设:
- 序列长度:4096 tokens
- 头数:96
- 每头维度:128
- 层数:96

KV Cache 大小 = 4096 × 96 × 128 × 96 × 2 (K和V) × 2 (字节)
             ≈ 150 GB!!

这导致:
1. 推理时显存爆炸
2. 并发用户数受限
3. 成本居高不下

DeepSeek 的解决方案:低秩压缩

核心思想:KV 缓存太大?那就压缩它!

传统 MHA:
┌─────────────────────────────────────────┐
│  每个头都有独立的 K 和 V                  │
│                                          │
│  头1: K₁(128维), V₁(128维)               │
│  头2: K₂(128维), V₂(128维)               │
│  ...                                     │
│  头96: K₉₆(128维), V₉₆(128维)            │
│                                          │
│  总缓存:96 × 128 × 2 = 24576 维/token   │
└─────────────────────────────────────────┘

DeepSeek MLA:
┌─────────────────────────────────────────┐
│  所有头共享一个压缩后的"潜在向量"          │
│                                          │
│  原始 KV → 压缩 → c (512维)  ← 只缓存这个!│
│                    ↓                     │
│               需要时再解压                 │
│                    ↓                     │
│            恢复出各头的 K 和 V             │
│                                          │
│  总缓存:512 维/token                     │
│  压缩比:24576 / 512 ≈ 48 倍!           │
└─────────────────────────────────────────┘

MLA 的数学原理

# 传统 MHA
K = X @ W_K  # 直接投影,维度大
V = X @ W_V  # 直接投影,维度大
# 缓存 K, V(巨大)
 
# DeepSeek MLA
c = X @ W_down  # 先降维压缩到潜在空间(比如 512 维)
# 只缓存 c(很小)
 
# 推理时解压
K = c @ W_up_K  # 从潜在向量恢复 K
V = c @ W_up_V  # 从潜在向量恢复 V

本质:用矩阵分解的思想,把大矩阵拆成小矩阵的乘积

图解对比

传统 Multi-Head Attention:
                    ┌─── K₁ V₁ ───┐
                    ├─── K₂ V₂ ───┤
Input → [投影] →    ├─── K₃ V₃ ───┤  → 缓存全部 KV → 巨大!
                    ├─── ... ────┤
                    └─── Kₙ Vₙ ───┘


DeepSeek MLA:
                              ┌─── K₁ V₁ ───┐
Input → [压缩] → c (小) →     ├─── K₂ V₂ ───┤
           ↑      ↓           ├─── K₃ V₃ ───┤
        只缓存c  [解压]        ├─── ... ────┤
                              └─── Kₙ Vₙ ───┘

核心创新二:MoE(Mixture of Experts)

💡 本节是 DeepSeek 特定的 MoE 实现解读。 如果你想看 Dense vs MoE 的通用对比(路由机制、激活参数概念、显存陷阱等),先看 Dense 与 MoE 架构对比;本节假设已读过那篇,专注 DeepSeek 自家的工程化选择。 想看 MoE 模型如何实际部署(FP8/AWQ 量化、显存估算),见 本地部署模型量化选型

传统密集模型的问题

传统 Transformer:
┌──────────────────────────────┐
│  每个 token 都经过完整的      │
│  FFN(前馈网络)              │
│                              │
│  参数量:全部激活             │
│  计算量 = 参数量              │
└──────────────────────────────┘

DeepSeek 的 MoE 架构

DeepSeek MoE:
┌──────────────────────────────┐
│  有 N 个专家(Expert)        │
│                              │
│  专家1: 擅长代码              │
│  专家2: 擅长数学              │
│  专家3: 擅长语言              │
│  ...                         │
│  专家N: 擅长xxx              │
│                              │
│  Router: 每个 token 只激活    │
│         其中 2-3 个专家       │
│                              │
│  结果:总参数 671B            │
│       激活参数只有 37B!      │
└──────────────────────────────┘

MoE 工作原理

class MoELayer:
    def __init__(self, num_experts=256, top_k=8):
        self.experts = [FFN() for _ in range(num_experts)]
        self.router = Linear(d_model, num_experts)  # 路由器
 
    def forward(self, x):
        # 1. 计算每个专家的分数
        router_logits = self.router(x)
 
        # 2. 选择 top-k 个专家
        top_k_scores, top_k_indices = torch.topk(router_logits, k=self.top_k)
        top_k_weights = F.softmax(top_k_scores, dim=-1)
 
        # 3. 只计算被选中的专家
        output = 0
        for i, idx in enumerate(top_k_indices):
            expert_output = self.experts[idx](x)
            output += top_k_weights[i] * expert_output
 
        return output

负载均衡问题与解决

问题:如果所有 token 都选同一个专家怎么办?

坏情况:
Token1 → 专家3
Token2 → 专家3
Token3 → 专家3
...
专家3 过载,其他专家闲置

DeepSeek 的解决方案:辅助损失函数

# 添加负载均衡损失
aux_loss = balance_loss(router_logits)  # 鼓励均匀分配
total_loss = task_loss + α * aux_loss

核心创新三:GRPO 训练算法

一句话:DeepSeek 自创的 RL 训练算法,比 PPO 省一半显存,是 R1 推理能力涌现的幕后功臣。

GRPO 是什么

GRPO = Group Relative Policy Optimization(组相对策略优化)

它要解决传统 RLHF 中 PPO 算法的两大痛点:

  1. 要训一个独立的 Value Model(价值模型) —— 显存占用翻倍
  2. 要训一个 Reward Model(奖励模型) —— 又一份显存

PPO vs GRPO 对比

传统 PPO(OpenAI / Anthropic 用):
  ┌──────────┐    ┌────────────┐
  │ 主模型   │ ←→ │ Value Model │  ← 独立的价值模型
  │ (Actor)  │    └────────────┘    (和主模型一样大)
  └──────────┘
       ↑
  ┌──────────────┐
  │ Reward Model │  ← 独立的奖励模型
  └──────────────┘

DeepSeek GRPO:
  ┌──────────┐
  │ 主模型   │     ← 只有这一个!
  └──────────┘
       ↑
   生成一组(如 16 个)答案
       ↓
   组内相对打分("这组里哪个答案最好")
       ↓
   把组里高于平均分的当作"好答案"训练

类比

  • PPO = 考试要请一个独立的”裁判老师”打分(贵)
  • GRPO = 一组学生交卷,互相比较——比平均高的算”好”,比平均低的算”差”,不用请外部裁判

优势

维度PPOGRPO
Value Model必需❌ 不需要
显存占用低 50%
训练稳定性易崩更稳
适用场景通用数学 / 代码(结果可验证)

💡 GRPO 特别适合有客观评判标准的任务(数学题对错、代码能否通过测试),所以成了 DeepSeek 训练推理模型 R1 的核心武器。

📖 关于训练算法的全景对比,见 模型训练技术速查


核心创新四:R1 推理模型与多阶段训练

一句话:DeepSeek-R1 用纯 RL 让模型自己学会”思考链”,是开源社区第一个对标 OpenAI o1 的推理模型,并把”思考过程”完整公开。

R1 的两个版本

R1-Zero:纯 RL,零 SFT 冷启动

Base Model (DeepSeek-V3-Base)
    ↓
直接用 GRPO 做强化学习(没有任何 SFT!)
    ↓
DeepSeek-R1-Zero

结果震惊业界:模型在训练过程中自发涌现出长思考链行为——会自己说”等等,让我重新检查一下”、“这个方法不对,换个思路”。

这种自发的反思行为被研究界称为「Aha Moment(顿悟时刻)」——证明了纯 RL 也能让模型学会推理,不一定要靠人类标注的思考过程。

R1:多阶段训练(生产版)

R1-Zero 虽然有推理能力但输出可读性差(中英混杂、格式乱)。生产版 R1 用了 4 阶段训练

Stage 1:冷启动 SFT
  └─ 用少量高质量推理样本初始化(解决可读性)

Stage 2:推理导向 RL(GRPO)
  └─ 在数学 / 代码任务上做 RL 训练(强化推理能力)

Stage 3:拒绝采样 + SFT
  └─ 让模型自己生成大量样本 → 筛掉错的 → 留下的当训练数据(这就是 RFT!)

Stage 4:全场景 RL
  └─ 包括安全 / 偏好对齐的最终 RL 阶段

📖 这里的”拒绝采样 + SFT” 就是 模型训练技术速查 § 6 RFT 的实战应用。

R1 vs OpenAI o1 关键差异

维度OpenAI o1DeepSeek-R1
思考链是否可见❌ 隐藏(用户看不到)完全可见
是否开源❌ 闭源MIT 协议开源
训练方法闭源猜测:复杂 RL公开发表:GRPO + 多阶段
推理成本便宜 ~30 倍

🌍 R1 的发布对开源社区是核弹级影响——第一次有人公开了”如何用 RL 训出推理模型”的完整配方。


核心创新五:R1 蒸馏小模型生态

一句话:DeepSeek 把 R1 的推理能力蒸馏到小模型(基于 Qwen / Llama),让普通人用消费级显卡也能跑推理模型。

蒸馏出的小模型家族

模型基座参数量在 MATH-500 上表现
DeepSeek-R1-Distill-Qwen-1.5BQwen-2.51.5B接近 GPT-4o
DeepSeek-R1-Distill-Qwen-7BQwen-2.57B超过 GPT-4o
DeepSeek-R1-Distill-Qwen-32BQwen-2.532B接近 o1-mini
DeepSeek-R1-Distill-Llama-8BLlama-3.18B中等
DeepSeek-R1-Distill-Llama-70BLlama-3.370B接近 o1-mini

蒸馏方法

Teacher: DeepSeek-R1(671B 巨型模型)
    ↓
让 R1 生成 80 万条带"完整思考链"的高质量样本
    ↓
用这 80 万条样本对小模型做 SFT
    ↓
Student: Distill 系列(1.5B ~ 70B)

📖 这是 模型训练技术速查 § 5 蒸馏 中”链式蒸馏(CoT distillation)“的教科书级实例——老师不仅给答案,还把完整推理链都教给学生

与”灰色蒸馏”的本质区别

维度DeepSeek “被怀疑用 GPT 输出”DeepSeek 自家 R1-Distill
老师模型闭源(违反 OpenAI 服务条款)自家开源 R1
合法性灰色完全合法
数据是否公开私有✅ 训练方法公开

✨ R1-Distill 系列证明了:靠”自家蒸馏”就能让 7B 小模型超过 GPT-4o,再次给开源社区送了一颗核弹。


DeepSeek-V3 具体配置

指标数值
总参数量671B
激活参数量37B(只有 5.5%)
专家数量256 个
每 token 激活专家数8 个
KV Cache 压缩比~93.3%

成本对比

推理成本对比(生成 100 万 tokens):

GPT-4:        ~$30
Claude:       ~$15
DeepSeek-V3:  ~$0.5   ← 便宜 60 倍!
DeepSeek-R1:  ~$2     ← 比 o1 便宜约 30 倍

训练成本对比:

GPT-4:        ~$100M(估计)
DeepSeek-V3:  ~$5.5M
DeepSeek-R1:  在 V3 基础上加约 $1M 的 RL 训练

原因:
1. MLA 减少了 KV Cache,单卡能服务更多用户
2. MoE 减少了计算量,每个 token 只用 5% 的参数
3. GRPO 替代 PPO,RL 训练显存减半
4. 多阶段训练 + 蒸馏,把贵的工作只做一次

创新点总结

架构层

创新解决的问题效果
MLAKV Cache 显存爆炸压缩 93%+,大幅降低推理成本
MoE参数量大=计算量大671B 参数只激活 37B
辅助 LossMoE 负载不均衡专家利用更均匀

训练层

创新解决的问题效果
GRPOPPO 显存高、不稳定训练显存减半,更稳定
R1 多阶段训练纯 SFT 学不会推理用 RL 让模型涌现思考链
R1 蒸馏家族大模型部署贵7B 小模型在数学上超过 GPT-4o

🌟 这两层创新的组合拳,让 DeepSeek 从”训练成本”和”推理成本”两端同时打破了行业既有秩序。


为什么这些创新重要?

大模型竞争的本质:

性能 = f(参数量, 数据量, 算法)

但还有一个隐藏变量:成本

DeepSeek 的策略:
- 不在参数量上死磕(OpenAI 路线)
- 而是在"效率"上做文章
- 用更少的计算,达到相近的效果

这让开源社区也能玩得起大模型,打破了”有钱才能做 AI”的局面。


相关链接


参考资料

  • DeepSeek-V2 技术报告(MLA)
  • DeepSeek-V3 技术报告(MoE 架构、训练框架)
  • DeepSeek-R1 技术报告(GRPO、多阶段训练、Aha Moment、蒸馏)
  • DeepSeek-Math 论文(GRPO 算法首次提出)

创建时间: 2024-12-10 训练层补全: 2026-05-04