大数跨境

DeepSeek-V4.1-Flash技术报告深度解读:长程 Agent 如何重新分配预算

DeepSeek-V4.1-Flash技术报告深度解读:长程 Agent 如何重新分配预算 AINLP
2026-09-10
3
导读:持久缓存压到原来的约八分之一

一个长程 Agent 继续执行任务之前,往往要先读入已经积累的消息、代码、工具结果和日志。输入越来越长:⁠缓存未命中的部分要做 prefill,命中的部分也要保存和搬运。计算、HBM、SSD 容量和带宽,都可能成为成本瓶颈。


DeepSeek-V4.1-Flash 技术报告给出了一个不寻常的参数口径:⁠prefill 每个 token 激活 8B 参数,decode 每个 token 激活 16B。模型的语言主干有 552B 参数,另有 196B 的 Engram 条件记忆参数。


这个差别来自计算路径:⁠处理长输入时,历史位置不再完整经过整个主干;生成新 token 时,完整主干仍然工作。省下来的历史计算,再与跨层缓存共享、低精度存储和会话恢复配合,构成一套面向输入偏重任务的系统设计。


沿着“读入历史—继续生成—暂停后恢复”这条线,可以看清这些优化如何衔接,再判断训练与实验把节省的预算变成了什么。

CED:⁠历史为什么可以只完整经过前半主干?

模型的 40 层主干分成两半:⁠20 层因果 encoder,接上 20 层 decoder。报告将它称为 Causal Encoder-Decoder,简称 CED。


通常,各层历史 KV 的构造依赖本层相应的隐藏状态。要取得上层 KV,历史输入就得一路算到上层。CED 改变了 decoder 全局 KV 的来源:⁠它由 encoder 最后一层的隐藏状态,经对应投影直接产生。


因此,为历史位置构造 decoder 的 global KV,不必先完成这些位置在 decoder 各层中的全部计算。生成新 token 时,它仍经过完整的 20 层 encoder 和 20 层 decoder,利用已有历史 KV 执行注意力。


数据路径可以简化为:⁠

历史输入 → 20 层 encoder → encoder 终态 → decoder 所需的 global KV
新 token 生成 → 20 层 encoder + 20 层 decoder

这里改变的是架构规定的 KV 来源,并非把通常由 decoder 生成的 KV 临时用 encoder 状态替代。


但全局历史准备好了,decoder 仍缺少一部分状态:⁠各层滑动窗口注意力 SWA 的局部 KV,依然来自本层隐藏状态。encoder 终态的投影无法顺便补齐这些局部状态,因此还需要尾窗重放。

图 1:⁠CED总体架构:⁠因果encoder与decoder各20层(原论文Figure 3)。
图 1:⁠CED总体架构:⁠因果encoder与decoder各20层(原论文Figure 3)。

补齐局部状态,为什么只重放 128 个 token?

SWA 每层只看一个窗口,但依赖会跨层积累。后一层窗口里的表示,已经吸收了前一层更早位置的信息。报告指出,精确重建 L 层 SWA,理论上需要重放约“L × 窗口长度”个 token。


模型采用 Decoder SWA Bounded Replay,只把提示末尾的一个窗口送过 decoder,恢复生成起步所需的局部状态。实际窗口长度为 128。


设输入长度为 N、主干总层数为 L,长输入 prefill 的主要计算规模变为:⁠

N × L/2 + 窗口长度 × L/2

前一项是全部输入经过 encoder,后一项是末尾窗口经过 decoder。当 N 远大于窗口长度时,计算量才接近完整主干 prefill 的一半。8B 与 16B 是分阶段的激活参数口径,不能直接换算成请求时延减半。


这项节省接受了近似:⁠只重放尾窗,没有重建窗口左边界外的全部多层依赖,恢复出的 decoder SWA 不严格等同于完整 forward 的状态。报告称所测条件下质量影响很小,并在后训练中模拟同样的恢复过程,让模型适应它。

CSA2:⁠共享历史,仍保留每层自己的计算

CED 让历史少算了一段,CSA2 则进一步处理历史的重复存储与选择成本。


Compressed Sparse Attention 2(CSA2)将各层静态指定为 Full、Reindex 或 Reuse,分别决定哪些缓存和索引可以共享:⁠

