← Briefs

AI 技术日报

本期重点:性能分析该采集哪些计数器,可以交给优化结果反过来决定;RL 的训练端与采样端概率接近,也可能看不见 FP32 主权重与 BF16 采样副本之间的滞后。经典回顾用 Coz 追问:耗时最多的代码,改快后一定能缩短整个任务吗?

重点

AutoProfiler:用优化结果学习该测哪些硬件指标

让模型优化 GPU 内核时,性能计数器能提供瓶颈线索,但采集有成本,更多指标也未必带来更好的改写。2026-10-27 提交的 AutoProfiler 把“测什么”纳入学习:先测计算单元利用率和显存吞吐,再根据读数决定追加哪些指标,让不同内核获得不同的性能信息。

它用一棵决策树组织测量。构建阶段,语言模型提出两类修改:给一类内核补充指标,或把表现不同的内核分到不同分支。作者分别按新旧树采集同一组内核的信息,交给模型改写代码并实测,只有优化收益达到要求才接受修改。树冻结后,测量与分支选择按规则执行,收集完信息再调用一次模型改写内核,不必每一步都让模型决定下一项测量。

在四张 RTX 4090D 的实验环境中,作者固定改写模型、流程和随机种子,比较 48 个 KernelBench 内核。相对参考实现的几何平均加速,固定指标方案为 1.314 倍,自适应选择为 1.379 倍。它把测量策略的评价落到最终代码的正确性和速度。

https://arxiv.org/html/2610.36576v1

Fair Cast:小更新留在主权重里,采样模型却迟迟不动

RL 后训练常用 FP32 主权重累积优化器更新,再导出 BF16 副本生成回答。BF16 相邻可表示值之间有间隔,细小更新可能尚未跨过舍入边界,因此留在主权重里,却暂时没有改变采样模型。Fair Cast 在 Qwen3-1.7B、学习率 10−610^{-6} 的实验中观察到,每步只有约 0.4%–0.5% 的采样权重改变。

如果训练前向也使用同样舍入后的权重,训练端与生成端的概率仍可接近,常用的两端概率比较就看不见这层滞后。Fair Cast 将导出改为随机舍入:按主权重在两个相邻 BF16 值之间的位置,决定导出哪一个值,使小更新也能改变导出结果的概率。训练前向使用生成回答时的同一份副本,反向则将导出视为恒等映射,把梯度传给 FP32 主权重;只改舍入而不保持这一对应关系,论文中的部分训练会崩溃。

作者将每组方案放在一张 H100 上运行。在 Qwen3-0.6B、AdamW、150 步的 GSM8K 实验中,三个种子的平均准确率由就近舍入的 71.3% 升至 76.4%。这里的无偏指权重舍入的期望,不表示经过非线性网络后,策略概率也严格无偏。

https://arxiv.org/html/2610.41073v1

简讯

MemX:各流水线阶段可以采用不同的重计算策略

异构训练中,算得快的 GPU 未必有足够显存容纳更多层。MemX 联合搜索层数分配与各阶段的重计算策略:显存紧张的阶段多重算,显存宽裕的阶段多保存中间结果,再同时比较迭代耗时、峰值显存和设备间显存使用差异。它把“能装下”和“谁会拖慢流水线”放进同一次配置搜索。

https://arxiv.org/html/2610.41525v1

Preflight Bench:点击前先确认目标还在原处

操作电脑的 Agent 看完截图再规划,页面可能已改变。Preflight Bench 在专门让元素移动的测试页面中,用目标区域的像素比较发现 82% 的失效点击,误报率为 4%,约耗时 0.3 秒。检查失败后应重新截图规划,原目标可能已被移除或遮住;沿用旧计划微调坐标仍可能点错。这项检查回答位置是否仍有效,不能代替操作后的结果核验。

https://arxiv.org/html/2610.39282v1

MI300X:加载停顿可能发生在指令发射之前

AMD 在 2026-11-02 的文章中,用 MI300X 汇编实验说明:同步推进的线程集中发出显存加载,会争用指令发射资源。把相邻线程的读取合并、提高缓存命中率后,停顿仍可能存在;把可用计算穿插到加载之间,可以分散请求压力。诊断时要分清请求尚未发出,还是已经发出、正在等待数据返回。

https://rocm.blogs.amd.com/software-tools-optimization/scheduling_VMEM_loads_gfx942/README.html

Dual DeltaNet:更新内容之外,也调整内容占据的位置

线性注意力把历史压进固定大小的关联矩阵,不同记忆会互相干扰。传统更新按当前检索线索纠正对应内容;Dual DeltaNet 增加一次从内容特征出发的读取,查看相关内容分布在矩阵中的哪些关联位置,再调整这些位置的占用。它让同一块记忆既能纠正存了什么,也能重新组织相关内容怎样分布。

https://arxiv.org/html/2610.38578v1

PhOSv1:让休眠模型共享 GPU 上下文

模型休眠后即使释放权重,启动 GPU 工作所需的 CUDA 上下文和内核代码仍可能占用显存。PhOSv1 将 GPU 调用转交中央服务,共享驱动上下文并复用重复内核代码;不能去重、却能快速创建的内部缓冲区,则等唤醒时重建。论文限定一张 GPU 同时只唤醒一个引擎,解决的是保留多个待命进程的运行时成本。

https://arxiv.org/html/2610.39999v1

numoracle:按输入与计算精度推导可接受误差

低精度内核测试使用固定容差,可能放过错误,也可能拒绝更准确的实现。numoracle 从标注了各步精度的参考程序出发,追踪误差怎样传播、哪些运算共用同一项误差,为每个输出推导接受范围,再检查结果是否落在目标格式允许的舍入区间。其保证依赖明确的硬件、取值范围和舍入假设,让容差有可检查的计算依据。

https://arxiv.org/html/2610.38983v1

经典回顾

Coz:改快一段代码,整个任务能快多少?

SOSP 2015 的旧作 Coz 指出,代码占用多少时间,并不直接说明优化它能带来多少收益;并行任务中,另一条执行路径可能很快成为新瓶颈。它通过暂时放慢其他并发线程,模拟目标代码相对变快,从实验计时中扣除人为暂停,再计算任务完成速率或延迟。现在读它,可以把性能分析从“哪里慢”推进到“改哪里才影响目标指标”。带着一个问题读:两条耗时接近的线程都必须结束时,为什么只优化稍慢的一条,收益很快就会停住?

https://sigops.org/s/conferences/sosp/2015/current/2015-Monterey/090-curtsinger-online.pdf