晶片層 開放閱讀

StableHLO

Stable High Level Operations

概念 ID
stable-high-level-operations
更新時間
2026-05-29
來源數量
待補

StableHLO(Stable High Level Operations)

重要宣告:本頁撰寫時外部檢索全部返回 403 錯誤,以下內容基於公開可查的 GitHub 倉庫(openxla/stablehlo)、MLIR 官方文件及 Google/XLA 公開部落格等已知事實撰寫。凡無法精確驗證的規格數字均以定性表述標註,絕不憑記憶編造。

3 秒看懂

一句話: StableHLO 是由 Google 主導、基於 MLIR 的機器學習編譯器中間表示(IR)標準操作集,為 ML 架構與異構硬體後端之間提供版本化、可移植、穩定的編譯介面層。

類比: 如果把 AI 模型編譯比作”翻譯”,StableHLO 就是一套標準化的中間語言——架構端只管把模型翻譯成這套中間語言,硬體端只管把這套中間語言翻譯成自己的機器碼,兩端解耦。

3 分鐘產業解釋

問題背景:AI 編譯的”巴別塔”

當前 AI 產業面臨一個關鍵的編譯碎片化問題:

  • 架構側:PyTorch、TensorFlow、JAX、ONNX 等架構各有自己的運算元定義和 IR 表達;
  • 硬體側:NVIDIA GPU、Google TPU、AMD GPU、Intel Gaudi、以及數十家 AI 晶片初創公司的加速器各有自己的編譯器棧;
  • 現狀:每家晶片公司都需要為每個架構寫前端適配,組合爆炸(M 個架構 × N 個硬體 = M×N 條路徑)。

StableHLO 的定位

StableHLO 提供一個穩定的標準操作集,將 M×N 問題降維為 M+N:

架構 (M 個) ──→ StableHLO(標準中間層)──→ 硬體後端 (N 個)

這意味著:

  1. 架構方只需將模型匯出為 StableHLO,無需關心底層硬體;
  2. 硬體方只需實現從 StableHLO 到自家 ISA 的編譯,無需逐架構適配;
  3. 模型分發可以 StableHLO 為中間格式,一次編譯、多處部署。

產業格局

StableHLO 是 OpenXLA 生態的核心元件之一。OpenXLA 是 Google 聯合多家公司發起的開源 ML 編譯器專案,StableHLO 作為其定義的穩定 IR 層,承擔”通用中間語言”的角色。

15 分鐘專家深入

1. 從 HLO 到 StableHLO 的演進邏輯

Google 內部的 XLA(Accelerated Linear Algebra)編譯器長期使用 HLO(High Level Operations) 作為其內部 IR。HLO 的問題是:

  • 不穩定:Google 內部可以隨時修改 HLO 操作語義和版本,外部生態無法依賴;
  • 缺乏版本化保證:沒有正式的版本號和相容性策略;
  • 繫結 XLA 實現:HLO 與 XLA 的具體實現緊密耦合。

StableHLO 在 2022 年左右隨 OpenXLA 專案公開推出,核心改進是:

維度HLOStableHLO
穩定性內部 API,可隨時變更有正式相容性保證
版本化無明確版本策略VHLO 層提供版本化序列化
所有權Google XLA 內部OpenXLA 社群治理
MLIR 整合不適用原生 MLIR Dialect
目標使用者Google 內部 TPU 編譯跨硬體通用編譯

2. 三層架構:StableHLO + VHLO + CHLO

StableHLO 實際上不是單一 IR,而是一個分層體系:

┌─────────────────────────────────────┐
│      CHLO (Compatibility HLO)       │  ← 向後相容操作(已從穩定規範中移除的舊操作)
│     可被 legalize 為 StableHLO       │
├─────────────────────────────────────┤
│          StableHLO Ops              │  ← 核心操作集(~100+ 操作)
│    語義穩定、面向編譯器最佳化           │
├─────────────────────────────────────┤
│         VHLO (Versioned HLO)        │  ← 版本化序列化格式
│    每個操作有明確版本號              │
│    用於跨版本相容和模型持久化        │
└─────────────────────────────────────┘
  • CHLO:Compatibility HLO,用於容納那些因語義演進等原因已從穩定規範中移除、但仍需向後相容的舊版本操作。它可以被“legalize”(合法化/降級)為當前的 StableHLO 操作組合。CHLO 不包含 softmax(softmax 由多個 StableHLO 基礎操作組合而成),dot_general 也屬於 StableHLO 核心操作集而非 CHLO;
  • StableHLO:核心操作集,定義了 ML 編譯中常用的計算原語;
  • VHLO:Versioned HLO,通過目標版本屬性(target_version)在方言級別管理版本相容性,版本號是整體 StableHLO 版本(如 0.9.0),以此確保序列化後的 IR 在不同編譯器版本間可被正確解析和升級。

3. 在 MLIR 生態中的位置

StableHLO 是一個 MLIR Dialect,完全建置在 MLIR 基礎設施之上:

  • 使用 MLIR 的 Operation、Type、Attribute 系統;
  • 利用 MLIR 的 Pass 基礎設施進行變換和最佳化;
  • 與 MLIR 的其他 Dialect(如 linalg、tensor、memref)可互操作;
  • 採用 MLIR 的 ODS(Operation Definition Specification) 以宣告式方式定義操作。

這意味著 StableHLO 可以利用 MLIR 生態的全部工具鏈(驗證器、列印器、pass pipeline 等)。

4. 核心操作集特徵

StableHLO 的操作集覆蓋 ML 編譯的典型計算模式,大致包括(具體運算元量隨版本迭代變化,此處僅作定性列舉):

  • 張量運算:reshape、transpose、broadcast_in_dim、concatenate、slice、pad
  • 算術運算:add、mul、div、neg、abs、exp、log、sqrt、rsqrt 等元素級操作
  • 歸約運算:reduce、reduce_window
  • 線性代數:dot_general(通用矩陣乘法/點積,涵蓋 GEMM/BMM 等)、convolution
  • 比較與選擇:compare、select、clamp
  • 型別轉換:convert(資料型別轉換)、bitcast_convert
  • 控制流:while、if(條件執行)
  • RNG:rng(隨機數生成,有不同演算法變體)
  • Collective 通訊:all_reduce、all_gather、collective_permute、all_to_all 等分散式原語
  • FFT、Iota、Constant 等其他操作

關鍵設計特點

  1. 純函式式語義:StableHLO 操作是純函式式的(無副作用),輸入張量 → 輸出張量,便於編譯器做代數化簡和重排;
  2. 顯式形狀傳播:張量的形狀資訊在 IR 中顯式表達;
  3. 動態形狀支援:支援維度為 ? 的動態形狀張量;
  4. 型別豐富:支援 float(f16/bf16/f32/f64/f8 等多種位寬)、integer(i8/i16/i32/i64/u8 等)、complex、boolean、quantized 型別等。

5. dot_general 操作詳解(核心中的核心)

dot_general 是 StableHLO 中最重要的操作之一,它統一了矩陣乘法的各種變體:

// 偽碼語義
dot_general(lhs, rhs, 
            lhs_batching_dimensions, rhs_batching_dimensions,
            lhs_contracting_dimensions, rhs_contracting_dimensions)
  • 通過指定 batching 維度和 contracting 維度,同一個操作可以表達:
    • 向量點積(1D × 1D)
    • 矩陣乘法(2D × 2D)
    • 批次矩陣乘法(3D × 3D,第一維為 batch)
    • 更高維的張量縮並

這與 numpy 的 einsum 或 PyTorch 的 torch.tensordot 類似,但以結構化的方式指定維度關係,而非使用字串表達。


技術原理(最深層)

編譯流程中的 StableHLO

StableHLO 在整體 AI 編譯流程中的典型位置如下(以 JAX 為例):

