作者:李季 LI JI
AI 前沿技术跟进
全局:

推理与服务 Inference & Serving

KV cache、量化、调度与低延迟部署,让大模型更便宜更快。

条目(3 项)

日期条目 / 一句话通俗分类
2026-10-20Cache Engineering for Agents(AKV serving engine)
智能体的历史太长时,不要改文字历史再重算,而是直接让服务端「忽略」某些旧的 KV 缓存,剩下的缓存原样复用,省钱又不丢准确率。
推理与服务 智能体
2026-10-16NVIDIA-Nemotron-Labs-Dory1.0-4B:looped(latent-recurrent)4B 语言模型
同一个 4B 模型,推理时可以让中间那一大段网络「多转几圈」换取更高准确率;转 1/2/4 圈由你按任务选择,不用换模型。
LLM 架构与效率 推理与服务
2026-10-06TRACE: Rollout-Guided Quantization-Aware Training for FP4 Reinforcement Learning of MoE Language Models
RL 里用 FP4 做采样(rollout)省时间,但训练端与采样端对同一个数「舍入」得不一样,会放大偏差;TRACE 让训练端的舍入方向去「照抄」采样端,并只传一点点必要信息。
训练与数据 推理与服务 推理与强化学习

条目详解

2026-10-20arXiv 论文第1期 · 2026-10-31

Cache Engineering for Agents(AKV serving engine)

面向智能体的「缓存工程」:让 agent 直接操控 KV cache
Tianyu Fu, Ruoxi Wang, Zihan Min, Zhongqi Ren, Zhihao Li, Tengxuan Liu, Shengxu Mu, Hanling Zhang, Yu Wang(清华大学 NICS-EFC 组)
一句话通俗:智能体的历史太长时,不要改文字历史再重算,而是直接让服务端「忽略」某些旧的 KV 缓存,剩下的缓存原样复用,省钱又不丢准确率。
阅读模式:

报告的主要结果(均为原文自报,非本站复现)

(原文自报,3 个模型 × 4 个基准的平均。)

模型方法平均得分 %平均成本(美分/任务)
MiniMax-M2.7Standard / Text Eng. / AKV52.4 / 52.8 / 53.75.0 / 5.7 / 4.4
GPT-OSS-120BStandard / Text Eng. / AKV51.0 / 48.3 / 53.111.2 / 10.2 / 7.3
MiroThinker-1.7-MiniStandard / Text Eng. / AKV44.1 / 37.1 / 45.820.4 / 18.1 / 14.8
  • 摘要:相对 Standard 平均成本降 27.7%,相对 Text Engineering 降 21.9%。
  • 服务(GPT-OSS-120B,Top-80 SWE-Verified):各自峰值吞吐设置下,AKV(并发 14)较 Standard(并发 12)平均 / P95 请求延迟加速 1.36× / 1.51×,输入 / 输出吞吐为 1.53× / 1.18×。
  • KV cache 读取占 API 总成本 82.4%(论文 Figure 14)。

通俗解释

智能体干活要反复调用工具,每次都把全部历史再喂给模型。历史越长越贵:论文测到,KV cache 的读取占了 API 总成本的 82.4%。

常规做法有两种:把旧历史裁掉,或者让模型写一段摘要。可是一旦改了历史的前面部分,后面所有已经算好的缓存都作废,要重新算(re-prefill)。于是大家只能「攒到很长再一次性大砍」,砍得狠就容易丢信息。

这篇论文的想法是:文字历史不改,只告诉服务器「这几段缓存以后别再看了」(drop),再把剩下的位置编号捋顺(repos)。剩下的缓存全部原样复用,不用重算。再配一套新的服务引擎 AKV,把「同样的文字、不同的丢弃顺序会产生不同缓存」这件事记清楚,保证复用是正确的。

专业解释

Cache engineering 是区别于 context engineering 的新范式:不修改 logical token sequence,而是直接对 active KV cache $\mathcal C$ 施加操作。定义三种原子操作 $\operatorname{append}$、$\operatorname{drop}(P)$、$\operatorname{repos}$。关键观察:KV 状态是 history-dependent 的——相同 token 序列与相同保留位置,在不同的 drop/append 顺序下会得到不同的 KV 状态(因为后续 token 的 KV 在计算时是否 attend 到被 drop 的内容不同),因此传统以 token 前缀为键的 prefix caching(RadixAttention 等)不再正确。

