执行摘要
topk_softmax 内核新增 512 专家支持
PR body 指出需要为具有 512 个专家的模型(如 Qwen3.5-397B-A17B)启用融合单内核路径。此前 num_experts=512 时,Fallback 到默认分支,需要分配临时工作区(flattened softmax 结果),性能明显下降。
可快速合并。关注点在于阈值变更后,2048+ 专家模型仍正确使用 workspace。
无实质性讨论。
PR body 指出需要为具有 512 个专家的模型(如 Qwen3.5-397B-A17B)启用融合单内核路径。此前 num_experts=512 时,Fallback 到默认分支,需要分配临时工作区(flattened softmax 结果),性能明显下降。
可快速合并。关注点在于阈值变更后,2048+ 专家模型仍正确使用 workspace。
无实质性讨论。
sgl-kernel/csrc/moe/moe_topk_softmax_kernels.cu 的 topkGatingSoftmaxKernelLauncher 中添加 case 512: LAUNCH_SOFTMAX(T, 512, WARPS_PER_TB); break;,使得 512 专家也能调用专属模板特化,走融合单内核路径。needs_workspace 条件从 num_experts > 256 改为 num_experts > 512,确保 512 专家不走需要分配额外空间的回退路径。sgl-kernel/benchmark/bench_moe_topk_softmax.py 中 topk_range 增加 10,覆盖模型真实 topk 值。sgl-kernel/tests/test_moe_topk_softmax.py 中 topk 参数化增加 10。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
sgl-kernel/benchmark/bench_moe_topk_softmax.py |
基准测试 | modified | 4.82 |
sgl-kernel/tests/test_moe_topk_softmax.py |
测试 | modified | 3.42 |
sgl-kernel/csrc/moe/moe_topk_softmax_kernels.cu |
CUDA 内核 | modified | 2.92 |
sgl-kernel/csrc/moe/moe_topk_softmax_kernels.cu
core-logic
核心 CUDA 内核的 switch-case 分支和工作区阈值变更。
// 在 topkGatingSoftmaxKernelLauncher 的 switch 中新增 case 512
case 512:
LAUNCH_SOFTMAX(T, 512, WARPS_PER_TB);
break;
// 同时将 needs_workspace 阈值从 256 提升至 512,
// 确保 512 专家走融合内核路径而非 fallback 路径
const bool needs_workspace = !is_pow_2 || num_experts > 512;
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
变更仅涉及 kernel launcher 的 switch-case 分支和阈值常量,改动很小。风险极低。
针对 Qwen3.5-397B-A17B 等 512 专家模型,topk_softmax 延迟降低约 1.79x-4.25x,E2E 吞吐在高并发下提升约 7.24%。对其他专家数量的模型无影响。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论