AI 技术日报
本期重点:同样使用 BF16,训练和推理为何仍会算出不同结果。经典回顾介绍在线 Softmax 如何少扫描一次输入。
重点
RL 数值对齐:相同精度,还要看在哪里舍入
强化学习(RL)常用推理引擎生成回答,再由训练框架重新计算这些回答中各个 token 的概率。即使权重相同、两边都使用 BF16,算出的概率也可能不同。2026-10-24 提交的 Rounding-Location Alignment 论文研究了其中一个原因:中间结果在什么时候舍入。
分开执行的算子可能先把中间结果存成 BF16,再交给下一个算子。融合执行时,这个中间结果可以一直保留 FP32,等后续计算结束才转成 BF16。论文据此调整训练侧的计算,让选定中间值保留 FP32,使舍入位置更接近推理侧。
作者比较了两种改法:同时调整旋转位置编码(RoPE)、SwiGLU 激活和残差加法与 RMSNorm 归一化计算,或者只调整 RoPE 相关计算。两种方法都在四个 Qwen 系列模型的数学 RL 实验中避免了默认 BF16 对照出现的训练崩溃。这里改善了训练稳定性,但没有消除训练与推理之间的全部数值差异。
https://arxiv.org/pdf/2610.32951
简讯
KnitTrans:提前接收轨迹,同时保留整批配额
RL 中,不同来源的训练样本生成速度不一样。如果等整批样本达到规定配比才开始训练,快来源也得等慢来源。KnitTrans 允许已完成的样本先组成小批次进入训练,同时为慢来源预留名额,保证整批最终仍能满足配比。这样,小批次可以暂时偏离目标比例,快来源也不会提前占满整批容量。
https://arxiv.org/html/2610.32389v1
Claude Code:压缩上下文后重新读取最新项目记忆
在长会话中修改了项目规则或记忆文件,Claude Code 自动压缩上下文后却可能仍读到旧内容。2026-10-27 发布的 2.1.311 修复了这一问题,涉及 CLAUDE.md 和 MEMORY.md。如果你会边工作边更新这些文件,这项修复能让压缩后继续的任务读到更新后的内容。
https://github.com/anthropics/claude-code/releases/tag/v2.1.311
CPU 绑核:统一内存访问,也会遇到共享缓存瓶颈
把线程固定到哪些 CPU 核心上,会影响它们是否争用同一组缓存。一项研究发现,SG2044 虽采用统一内存访问(UMA),每四个核心仍共享一组 L2 缓存。在论文的内存带宽测试中,把线程分散到不同 L2 簇,比集中使用同一簇的核心能更好地利用内存带宽。选核心时,除了看内存访问方式,还要看哪些核心共用缓存。
https://arxiv.org/html/2610.32632v2
GIFT:按梯度关系逐步撤去蒸馏指导
GIFT 将 GRPO 强化学习与教师模型的蒸馏指导结合:前者根据回答的奖励更新模型,后者指导每个 token 的预测。但两种训练信号可能把模型推向不同方向。GIFT 比较它们在各个 token 上的梯度,优先撤去冲突的蒸馏指导,再逐步减少接受指导的 token,最终只保留 GRPO。它调整的是哪些位置继续接受指导,保留位置的蒸馏强度不随覆盖范围一起减弱。
https://arxiv.org/html/2610.30796v1
FlashInfer:发布版收录融合 K/V 打包与 FP8 转换
准备 Attention 的键和值(K/V)时,先拼接张量、再转换精度,会多一次中间结果的读写。2026-10-24 发布的 FlashInfer 0.7.2.post1 为 Kimi K3 的 MLA Attention 预填充加入融合路径,将 K/V 拼接与 FP8 转换放进同一个内核,减少数据搬运。这条路径用于适配的 Blackwell GPU 和输入布局。
https://github.com/flashinfer-ai/flashinfer/releases/tag/v0.7.2.post1
混合精度求解:先完成相消,再把残差转成 FP32
残差衡量当前解还在多大程度上偏离方程。用低精度求解方程时,两个大小接近、符号相反的量若先被舍入,再相加,真正需要的小差值可能已经丢失。一篇三维 Poisson 方程求解论文遇到了这个问题:不同网格单元保存的残差分量相互抵消,先转成 FP32 会使迭代停滞。作者先用 FP64 汇总并平均这些分量,再转成 FP32。在论文测试的三次有限元和笛卡尔网格配置下,这一调整恢复了接近全 FP64 的收敛过程。
https://arxiv.org/html/2610.31496v1
经典回顾
在线 Softmax:最大值改变时,旧分母也要跟着缩放
这篇于 2018-05-08 首次提交的论文,让稳定 Softmax 少扫描一次输入。通常先找最大值,再把各项减去最大值后求指数和。作者把找最大值与累加指数和合在一次扫描中:每遇到更大的值,就按新旧最大值的差缩放已有的和,再加入新项。分块计算也能用同一规则合并结果。它解释了为什么分块处理时仍能得到统一的归一化分母。带着一个问题读:两个分块分别算好的分母,为什么不能直接相加?