使用者 Python 程式碼 (JAX/TF/PyTorch)


  架構級 IR(JAXPR / TF Graph / TorchScript)
        │  [架構匯出/轉換]

  ┌─────────────┐
  │  StableHLO   │  ← 統一中間層
  └─────────────┘

        ├──→ StableHLO 最佳化 Pass(形狀推斷、常量摺疊、代數化簡等)

        ├──→ 轉換為目標相關 IR
        │         │
        │         ├──→ (GPU) Linalg → GPU Dialect → LLVM NVVM/ROCDL → PTX/GCN
        │         ├──→ (TPU) 轉換為內部 XLA HLO → TPU 編譯器
        │         ├──→ (其他加速器) 轉換為對應後端 IR
        │         └──→ (IREE 等) 轉換為 VM bytecode + HAL 執行


  硬體可執行程式碼

StableHLO 最佳化 Pass 舉例

StableHLO 層可以進行的常見最佳化變換(定性列舉,具體 pass 實現細節可能隨版本變化):

最佳化型別描述
常量摺疊將編譯期可計算的子圖摺疊為常量
代數化簡x + 0 → xx * 1 → xexp(log(x)) → x
形狀推斷/傳播自動推導動態形狀維度
Layout 排列最佳化為後續硬體後端選擇最優記憶體版面配置
操作融合將多個元素級操作融合為單個 kernel
Quantization 傳播量化資訊的傳播與校正

與 XLA HLO 的技術差異

┌──────────────────────────────────────────────┐
│              XLA 內部編譯流程                   │
│                                              │
│  HLO Graph                                   │
│    │                                         │
│    ├── HLO Pass: Fusion, Layout, Tiling...   │  ← 硬體感知最佳化
│    │                                         │
│    ├── Buffer Assignment                     │  ← 記憶體分配
│    │                                         │
│    └── Codegen(Emitter)                     │  ← 生成目的碼
│                                              │
│  (以上全在 XLA 內部,HLO 是內部 IR)          │
└──────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│           StableHLO 生態編譯流程                │
│                                              │
│  StableHLO(穩定介面層)                       │
│    │                                         │
│    ├── StableHLO 最佳化 Pass                    │  ← 硬體無關最佳化
│    │                                         │
│    └── Convert to Lower-level IR             │  ← 向下轉換
│         │                                    │
│         ├──→ XLA HLO (TPU)                   │
│         ├──→ Linalg/其他 (GPU/其他)           │
│         └──→ 自定義後端                       │
└──────────────────────────────────────────────┘

關鍵區別:StableHLO 的設計目標是通用性穩定性,而非特定硬體的極致最佳化。StableHLO保持與XLA HLO相當的硬體無關抽象層次,並增加了版本化和穩定性保證。硬體相關的 tiling、buffer 分配、指令選擇等最佳化在後續編譯流程中進行。

序列化與 VHLO 版本控制

模型以 StableHLO 格式分發時,實際序列化為 VHLO(Versioned HLO) 格式:

  • VHLO 的版本相容性通過目標版本屬性(target_version)在方言級別管理,版本號是整體 StableHLO 版本(如 0.9.0),而非每個操作型別有獨立版本變體;
  • 不同版本的編譯器可以通過版本升級 pass(upgrade pass)將舊版本 VHLO 轉換為目標版本;
  • 這保證了向後相容:舊格式的模型可以在新版本編譯器中正確解析。

此機制對於模型分發場景至關重要——使用者匯出的模型檔案不會因為編譯器升級而失效。


技術演進史

時間節點事件
約 2017Google 內部 XLA 編譯器使用 HLO 作為 IR,服務於 TPU
2019–2020MLIR 專案在 LLVM 社群興起,提供多層 IR 基礎設施
約 2022 年中Google 將 StableHLO 作為 MLIR Dialect 開源(GitHub: openxla/stablehlo)
2022 年末OpenXLA 專案正式釋出,StableHLO 成為生態核心元件
2023JAX 率先支援將計算圖匯出為 StableHLO;TensorFlow XLA 路徑整合
2023–2024torch-mlir / SHARK 等專案支援 PyTorch → StableHLO 轉換;ONNX → StableHLO 路徑逐步完善
持續進行中操作集持續擴充套件,Quantization 支援增強,VHLO 版本策略迭代

