DeepSeek-V4.1-Flash 拆解:1M 上下文,KV cache 只剩 1/4
原文:MarkTechPost - 《DeepSeek AI Released DeepSeek-V4.1-Flash with 1M Context, FP4 KV Cache, and Cross-Layer Attention Reuse》(https://www.marktechpost.com/2026/09/10/deepseek-ai-released-deepseek-v4-1-flash-with-1m-context-fp4-kv-cache-and-cross-layer-attention-reuse)
一、Agent 变长之后,最先失控的是 KV cache
长任务 Agent 把推理服务从"输出密集"变成了"输入密集":同一段上下文反复 prefill,动辄百万 token 的上下文,KV cache 会把 HBM 容量、SSD 容量和带宽一起吃掉。
这就是 DeepSeek 在 9 月 10 日发布的 V4.1-Flash 的靶心。它不是又一个"分数更高"的模型,而是一次围绕 cache 成本做的架构重构。DeepSeek 官方更新日志里还有一句很直白的话:V4.1 Flash 在性能、费用、速度、总用时等各项指标上已全面超越 DeepSeek V4 Pro,因此计划有序下线 V4 Pro------北京时间 9 月 14 日 12:00 之后到 V4.1 Pro 上线前,访问 deepseek-v4-pro 的请求会全部路由到 V4.1 Flash,并按 V4.1 Flash 单价计费。
这篇把它的关键机制拆开讲:为什么 prefill 能砍一半、cache 是怎么被压到 890 字节每 token 的、以及这对写 Agent 的人意味着什么。
二、先看数字
| 维度 | DeepSeek-V4.1-Flash |
|---|---|
| 结构 | 多模态 MoE,552B 主干 + 196B Engram 参数 |
| 上下文窗口 | 1M token |
| 激活参数 | prefill 每 token 激活 8B,decode 激活 16B |
| 全局 KV cache | 890 字节/token,约为 V4-Flash 的 1/4、DeepSeek-V1 的 1/437 |
| 许可 | MIT,开源权重,Hugging Face 提供 vLLM / SGLang / Transformers 路径 |
| API | 模型名改为 deepseek-flash,价格同步下调 |
890 字节每 token 是个什么量级?可以自己算一下。一个把 1M 上下文塞满的会话,全局 KV cache 大约是:
python
# 按官方口径换算(字节数推导,不是实测)
KV_BYTES_PER_TOKEN = 890 # V4.1-Flash 全局 KV cache
TOKENS = 1_000_000 # 1M 上下文
gib = KV_BYTES_PER_TOKEN * TOKENS / 1024 ** 3
print(f"1M token 全量 KV cache ≈ {gib:.2f} GiB") # 约 0.83 GiB
# 对比上一代:V4-Flash 约 4 倍,V1 约 437 倍
for name, ratio in [("V4-Flash", 4), ("DeepSeek-V1", 437)]:
print(f"{name}: ≈ {gib * ratio:.1f} GiB")
结果大致是 0.83 GiB;换成 V4-Flash 口径约 3.3 GiB,换成 V1 口径则是几百 GiB 的量级。这就是"长会话能不能放进显存"的分水岭。
三、Causal Encoder-Decoder:prefill 为什么能砍一半
V4.1-Flash 的 40 层主干被拆成 20 层 causal encoder 加 20 层 decoder。
关键在于 decoder 不自己算全局 KV。它通过每层的投影权重,从 encoder 最后一层的 hidden state 里推导出全局 KV。于是 prompt token 在 encoder 就"停住"了,prefill 计算量几乎减半。这个思路受到 YOCO 架构的启发。
每一层仍然跑一个 128 token 窗口的滑动窗口注意力(SWA),所以 decoder 的 SWA 状态可以用"只回放最后 128 个 prompt token"的方式重建。研究团队把这个做法叫 Decoder SWA Bounded Replay。
四、CSA2:沿着"层"这个轴压 cache
V4 系列此前是 CSA 和 Heavily Compressed Attention 混用,V4.1-Flash 换成了纯 CSA2,攻击方向是 cache 的层维度。
每个 CSA2 层被静态分配三种模式之一:
- Full:自己算主 KV,从中投影出 indexer K,并选出新的 Top-512 索引。
- Reindex:复用上一个 Full 层的主 KV 和 indexer K,但用自己的 indexer Q 重新打分。
- Reuse:主 KV 和最新的 Top-K 索引都复用,直接跳过 indexer。
具体分配是:18 个 CSA2 encoder 层,压缩比 2,分 3 组每组 6 层(1 个 Full、5 个 Reuse);20 个 decoder 层,压缩比 1,分 5 组每组 4 层,第一组是 Full 加 3 个 Reuse,其余组是 Reindex 加 3 个 Reuse。decoder 里还有一个 Hierarchical Sparse Indexer,让 Full 层建出一个最多 16,384 个位置(2,048 个块,每块 8 个)的候选池,后面的 Reindex 层就只在这个有界集合上打分,而不是扫全上下文。
说白了,就是让绝大多数层共享少数几层算出来的 KV 和索引,把重复计算摊掉。
五、FP4 KV 与 Bounded Replay:持久化 cache 再降一截
主 KV cache 被量化成 FP4:E2M1 格式,每 16 个通道配一个 E4M3 scale,走 NVFP4 的思路但不带全局 scale。这是在 post-training 阶段用量化感知训练引入的,相比 V4 的 FP8 cache,存储几乎减半。
部署层面还有一个变化:SWA KV 不再持久化到 SSD。它放在一个从主机 DRAM 划出 10% 组成的分布式池里,TTL 是分钟级;全局 KV 则保证 72 小时寿命。一旦命中失败,Encoder SWA Bounded Replay 只需要重算 128 个 token,而不是"层数 × 窗口大小"。
再加上 Single-Pass mHC、第 1 层和第 14 层的 Engram 条件记忆模块、backbone 冻结后训练的 DSpark 投机解码、head-wise Muon 等改动,效果是:上下文从 4K 涨到 1M,单 token decode 的 FLOPs 只增加 1/4。
六、和上一代、和闭源旗舰比一比
MarkTechPost 整理了这张对比表(选摘):
| 基准 | V4.1-Flash | V4-Flash | Opus-5 | GPT-5.6 Sol |
|---|---|---|---|---|
| Terminal-Bench 2.1 | 90.6 | 82.7 | 89.1 | 88.8 |
| DeepSWE v1.1 | 74.2 | 54.4 | 74.0 | 73.0 |
| Terminal-Bench 4.0 | 31.2 | 7.0 | 51.8 | 39.9 |
| Automation-Bench | 54.8 | 37.7 | 50.3 | 45.8 |
| GPQA Diamond | 90.9 | 89.9 | 93.4 | 94.1 |
| Codeforces(Rating) | 3471 | 3289 | n/a | n/a |
怎么读这张表?
一是相对上一代 V4-Flash 的提升是全面的,尤其是 Agent 类基准:Terminal-Bench 4.0 从 7.0 到 31.2,Automation-Bench 从 37.7 到 54.8,DeepSWE v1.1 从 54.4 到 74.2。
二是对闭源旗舰,它在 Terminal-Bench 2.1 和 DeepSWE v1.1 上略占上风,但 Terminal-Bench 4.0 明显落后 Opus-5(31.2 对 51.8),世界知识类的 GPQA Diamond 也低于两家(90.9 对 93.4 / 94.1)。也就是说,工程执行类任务强,知识类任务还不是最强。
DeepSeek 官方更新日志里的成绩和这张表基本对得上,还额外给了 HLE 36.8、Codeforces 3471、Terminal-Bench 3.0 30.0、CyberGym 88.1、NL2Repo-Bench 65.4 等分数。
七、训练侧:没有新算法,靠的是任务合成与脚手架
值得注意的一点是,官方说 post-training 没有引入新算法。提升主要来自三件事:大规模合成可验证的 Agent 任务、在异构脚手架(Claude Code、Codex、OpenCode、Pi、mini-SWE、DeepSeek Harness)上做 RL、以及从 40 多个 teacher 模型做 on-policy 蒸馏。
pre-training 侧,45T 多模态 token,文本与多模态比例 7:1;稀疏注意力从 64K 序列长度从零训练,没有 dense warmup;上下文在 34T token 处扩展到 1M。基础模型在世界知识和编码上追平 V4-Pro-Base,但只用了 1/3 的总参数和 1/4 的激活参数。
八、对 Agent 开发者意味着什么
第一,长会话的成本结构变了。890 字节每 token 的 KV cache 让"把上下文留长一点"不再那么贵,这对多轮工具调用、长文档分析这类场景是直接的利好。
第二,选择模型时,要看你的瓶颈在哪。如果你的 Agent 主要在做工程执行(改代码、跑终端、自动化流程),V4.1-Flash 这一代的性价比很有吸引力;如果任务偏重世界知识问答,闭源旗舰仍有优势。
第三,接入方式有变化。模型名要改成 deepseek-flash,旧名 deepseek-v4-flash 会被临时路由;V4 Pro 即将下线,还在用 deepseek-v4-pro 的服务要在 9 月 14 日之前确认路由和计费口径的变化。
第四,部署前先看你的 cache 预算。SWA KV 落在 DRAM 池里、TTL 只有分钟级,全局 KV 才保 72 小时。做多副本、长驻会话的架构时,这个差异会直接影响容量规划。具体部署参数以官方文档和 vLLM / SGLang 的说明为准。
小结
V4.1-Flash 值得学的不是"分数又高了",而是它把优化目标定在了长任务 Agent 的真实瓶颈上:prefill 砍半靠 CED 的层间 KV 复用,cache 变小靠 CSA2 的层间共享和 FP4 量化,持久化成本下降靠 SWA 不进 SSD。
对 Agent 开发者来说,这一代模型带来的变化可以概括成一句话:长上下文从"用不起"变成了"要规划"------用得起,但你要开始认真算 cache 放在哪、活多久、怎么命中。