AKV 服务系统 遵循「stateless interface, stateful serving」:请求在 messages 之外携带 cache(drop 与 reposition 的操作序列,用 operate-after 语法),服务端内部:(1) extended radix tree:在 token 前缀树上插入 *drop node*(及 *reposition node*),按 token + 操作历史联合匹配以保证「当且仅当等价才复用」;(2) drop-aware eviction:被所有相关请求 drop 的缓存可提前回收,优先于已完成请求的缓存被逐出;(3) segment-batch attention:当缓存被逐出需要恢复时,在一次 prefill 内按 drop / repos 触发点把 query 切段,各段 attend 各自的活跃缓存,仅 attention 分段、FFN 仍整批计算,以避免重复读 FFN 权重。

主策略 tool-response rolling drop:保留所有推理(assistant)缓存与最近 12 条工具响应的缓存,逐步丢弃更老的工具响应缓存;$\operatorname{repos}$ 的触发阈值与 Standard 的摘要阈值相同。论文也展示了让智能体自我改进缓存策略(RSI)与 Cache-As-Tool(CAT)。

详细算法

1. 问题设定

自回归 LLM:$p_\theta(x_{t+1}\mid x_{1:t})$;有 KV cache 时 $p_\theta(x_{t+1}\mid x_t,\mathcal C_{1:t-1})$。智能体轨迹 $x_{1:t}$ 包含 prompt、assistant 消息与工具响应,称为 logical token sequence。Active cache $\mathcal C$ 是后续 attention 实际可见的 KV 集合,其长度不必等于逻辑长度,且缓存项的位置编码索引也可独立于其逻辑索引。

目标:在不改变轨迹文本、不 re-prefill 保留部分的情况下,让 $\mathcal C$ 受智能体 / harness 控制,同时服务端能正确复用、驱逐与恢复这些「历史相关」的缓存。

2. 关键公式

三种缓存操作:

$$\operatorname{append}(x_{t+1}):\ \mathcal C\leftarrow[\mathcal C;\,C_{t+1}]$$

$$\operatorname{drop}(P):\ \mathcal C\leftarrow\mathcal C\setminus\{C_i:i\in P\}$$

(drop 只让这些 KV 不再参与后续 attention,保留项及其位置编码不变。)

Repos(RoPE 重定位):保留 $r$ 个缓存项,其位置索引重置为 $0,\ldots,r-1$,下一个 token 使用索引 $r$。对 RoPE 键从位置 $p$ 移到 $q$:

$$K\leftarrow R(q)\,R(p)^{-1}K,\qquad V\ \text{不变}$$

缓存操作序列(确定性地描述缓存状态,从空缓存起):

$$o_{1:m}=(o_1,\ldots,o_m),\qquad o_j\in\{\operatorname{append}(x),\ \operatorname{drop}(P),\ \operatorname{repos}\}$$

对固定 LLM,该序列决定当前缓存状态;仅有 token 与保留位置不足以决定下一 token 的概率。

3. 逐步伪代码
# 智能体侧 (tool-response rolling drop, 主策略)
每轮 agent 迭代:
    messages = 完整逻辑历史                       # 文本不改
    cache.drop  = 把 "早于最近 12 条的工具响应" 的消息下标加入 drop 表
    if 活跃上下文长度 > repos 阈值:  cache.reposition 追加当前消息边界
    请求 = {model, messages, cache}              # 无状态: 每次请求完整描述自己用到的缓存
    response = AKV.chat(请求)

# 服务端 AKV (对每个请求)
1. 前缀匹配: 在 extended radix tree 上沿 (token, 操作) 匹配
       - 遇到 drop 节点 Δ(记录被丢弃的逻辑下标): 仅当操作历史一致才复用
       - 遇到 reposition 节点: 位置编号一致则直接复用; 不一致则 "拷贝 + 旋转 K" (V 直接拷贝)
2. 缺失部分 (被逐出或首次出现) 用 segment-batch attention 单次 prefill 恢复:
       for 每一层:
           按 drop / repos 触发点把 query 切成段
           每段: 因果地 attend 自己的 token + 之前各段的 *活跃* 缓存
                 (被 drop 的缓存对之后的段不可见, 对原先使用它的更早的段仍可见)
           需要不同位置编码的段 -> 临时旋转 K / 拷贝 V 生成临时版本
           FFN 对整个序列只做一次批处理