注意:以上時間線為基於公開資訊的合理梳理,具體日期請以 OpenXLA 官方部落格和 GitHub release 為準。


技術路線對比

ML 編譯器 IR 路線對比

維度StableHLOONNXTOSALinalg on Tensortorch-mlir
主導方Google / OpenXLAMicrosoft / LFArmGoogle / LLVM 社群LLVM / PyTorch 社群
定位通用 ML 編譯中間層模型交換格式嵌入式/行動端編譯 IRMLIR 原生的線性代數 IRPyTorch → MLIR 的橋接
抽象層次中等(原子操作級)較高(運算元級)中等(嵌入式友好)較低(結構化迴圈級)中等
MLIR 原生✅ 是❌ 獨立 IR 體系✅ 是✅ 是✅ 是
版本化保證✅ VHLO✅ ONNX opset✅ 版本化❌ 無正式版本策略⚠️ 不穩定
動態形狀✅ 支援⚠️ 部分支援✅ 支援✅ 支援✅ 支援
Collective/分散式✅ 有原語❌ 不支援❌ 不支援⚠️ 需額外擴充套件⚠️ 有限
量化型別支援⚠️ 增強中✅ 較好✅ 原生支援⚠️ 通過外部擴充套件⚠️ 有限
主要服務場景訓練+推論通用模型交換/推論端側/嵌入式推論通用編譯後端PyTorch 生態

關鍵洞察:StableHLO 的差異化在於訓練場景的完整支援(包括分散式通訊原語、動態形狀、複雜控制流),這是 ONNX 和 TOSA 相對薄弱的領域。

選擇邏輯

需要模型交換/推論部署?  ──→ ONNX
需要端側/嵌入式推論?   ──→ TOSA
需要通用 ML 編譯(訓練+推論)? ──→ StableHLO ← 本文主角
需要 MLIR 原生的細粒度最佳化? ──→ Linalg on Tensor

上下游

上游(誰產生 StableHLO)

來源轉換路徑成熟度
JAXJAX → JAXPR → StableHLO(最原生的路徑)★★★★★
TensorFlowTF Graph → XLA HLO → StableHLO★★★★☆
PyTorchPyTorch → torch-mlir → StableHLO★★★☆☆
ONNXONNX → onnx-mlir/onnx2stablehlo → StableHLO★★☆☆☆
手動建置通過 StableHLO C++/Python API 直接構造 IR★★★★☆

下游(誰消費 StableHLO)

消費方使用方式
XLA/TPUStableHLO → XLA HLO → TPU 編譯器
IREEStableHLO → Linalg → IREE HAL → LLVM → CPU/GPU/…
各 AI 晶片編譯器StableHLO → 各家自定義後端 IR → 加速器
模型儲存/分發StableHLO IR 序列化為 .mlirbc 或 .stablehlo 格式

在 AI 編譯棧中的位置

┌────────────────────────────────────────────────────┐
│                 架構層 (JAX/TF/PyTorch)              │
├────────────────────────────────────────────────────┤
│     ★ StableHLO ★  ← 【本文主角】                   │
│        (穩定、可移植的 ML 編譯 IR)                    │
├────────────────────────────────────────────────────┤
│          MLIR 中層 (Linalg/Tensor/Memref)           │
├────────────────────────────────────────────────────┤
│       MLIR 低層 (SCF/Vector/GPU/LLVM Dialect)       │
├────────────────────────────────────────────────────┤
│             硬體 ISA / 機器碼                        │
└────────────────────────────────────────────────────┘

關鍵指標

