第一观·整体观:DeepSeek-V4.1-Flash 全貌解读
看见,是理解一切的起点。本篇站在高处鸟瞰这个模型------它是什么、在生态中处于什么位置、代码结构如何组织、遵循什么设计理念、整体流程如何运转。
读完本篇,你应当能在脑中画出一张完整的"认知地图"。
一、总述:一句话看清它是什么
DeepSeek-V4.1-Flash 是一个为"极限压缩 KV cache"而生的多模态混合专家(MoE)大模型 。它拥有 552B 主参数(backbone parameters)、196B 的 Engram 条件记忆参数,原生支持图像 + 文本输入,并能处理长达 100 万 token(1M)的上下文。
它最鲜明的性格,浓缩在标题里------Pushing the Limits of KV Cache Compression(把 KV cache 压缩推向极限)。整篇报告的所有努力,都围绕一个朴素而深刻的问题展开:
在长期运行的智能体(long-horizon agent)时代,如何让"记住更长上下文"这件事,不再是一件昂贵到无法大规模部署的事?
报告给出的答案是"三管齐下"的联合优化------架构(Architecture)× 缓存精度(Cache Precision)× 部署策略(Deployment)。其结果是一组震撼的数字:
- global KV cache 单 token 降到 890 bytes ,约为上一代 DeepSeek-V4-Flash 的 1/4 ,是第一代 DeepSeek-V1 的 约 1/437;
- 持久化 KV cache(SSD/主机内存)降到约 1/8,靠的是 SWA Bounded Replay;
- prefill 每 token 只激活 8B 参数、decode 激活 16B------输入阶段比输出阶段更省,恰好匹配"输入重、输出轻"的智能体负载;
- 而所有这些"省",没有牺牲能力:在 DeepSWE v1.1(74.2%)、Terminal-Bench 2.1(90.6%)等主流智能体基准上与闭源前沿模型并驾齐驱,甚至部分反超。
一句话总结本书的终极价值主张:用更少的存储、带宽与激活计算,交付更好或同等的智能。
二、生态定位:它在家族与江湖中的位置
2.1 DeepSeek 家族的内部坐标
要理解 V4.1-Flash,必须先看它站在哪一段历史的肩膀上。DeepSeek 系列的演进,本质上是一条**"持续降低上下文存储成本"的技术主线**,V4.1-Flash 是这条线上的最新、最激进的一棒。
#mermaid-svg-BTSXUmetD2GPxsTC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-BTSXUmetD2GPxsTC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-BTSXUmetD2GPxsTC .error-icon{fill:#552222;}#mermaid-svg-BTSXUmetD2GPxsTC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-BTSXUmetD2GPxsTC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-BTSXUmetD2GPxsTC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-BTSXUmetD2GPxsTC .marker.cross{stroke:#333333;}#mermaid-svg-BTSXUmetD2GPxsTC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-BTSXUmetD2GPxsTC p{margin:0;}#mermaid-svg-BTSXUmetD2GPxsTC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-BTSXUmetD2GPxsTC .cluster-label text{fill:#333;}#mermaid-svg-BTSXUmetD2GPxsTC .cluster-label span{color:#333;}#mermaid-svg-BTSXUmetD2GPxsTC .cluster-label span p{background-color:transparent;}#mermaid-svg-BTSXUmetD2GPxsTC .label text,#mermaid-svg-BTSXUmetD2GPxsTC span{fill:#333;color:#333;}#mermaid-svg-BTSXUmetD2GPxsTC .node rect,#mermaid-svg-BTSXUmetD2GPxsTC .node circle,#mermaid-svg-BTSXUmetD2GPxsTC .node ellipse,#mermaid-svg-BTSXUmetD2GPxsTC .node polygon,#mermaid-svg-BTSXUmetD2GPxsTC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-BTSXUmetD2GPxsTC .rough-node .label text,#mermaid-svg-BTSXUmetD2GPxsTC .node .label text,#mermaid-svg-BTSXUmetD2GPxsTC .image-shape .label,#mermaid-svg-BTSXUmetD2GPxsTC .icon-shape .label{text-anchor:middle;}#mermaid-svg-BTSXUmetD2GPxsTC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-BTSXUmetD2GPxsTC .rough-node .label,#mermaid-svg-BTSXUmetD2GPxsTC .node .label,#mermaid-svg-BTSXUmetD2GPxsTC .image-shape .label,#mermaid-svg-BTSXUmetD2GPxsTC .icon-shape .label{text-align:center;}#mermaid-svg-BTSXUmetD2GPxsTC .node.clickable{cursor:pointer;}#mermaid-svg-BTSXUmetD2GPxsTC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-BTSXUmetD2GPxsTC .arrowheadPath{fill:#333333;}#mermaid-svg-BTSXUmetD2GPxsTC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-BTSXUmetD2GPxsTC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-BTSXUmetD2GPxsTC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BTSXUmetD2GPxsTC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-BTSXUmetD2GPxsTC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BTSXUmetD2GPxsTC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-BTSXUmetD2GPxsTC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-BTSXUmetD2GPxsTC .cluster text{fill:#333;}#mermaid-svg-BTSXUmetD2GPxsTC .cluster span{color:#333;}#mermaid-svg-BTSXUmetD2GPxsTC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-BTSXUmetD2GPxsTC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-BTSXUmetD2GPxsTC rect.text{fill:none;stroke-width:0;}#mermaid-svg-BTSXUmetD2GPxsTC .icon-shape,#mermaid-svg-BTSXUmetD2GPxsTC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BTSXUmetD2GPxsTC .icon-shape p,#mermaid-svg-BTSXUmetD2GPxsTC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-BTSXUmetD2GPxsTC .icon-shape .label rect,#mermaid-svg-BTSXUmetD2GPxsTC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BTSXUmetD2GPxsTC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-BTSXUmetD2GPxsTC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-BTSXUmetD2GPxsTC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} V1
标准稠密 + 标准KV
每token全局KV基线
V2
MLA 多头潜在注意力
KV入口压缩(共享隐空间)
V3
DeepSeekMoE + 无辅助损失负载均衡
- MTP多token预测
V4
稀疏注意力CSA/HCA
- SWA + 混合架构
V4.1-Flash
CED + CSA2 + FP4 KV
890 bytes/token
图注 :DeepSeek 从 V1 到 V4.1-Flash 的演进主线------每一代都在"KV cache 压缩"上更进一步。V2 引入 MLA 压缩 KV 的"入口尺寸",V3 引入 MoE 提升参数效率,V4 首次在"序列维度"做稀疏注意力,V4.1-Flash 则同时在入口、序列、层三个维度联合压缩。图中隐去了一代之间"总参数"的波动,因为那条主线始终是上下文成本。
在 V4 时代,DeepSeek 已经分出了"Flash"(轻量高效)与"Pro"(能力拉满)两条产品线:
- DeepSeek-V4-Flash:284B 主参数,激活 13B,KV 缓存较大;
- DeepSeek-V4-Pro:1.6T 主参数,激活 49B,能力最强但代价最大;
- DeepSeek-V4.1-Flash :552B 主参数,激活 8B/16B,KV 缓存却最小------"更大却更省"。
这组对比极具张力:V4.1-Flash 的总参数比 V4-Flash 大了近一倍,但 KV 缓存只有它的 1/4、持久化 KV 只有 1/8,且能力更强。它用"更大的容量"换来"更极致的压缩",成为撬动成本的起点。
2.2 江湖坐标:与外部模型的相对位置
把视线拉远,V4.1-Flash 处在一个明确的位置------开源阵营里"能力-效率"最优性价比的那个点:
- 对比开源顶流 Kimi-K3、GLM-5.3:在视觉推理、专业图表理解上超越 Kimi-K3;Codeforces rating 达 3471,超过 DeepSeek-V4-Pro(3348)与 V4-Flash(3289),与 Kimi-K3 在 MathArena Apex(65.6%)打平。
- 对比闭源前沿 Opus-5、GPT-5.6/Sol:在 DeepSWE v1.1、Terminal-Bench 2.1、Automation-Bench、Agents' Last Exam 上追平甚至反超;但在"科学型长尾任务"(如 Terminal-Bench 4.0)与最难的 reasoning 边缘仍存在差距。
- 多元能力画像:推理(数学/竞赛编程)强、智能体(日常编码/白领工作流)强、多模态(视觉推理/专业图表/前端开发)强;弱项集中在需要"专家级领域知识"的科学智能体任务。
一句话:它不是为了在每一个榜单登顶,而是要成为那个"能力够用、成本极低、可大规模铺开"的日常智能体底座------能完成 95% 以上的真实世界任务。
三、整体代码结构:一张架构拓扑图
3.1 一句话描述拓扑
40 层因果 Transformer,被竖切成两半:下半 20 层是因果编码器(Causal Encoder) ,上半 20 层是解码器(Decoder);前 2 层只用滑窗注意力(SWA),其余层用 Compressed Sparse Attention 2(CSA2);所有前馈层都是 DeepSeekMoE;外部还挂着 DeepSeek-ViT 视觉编码器、Engram 条件记忆、DSpark 推测解码三个"附件模块"。
#mermaid-svg-CGVpHBcnMdHh0tbI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CGVpHBcnMdHh0tbI .error-icon{fill:#552222;}#mermaid-svg-CGVpHBcnMdHh0tbI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CGVpHBcnMdHh0tbI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CGVpHBcnMdHh0tbI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CGVpHBcnMdHh0tbI .marker.cross{stroke:#333333;}#mermaid-svg-CGVpHBcnMdHh0tbI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CGVpHBcnMdHh0tbI p{margin:0;}#mermaid-svg-CGVpHBcnMdHh0tbI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI .cluster-label text{fill:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI .cluster-label span{color:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI .cluster-label span p{background-color:transparent;}#mermaid-svg-CGVpHBcnMdHh0tbI .label text,#mermaid-svg-CGVpHBcnMdHh0tbI span{fill:#333;color:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI .node rect,#mermaid-svg-CGVpHBcnMdHh0tbI .node circle,#mermaid-svg-CGVpHBcnMdHh0tbI .node ellipse,#mermaid-svg-CGVpHBcnMdHh0tbI .node polygon,#mermaid-svg-CGVpHBcnMdHh0tbI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CGVpHBcnMdHh0tbI .rough-node .label text,#mermaid-svg-CGVpHBcnMdHh0tbI .node .label text,#mermaid-svg-CGVpHBcnMdHh0tbI .image-shape .label,#mermaid-svg-CGVpHBcnMdHh0tbI .icon-shape .label{text-anchor:middle;}#mermaid-svg-CGVpHBcnMdHh0tbI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CGVpHBcnMdHh0tbI .rough-node .label,#mermaid-svg-CGVpHBcnMdHh0tbI .node .label,#mermaid-svg-CGVpHBcnMdHh0tbI .image-shape .label,#mermaid-svg-CGVpHBcnMdHh0tbI .icon-shape .label{text-align:center;}#mermaid-svg-CGVpHBcnMdHh0tbI .node.clickable{cursor:pointer;}#mermaid-svg-CGVpHBcnMdHh0tbI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CGVpHBcnMdHh0tbI .arrowheadPath{fill:#333333;}#mermaid-svg-CGVpHBcnMdHh0tbI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CGVpHBcnMdHh0tbI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CGVpHBcnMdHh0tbI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CGVpHBcnMdHh0tbI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CGVpHBcnMdHh0tbI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CGVpHBcnMdHh0tbI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CGVpHBcnMdHh0tbI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CGVpHBcnMdHh0tbI .cluster text{fill:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI .cluster span{color:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CGVpHBcnMdHh0tbI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CGVpHBcnMdHh0tbI rect.text{fill:none;stroke-width:0;}#mermaid-svg-CGVpHBcnMdHh0tbI .icon-shape,#mermaid-svg-CGVpHBcnMdHh0tbI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CGVpHBcnMdHh0tbI .icon-shape p,#mermaid-svg-CGVpHBcnMdHh0tbI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CGVpHBcnMdHh0tbI .icon-shape .label rect,#mermaid-svg-CGVpHBcnMdHh0tbI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CGVpHBcnMdHh0tbI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CGVpHBcnMdHh0tbI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CGVpHBcnMdHh0tbI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 附件模块 Auxiliary
视觉通路 Vision Pathway
输入线索 Input
语言主干 40层 Language Backbone (552B)
global KV 投影
解码器 Decoder (20层)
CSA2 (m=1)
Full + 层次化稀疏索引器
CSA2 (m=1) · Reindex/Reuse
因果编码器 Causal Encoder (20层)
第0-1层 · 纯SWA
第2-19层 · CSA2 (m=2)
Full/Reuse
文本 Text
图像 Image
DeepSeek-ViT
32层 · 1024维 · 2D-RoPE
Pixel-Unshuffle 3×3
视觉token减为1/9
MLP投影器
2层 · 5120维
文本嵌入 Text Embedding
Single-Pass mHC
Engram 条件记忆 (196B)
DSpark 推测解码
自回归输出 Autoregressive Text
图注:这是 DeepSeek-V4.1-Flash 的整体拓扑(对应报告 Figure 3)。关键阅读点有三处:① 图像先经 DeepSeek-ViT + unshuffle + MLP 投影压成与文本同维的嵌入;② 主干被竖切成编码器/解码器两半,解码器的 global KV 从编码器最后一层"投影"而来(粗箭头);③ 三个附件模块(MHC 残差混合、Engram 记忆、DSpark 解码)挂在主干之外,可插拔、可独立优化。
3.2 逐个模块的"职责清单"
| 模块 | 规模/配置 | 职责(一句话) | 解决什么瓶颈 |
|---|---|---|---|
| DeepSeek-ViT | 32 层 · d=1024 · 16 头 | 从图像抽视觉特征,用 2D-RoPE 支持任意分辨率(~1344×1344) | 多模态输入 |
| MLP 投影器 | 2 层 · d=5120 | 把视觉特征映射到语言骨干的隐藏维 | 模态对齐 |
| Causal Encoder(20 层) | 前 2 层纯 SWA,后 18 层 CSA2(m=2) | 只跑一次,产出可复用的 global KV | prefill 计算 |
| Decoder(20 层) | CSA2(m=1),Full/Reindex/Reuse | 消费编码器产出的 global KV,逐 token 解码 | decode 计算 |
| DeepSeekMoE 层 | 1 共享专家 + 384 路由专家,激活 6 个 | 每 token 只激活一小撮专家 | 参数效率 |
| Single-Pass mHC | 扩展因子 4 | 精简残差流混合,内核可融合为单 pass | 激活内存流量 |
| Engram | 196B · N-gram{2,3,4} · 8 哈希头 | 稀疏查找式条件记忆,把"记忆"与"计算"解耦 | 长尾知识记忆 |
| DSpark | 3 个 Transformer block | 半自回归草稿 + 置信度调度验证 | 解码吞吐 |
| FP4 KV Cache | E2M1 · 每16通道 E4M3 scale | 把 main KV cache 量化为 4 bit | 存储/带宽 |
要点:这个结构最值得记住的,不是"有多少层、多少参数",而是**"谁能被复用、谁只能算一次"**。编码器算一次、解码器复用它的 global KV;Full 模式算一次 main KV、Reindex/Reuse 模式复用------这套"算一次、用多次"的分工,是理解后面一切设计的钥匙。
四、设计理念:一条主线,三个乘法维度
4.1 主线:KV cache 压缩
DeepSeek-V4.1-Flash 的所有设计,都可以归结为一个问题定义:
长上下文 serving 的真正瓶颈,早已不是 attention 的 FLOPs(前代稀疏注意力已经把它压下去了),而是KV cache 的存储容量(HBM / SSD)与数据搬移带宽(I/O、互联)。
于是核心目标非常纯粹:把 KV cache 的字节数压到最小。报告用一张跨代对比图(Figure 1(b))直接点题------global KV cache 单 token 字节数一路从 V1 的高位,砍到 V4.1-Flash 的 890 bytes。
4.2 压缩的三个"乘法维度"
KV cache 成本可以沿三个互相独立的维度被削减,而且它们是相乘的关系:
#mermaid-svg-RIEUqHBnbhHndhrC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-RIEUqHBnbhHndhrC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-RIEUqHBnbhHndhrC .error-icon{fill:#552222;}#mermaid-svg-RIEUqHBnbhHndhrC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RIEUqHBnbhHndhrC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RIEUqHBnbhHndhrC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RIEUqHBnbhHndhrC .marker.cross{stroke:#333333;}#mermaid-svg-RIEUqHBnbhHndhrC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RIEUqHBnbhHndhrC p{margin:0;}#mermaid-svg-RIEUqHBnbhHndhrC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RIEUqHBnbhHndhrC .cluster-label text{fill:#333;}#mermaid-svg-RIEUqHBnbhHndhrC .cluster-label span{color:#333;}#mermaid-svg-RIEUqHBnbhHndhrC .cluster-label span p{background-color:transparent;}#mermaid-svg-RIEUqHBnbhHndhrC .label text,#mermaid-svg-RIEUqHBnbhHndhrC span{fill:#333;color:#333;}#mermaid-svg-RIEUqHBnbhHndhrC .node rect,#mermaid-svg-RIEUqHBnbhHndhrC .node circle,#mermaid-svg-RIEUqHBnbhHndhrC .node ellipse,#mermaid-svg-RIEUqHBnbhHndhrC .node polygon,#mermaid-svg-RIEUqHBnbhHndhrC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RIEUqHBnbhHndhrC .rough-node .label text,#mermaid-svg-RIEUqHBnbhHndhrC .node .label text,#mermaid-svg-RIEUqHBnbhHndhrC .image-shape .label,#mermaid-svg-RIEUqHBnbhHndhrC .icon-shape .label{text-anchor:middle;}#mermaid-svg-RIEUqHBnbhHndhrC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-RIEUqHBnbhHndhrC .rough-node .label,#mermaid-svg-RIEUqHBnbhHndhrC .node .label,#mermaid-svg-RIEUqHBnbhHndhrC .image-shape .label,#mermaid-svg-RIEUqHBnbhHndhrC .icon-shape .label{text-align:center;}#mermaid-svg-RIEUqHBnbhHndhrC .node.clickable{cursor:pointer;}#mermaid-svg-RIEUqHBnbhHndhrC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-RIEUqHBnbhHndhrC .arrowheadPath{fill:#333333;}#mermaid-svg-RIEUqHBnbhHndhrC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RIEUqHBnbhHndhrC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RIEUqHBnbhHndhrC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RIEUqHBnbhHndhrC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-RIEUqHBnbhHndhrC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RIEUqHBnbhHndhrC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-RIEUqHBnbhHndhrC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RIEUqHBnbhHndhrC .cluster text{fill:#333;}#mermaid-svg-RIEUqHBnbhHndhrC .cluster span{color:#333;}#mermaid-svg-RIEUqHBnbhHndhrC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RIEUqHBnbhHndhrC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-RIEUqHBnbhHndhrC rect.text{fill:none;stroke-width:0;}#mermaid-svg-RIEUqHBnbhHndhrC .icon-shape,#mermaid-svg-RIEUqHBnbhHndhrC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RIEUqHBnbhHndhrC .icon-shape p,#mermaid-svg-RIEUqHBnbhHndhrC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-RIEUqHBnbhHndhrC .icon-shape .label rect,#mermaid-svg-RIEUqHBnbhHndhrC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RIEUqHBnbhHndhrC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-RIEUqHBnbhHndhrC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-RIEUqHBnbhHndhrC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} KV Cache 总成本
① 入口尺寸 Entry Size
每个KV头的字节数
② 序列维度 Sequence
每m个token压成1个条目
③ 层维度 Layer
多少层共享同一份KV
GQA 减少KV头数
MLA 共享潜在表示
CSA / HCA 稀疏注意力
Top-K 选择
跨层复用 Cross-Layer Reuse
索引复用 Index Reuse
图注 :KV cache 压缩不是"选一条路走到黑",而是三个维度的联合乘法 。前人往往只做其中一维(GQA/MLA 做入口、CSA 做序列、CLA/YOCO 做层),而 CSA2 的核心贡献在于同时覆盖三个维度,且让"缓存共享"与"索引复用"解耦。
这个"三维度乘法"框架,是理解 DeepSeek 系列(乃至整个长上下文系统研究)的最通用心智模型。往后看任何一篇 KV cache 压缩的论文,你都可以问:"它动的是哪一维?"
4.3 理念的核心张力:存储 ↔ 计算 ↔ 带宽
压缩从来不是免费的------省了存储,往往要付出计算(重算)或带宽(搬移)的代价。V4.1-Flash 的设计理念,本质上是在这三者之间做精细的、逐场景的权衡:
- CSA2 用"跨层复用 + 索引复用"省存储,但代价是少数层要承担 Full/Reindex 的索引计算;
- SWA Bounded Replay 用"只重放 n_win 个 token"省持久化存储,但代价是少量 prefill 重算;
- FP4 用更低精度省存储,但代价是反量化后再做 attention(换来不改变计算)。
报告最漂亮的一处,是把这种权衡显式地量化为"新的一维 trade-off":SWA Bounded Replay 允许"不把 SWA KV 持久化到 SSD,而只付出一点点 prefill 重算"------这是一个此前没人清晰刻画过的"存储-计算"新权衡点。
五、实现原理概述:CSA2 × FP4 × SWA Bounded Replay
在进入第二观的细节之前,先建立对三大机制的轮廓级认识(图详见文档二):
- CSA2(Compressed Sparse Attention 2) :一种稀疏注意力,用轻量 indexer 给每个 query 在全球可见的 KV 里选出 Top-K(=512)个条目做注意力,其余忽略。它有三种静态分配的模式------
- Full:自己算 main KV、自己建索引(做完整活);
- Reindex:复用上一层的 main KV 与 indexer K,但用自己的 Q 重新打分、换一批 Top-K 索引(换汤不换药);
- Reuse:连 Top-K 索引都复用前一层,直接做稀疏注意力(只吃不做)。
- FP4 KV Cache:把 main KV cache 用 QAT(量化感知训练)压成 4 bit(E2M1),配合"省略二级全局 scale"的简化布局,存储近乎减半且无明显精度损失。
- SWA Bounded Replay:把滑窗注意力的 KV 状态从持久化缓存里"踢出去",遇到 miss 时只重放最近 n_win=128 个 token 做近似重建,把灾难性 miss 变成廉价降级。
三者叠加的效果:global KV(常驻 HBM)= 890 bytes/token;持久化 KV(SSD)= 上一代 1/8;single-token Decode FLOPs 几乎不随上下文增长(4K→1M 只涨 1/4)。
六、整体流程:从 45T token 到线上的一个请求
6.1 端到端生命周期
#mermaid-svg-JfLbD5sE75jM2dEo{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JfLbD5sE75jM2dEo .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JfLbD5sE75jM2dEo .error-icon{fill:#552222;}#mermaid-svg-JfLbD5sE75jM2dEo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JfLbD5sE75jM2dEo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JfLbD5sE75jM2dEo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JfLbD5sE75jM2dEo .marker.cross{stroke:#333333;}#mermaid-svg-JfLbD5sE75jM2dEo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JfLbD5sE75jM2dEo p{margin:0;}#mermaid-svg-JfLbD5sE75jM2dEo .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JfLbD5sE75jM2dEo .cluster-label text{fill:#333;}#mermaid-svg-JfLbD5sE75jM2dEo .cluster-label span{color:#333;}#mermaid-svg-JfLbD5sE75jM2dEo .cluster-label span p{background-color:transparent;}#mermaid-svg-JfLbD5sE75jM2dEo .label text,#mermaid-svg-JfLbD5sE75jM2dEo span{fill:#333;color:#333;}#mermaid-svg-JfLbD5sE75jM2dEo .node rect,#mermaid-svg-JfLbD5sE75jM2dEo .node circle,#mermaid-svg-JfLbD5sE75jM2dEo .node ellipse,#mermaid-svg-JfLbD5sE75jM2dEo .node polygon,#mermaid-svg-JfLbD5sE75jM2dEo .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JfLbD5sE75jM2dEo .rough-node .label text,#mermaid-svg-JfLbD5sE75jM2dEo .node .label text,#mermaid-svg-JfLbD5sE75jM2dEo .image-shape .label,#mermaid-svg-JfLbD5sE75jM2dEo .icon-shape .label{text-anchor:middle;}#mermaid-svg-JfLbD5sE75jM2dEo .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JfLbD5sE75jM2dEo .rough-node .label,#mermaid-svg-JfLbD5sE75jM2dEo .node .label,#mermaid-svg-JfLbD5sE75jM2dEo .image-shape .label,#mermaid-svg-JfLbD5sE75jM2dEo .icon-shape .label{text-align:center;}#mermaid-svg-JfLbD5sE75jM2dEo .node.clickable{cursor:pointer;}#mermaid-svg-JfLbD5sE75jM2dEo .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JfLbD5sE75jM2dEo .arrowheadPath{fill:#333333;}#mermaid-svg-JfLbD5sE75jM2dEo .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JfLbD5sE75jM2dEo .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JfLbD5sE75jM2dEo .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JfLbD5sE75jM2dEo .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JfLbD5sE75jM2dEo .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JfLbD5sE75jM2dEo .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JfLbD5sE75jM2dEo .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JfLbD5sE75jM2dEo .cluster text{fill:#333;}#mermaid-svg-JfLbD5sE75jM2dEo .cluster span{color:#333;}#mermaid-svg-JfLbD5sE75jM2dEo div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JfLbD5sE75jM2dEo .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JfLbD5sE75jM2dEo rect.text{fill:none;stroke-width:0;}#mermaid-svg-JfLbD5sE75jM2dEo .icon-shape,#mermaid-svg-JfLbD5sE75jM2dEo .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JfLbD5sE75jM2dEo .icon-shape p,#mermaid-svg-JfLbD5sE75jM2dEo .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JfLbD5sE75jM2dEo .icon-shape .label rect,#mermaid-svg-JfLbD5sE75jM2dEo .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JfLbD5sE75jM2dEo .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JfLbD5sE75jM2dEo .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JfLbD5sE75jM2dEo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 阶段三 · 部署 Deployment
阶段二 · 后训练 Post-Training
阶段一 · 预训练 Pre-Training (45T tokens)
多模态语料构建
文本+图文对+交错图文+领域数据
稀疏注意力从零训练
64K 序列 · 34T时扩展至1M
SFT 监督微调
RL 强化学习(GRPO)
大规模任务合成 + DSec沙箱
OPD 在线策略蒸馏
(40+teacher模型)
EPD 分离式推理
Encoder-Prefill-Decode
持久化KV管理
- SWA Bounded Replay
图注 :V4.1-Flash 的完整生命周期分三段。值得注意两处:① 预训练"从零"就用稀疏注意力(64K),没有任何稠密注意力 warm-up 阶段;② 后训练阶段报告明确说"无算法创新",全部精力投入数据与环境管线的规模化------SFT → RL(GRPO)→ OPD 是标准范式,变的是"喂什么",不是"怎么喂"。
6.2 一次推理请求的数据流
- 视觉编码(Vision Encode):图像 → DeepSeek-ViT → unshuffle → MLP 投影 → 视觉嵌入。
- 编码器 prefill(Encoder Prefill):文本+视觉嵌入穿过下 20 层,产出 global KV(含 main KV 与 indexer K)。
- 解码器 prefill(Decoder Prefill) :上 20 层从编码器最后一层隐状态投影出自己的 global KV,并生成 layer-local 的 SWA KV(SWA Bounded Replay 只重放最近 n_win 个 token)。
- 逐 token decode:每个新 token 只在激活的 6 个专家 + 本地 SWA + 被 indexer 选中的 Top-512 个 global 条目上做注意力,反复直到结束符。
- 缓存回收与命中的话:若命中持久化的 global KV 则直接复用前缀,未命中 SWA 则触发有界重放。
这条流程的精妙在于:"算"与"存"被清晰地分离------编码器负责"算一次",解码器与缓存负责"用多次"。
七、总结:这张认知地图上该留下什么
回望全文,DeepSeek-V4.1-Flash 的整体画像可以用一段话收束:
它是一个站在 DeepSeek 家族"KV cache 压缩"主线最激进一棒上的多模态 MoE 模型 ------40 层因果编码器-解码器结构 + 稀疏注意力 CSA2 + FP4 量化 + SWA 有界重放,把 KV cache 在入口、序列、层三个维度上联合压缩到前代的 1/4 乃至 1/8,同时把"算一次、用多次"的复用工学贯彻到底,从而以更小的激活与存储代价交付更强的智能体能力。
如果你此刻能记住三件事,第一观的使命就完成了:① 它是为"极致压缩 KV cache"而生;② 它靠"三管齐下"(架构×精度×部署)实现;③ 它的组织原则是"算一次、用多次"。
带着这张地图,下一篇我们潜入水下,看 CED、CSA2、FP4 这些名字背后真正发生了什么。