模式
全局 KV 与 indexer K
Top-K 位置
Full
本层生成
本层重新选择
Reindex
复用已有缓存
用本层 indexer Q 重新打分、选择
Reuse
复用已有缓存
连同已有索引一起复用

这里有两种查询:⁠indexer Q 给历史位置打分,决定看哪里;global Q 对选中的 KV 做注意力。三种模式都保留本层自己的 global Q、SWA KV 和注意力计算。Reuse 省去重复生成缓存和重新索引,本层仍然计算自己的输出。


Full 表示执行完整的 CSA2 缓存生成与索引路径,并不表示恢复成密集全注意力。在 decoder 中,这条路径生成 global KV 时,来源仍是 CED 规定的 encoder 终态。


实际配置中,encoder 前两层只有 SWA;其余 18 层分为三组,每组一个 Full 加五个 Reuse,压缩比为 2。decoder 的 20 层分为五组:⁠第一组为一个 Full 加三个 Reuse,后四组各为一个 Reindex 加三个 Reuse,压缩比为 1。


这样,历史表示可以跨层共享,各层仍能用自己的查询解释历史。Reindex 还保留了重新选择关注位置的能力。

图 2:⁠CSA2三种层模式:⁠绿色为本层新算,黄色为共享KV,红色为复用索引(原论文Figure 4)。
图 2:⁠CSA2三种层模式:⁠绿色为本层新算,黄色为共享KV,红色为复用索引(原论文Figure 4)。

只读 512 个位置,为什么索引仍可能很贵?

注意力最后只读取 Top-512,不代表找出这 512 个位置也很便宜。如果索引器仍要给全部历史打分,长上下文的成本只是转移到了选择过程。


报告在 decoder 中加入分层稀疏索引:⁠首个 Full 层仍扫描全部因果可见的位置,按块内最大分数选块,建立候选池。候选池上限为 2048 块,每块 8 个位置,共 16384 个位置;后续 Reindex 在池内重新打分,各自选择 Top-K。


固定候选池后,后续索引器的搜索范围不再随上下文扩张,训练与推理也采用相同的候选限制。首个 Full 层的全范围扫描仍然存在,因此整个模型处理更长历史的成本并非恒定。

图 3:⁠先构建候选池,再由后续索引器从池内选择;第一层仍扫描全部可见位置(原论文Figure 5)。
图 3:⁠先构建候选池,再由后续索引器从池内选择;第一层仍扫描全部可见位置(原论文Figure 5)。

报告图 2 显示,上下文从 4K 增至 1M、长度扩大 256 倍时,单 token decode 的计算量只增加约四分之一。图中按精度加权:⁠BF16、FP8、FP4 操作分别乘以 1、0.5、0.25。这是该口径下的计算量变化;端到端时延还取决于缓存访问、通信与调度。

图 4:⁠按计算精度加权的单token解码FLOPs,不能直接视作端到端时延(原论文Figure 2)。
图 4:⁠按计算精度加权的单token解码FLOPs,不能直接视作端到端时延(原论文Figure 2)。

FP4 与缓存寿命:⁠1/4 和 1/8 怎样接上?

跨层共享减少缓存份数,FP4 继续减少每份缓存的字节数。


报告对主 KV 在后训练中引入量化感知训练 QAT,采用 E2M1,每 16 个通道保存一个 E4M3 scale;在 RoPE 之后量化,并去掉第二级 global scale。尺度本身也占空间,实际体积不能只按“每个元素 4 bit”计算。


注意力前先反量化,因此这里主要节省存储,不要求硬件原生支持这种 FP4 格式的矩阵乘法。局部 SWA KV 对量化更敏感,仍保留 FP8。


结合架构优化,报告给出 890 字节/token 的 global KV 占用:⁠相同序列长度下,约为 V4-Flash 的四分之一。这个数字对应 HBM 中的全局 KV,并非模型全部显存。


持久 KV 缓存降至约八分之一,还包含缓存寿命的调整。旧部署将 global KV 与 SWA KV 一起长期保存,SWA 约占持久缓存容量的一半。新方案将两者分开:⁠

  • global KV 继续持久保存,保证至少 72 小时的保留时间。
  • SWA 迁入由每机 10% 主机 DRAM 构成的分布式短期池,TTL 为分钟级。

