SGLang 登上 TPU:Meta 生产验证,RL 训练追平 GPU

10 月 20 日,RadixArk、Google 和 Meta 三方联合开源了 SGLang-TorchTPU:把 SGLang 整套服务栈搬上 Google Cloud TPU 的原生 PyTorch 后端。发布方给的三个卖点都很硬——Meta 已经在生产环境大规模跑通,RL 训练在 TPU 上端到端跑通,贡献者还能申请免费 TPU 算力池。

这篇的重点不是”TPU 能跑开源模型”,同一天 vLLM 也官宣了自家 TorchTPU 后端。真正的信息量在两件事:一套为 GPU 写的推理引擎代码,如何在不 fork 的前提下落到非 CUDA 硬件上;以及为了这件事,工程上付出了什么代价。

SGLang 核心(调度器、RadixAttention、API Server)跑在 sglang-tpu 插件之上,插件提供 Pallas 分页注意力、KV 缓存池、MoE 分组矩阵乘和图执行器,下层是 TorchTPU,最底层是 Cloud TPU v7x(图源:LMSYS 官方博客 Figure 1)

架构:调度器不动,只换硬件要交的那几个作业

SGLang-TorchTPU 是一个 out-of-tree 插件。装上 sglang-tpu 包后,它通过 sglang.srt.platforms 入口点向 SGLang 注册一个 TPU 平台,用 SGLANG_PLATFORM=tpu_oot 选中。

关键在于分工:调度器、RadixAttention、API Server 全部是 SGLang 原版的,插件只补 SGLang 本来就要求每个硬件平台提供的四样东西——注意力后端、KV 缓存池、MoE 内核、图执行器。

执行模型也照搬 GPU 的路子:每个 TPU core 跑一个独立的 PyTorch 进程,模型在 torch.compile 下编译后下沉到 XLA。

这里有个和 CUDA 生态明显不同的工程细节:没有 graph capture。取而代之的是”桶化”——把每次 forward 补齐到固定的 token 数桶(prefill 阶段)和固定的 batch size 桶(decode 阶段),每个桶编译一次,后续请求按形状直接派发到编译好的程序。

注意力和 MoE 跑在 Pallas 内核上,以 torch.library 自定义算子的形式注册,在编译图里被 Dynamo 当作不透明调用:分页 KV 缓存上的 ragged paged attention,以及按专家分组排序后的 grouped matmul。

一句话总结这套架构的价值:新模型和新功能只要进 SGLang 主仓,理论上就能通过单一实现落到 TPU 上。

KV 缓存怎么搬:边算边传,只留最后一块

这是全文工程含量最高的部分。当 KV 缓存需要离开设备——无论是卸载到主机内存,还是跨主机的 prefill/decode 分离部署——数据走 TPU Sync,Google 的开源 TPU DMA 库。

场景 传输方式 原文描述
KV 卸载到主机 整页搬运,HBM ↔ 主机 pinned 内存池 直接走 PJRT DMA
跨主机 PD 分离 **consumer-pull**(消费端拉取) prefill 每完成一个 chunked-prefill 步骤、提交一批页,就”广播”这批页;decode 端在下一块计算的同时把这一块拉走
前缀缓存命中 **不传** decode 端自己已有的页,一个字节都不发
不同 TP 规模之间 传输途中重分片(reshard) prefill 各 rank 按步长把自己的 KV head 切片推进 decode rank 的页布局

这套设计的直接收益:prefill 结束时,只剩最后一块 KV 需要搬运。多轮 agent 会话里前缀缓存命中的部分完全免传输。

KV 缓存传输示意:decode 在下一块计算时拉走上一块,只有最后一块需要等待;TP 16 到 TP 8 之间按步长重分片 KV head;卸载路径通过 DMA 在 TPU HBM 与主机内存池之间搬运 KV 页(图源:LMSYS 官方博客 Figure 2)

功能与模型覆盖:agent 负载是明线

原文列出的首发功能,按用途整理如下(全部为原文所列,标注 experimental 的是原文标注):