3. 解码: 在 active cache 上生成, 把新 KV 写入树
4. 逐出: 先回收 "已被所有相关请求 drop" 的缓存, 再回收已完成请求的缓存; 节点保留为空占位, 以便后代缓存仍可前缀匹配
4. 训练 / 推理流程

评测模型:MiniMax-M2.7(230B 总参 / 10B 激活)、GPT-OSS-120B(高推理强度)、MiroThinker-1.7-Mini(30B / 3B 激活)。基准:BrowseComp-Plus(BCP)、xbench-DeepSearch-2510、GAIA 文本验证子集(103 题)、SWE-bench Verified。

对照:Standard(模型相关的摘要阈值:96K / 96K / 192K tokens)与 Text Engineering(统一 48K 阈值摘要);AKV 取最近 12 条工具响应滚动 drop,repos 阈值同 Standard。

成本核算:用各厂商公开单价,对 AKV 每个被 repos 的 token 按缓存命中价额外计费(有意高估键旋转成本)。服务实验:基于 SGLang,8×A800-80GB(4 卡 prefill + 4 卡 decode,TP=4),因 A800 无原生 MXFP4,权重用 BF16。

与既有方法对比

  • Context engineering(裁剪 / 摘要):改文本前缀 → 后缀 KV 全部失效 → re-prefill;为控制成本只能延迟到阈值再大幅压缩,导致信息丢失。Cache engineering 增量地丢弃、保留的缓存不重算,缓存里仍可能携带被丢历史的信息(因为它们当初是在看过那些历史的情况下算出来的——论文引 Fu 等 2026 等的观察)。
  • 传统 prefix caching(vLLM / SGLang RadixAttention):只按 token 前缀匹配;在 drop / repos 之后会误复用不等价的缓存。AKV 的 extended radix tree 同时匹配 token 与操作历史。
  • KV 压缩 / 逐出(H2O 类):按 token 重要性在服务内部决定;AKV 把「丢什么」的决策权交给 agent / harness,并给出能正确复用与恢复的系统。

优势

  • 不改文本、只做缓存操作,兼顾「少付 KV 读取费」与「保留剩余缓存、避免 re-prefill」,打破 re-prefill 成本与准确率的两难。
  • 正确性有明确定义:用「操作序列」刻画历史相关的缓存状态,并让 radix tree、驱逐与恢复都围绕它设计。
  • 接口兼容现有 API(messages + 可选 cache 字段),客户端无状态,服务端被逐出后可单次 prefill 完整恢复。
  • 给 agent 自我改进缓存策略(RSI)留出了可编程接口;代码在 GitHub 开源(本站已核对仓库链接可访问)。

劣势 / 局限

  • 论文只提到:缓存策略的更多探索、在该方案下训练 agent、以及扩展到线性注意力模型都属未来工作(Limitations)。
  • 需要服务端支持(基于 SGLang 的定制引擎);闭源 API 厂商不暴露此类 cache 接口时无法使用。
  • SWE-bench Verified 上 MiroThinker 的绝对分数很低(7.4 ~ 7.8),且个别单项(如 GPT-OSS 的 xbench-DS 37.5 vs 38.5)低于基线,增益不是处处一致。
  • 主要评测在 A800 + BF16(因缺 MXFP4 支持),与厂商生产部署环境不完全相同;成本按公开单价折算,并非真实账单。
  • 不同缓存策略的最优性依赖任务;论文展示了两三种策略,但没给出通用选择规则(编者归纳)。

与工业 AI 的关系(作者判断,非论文结论)

工业智能体(巡检、故障诊断、产线问答)往往会连续多轮读取日志、点位、工单,上下文很快膨胀。AKV 的思路对「长时间运行的运维 agent」的成本控制很有参考价值:旧的工具输出缓存可增量丢弃而不是整段摘要。若我们自建推理服务(SGLang 系),可评估是否引入;若只用外部 API,则需要厂商支持,目前无法直接用。

待确认事项

  • 待确认:各厂商(OpenAI / Anthropic 等)是否会对外提供类似的 cache drop 接口 依据:论文未讨论;本站未检索各厂商 API 文档(2026-10-31)
  • 待确认:论文中 Figure 14 的「KV cache 读取占总成本 82.4%」的统计口径 依据:正文只引用该数字,图中口径未在本站复核(2026-10-31)
