Muse Spark Open megakernel:Blackwell单请求解码破1109 tok/s
本文详解SGLang为何转向megakernel架构,并介绍为Muse Spark Open从零用CUDA C++与PTX构建的megakernel实现。该方案将Blackwell GPU上的单请求解码速度从517 tok/s提升至1109 tok/s,性能提升2.1倍。通过单层单核、12个warp分工、权重全缓存预取
SGLang与ML基础设施的目光正投向规模更大的GPU核——megakernel。有人从零开始,用CUDA C++和PTX为
Muse Spark Open写出这样一个megakernel,把Blackwell GPU的单请求解码速度从517 tok/s拉到1109 tok/s。

Muse Spark Open沿用传统MoE结构,每个token会路由到256个专家中的8个,专家权重以4位NVFP4格式存放,解码层共62个。
megakernel是什么?
普通的GPU核一次只干一件事,服务引擎跑完一个解码步大约要发射1450个核。优化不到位时,GPU在核与核之间就会闲下来。megakernel的思路是让一个核常驻所有SM,多种任务同时在里面跑,张量核、TMA、NVLink这些引擎一直保持满速。

模型与新的张量并行
模型按TP8切分到8张GPU上。传统TP在两个MoE GEMM之间只做一次all-reduce;新方案则在N维上把两个GEMM都切开,加入fp4 all-gather与bf16 all-gather。通信多了一步,但总通信量反而更低,扩展性也更好。


megakernel怎么实现
每层只发射一次核,范围从本层attention一直管到下一层的qkv投影和KV写入。每个核在144个SM上铺开12个warp,KV加载、权重预取、张量核计算、SwiGLU以及all-gather/reduce分别由不同warp承担。

性能与投机解码
单步解码耗时从12.9 ms压到5.9 ms,核数量由1450降到97。再配上DFlash V2 draft模型,每步验证16 token,平均接受6.6 token,最终跑到1109 tok/s。

megakernel的内部优化
做法包括权重全缓存预取、指令缓存管理、多级同步(shared memory mbarrier、HBM flag、NVLink直接store),以及不带fence的数据同步,几项合起来让重叠接近完美。




展望
接下来,Muse Spark Open会支持更大的批次,产品方向则朝GPU操作系统演进。