llama.cpp 项目已将 RMS_NORM 和 SCALE 操作融合为单个 CUDA 内核,以减少主机/驱动程序开销。此前,单独的 SCALE 节点增加了额外的内核启动次数,这在普通批处理中影响微乎其微,但在草稿 MTP 推测解码期间显著增加了延迟。
- 该融合为 rms_norm_f32 添加了 do_scale 标志,使融合路径能够共享内核、归约和启动器,同时保持逐位数值等价性。
- 在配备 Qwen3.8-27B 的 2x GTX 1080 Ti 设置下,草稿 MTP 条件下,冷预填充吞吐量在 8000 个 token 时提升了 4.2%,在 20000 个 token 时提升了 4.8%。
- 每个 ubatch 的启动次数从 1032.9 + 841.7 恢复至 978.9 + 799.7,与之前的基线计数一致,且未改变 GPU 操作总和。
- RMS_NORM_SCALE、NORM_SCALE 及相关操作的后端测试在两块 GPU 上均通过,困惑度与未融合构建版本保持一致。
该优化通过减少内核启动的累积成本,专门提升了推测解码场景中的推理速度。