跳到正文
动手理解 · CONCEPT LAB

一枚 Token 穿过 DeepSeek-V3 的三份不同合同

DeepSeek-V3 仍是 Decoder-only Transformer:MLA 改历史状态怎样缓存,DeepSeekMoE 改 FFN 怎样选路,depth=1 MTP 只在训练侧增加一个未来 token 目标。

已经发生 正在观察 接下来
01 / 03

状态传导图

h 当前隐藏向量
DOWN KV 下投影
CACHE 缓存 c_KV + k_R
ABSORB K 投影吸收到 Query
SCORE latent score + RoPE
O 聚合 latent 后做 V/O 投影

对应官方 inference/model.py 的 absorb 路径;naive 分支才会显式缓存展开 K/V。

观察点 01

缓存 512+64 维;高效路径不展开完整 K/V

隐藏状态下投影成 512 维 KV latent,并另存 64 维 RoPE key。高效解码把 K 上投影吸收到当前 Query 侧,先聚合历史 latent 再做 V 投影,因此缓存始终保持压缩形态。

KV 缓存宽度被压缩
历史可寻址性仍是注意力
此刻要记住

MLA 主要压缩每 token 的 KV Cache 与带宽,不会把 softmax 对历史位置的扫描变成线性注意力。

模型拆解 · 01 / ORIGINAL V3 · 2024-12-26

DeepSeek-V3:效率来自四本账,不是一个“37B”

原始 DeepSeek-V3 family 共享一套 Decoder-only(仅解码器)Transformer 主干:V3-Base 是预训练基座,DeepSeek-V3 是经 SFT / RL 的 Chat 模型。Multi-head Latent Attention(MLA,多头潜在注意力)改变解码时保存什么,Mixture of Experts(MoE,混合专家)改变每个 token 走哪些前馈网络,Multi-Token Prediction(MTP,多 Token 预测)改变训练监督,8-bit Floating Point(FP8,8 比特浮点)与 DualPipe 改变训练怎样跑。

671B 主模型 / 37B 每 token 激活 发布包约 685B;MTP 模块总览约 14B 61 层:前 3 层稠密 + 后 58 层 MoE 2568 + 1 共享专家 14.8T 预训练 token · 128K 发布口径 原版:代码 MIT · 权重 DeepSeek License
DeepSeek-V3 四层总览:主模型前三个 block 使用 MLA 加稠密 FFN,后五十八个 block 使用 MLA 加 DeepSeekMoE;训练另接一个 depth=1 MTP 模块;运行时再叠加 FP8、PP16、EP64、ZeRO-1 与 DualPipe
先按层级读图:MLA 与 MoE在主模型前向里,MTP是可丢弃的训练辅助分支,FP8、并行与 DualPipe属于训练运行时。671B、37B、685B 与 2.788M GPU·h 因而不是同一类数字。查看原图 ↗
01 · 身份与口径

先固定版本,再谈参数与成本

本页审阅的是 2024-12-26 发布的原始 DeepSeek-V3 family。它包含独立的 V3-Base 与后训练 Chat checkpoint,不是后来的 V3-0324、V3.1、V3.2,也不是 DeepSeek-R1。

版本
Original V3 family 有两个 checkpoint:DeepSeek-V3-Base 是预训练基座,DeepSeek-V3 是经过 SFT / RL 的 Chat 模型。架构与预训练章节覆盖共同主干;2.788M GPU·h 的完整账包含后训练,Table 6 评测对应 Chat。官方 API 升级日为 2024-12-26;报告 v2 更新于 2025-02-18。
参数
技术报告的 671B total / 37B activated描述主模型。官方总览把 Hugging Face 发布量写为约 685B = 671B main + 约 14B MTP module;详细权重文档进一步拆出 MTP 的 11.5B unique 参数,以及共享的 0.9B embedding 与 0.9B output head。因而“14B”是模块级近似口径,不是 14B 全部独有增量。
上下文
预训练最大序列为 4K,随后用 YaRN(Yet another RoPE extensioN,上下文扩展方法)分两段扩到 32K → 128K;技术报告以 NIAH(Needle in a Haystack,大海捞针)测试展示到 128K。配置里的 max_position_embeddings=163840 是实现字段,本页仍以论文与 README 明示的 128K 能力口径为准。
许可
原始 V3 仓库代码是 MIT,原始 V3 Base/Chat 权重受 DeepSeek Model License 约束且支持商业使用。2025-03 的 V3-0324 另行改用 MIT;不能据此把原版权重也写成 MIT。
四个分母

