AI 推理术语表
软件栈

StableHLO

也称为 StableHLO、HLO、MHLO

先用大白话

StableHLO 是一种标准化的中间表示,PyTorch、JAX 等框架把程序输出成这种格式,再由 XLA 编译器转成 TPU 机器码。

技术定义

StableHLO 是基于 MLIR 的可移植、带版本的算子集,在高层张量运算的层面描述机器学习程序,作为框架与 XLA 编译器之间的交接格式。

工程细节

在 TorchTPU 的编译路径中,TorchDynamo 和 AOTAutograd 捕获 FX 图,TorchTPU 把它降级为 StableHLO,XLA 再把它编译成 TPU 可执行文件。在 JAX 路径中,jax.jit 把程序追踪为同一种表示。由于 StableHLO 跨版本稳定,序列化后的程序可以稍后编译,或由不同版本的框架编译。它位于硬件之上、框架之下,因此不包含 MXU tile 尺寸的信息,padding 和布局决策由 XLA 之后再加。

为什么重要

共享的 IR 让 vLLM 和 SGLang 无论模型来自 PyTorch 还是 JAX,都能复用同一套编译器栈。这也意味着绕过 StableHLO 做手工调优的 Pallas kernel 必须以 custom call 的形式显式调用,编译器不会自动发现它们。

如何在 InferenceX 中解读

TPU InferenceX 预览中所有 Qwen3.5 397B 结果都经过 StableHLO 到 XLA 的路径。文章把它与 GPU PyTorch 路径对比,后者的 torch.compile 降级到 Inductor 和 Triton。