核验:arXiv 摘要页标题与提交日期(2026-10-20)核对一致;GitHub 仓库 HTTP 200;已读 §1、§3 缓存工程、§4 AKV 系统、§5 实验(Table 1、2)与 Limitations。(2026-10-31(北京时间))
2026-10-16官方模型卡(实验室发布)第1期 · 2026-10-31

NVIDIA-Nemotron-Labs-Dory1.0-4B:looped(latent-recurrent)4B 语言模型

NVIDIA Dory 1.0 4B:可调节推理循环次数的小模型
NVIDIA(Nemotron Labs;模型卡未署个人姓名)
一句话通俗:同一个 4B 模型,推理时可以让中间那一大段网络「多转几圈」换取更高准确率;转 1/2/4 圈由你按任务选择,不用换模型。
阅读模式:

报告的主要结果(均为原文自报,非本站复现)

(以下均为模型卡表格自报,NVIDIA 统一框架测得;† 为引用的公开分数。)

指标Dory 1 圈2 圈4 圈Qwen3.5-4BQwen3.5-9BQwen3.6-35B-A3B
SWE-bench Verified50.359.561.854.76173.4†
Terminal-Bench 2.112.518.122.2152443
IFBench74.2977.947953.835957.44
GPQA Diamond69.1972.4172.1677.7180.9385.35
HLE(文本,无工具)8.2510.8910.4311.3115.4319.18

DGX Spark 上,MXFP8 / NVFP4 相对 BF16 的速度比为 1.69× / 2.17×(ISL 2560, OSL 300, batch 1)与 1.84× / 2.44×(ISL 128, OSL 1024)。

通俗解释

普通大模型是一条流水线,每个词只过一遍所有层。Dory 把中间的 20 层做成一个「可重复使用的积木」,同一块积木可以反复用 1 次、2 次、4 次。简单任务转 1 圈省钱,难的智能体任务转 4 圈,换来更好的编程与智能体成绩,而且用更少的输出 token。

模型卡提供了一个省内存的开关(last-loop KV cache):不管转几圈,KV 缓存只占「一圈」的大小,这样不会因为多转几圈就把显存吃光。

专业解释

Dory 1.0-4B 是 looped(latent-recurrent)normalized-GPT(nGPT):层堆叠分为 Input(I)、Recurrent(R)、Output(O) 三组,I 与 O 各 8 层,R 为 20 层,R 块在 I 与 O 之间被重复应用,并且「输入被重注入每一次循环」;骨干使用交错的滑动窗口注意力(SWA)与全注意力层,上下文最长 256K。

Elastic inference compute:循环次数在推理时 1 ~ 4 可调,无需重新训练或更换检查点;官方建议默认 2 圈(多数精度增益来自第二圈),智能体类任务(Terminal-Bench、SWE-bench)可用 4 圈。Memory-efficient looping:标准循环为每一圈存一份 KV,显存随圈数线性增长;Dory 支持 last-loop KV caching——每个循环注意力层只保留最后一圈的 K/V(后一圈覆盖前一圈),KV 占用与不循环的同规模模型相当;作者称其精度与 per-loop 模式接近。

训练:预训练 6T tokens,前约 4.5T 用 NVFP4、其余用 BF16,再用 300B tokens 做上下文扩展到 256K;随后 SFT;最后在数学、代码、科学、指令遵循、多步工具调用、多轮对话与结构化输出等环境上用 GRPO 做多环境 RL,采用训练与推理解耦的异步 RL 架构(NeMo RL / NeMo Gym)。

详细算法

1. 问题设定

输入 token 序列,输出自回归下一 token 分布。关键设计问题:如何在参数量固定(4B)的前提下,让每个 token 的计算量可调?Dory 的回答是 参数共享的深度循环:用同一个 20 层 R 块重复计算,把额外算力花在「潜空间思考」而不是更长的输出上。

2. 关键公式

【模型卡只给出结构描述、没有公式】 下式是依据模型卡文字(I/R/O 三组;R 重复;输入重注入每次循环)所做的示意,其中重注入的具体算子 $f$ 未公开(待确认):