方向 首发可用功能
核心服务 OpenAI 兼容 API、连续批处理、chunked prefill、结构化输出与函数调用(experimental)
Agent 与多轮 RadixAttention 前缀缓存(含混合滑窗与线性注意力模型)、KV 缓存卸载到主机内存、agent 工具调用负载每晚跑 CI
低延迟交互 投机解码,支持 EAGLE-3、DFlash、DFlash2、DSPark 和 MTP 草稿模型
高吞吐批处理 数据并行注意力 + 专家并行
长上下文 FP8 KV 缓存、prefill 与 decode 的上下文并行
PD 分离 prefill 与 decode 分主机部署,跨不同 TP 规模做 KV 重分片
多模态 支持图像输入的视觉语言模型:Qwen3-VL、Qwen3.5-VL、Kimi MoonViT、Gemma 4 vision
超大模型 跨主机张量并行 + 专家并行 + 数据并行注意力;FP8、MXFP4、INT4 权重;流水线并行与 NVFP4 MoE(experimental)

首发模型名单(原文表格,含类型):

模型 类型 模型 类型
Muse Spark Open LLM Qwen3.8 LLM
GLM-5.3 Flash / GLM-5.3 LLM Gemma 4 LLM
Kimi K3 LLM MiniMax H3 Diffusion
DeepSeek V4 LLM Wan2.2 Diffusion
Ling 3.1 Flash / Ling 3.0 系列 LLM

名单之外还列了 gpt-oss、Qwen3-Coder-480B、Qwen3.5、DeepSeek-V3.1 和 R1、Kimi-K2.6、MiMo-V2.5-Pro、Qwen3-VL。

值得单独指出的一点:首发名单 9 行里,7 行来自中国团队的开源模型(GLM、Kimi、DeepSeek、Ling、Qwen、MiniMax、Wan,按公开归属判断),表内唯一的非中国来源是 Gemma 4。名单之外还列了 gpt-oss、Qwen3-Coder-480B、Qwen3.5、DeepSeek-V3.1 和 R1、Kimi-K2.6、MiMo-V2.5-Pro、Qwen3-VL。

Google 自己的配套博文提到,TorchTPU 生态在 Ironwood 上跑 Qwen 3.5 397B-A17B(8k/1k、fp8)时给出了 2.01 美分/百万 token 的成本数据。

排期上,原文说 DeepSeek V4.1 Flash 和 Reflection Beam 紧随其后,从 2027 年第一季度起,新开源模型目标是 Day 0 支持。

可靠性:193 个 TPU 测试进 CI,矩阵由测试生成

这部分是原文里最容易被跳过、但对运维最有用的信息。

规则很直接:凡是标为 supported 的模型和功能,都必须在真实 TPU 硬件上有 CI 测试,支持矩阵直接由测试注册生成;还在验证的一律留在 Experimental。

支持等级流转:Experimental 靠每晚测试升到 Supported,Supported 靠准确率和性能测试升到 Optimized,全部在 TPU v7x 上每 PR、每晚执行(图源:LMSYS 官方博客 Figure 3)

当前 CI 规模(原文数字):

项目 数据
PR 套件运行环境 单机 TPU v7x 切片
CI 覆盖模型数 **15 个**(单机 + 多机 v7x)
已注册 TPU 测试数 **193 个**
准确率评测集 GSM8K、GPQA、AIME、MMLU-Pro、MMMU
功能覆盖 投机解码、前缀缓存、KV 卸载、DP 注意力、多机执行、PD 分离 + KV 重分片
组合测试 投机解码 × PD 分离、前缀缓存 × KV 卸载
Agent 负载 多机部署上的工具调用负载,每晚跑

RL 训练实测:4 颗芯片追平 6 张 H200

服务只是一半,训练这一半也得成立。原文用同一套 PyTorch 栈在 TPU 上端到端跑了强化学习:TorchTitan 做训练器(无 TPU 专用模型代码),SGLang-TorchTPU 生成 rollout,RadixArk 的 RL 框架 Miles 负责把新权重从训练器同步回推理引擎。

