Meta 的 816B 稀疏模型搬上单台四芯片 TPU:整步合成一个内核,单请求每 token 快 1.94 倍
核心概要
Meta 的开源混合专家模型 Muse Spark Open 总参数 816B、每 token 约激活 42B,此前在 TPU v7 上服务时,一次验证步的耗时是单纯从 HBM 流式读取权重所需时间的 2.9 倍。SGLang-TorchTPU 把一次解码或验证步的全部 62 层写成一个 Pallas 程序,让权重、KV 与跨设备传输都排在计算之前发出。单请求下每输出 token 从 3.78 ms 降到 1.95 ms,两个并发请求时为 1.85 倍,并发继续增大时收益收窄。
深度剖析
在单台四芯片 TPU v7 主机上,Muse Spark Open 的一次解码或验证步现在由覆盖全部 62 层的一个内核完成,权重从 HBM 到矩阵单元的搬运不再被内核边界打断。 此前的原生路径把每层拆成多个内核加集合通信,每个边界都会中断权重流,验证步耗时达到流式读取权重所需时间的 2.9 倍。 在 GSM8K 上、两条路径都启用 DFlash2 推测解码时,单请求每输出 token 为 1.95 ms 对 3.78 ms,两个并发请求为 1.85 倍,并发增大后差距缩小。
内核自己调度每一步的数据搬运:稠密权重经一个跨层预取的瓦片环流入,专家权重在路由结束后立即请求,张量并行的部分和由内核内的远端 DMA 直接写入所属设备。 原生路径在每次矩阵乘后另起一次集合通信,权重与部分和都要等前一步结束才能动。 约十个瓦片在途时每设备可持续 3.34 TB/s,而单条 DMA 流只有 1.13 TB/s;一次小规模远端写入约 3 µs。
注意力循环去掉了在线 softmax 的运行最大值,因为 Muse Spark 对 q、k 做无学习权重的 RMS 归一化并给 q 固定增益,使注意力分数绝对值不超过 43.8,远离 f32 指数溢出点。 运行最大值把每个 KV 块串成一条链,前一块的最大值未知时后一块无法开始指数运算,微基准中每块约 0.17 µs。 在生产形状的微基准中,更长分块加独立流把注意力时间缩短 2.4 倍,去掉运行最大值后达到 3.9 倍;服务器中两个请求、500K 上下文时每请求解码速度提高 18%。
启示与展望
演示范围是单台四芯片 TPU v7 主机、8 个设备上的张量并行,模型为 Muse Spark Open,负载为 AgentX 的 1M 上下文轨迹集;GB200 的对比点取自 InferenceX 截至 2026-11-02 的公开结果,成本按每 TPU v7 芯片小时 1.21 美元与每 GB200 GPU 小时 1.86 美元计算。
集合折叠与序列并行预填充改变了部分归约的顺序,结果不再逐位一致,文中称精度检查已覆盖这些改动;KV 写入流水与专家循环拆分则保持逐位一致。并发增大时整步内核相对原生路径的收益收窄,高并发下预填充成为新的限制。