671B是主模型容量,37B是作者的每 token 激活参数口径,685B是含 MTP 模块的发布总览近似值,$5.576M则是 Chat 完整训练 Graphics Processing Unit hours(GPU·h,图形处理器小时)按假设单价换算。任何跨列等号都需要额外证据。

02 · 主干结构

61 层共享 MLA,FFN 从第 4 层开始稀疏

“MLA 模型”和“MoE 模型”不是两条并列流水线。每个 Transformer block 都先做 MLA 注意力;前 3 个 block 的 Feed-Forward Network(FFN,前馈网络)是稠密层,之后 58 个 block 才把 FFN 换成 DeepSeekMoE。

组件官方配置它决定什么
主干61 层,hidden size 7168,词表 129,280稠密组件与残差流的宽度;不是 61 个完全相同的 FFN
MLA128 heads;Q 压缩秩 1536;KV 压缩秩 512;每头 q/k 非位置维 128、RoPE 维 64、V 维 128当前 query 的表示、历史缓存宽度和注意力计算路径
稠密 FFN3 层,intermediate size 18,432所有 token 都经过完整前馈层
MoE FFN58 层;256 routed experts,每个宽 2048;Top-8 + 1 shared expert每个 token 只计算少量 routed experts,但完整专家池仍构成模型容量
激活口径37B / 671B ≈ 5.51%作者统计的参数路径比例;不等于显存、Floating-Point Operations(FLOPs,浮点运算量)、时延或通信都只剩 5.51%
37B 能说明

一次 token 前向不计算全部专家

稀疏路由把 FFN 计算集中到 8 个 routed experts,并始终加入 1 个 shared expert;注意力、路由器、稠密层与输出头仍然执行。

37B 不能说明

模型只需部署 37B 权重

下一枚 token 可能选择不同专家,因此完整主模型权重必须在设备、节点或可接受的卸载层级上可用;还要支付 dispatch / combine 通信。

03 · MLA / 解码状态

省的是历史表示宽度,不是把注意力变成线性

MLA 对 Key-Value(KV,键值)做联合低秩压缩:每个历史 token、每层只缓存 c_KV∈R^512 与带 Rotary Positional Embedding(RoPE,旋转位置编码)的 k_R∈R^64。关键并不只是“先压缩再解压”,而是高效实现用矩阵吸收,让完整 K/V 根本不必写回缓存。

DeepSeek-V3 MLA 高效解码数据流:当前 query 的非位置部分吸收 key 上投影矩阵后与 512 维 KV latent 直接打分,RoPE 分支单独打分;softmax 概率先聚合历史 latent,再通过 value 与输出投影,缓存始终只有 512 加 64 维
紫线只处理当前 query,绿线读取历史 latent。官方 demo 同时保留 naiveabsorb 两条代码路径;生产级理解应以 absorb 路径为主,而不是把“显式恢复完整 K/V”画成必经步骤。查看原图 ↗
01 · 写缓存

历史只留 576 个元素

当前隐藏状态下投影得到 c_KV 和解耦位置 key k_R;后续 token 不需要保存每个头展开后的 K/V。

02 · 算 score

把 K 上投影移到 query 侧

结合律允许先算当前 token 的 q_nope × W_UK,再与所有历史 c_KV 做内积;RoPE 部分单独相乘后相加。

03 · 聚合 value

先加权 latent,再做 V 投影

先计算 Σ p_j c_KV,j,再经过 W_UV 与输出投影;不用为每个历史位置物化完整 V。

缓存元素手算
以 128 heads、标准 K/V head dim 都为 128 的 MHA(Multi-Head Attention,多头注意力)作同头数参照:128×(128+128)=32,768 元素 / 层 / token;MLA absorb 缓存为 512+64=576,元素数减少 1−576/32768=98.24%。官方 demo 的 naive MLA 分支还会缓存 128×(192+128)=40,960 个展开元素。两种比较都只谈缓存表示,不直接等于整机显存或吞吐提升。
复杂度边界

