AI 技术日报
本期重点:FP4 舍入可能让同一个 token 在训练端和生成端走向不同专家。另一篇论文把专家计算和 token 搬运分给不同的 GPU 单元,让数据一到就能开算。
重点
MoEResQ 让生成和训练用同一种办法补偿 FP4 误差
强化学习的生成端先产出回答,训练端再计算模型给这些回答的概率,用来决定怎样更新权重。混合专家模型(MoE)的路由器会为每个 token 选出得分最高的一组专家。即使路由器保留 BF16,前面各层的 FP4 舍入也会改变它收到的激活值。两个专家的分数接近时,微小变化就可能换掉入选的专家。这样,同一段回答在两端可能经过不同的专家,得到不同的概率。
一种补偿办法是算出原激活与量化值的差,把这份差值也量化,再乘以同一份量化权重,将结果加回原输出。作者发现,只在生成端补这一项,训练端仍可能为同一个 token 选到不同的专家。MoEResQ 让两端在相同的层采用同一种补偿,训练端的前向计算也加回这份结果。
作者用 verl 和 vLLM 对 Qwen3-30B-A3B 做数学强化学习,实验采用模拟量化。在只量化专家投影的设置下,AIME24 的得分从仅生成端补偿时的 37.39% 升至两端补偿时的 46.98%,BF16 对照为 48.23%。
https://arxiv.org/html/2611.04376v2
GC-MoE 给 token 搬运和专家计算各留一组 GPU 单元
专家分布在多张 GPU 上。每个 token 要先送到持有所选专家的 GPU。接收卡按专家分组做矩阵乘法。融合内核可以让两项工作同时进行,但负责搬运与负责计算的线程要分同一批寄存器和共享内存。在每张卡只有少量 token 的解码场景里,读取专家权重已经限制了矩阵乘法的速度,给它更多计算单元也未必能缩短这一层。
GC-MoE 用 CUDA Green Contexts 把 B300 的 148 个流式多处理器分成两组。20 个负责从其他 GPU 拉取 token,128 个负责专家计算和结果合并。搬运内核把数据写进接收卡的环形缓冲区,每准备好一块就发出信号。专家计算内核读到信号后可以处理这一块,后续 token 继续在传输。每轮结束时,接收计数在两份缓冲之间交替使用,下一轮可以写另一份,省掉为复用同一份计数而设置的跨卡等待。
在 8 张 B300 上,作者用 DeepSeek-V4.1-Flash 的路由专家配置测试两个算子,每卡 1 个 token,均通过 CUDA Graph 重放。以最慢卡的中位延迟计,GC-MoE 的单层算子耗时为 59.39 微秒,DeepGEMM 的 Mega MoE 为 70.63 微秒。这个差值来自两套完整算子的比较。除计算分区外,同步方式也有变化。
https://arxiv.org/html/2611.04222v1
简讯
verl 允许训练在权重快照就绪后继续
verl 合并了把权重更新拆成两个完成点的接口。对支持独立发布的后端,训练端准备好不会再被修改的权重快照后即可继续计算,生成端在后台装载这版权重。管理器仍等生成端装好上一版才发布下一版,避免更新交叠。合并的代码用测试后端验证了流程,接入生产传输的提案仍在审查。
https://github.com/verl-project/verl/pull/8542
CLEO 用开发题和调用记录筛选调查 Agent 的工具
CLEO 固定执行任务的模型,从只会查文件和运行隔离 Python 的框架起步。每次加工具或改流程,候选既要在开发题上提高得分,也要说明能否复用、能否审计,以及新增能力值不值得维护。一次尝试加了引用助手,执行记录显示 Agent 很少调用它,最终撤回。这个例子展示了如何用实际调用记录决定框架是否需要增加接口。
https://arxiv.org/html/2611.03434v1
PUD-LLM 用 DRAM 的空闲列提前做一部分投影
支持存内计算的 DRAM 可以让许多列同时运算,单次投影却未必用得满。PUD-LLM 把后续投影拆开,先拿已有的激活算一部分,把这部分排到当前投影没用到的列上。等注意力计算给出激活的增量,再算增量对应的投影,与先前的结果相加,并把结果换算到更新后的归一化尺度。论文用模拟器和性能模型估算解码延迟。
https://arxiv.org/html/2611.02401v1
QSGS 少选会带来相似梯度的样本
同一个目标能力可以有许多相关的指令样本,但有些样本会把模型参数推向近似的方向。QSGS 用梯度估计每个样本对目标的帮助,再按它与已选样本的梯度相似度扣分。在 Llama-2-7B 只用约 0.5% 候选样本的对照中,MMLU 得分从按梯度影响单独排序的 45.2 升至 47.9。
https://arxiv.org/html/2611.04059v1
分布式图算法在节点中途崩溃后重建局部视图
节点在一轮通信中途崩溃时,可能只有部分邻居收到消息。各节点若直接用收到的信息模拟原算法,重叠区域就可能算出互相矛盾的结果。论文让相邻存活节点构造能在重叠范围内对得上的部分视图。如果原算法在子图上也成立,就能保住检查范围内没有崩溃节点的局部约束。
https://arxiv.org/html/2611.04898v1
随机舍入的精度预算取决于最后用哪组参数
一项两层线性网络研究比较了训练结束时的参数和沿途参数的均匀平均。实验固定学习率,只对反向计算梯度所用的特征做随机舍入。若用最后一步的参数做预测,后期提高精度更有效。用平均参数做预测时,早期的舍入误差会经由更多次参数快照进入平均值,同一份精度预算反而应向早期倾斜。
https://arxiv.org/html/2610.41074v1
经典回顾
Megatron-LM 用交错调度缩短流水线空转
这篇 SC 2021 论文讨论怎样在多张卡上训练装不进单卡的模型。作者把模型按层分给多张卡,并让同一批的前向和反向使用同一版权重。为此,更新参数前要等流水线里的反向全部做完。每张卡若只负责一段连续层,流水线填满和排空时,一些卡就会等其他卡。交错调度让每张卡负责多个更短的层段,使流水线更早填满、也更早排空。代价是激活和梯度更频繁地跨卡传输。重读图 4 时,可以跟着一个微批次走一遍。每张卡从负责一个层段改成两个后,哪段等待缩短了,又多了哪些跨卡传输?