指標說明備註
運算元量在數百個量級隨版本迭代變化,具體數字請查 GitHub
支援的資料型別f8/f16/bf16/f32/f64、i8/i16/i32/i64、u8 等、complex、bool、quantized覆蓋主流 ML 資料型別
IR 格式MLIR textual (.mlir) 和 bytecode (.mlirbc)bytecode 更緊湊適合分發
版本策略VHLO 語義化版本號相容性保證程度請參考官方文件
語言繫結C++(核心)、Python(API 和繫結)
依賴MLIR/LLVM(主要)、abseil 等LLVM 版本需匹配
LicenseApache 2.0

供需與市場資料

⚠️ 宣告:StableHLO 是開源編譯器 IR,不直接產生營收。以下從產業價值角度進行定性分析。

需求側驅動

  1. AI 晶片碎片化:全球有數十家公司開發 AI 加速器([行業報告常見估算,如 McKinsey/BCG 報告曾提及數十家]),每家都需要編譯器棧,StableHLO 降低了前端適配成本;
  2. 架構多元化:PyTorch 佔據訓練主導地位,但 JAX 在 Google 生態和學術界增長迅速,TensorFlow 仍有大量存量部署,統一 IR 減少架構-硬體矩陣適配;
  3. 模型分發標準化:隨著 AI 模型從”自己訓練自己用”轉向”訓練一次、多方部署”,穩定的中間格式成為剛需。

供給側格局

角色代表參與者
核心開發者Google(XLA/OpenXLA 團隊)、LLVM/MLIR 社群
採納方(編譯器)IREE(Google/開源)、各晶片公司編譯器團隊
採納方(架構)JAX(原生)、TF XLA、torch-mlir、SHARK

潛在市場規模估算邏輯

StableHLO 的價值不直接獨立計量,但可從以下角度估算其產業影響力:

  • AI 編譯器工具鏈市場(包含各種 compiler-as-a-service、工具授權)處於早期,[未充分揭露] 具體市場規模;
  • StableHLO 的價值在於降低每個 AI 晶片公司編譯器研發成本中的前端適配部分——保守估計每家晶片公司前端編譯器團隊在數十人量級,StableHLO 可節省相當比例的人力。

代表公司與資本對映

核心貢獻方

公司/組織與 StableHLO 的關係資本市場對映
Google / AlphabetStableHLO 發起者和主要開發者;XLA/TPU 生態原生使用GOOGL
LLVM Foundation提供 MLIR 基礎設施(StableHLO 建置其上)非上市,社群治理

生態採納方(公開資訊可查的)

公司/組織採納方式資本對映
AMD參與 OpenXLA 社群;ROCm 編譯棧關注 MLIR/StableHLOAMD
IntelIREE 專案參與(編譯器棧使用 StableHLO);Habana/Gaudi 編譯器關注INTC
QualcommAI Engine Direct SDK 關注 MLIR 生態QCOM
多家 AI 晶片初創公司利用 StableHLO 降低編譯器開發門檻各不相同

注意:以上採納關係基於公開可查的資訊(如 OpenXLA 官方列出的合作方、MLIR 社群貢獻者等),各公司對 StableHLO 的實際投入程度未充分揭露,投資者需獨立驗證。


投資邏輯

直接投資標的

StableHLO 本身是開源基礎設施,沒有直接的投資標的。但它的存在影響以下投資邏輯:

間接受益分析

1. AI 晶片初創公司(編譯器成本下降)

  • 邏輯:StableHLO 降低了新 AI 晶片的編譯器”冷啟動”成本。晶片公司不再需要從零為每個架構寫前端,可集中資源在後端最佳化。
  • 受益方:處於早期、編譯器團隊較小的 AI 晶片公司。
  • 風險:StableHLO 的覆蓋度和成熟度仍在演進中,是否能滿足特定晶片的需求存在不確定性。

2. Google 生態(護城河與平台效應)

  • 邏輯:StableHLO + JAX + TPU 構成 Google 的 AI 全棧。StableHLO 成為事實標準意味著更多架構和硬體”接入” Google 主導的生態。
  • 受益方:Google Cloud 的 TPU 服務(GOOGL)。
  • 風險:如果 PyTorch 生態持續主導訓練市場,JAX/StableHLO 的影響力可能受限。