MLA 仍让当前 query 对全部历史位置计算 score 与 softmax:单步 decode 随历史长度线性增长,完整 prefill / 训练仍有二次注意力项。它压缩的是 KV Cache 与内存带宽常数,不是线性注意力。

04 · DEEPSEEKMOE / 稀疏 FFN

负载 bias 决定“选谁”,原始分数决定“占多少”

V3 的辅助损失自由负载均衡最容易被说成“完全不用均衡损失”。真实机制更细:它用每个专家的动态 bias 改变 Top-8 选择边界,却用未加 bias 的原始 sigmoid affinity 合并专家输出;同时仍保留一个系数很小的 sequence-wise(按序列)辅助损失。

DeepSeekMoE 路由:token 先得到 256 个原始 sigmoid affinity,加入动态 bias 后只用于分组和 Top-8 选路;专家输出仍按原始 affinity 归一化并乘 2.5 合并,再与始终执行的共享专家相加;训练根据 batch 负载更新 bias,并保留系数 0.0001 的按序列损失
沿橙线看 indices,沿紫线看 mixing weights:selection score = s+b,而真正乘专家输出的是归一化后的原始 s。这正是“均衡控制不直接污染主门控权重”的设计重点。查看原图 ↗
路由前

256 个 sigmoid affinity

Router 为每个 routed expert 计算原始 s_i。配置还把专家分成 8 组、保留 4 组,再选最终 Top-8;训练时每 token 最多发往 4 个节点。

负载控制

batch 统计更新 b_i

某专家过载就下调 bias,欠载就上调。更新速度前 14.3T token 为 0.001,最后 500B 置 0;这是控制回路,不是通过主损失反传的 gate 参数。

输出合并

原始 s_i 归一化 × 2.5

bias 只选专家,不进入输出权重。Top-8 routed outputs 加权后再与 1 个始终执行的 shared expert 相加;报告称训练和推理都不丢 token。

“Auxiliary-loss-free” 的准确翻译
它是“主要的 batch 级负载均衡不依赖辅助损失”,不是“系统中零辅助损失”。V3 仍设置 α=0.0001 的按序列均衡损失,以防单条序列出现极端不均;论文消融比较的是这种主策略与纯辅助损失方案,不能外推为任何 MoE 都应删除辅助损失。
05 · MTP / 训练监督

主头预测 t+1,唯一一个辅助模块预测 t+2

V3 的 num_nextn_predict_layers=1。这里的“predicts the next 2 tokens”是主模型的下一 token + 一个辅助未来 token,不是两个 MTP 模块,也不是默认一次向用户吐出两个未经验证的 token。两条分支复用 Language Model Head(LM Head,语言模型输出头)。

MAIN MODEL

h_i → shared LM head

标准语言模型目标监督 t+1

CONCAT + PROJECTION

h_i + embedding(t+1)

把主干表示与真实下一 token 的共享 embedding 拼接并投影。

ONE MTP BLOCK

shared LM head → t+2

一个 Transformer block 保留完整因果链,形成额外交叉熵目标。

阶段官方披露不能偷换成
训练结构depth=1;共享 embedding 与 output head,另有 projection + 1 个 Transformer block两个辅助头并行预测 t+2、t+3
损失权重10T token 为 0.3,后 4.8T 为 0.1主语言模型损失被 MTP 替代
发布权重官方总览把 MTP module 约记为 14B;细表为 11.5B unique,另共享 0.9B embedding + 0.9B output head14B 全是独有增量,或 671B 主模型本身是 685B
默认推理可以完全丢弃 MTP,主模型独立生成每步必定多输出一个 token
可选投机报告自测额外 token 接受率约 85%–90%,达到 1.8× Tokens Per Second(TPS,每秒 token 数)任何框架、batch、任务都固定提速 1.8×
06 · 训练系统

FP8、并行与 DualPipe 是一套共同约束