$$h_I=I(x),\qquad s_0=h_I,\qquad s_k=R\big(f(h_I,\,s_{k-1})\big),\ k=1,\ldots,n,\qquad y=O(s_n),\quad n\in\{1,2,3,4\}$$

KV cache 内存(模型卡文字):per-loop 模式下 R 层 KV 占用 $\propto n$;last-loop 模式下与 $n$ 无关(每个循环注意力层仅保留最后一圈的 K/V)。

NVFP4(背景):4 位浮点(E2M1)按小块缩放;Dory 用它做前 ~4.5T tokens 的原生预训练,之后切回 BF16。

3. 逐步伪代码
# 推理(示意;f 的具体形式模型卡未公开 -> 待确认)
def forward(tokens, n_loops, kv_mode):          # n_loops ∈ {1,2,3,4}; kv_mode ∈ {per_loop, last_loop}
    h_in = I_block(tokens)                       # 8 层
    s = h_in
    for k in 1..n_loops:
        s = R_block( inject(h_in, s) )           # 共享的 20 层; 输入重注入每一圈
        if kv_mode == "last_loop":
            覆盖写入 R 层的 K/V (只保留最后一圈)
        else:
            按圈各存一份 K/V
    return O_block(s)                            # 8 层 -> logits

# 服务(模型卡示例参数)
vLLM:      --hf-overrides '{"n_recurrent_loops": 2, "recurrent_kv_cache_mode": "last_loop"}'
llama.cpp: --override-kv "dory.num_loops=int:2,dory.recurrent_kv_cache_mode=str:last_loop"
4. 训练 / 推理流程
  1. 预训练:6T tokens,Megatron-LM;前约 4.5T 为 NVFP4,其余为 BF16;数据为爬取 + 合成的代码、数学、科学与通用知识。
  2. 上下文扩展:300B tokens → 256K。
  3. SFT:NVIDIA 精选 SFT 数据。
  4. RL:多环境 GRPO(数学、代码、科学、指令遵循、多步工具使用、多轮对话、结构化输出),异步 RL 架构解耦训练与推理。
  5. 部署:BF16 / MXFP8(W8A16)/ NVFP4(W4A16)/ GGUF Q5_K_M;模型卡注明:vLLM 的 Dory 支持仍在评审中(vllm-project/vllm#60149,需从该 PR 安装);llama.cpp 的支持在 PR #30306 中(需从含 Dory 的源码构建)。

与既有方法对比

  • PAR(本期第 3 项) 讨论的是 looped 模型「循环次数—问题长度」如何对齐;Dory 则是工程化的 looped 产品,用「可调圈数」换取弹性算力。两者共同点:额外迭代本身不保证有用,需要训练目标把迭代的作用定义清楚(待确认:Dory 的具体训练目标未公开)。
  • 同级别非循环模型(模型卡自报,NVIDIA 统一评测框架):4 圈 SWE-bench Verified 61.8,对比 Qwen3.5-4B 54.7、Qwen3.5-9B 61、Qwen3.6-35B-A3B 73.4(† 为公开报告值)。但在 GPQA Diamond、HLE 与知识类指标上落后于 Qwen3.5-4B 及更大者。

优势

  • 同一检查点覆盖不同算力预算:用圈数而不是换模型来权衡成本与精度,部署简单。
  • 额外算力花在潜空间而非更长输出上;模型卡称圈数增加后完成同样任务所需生成 token 更少。
  • last-loop KV cache 让显存占用不随圈数增加,对长上下文与高并发友好。
  • 原生 NVFP4 预训练 + 多种量化格式,4B 规模适合端侧与 DGX Spark 一类小设备。

劣势 / 局限

  • 增益主要出现在编码 / 智能体 / 指令遵循;GPQA、HLE 与知识类指标(AA-Omniscience 约 10,而 Qwen3.5-4B 为 15.02)不升反平,循环不增加参数化知识。
  • 第 2 圈之后收益递减,部分指标 4 圈甚至略低于 2 圈(如 GPQA 72.41→72.16、HLE 10.89→10.43)。
  • 所有数字均为 NVIDIA 自报,且模型卡注明 AA 分数为内部估计、可能偏离官方 AA 分数;评测用部分基准只重复 1 次。
  • 仅英语;模型卡发布时 vLLM 支持仍在 PR 评审中、llama.cpp 需从 PR 源码构建,生态未成熟;技术报告未找到,训练目标与重注入细节待确认。

与工业 AI 的关系(作者判断,非论文结论)

对工业边缘侧很有意思:产线边缘盒子算力有限,「按任务难度选择圈数」可以在同一模型上兼顾实时告警(1 圈)与离线诊断(4 圈)。但它的强项是编码与智能体类任务,而不是知识;用于设备知识问答仍需检索增强。是否适合国产化 / 受限硬件部署待确认(模型卡目标硬件为 NVIDIA Hopper / Blackwell)。

待确认事项

  • 待确认:循环块输入重注入的具体算子、训练目标与是否有配套技术报告 依据:模型卡只给出结构描述;未检索到论文或技术报告(2026-10-31)
  • 待确认:「圈数增加所需生成 token 更少」的具体数值 依据:模型卡中该结论以图给出,本站未读取图中数值(2026-10-31)
核验:模型卡全文由 WebFetch 读取(BF16 版,发布日期 2026-10-16);NVFP4 版链接经搜索结果核对;聚合站 af.net 的参数/日期仅作线索。(2026-10-31(北京时间))
2026-10-06arXiv 论文第1期 · 2026-10-31

TRACE: Rollout-Guided Quantization-Aware Training for FP4 Reinforcement Learning of MoE Language Models

TRACE:面向 MoE 模型 FP4 强化学习的「rollout 引导」量化感知训练
Xin Wang, Hao Yu, Zhengyang Zhuge, Bochao Mao, Zheng Li, Junda Feng 等共 12 位(HF 页面机构标注:Qwen;致谢:Alibaba Research Intern Program)
一句话通俗:RL 里用 FP4 做采样(rollout)省时间,但训练端与采样端对同一个数「舍入」得不一样,会放大偏差;TRACE 让训练端的舍入方向去「照抄」采样端,并只传一点点必要信息。
阅读模式:

报告的主要结果(均为原文自报,非本站复现)

(原文自报,Table 1:Qwen3.5-35B-A3B,联合 NVFP4 W/A + NVFP4 KV rollout。)

方法LiveCodeBenchAIME24AIME25HMMT25平均
BF16 rollout(参考)67.183.881.367.574.9
QAT55.170.763.449.259.6
QaRL54.173.357.949.258.6
QUADS60.480.575.459.068.8
TRACE66.486.378.570.075.3

Table 2(更大模型,BF16 / QAT / QUADS / TRACE):Qwen3.5-122B-A10B(DeepSWE)33.4 / 28.8 / 29.1 / 33.0;Qwen3.8-Flash-Next(Terminal-Bench)68.8 / 60.4 / 66.4 / 70.6;Qwen3.8-2.4T-A95B(GDPval)90.3 / 88.7 / 85.9 / 90.2。

效率:解码吞吐最高达 BF16 rollout 的 5.4×(128K 输出长度);端到端 RL 步时间从 664 增至 713(+7.4%);rollout 引导开销:权重侧 4%、KV 侧 2%,KV 反量化 8%,前向 86%。

通俗解释

强化学习后训练要先让模型大量「生成答案」(rollout),这一步很耗时间和显存,所以大家想把模型压成 4 位浮点数(FP4)来加速。但训练时用的是另一套高精度计算,两边的数值总是对不上;FP4 的「格子」又很粗,两个原本只差一点点的数,可能被舍入到相邻两格,差距一下被放大。MoE 模型还会因路由选择不同进一步放大。

TRACE 的做法:采样时把「这个数被舍入到了哪一格」记下来,训练做量化感知(QAT)时,遇到要在两个相邻格子里二选一,就选采样端选的那一个,而不是按「四舍五入」。这样两端的偏差不会被舍入放大。

但是全量记录太大:例子里一步 RL 要多存约 51 TB。论文发现 99% 的不一致只差相邻一格,所以只需要传「尾数的 1 位 + 缩放系数」,并且只传后半部分层。

专业解释

问题:FP4(W4A4)rollout 能显著加速与省显存,但训练与 rollout 两条量化执行路径的数值差异会造成 policy mismatch,MoE 下还与专家路由相互作用而放大。已有方法(QUADS、Rollout-ResQ)通过提高每条路径各自的量化精度(降低 $\|X-Q(X)\|_F$)来间接缓解,但各自变准并不等于两端更一致——论文用具体数值例子说明(QUADS 反而把差距从 0 变为 0.10;另一例保持 0.99 对 1.0)。

TRACE(Train-Rollout Quantization Alignment via Compact GuidancE):

(1) Rollout-guided QAT:关键洞察是不一致的 FP4 舍入会放大原本微小的 BF16 差异(论文举例:60.24 vs 59.76 仅差 0.48,归一化后 2.51 与 2.49 位于舍入边界两侧,被舍入到 3 与 2,差距放大到 24)。训练侧在两个相邻 E2M1 码字 $\{q_-,q_+\}$ 中选择最接近 rollout 侧实际码字的那个,取代 RTN;在候选集相同的前提下,对每个被记录位点局部差异不会大于 RTN(式 3);注意该局部保证不推出整网或策略层面的单调下降。

(2) Mantissa-only 通信:>99% 的失配值只相差一个相邻码字,因此只需传尾数的少量比特与 scale;并且向更低码字的修正多发生在深层,所以只缓存后半部分层。以 Qwen3.5-35B-A3B 为例,保留 1 位尾数与摊销后的 scale 约为每 token 7.5 KB,较缓存完整量化激活约小 6×。

作用范围:rollout 时仅量化 MoE 路由专家与 softmax-attention 层的 KV cache,其余模块保持 BF16;训练用 GRPO + R3(回放路由)+ token 级重要性比(裁剪上界 5)。

详细算法

1. 问题设定

RL 后训练的两条执行路径:rollout(推理引擎,用 FP4 加速;这里用 SGLang)与训练(Megatron,BF16 前向/反向,QAT 时前向做 FP4 fake quantization)。对同一轨迹、token 位置与量化位点(site),记训练侧激活 $X_{\rm train}$ 与 rollout 侧激活 $X_{\rm rollout}$。目标:降低两条路径量化后的差异,同时不引入难以承受的存储 / 通信开销。

2. 关键公式

局部量化差异(式 1):

$$\mathcal D_{\rm act}=\big\|Q^{\rm train}_{\rm FP4}(X_{\rm train})-Q^{\rm rollout}_{\rm FP4}(X_{\rm rollout})\big\|_F$$

既有方法的目标(只降低各自量化误差):$\mathcal L_{\rm error}(X)=\|X-Q(X)\|_F$。

Rollout 引导舍入(式 2;$q_\pm$ 为 rollout 侧 scale 下训练激活相邻的两个归一化 E2M1 码字,$q_{\rm rollout}$ 为对应 rollout 激活实际得到的码字):

$$q_{\rm TRACE}=\arg\min_{q\in\{q_-,q_+\}}\big|q-q_{\rm rollout}\big|$$

局部不劣于 RTN(式 3):

$$|q_{\rm TRACE}-q_{\rm rollout}|\ \le\ |q_{\rm RTN}-q_{\rm rollout}|$$

相对额外差异(诊断量):

$$\frac{D_{\rm FP4}-D_{\rm BF16}}{D_{\rm BF16}}$$

($D$ 为训练—rollout 激活 MSE。)压缩通信下的参考重建:选择低 $b$ 位码与记录 $c$ 一致、且幅值最接近 $|z|$ 的 E2M1 幅值,符号取训练激活的符号;仅作局部引导目标,而非精确还原。

3. 逐步伪代码
# 据 §3 与 A.1 的文字描述整理 (论文 Algorithm 1 的框内行文本在抽取中缺失)
Rollout 阶段 (SGLang, FP4 路由专家 + FP4 KV):
    for 每个生成的 token, 每个量化位点 (MoE 专家输入 / 后半层 KV):
        记录 rollout 侧的 (尾数低 b 位 [b=1], scale)         # 后半层才记录
        激活侧: 先写入临时 GPU buffer -> 异步卸载到 CPU; KV 侧: 请求结束后从 FP4 KV cache 收集
    序列化并按 (trajectory, token, site) 索引保存

QAT 训练阶段 (Megatron, BF16 反向):
    for 每个微批:
        载入对应记录并按 (trajectory, token, site) 配对
        for 每个被记录位点的训练激活 z:
            (q-, q+) = BracketFP4(z)                           # 相邻 E2M1 舍入候选
            ref = Reconstruct(记录 c, scale s, z)              # 低 b 位码匹配的最近 E2M1 幅值, 符号取自 z
            q = 距 ref 更近的候选                              # 代替 RTN
            z_q = STE(z, q * s)                                # 前向用 q, 梯度穿透到 z
        GRPO + R3 路由回放 + token 级重要性比 (clip 上界 5, max_version_diff=3)
4. 训练 / 推理流程

模型:Qwen3.5-35B-A3B(推理 RL,400 步)、Qwen3.5-122B-A10B(代码 RL,50 步,DeepSWE v1.1)、Qwen3.8-Flash-Next(125B 总 / 6B 激活,代码 RL,400 步,Terminal-Bench 2.1)、Qwen3.8-2.4T-A95B(长程 RL,50 步,GDPval)。基线:vanilla NVFP4、QAT、QaRL、QUADS、Score Centering;MXFP4 变体;以及 BF16 训练后再做 post-hoc FP4(4over6、H-Scale)。设置:VeRL 异步 RL + Megatron + SGLang,disaggregated 部署;GRPO + R3 + token 级重要性比(上界 5)。每步采样 $256{\times}16$ / $128{\times}16$ / $64{\times}16$ / $64{\times}8$ 条轨迹。

与既有方法对比

  • QUADS / Rollout-ResQ(提高各自量化精度):目标是 $\|X-Q(X)\|_F$,不直接缩小两端之间的差异;论文以数值例子说明可能反而扩大。
  • Vanilla NVFP4 + QAT / QaRL:在 Qwen3.5-35B-A3B 联合 NVFP4 W/A + KV 下,平均 59.6 / 58.6,远低于 BF16 的 74.9。
  • Post-hoc FP4(先 BF16 训练再量化):论文称 TRACE 的最终 FP4 性能更强(§4.5,本站未逐项核对数值)。
  • 全量引导(保存完整 rollout 量化信息):效果有但吞吐显著下降;mantissa-only 把缓存降到约 1/6,吞吐接近 vanilla FP4 rollout。

优势

  • 问题诊断清晰:从「舍入边界放大」这个具体机制出发,指出间接降低量化误差并不等于缩小两端差异。
  • 方法极简:只改变候选码字选择,局部上不劣于 RTN;配合 mantissa-only 压缩,把通信 / 存储降低约 6×。
  • 覆盖 4 个 MoE 模型(35B ~ 2.4T 总参)与推理、代码、长程三类 RL 任务;训练动态(log-prob 差、熵、响应长度)有诊断图。
  • 额外训练开销小(+7.4% 步时间),且 FP4 rollout 的吞吐收益基本保留。

劣势 / 局限

  • 论文明确:局部保证不等于整网差异或策略层面发散的单调下降;也不能消除由异步训练的策略陈旧(staleness)引起的激活差异。
  • 依赖 rollout 与训练的精确配对(trajectory/token/site)与持久化 / 通信管线,对 RL 系统工程侵入较深;需要同一量化 scale 才能对齐。
  • 仅量化路由专家与 softmax-attention 的 KV,其余保持 BF16;对全模型 W4A4 的适用性没有展示。
  • Qwen3.8-2.4T-A95B 只训练 50 步;TRACE 90.2 略低于 BF16 90.3,长程任务上的长期稳定性证据较短。
  • 无独立 Limitations 小节(本站文本抽取未发现);作者来自 Qwen / 阿里实习项目,模型与基础设施高度相关,外部复现难度大(待确认)。

与工业 AI 的关系(作者判断,非论文结论)

对我们的相关性主要在「用更少 GPU 做 RL 后训练」:如果要在企业内部对运维 / 工艺大模型做 RL 微调,rollout 占大头,FP4 采样 + 训练对齐是潜在的降本手段。但门槛高:需要 Blackwell 级 FP4 硬件与 SGLang/Megatron 级别的 RL 基础设施,当前阶段更适合关注而非落地。

待确认事项

  • 待确认:论文 Algorithm 1 的逐行伪代码 依据:文本抽取只保留了说明段,伪代码框缺失;上方伪代码为按 §3 / A.1 文字整理(2026-10-31)
  • 待确认:是否有代码开源 依据:HF 页面无 githubRepo;全文抽取中未见链接(2026-10-31)
  • 待确认:§4.5 与 post-hoc FP4 的具体数值对比 依据:本站未摘录该节表格(2026-10-31)