按报告的近似分账,停止持久保存约占一半的 SWA,再把留下的 global KV 压至四分之一,就得到:⁠

约 1/2 × 1/4 ≈ 1/8

所以,1/4 描述 HBM 中 global KV 的缩减,1/8 描述 SSD/host memory 中持久 KV 缓存的缩减,两者不能混作同一项指标。


短期池未命中时,Encoder SWA Bounded Replay 重放已缓存前缀的尾窗。旧 token 只重建 SWA,已有 global KV 直接复用,不重新计算或覆盖;尚未缓存的新后缀则生成自己的两类 KV。


两种重放各有用途:⁠Encoder Replay 让 SWA 不必长期保存;Decoder Replay 让历史不必完整跑过后半主干。二者都用有限重算换资源,也都包含近似误差;encoder 恢复后,新后缀的状态还会依赖缓存命中位置。

mHC、Engram、DSpark 分别处理哪笔开销?

减少 KV 后,生成一个 token 仍然要搬运中间激活、访问参数并完成主干计算。报告还在这些位置做了优化。


Single-Pass mHC 将输入混合系数的使用后移一个 block,让当前 block 使用前一个 block 产生的系数,解除当前输入混合对本 block 系数预测的等待。这样,同一块激活读入后就能用于输入混合和系数预测。Mega-mHC 再融合残差更新、混合与系数预测;报告称,相较原实现,激活内存流量减半。它节省的是中间数据读写。


Engram 将部分记忆与主干计算解耦。196B 参数分布在两个模块中,采用确定性的 token n-gram 寻址,嵌入可以从 host memory 提前取回。因此,参数总量不能直接代表每个 token 的计算量,也不能直接代表 HBM 中需要驻留的参数量。


DSpark 作用于逐 token 生成:⁠三层 drafter 一次并行提出五个位置,Markov head 建模草稿间依赖,confidence head 估计接受概率。调度器结合当前负载下的吞吐曲线,决定验证多长的草稿。五个草稿位置能带来多少收益,取决于接受情况与验证成本。


报告先冻结主干训练 DSpark,后训练阶段继续对齐,但不将 DSpark 梯度回传主干。官方推理 README 则说明,公开代码是可读的参考实现,生成流程采用普通自回归采样;生产服务中的草稿调度收益,需要相应的服务系统才能体现。

降低运行开销之后,能力从哪里来?

这些架构改变规定了模型如何计算,任务能力还需要训练。报告称,模型使用 45T 多模态 tokens 从头预训练,图像和文本共同进入语言主干;稀疏注意力从 64K 长度开始训练,在累计 34T tokens 时扩展到 1M。


后训练沿用 SFT→RL→OPD,没有提出新的优化算法,主要投入在可验证任务和环境的自动生产上。


一个任务被定义为“问题、环境、验证系统”三元组。以 coding 为例,除了问题描述,还要有可运行环境,以及同时检查修复与回归的 fail-to-pass、pass-to-pass 测试。环境构建后,还要经过独立求解、质检和任务修复。


这些工作决定了一次 rollout 的反馈是否值得用于训练。增加题目数量之前,必须让任务能够执行、可靠判分,并能修正任务本身的错误。


长任务又带来异步训练问题:⁠短样本先完成,数据容易偏向短轨迹;长轨迹返回时,部分 token 可能已经来自较旧的 checkpoint。报告在同一批设备上分时执行 rollout 与训练,通过 sample-level dispatch 维持并发,并分别处理长度偏差和旧策略样本,包括限制旧策略比例、mask 过度陈旧的 token。最终 OPD 使用 40 多个教师模型。


架构与服务系统让更多长任务有机会运行,任务验证和训练调度则决定这些运行能否转化为有效学习。

图 5:⁠多版本、多Harness的RL曲线:⁠实线为成绩,虚线为平均输出tokens(原论文Figure 8)。
图 5:⁠多版本、多Harness的RL曲线:⁠实线为成绩,虚线为平均输出tokens(原论文Figure 8)。

实验要连着预算与 Harness 一起读