V3 的训练效率不能只归功于 FP8。低精度决定一次矩阵乘怎样表示,并行策略决定权重与专家放在哪,DualPipe 与定制 all-to-all kernel 决定通信等待怎样被别的 chunk 的计算覆盖。

NUMERICS

FP8 主 GEMM,高精度守住敏感路径

Linear 的 forward、activation-gradient 与 weight-gradient General Matrix Multiplication(GEMM,通用矩阵乘)主要用 FP8,输出为 bfloat16(BF16,16 位脑浮点)或 32-bit Floating Point(FP32,32 位浮点);activation 按 1×128 tile、weight 按 128×128 block 缩放,并周期性提升到 FP32 累加。Embedding、output head、MoE gate、normalization 与 attention operator 保留较高精度;master weights 与累积梯度保留 FP32,AdamW moments 用 BF16。

PARALLELISM

2048×H800:PP16 + EP64 + ZeRO-1 DP

每节点 8 张 H800,节点内 NVLink/NVSwitch、节点间 InfiniBand。训练使用 16 路 Pipeline Parallelism(PP,流水线并行)、跨 8 节点的 64 路 Expert Parallelism(EP,专家并行)和 Zero Redundancy Optimizer stage 1(ZeRO-1,零冗余优化器第一阶段)Data Parallelism(DP,数据并行),报告称不需要 Tensor Parallelism(TP,张量并行)。

SCHEDULING

双向 micro-batch + 跨 chunk 重叠

DualPipe 把 forward / backward chunk 拆成 attention、dispatch、Multi-Layer Perceptron(MLP,多层感知机)计算、combine 等部分,从流水线两端送入 micro-batch,并把不同 chunk 的计算与 all-to-all / pipeline 通信交错。每 token 最多跨 4 个节点,定制通信核用 20 个 Streaming Multiprocessor(SM,流式多处理器)饱和链路。

DualPipe 调度:两股 micro-batch 流从 pipeline 相反两端进入;同一时间窗内,一个 chunk 的 attention、MLP 或 backward 计算与另一个 chunk 的 all-to-all 或 pipeline 通信交错,依赖链本身仍按 attention、dispatch、MLP、combine 前进
“通信被隐藏”指关键路径等待被另一份可执行工作覆盖。它不是同一 micro-batch 的 dispatch 与依赖它的 expert GEMM 同时发生,更不是网络字节消失。查看原图 ↗
FP8 证据边界

报告的“相对 BF16 loss 误差持续低于 0.25%”来自约 16B / 1.33T token230B / 0.9T token 两个基线规模的对照,不是另训一份完整 671B V3 的 BF16 双胞胎;它验证训练方案的数值可行性,不证明所有下游指标误差都低于 0.25%。

最终训练阶段H800 GPU·h占披露总量口径
预训练2.664M95.55%14.8T token,最大序列 4K
上下文扩展0.119M4.27%YaRN:32K,再到 128K
后训练0.005M0.18%从 Base 到 Chat 的 Supervised Fine-Tuning(SFT,监督微调)+ Reinforcement Learning(RL,强化学习)报告账目
合计2.788M100%2.788M × $2/GPU·h = $5.576M
$5.576M 到底是什么
它是论文把 2.788M H800 GPU 小时按假设的 $2/GPU·h机械换算出来的最终训练算力账。报告明确说它不包含此前的架构、算法、数据研究与消融;它也不是经审计的公司总投入,不能自动涵盖数据、人员、失败实验、集群资本、电力、网络与线上推理,更不能在没有同口径对照时推出“比某闭源模型便宜多少倍”。
07 · 推理部署

37B active 省计算,不替你存下 671B

MoE 的“激活参数”与“可用权重”是两种资源。若把 671B 主模型权重理想化为每参数恰好 1 byte,仅裸权重算术下限也约 671 GB(625 GiB);真实部署还要计量化 scale、高精度权重、KV Cache、激活、通信缓冲和框架工作区。

WEIGHTS

主模型专家池要可寻址

不同 token、不同层可能选不同专家。可以用 EP 分片、量化或 offload 改变摆放方式,但不能由“本 token 只走 37B”推出其余权重永久不需要。