Miles 在单台 TPU v7x 上的 RL 拓扑:SGLang-TorchTPU 用 2 颗芯片生成 rollout,TorchTitan 用 2 颗芯片训练,新权重通过共享内存、磁盘或 ICI(计划中)回传引擎(图源:LMSYS 官方博客 Figure 4)

权重回传三条路径,原文给了明确评价:

路径 适用 原文评价
共享内存 训练器与引擎同主机 当前实验采用
磁盘 可跨主机 最慢
**ICI** TPU 互联,设备到设备 计划中,实测比共享内存**快约 50 倍**

实测设置:Qwen3-4B 用 GRPO 在 DAPO-Math-17k 上训练,单台 TPU v7x 4 颗芯片(2 训练 + 2 rollout),对照组是 6 张 H200,两边各跑两个种子做对齐。

Qwen3-4B GRPO 在 DAPO-Math-17k 上的对比:6× H200 GPU 对 4 颗 TPU v7x 芯片(图源:LMSYS 官方博客 Figure 5)

结果按原文口径:TPU 上的 reward 和响应长度曲线在种子间波动范围内与 GPU 一致,AIME-24 在评测噪声范围内。Miles 的 TPU 训练目前是 preview 状态。

后续计划原文列了六条:更大模型(含 Qwen3-30B-A3B 与路由重放)、跨主机训练、改用 ICI 传权重、缩小与 GPU 的 step time 差距、更长周期的对齐验证、训练与推理之间逐位一致的 log-probs。

小夏点评

1. 真正的看点是”插件化”这条路跑通了。 调度器、RadixAttention、API Server 一行不改,硬件层只交四个作业(注意力后端、KV 池、MoE 内核、图执行器),就能让 GPU 起家的引擎落到 TPU 上。同一天 vLLM 的 TorchTPU 插件用的是同一个模式。这意味着推理引擎与加速卡正在解耦——选型时可以把”引擎”和”卡”当成两个独立变量来谈。

2. RL 训练这组数据规模很小,但战略意义很大。 4B 模型、4 颗芯片对 6 张 H200,谈不上性能结论,原文自己也只说”早期学习行为接近 GPU 基线”。真正值钱的是 rollout → 训练 → 权重回传这个闭环在非 NVIDIA 硬件上跑通了,尤其是 ICI 权重同步比共享内存快约 50 倍这一条——互联原生传权重,是所有自研加速卡最需要的能力,这里给出了参照。

3. 对中国 IT 运维和开发者的启示。 第一,首发模型名单里中国开源模型占了 7 行,Google 生态愿意为它们做 Day 0,意味着国内团队的模型选型开始反向影响海外加速卡的路线图,谈算力时手里的筹码比两年前多。第二,工程账要算细:桶化编译换来的是首次启动要编译几分钟(原文建议用 VLLM_XLA_CACHE_PATH 复用编译产物),冷启动成本要写进服务等级里。第三,判断这类新后端能不能上生产,看 CI 覆盖比看功能列表更靠谱——193 个测试、15 个模型、带组合测试和每晚回归,这套门槛才是国内团队评估异构算力供应商时该照抄的清单。

参考链接

  • LMSYS Org 原文《SGLang-TorchTPU: PyTorch-Native Production Serving on TPUs》(2026-10-20):https://www.lmsys.org/blog/2026-10-20-sglang-torchtpu/
  • Google Developers Blog《Announcing New vLLM and SGLang Inference Engines on TPU》(2026-10-20):https://developers.googleblog.com/announcing-new-vllm-and-sglang-inference-engines-on-tpu/
  • vLLM Blog《Introducing vLLM TorchTPU》(2026-10-20):https://vllm.ai/blog/2026-10-20-vllm-torchtpu
  • GitHub 仓库 sgl-project/sglang-torchtpu:https://github.com/sgl-project/sglang-torchtpu
  • Google 开源 TPU DMA 库 tpu-sync:https://github.com/google/tpu-sync
  • RadixArk RL 框架 Miles:https://github.com/radixark/miles
  • 支持矩阵 SUPPORT.md:https://github.com/sgl-project/sglang-torchtpu/blob/main/SUPPORT.md
  • 您可能还喜欢...

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注