Prhub

#22046 Revert "[Kernel] Fuse temperature + softmax in sampling for decode speedup"

原始 PR 作者 BBuf 合并时间 2026-04-03 21:32 文件变更 5 提交数 1 评论 1 代码增减 +5 / -787

执行摘要

回滚融合采样内核,恢复标准 PyTorch 温度缩放和 softmax 操作。

PR body 仅声明 'Reverts sgl-project/sglang#20501',未提供具体原因。关联Issue #20501 描述了原PR的动机是减少解码延迟,但回滚的动机在材料中未明确说明,可能涉及融合内核的正确性、性能或兼容性问题。

建议技术管理者关注此次回滚背后的根本原因(如性能评估或bug发现),以及是否计划后续优化。工程师可精读以理解融合内核的潜在问题,并学习代码回滚和性能权衡的决策过程。

讨论亮点

review中仅有一条来自gemini-code-assist[bot]的评论,指出sampler.py中'# In-place op to save memory'注释具有误导性,因为torch.softmax并非原地操作,且logits[:] = ... 导致冗余数据复制。建议直接赋值结果以避免拷贝。该评论未在材料中显示是否被采纳,PR已合并。

实现拆解

实现上,本PR移除了五个文件:融合内核实现(fused_sampling.py)、基准测试(bench_fused_temperature_softmax.py)和单元测试(test_fused_temperature_softmax.py)。在python/sglang/srt/layers/sampler.py中,删除了融合内核的条件调用,恢复为标准的logits.div_(sampling_info.temperatures)后接torch.softmax。在python/sglang/srt/model_executor/model_runner.py中,移除了_warmup_fused_sampling函数及其调用。

文件 模块 状态 重要度
python/sglang/srt/layers/fused_sampling.py sampling removed 8.0
python/sglang/srt/layers/sampler.py sampling modified 7.0
test/registered/sampling/test_fused_temperature_softmax.py testing removed 5.0

关键符号

forward in python/sglang/srt/layers/sampler.py _warmup_fused_sampling in python/sglang/srt/model_executor/model_runner.py

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

优化 softmax 操作的内存使用 style

gemini-code-assist[bot] 评论指出注释 '# In-place op to save memory' 具有误导性,因为 torch.softmax 不是原地操作,且 logits[:] = ... 导致冗余数据复制。建议直接赋值结果以避免拷贝,提升效率。

结论:未在材料中显示是否采纳该建议,评论状态为 COMMENTED。 · 待处理

风险与影响

风险包括:

1) 性能回归:移除融合内核可能增加解码延迟,尤其对大词汇量模型(如Llama 3 128K);
2) 正确性风险:恢复原始代码需确保与融合内核行为一致,sampler.py中的变更直接影响采样逻辑;
3) 测试覆盖减少:移除了针对融合内核的单元测试,降低了采样路径的测试完整性;
4) 预热逻辑移除:model_runner.py中移除_warmup_fused_sampling可能影响模型启动时的内核编译性能。

对用户:解码速度可能下降,影响推理吞吐量,特别是对于大型模型部署。对系统:简化了代码库,减少了自定义Triton内核的维护复杂性和潜在bug,可能提升稳定性。对团队:需要重新评估性能优化策略,并可能在未来引入替代方案;此次回滚揭示了性能调优的迭代过程。

性能回归 测试覆盖减少 核心路径变更

关联 Issue

#20501 [Kernel] Fuse temperature + softmax in sampling for decode speedup

完整报告

参与讨论