PREFILL · 官方生产方案

4 节点 / 32 H800

报告的最小 prefill 单元:attention TP4 + Sequence Parallelism(SP,序列并行)、DP8,MoE EP32,并部署 32 个冗余专家。它服务于发布方的 Service-Level Objective(SLO,服务等级目标)与吞吐目标。

DECODE · 官方生产方案

40 节点 / 320 H800

报告的最小 decode 单元:attention TP4 + SP、DP80,MoE EP320;64 张 GPU 承载冗余与 shared experts。

不是通用最低门槛

32 / 320 H800 是 DeepSeek 披露的生产部署拓扑,不是任何框架加载 V3 的理论最少 GPU 数。其他引擎可用不同量化、并行、批量与 offload 取舍,但会改变吞吐、时延、成本与精度。

08 · 评测证据

2024 自评能回答“发布时多强”,不能代替今天的榜单

下表来自技术报告 Table 6 的 Chat 模型结果。对照模型、API 版本、题目窗口和提示都固定在发布时;这是发布方内部框架的同表比较,不是独立复现。Exact Match(EM,精确匹配)要求答案完全匹配,Pass@1 表示一次生成通过率,Chain-of-Thought(CoT,思维链)表示允许显式推理过程。

Benchmark / 指标DeepSeek-V3GPT-4o-0513Claude-3.5-Sonnet-1022读法
Massive Multitask Language Understanding(MMLU)/ EM88.587.288.3大规模多任务知识评测,报告同口径接近
MATH-500 / EM90.274.678.3greedy decoding;报告把提升部分归因于 R1 数据蒸馏
HumanEval-Mul / Pass@182.680.581.78 种编程语言
LiveCodeBench / Pass@1-CoT40.533.436.3题目窗口 2024-08 至 2024-11
SimpleQA / Correct24.938.228.4英文事实问答并非全面领先
报告支持

这套协同设计在发布设置下有竞争力

V3 在同一发布表中的数学、代码与多项知识任务表现强,同时给出了模型配置、训练账与部分系统实现,公开证据密度高。

报告不支持

所有任务第一、今天仍领先、成本必然最低

SimpleQA 等任务已有反例;闭源模型没有同口径训练账,后续模型也持续更新。发布方自评不能替代独立复现、真实业务集或当前榜单。

可复用的审阅顺序

先问状态存什么(MLA)→ 再问每 token 算什么(MoE)→ 再问训练多了什么目标(MTP)→ 最后问硬件如何执行(FP8 / 并行 / DualPipe)。四个问题分开,参数、缓存、计算、通信和证据就不会串账。

来源与核查 · 2026-07-14

报告给主张,配置给数字,代码给真实执行路径

本页优先使用 DeepSeek 一手材料。论文公式说明设计,官方配置固定超参数,官方推理代码用 naive / absorb 两个分支验证 MLA 实际缓存路径;三者冲突时不把二手图解当裁判。

证据层一手来源本页核查用途
技术报告DeepSeek-V3 Technical Report v2671B/37B、架构、MTP、FP8、并行与 DualPipe、部署拓扑、GPU 小时、评测方法和数值
官方仓库DeepSeek-V3 GitHubREADME_WEIGHTSBase / Chat 两个 checkpoint;685B 总览近似值;MTP 11.5B unique + 共享 embedding/head 的细分;代码与原版权重许可
可执行配置官方 config.json61 层、7168 hidden、128 heads、MLA ranks、专家数、Top-8、depth=1、routing scale 与 YaRN 字段
参考实现官方 inference/model.py确认 absorb 分支只缓存 512 维 KV latent + 64 维 RoPE key,并把 K/V 投影吸收到 query / 输出两侧;确认 bias 与原始 affinity 的分工
版本时间线DeepSeek API Change LogV3-0324 Release确认原始 V3 的 2024-12-26 身份,并区分后来改用 MIT 的 V3-0324
架构源流DeepSeek-V2 Technical ReportDeepSeek-R1 Technical Report追溯 MLA / DeepSeekMoE 与矩阵吸收的设计动机;确认 V3-Base 是 R1/R1-Zero 基座但训练流程不同