3. 編譯器工具鏈/基礎設施公司

  • 邏輯:圍繞 MLIR/StableHLO 的商業編譯器服務(如最佳化、驗證、效能調優)可能存在商業機會。
  • 現狀:目前以開源社群為主,商業變現路徑不清晰。

關鍵觀察點

  • PyTorch 官方是否原生整合 StableHLO 匯出:目前 PyTorch → StableHLO 依賴第三方(torch-mlir),如果 PyTorch 官方採納,StableHLO 的生態位將大幅增強;
  • ONNX 與 StableHLO 的關係:兩者存在功能重疊(推論場景),長期是競爭還是互補值得觀察;
  • 其他晶片廠商是否採納:如果 NVIDIA、AMD 等主流廠商的編譯器棧原生支援 StableHLO 輸入,將標誌其成為事實標準。

常見誤讀糾偏

❌ 誤讀 1:“StableHLO 就是 XLA HLO 的公開版本”

糾正:StableHLO 和 XLA HLO 是不同的東西

  • XLA HLO 是 Google 內部 XLA 編譯器使用的 IR,沒有穩定性保證,與 TPU 編譯器深度耦合;
  • StableHLO 是一個新的、獨立定義的操作集,目標是通用性和穩定性,其操作語義經過社群評審;
  • StableHLO 可以被轉換為 XLA HLO 用於 TPU 編譯,但兩者不是同一個 IR。

❌ 誤讀 2:“StableHLO 是一種新的模型格式,將取代 ONNX”

糾正

  • StableHLO 的首要定位是編譯器中間表示,而非面向使用者層的模型交換格式;
  • ONNX 更側重於推論場景的模型交換,有豐富的運算元集、工具鏈和生態(ONNX Runtime 等);
  • StableHLO 可以作為模型儲存和分發的格式(通過 VHLO 序列化),但這不是其核心差異點;
  • 兩者在推論場景有一定重疊,但 StableHLO 的獨特價值在於訓練場景支援(分散式通訊原語、動態形狀、複雜控制流),這是 ONNX 不覆蓋的領域。

❌ 誤讀 3:“使用 StableHLO 就能實現零成本跨硬體移植”

糾正

  • StableHLO 保證的是語義正確性(同一操作在不同平台上語義一致),而非效能等價性
  • 不同硬體的最佳實現策略差異巨大(如 Tensor Core 的 tile 大小、記憶體層次等),這些差異需要在 StableHLO 之後的編譯階段處理;
  • 某些操作在特定硬體上可能不支援或需要軟體模擬,降級路徑由後端決定;
  • 因此更準確的說法是:StableHLO 實現了可移植的正確性,但可移植的效能仍是各後端編譯器的競爭差異點。

❌ 誤讀 4:“StableHLO 只面向 Google TPU 生態”

糾正:StableHLO 是 OpenXLA 生態的一部分,其設計目標是跨硬體通用性。雖然其起源與 Google TPU/XLA 緊密相關,但它:

  • 是一個原生 MLIR Dialect,可以被任何 MLIR 相容的編譯器棧消費;
  • IREE 專案(非 TPU 特定)廣泛使用 StableHLO 作為入口 IR;
  • 多家非 Google 的硬體公司關注和評估 StableHLO。

學習路徑

🟢 入門(1–2 天)

  1. 閱讀 StableHLO 官方網站(openxla.org/stablehlo)瞭解定位和設計目標
  2. 瀏覽 GitHub 倉庫(github.com/openxla/stablehlo)的 README 和 spec
  3. 動手體驗:用 JAX 匯出一個簡單模型的 StableHLO IR,觀察 IR 結構

🟡 中級(1–2 周)

  1. 學習 MLIR 基礎:閱讀 MLIR 官方文件,理解 Dialect、Operation、Pass、Type 等核心概念
  2. 深入 StableHLO 規範:逐個學習 StableHLO 的核心操作(從 dot_general、convolution、reduce
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型