报告将 1—100 的 reasoning effort 作为 RL 条件,同一任务按 effort 分组比较奖励。effort 越高,长度惩罚系数越低,由此训练出不同的生成成本与质量工作点。报告所列公开 API 的 low、high、max 分别对应 50、75、100。

图 6:⁠实验中的推理强度、任务成绩与输出长度(原论文Figure 9)。
图 6:⁠实验中的推理强度、任务成绩与输出长度(原论文Figure 9)。

报告表 3 采用官方 Max 设置,部分结果如下:⁠

任务
DeepSeek-V4.1-Flash
V4-Pro
DeepSWE v1.1(Resolved)
74.2
62.7
Terminal-Bench 3.0(Pass@1)
30.0
11.8
GPQA Diamond(Pass@1)
90.9
92.4

进展因任务而异。Terminal-Bench 3.0 的 30.0 仍低于报告表中 Opus-5 的 43.3。这些分数反映的是模型、训练与运行设置的整体结果,无法单独归功于某项缓存优化。


报告表 4 固定同一 checkpoint 和任务,更换 Harness。DeepSWE v1.1 上,mini-SWE 为 74.2,DSH Minimal 为 72.6,Codex 为 65.6。实验使用 Linux 容器、1M 上下文、temperature 1.0、top-p 0.95、max_steps 500,DeepSWE 每题采样 8 次。


这里的 Codex 指驱动同一模型的 Harness 配置。工具接口、提示词和执行协议也参与塑造 Agent 成绩,仅凭模型名字解释不了这些分差。


多 Agent 实验进一步扩大了运行系统。报告从 ProgramBench 筛出 172 道参考解隐藏测试通过率至少 95% 的题,比较最强观察到的多 Agent 配置与最强可用单 Agent 基线。在 8 小时墙钟截止时,Almost@1 分别为 30.04% 和 20.39%。


这是一项带有任务筛选与配置选择条件的初步结果。相同墙钟时间允许不同的并发量和 token 消耗,因此不等于相同计算或 token 成本。


架构降本为扩大运行规模提供了条件;effort、Harness 和并发配置决定预算如何使用。实验展示了这些工作点下的任务表现,但没有把节省的每份 KV 或算力逐项换算成额外成功任务。

图 7:⁠单Agent与多Agent的墙钟时间对照:⁠左为ProgramBench,右为FrontierSWE v2无GPU子集(原论文Figure 10)。
图 7:⁠单Agent与多Agent的墙钟时间对照:⁠左为ProgramBench,右为FrontierSWE v2无GPU子集(原论文Figure 10)。

最后:⁠该看到的历史,能否被准确恢复和选中?

分层索引若在候选池阶段漏掉关键位置,后续 Reindex 就只能在缺失证据的池内重选。尾窗重放则没有覆盖全部多层局部依赖,恢复态不严格等同于完整 forward,后缀计算还可能随缓存命中位置变化。


报告承认,这些机制可能在尚未测试的极端输入或部署边界造成退化。有限测试中没有观察到系统性问题,不能覆盖所有长会话。


DeepSeek-V4.1-Flash 的核心判断是:⁠长程 Agent 的预算可以从重复处理、存储历史,转向后续生成和更多任务尝试,但这依赖两项取舍——稀疏选择是否保住关键证据,近似恢复是否保住所需状态。计算和缓存省下来了,Agent 能否稳定续跑,最终还要看这两处边界。

参考链接

  • DeepSeek-V4.1-Flash 技术报告:⁠https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash/blob/df42c109f1defefcbfcedbe7d905718a12266e40/DeepSeek_V41_Tech_Report.pdf
  • 官方推理参考实现说明:⁠https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash/blob/df42c109f1defefcbfcedbe7d905718a12266e40/inference/README.md

【声明】内容源于网络
0
0
AINLP
一个有趣有AI的自然语言处理公众号:关注AI、NLP、大模型LLM、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试对对联、作诗机、藏头诗生成器、自动写作等,查询相似词,测试NLP相关工具包。
内容 6029
粉丝 0
AINLP 一个有趣有AI的自然语言处理公众号:关注AI、NLP、大模型LLM、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试对对联、作诗机、藏头诗生成器、自动写作等,查询相似词,测试NLP相关工具包。
总阅读32.3k
粉丝0
内容6.0k