晶片層 開放閱讀

中間表示

IR, Intermediate Representation

概念 ID
ir-intermediate-representation
更新時間
2026-05-29
來源數量
待補

中間表示

3 秒看懂

中間表示 (IR) 是深度學習編譯器在將模型從架構語言(如 PyTorch、TensorFlow)轉換到硬體可執行程式碼的過程中,所使用的一種或多種結構化中間描述。它把“面向開發者的表達”與“面向底層的最佳化和程式碼生成”解耦,使得同一份模型能經最佳化後高效執行在不同硬體上。

3 分鐘產業解釋

在深度學習工程化落地中,IR 是整個軟體棧的“脊柱”。它讓 AI 晶片廠商不再需要為每一種前端架構重寫整個編譯器,也令架構開發者不必為每一種硬體適配全套最佳化。典型的流程是:

  • 架構匯出圖 IR(如 TorchScript IR、TF GraphDef),或由捕獲工具(TorchDynamo)將動態圖追蹤為中間表示。
  • 進入圖級最佳化(運算元融合、記憶體規劃、常量摺疊)。
  • 下降到張量級或指令級 IR(如 XLA 的 HLO、TVM 的 TIR、MLIR 的各種方言)。
  • 最終由後端生成目標硬體程式碼。

目前主流的 IR 體系正在向可擴充套件、多層級的方向收斂,其中MLIR(多級中間表示)成為產業協同的重點,它允許自定義方言(Dialect),兼顧高層計算圖與低層迴圈最佳化。其他重要 IR 還包括 ONNX(面向推論的交換格式)、OpenXLA 中的 StableHLO、TorchInductor 使用的中間表示等。

15 分鐘專家深入

IR 並非是單一格式,而是一個分層的編譯抽象體系。在深度學習中,IR 需要承載:

  1. 計算圖拓撲:有向無環圖(DAG)及控制流(if、loop),需保留精確依賴關係。
  2. 張量形狀與資料型別:支援符號形狀推導(如 dynamic shape),否則必須在執行時重新編譯。
  3. 運算元語義:標準運算元庫(如 conv2d、matmul)的語義定義,既要精確定義舍入誤差行為,又要保持硬體無關性。
  4. 記憶體與版面配置:記憶體步長(strides)、資料版面配置(NCHW vs NHWC)的抽象,使編譯器能自動插入變換。
  5. 高階最佳化標記:如並行策略、融合邊界、精度模式(fp16/bf16/int8)。

專家使用 IR 時常面臨“表達力 vs 最佳化確定性”的權衡:更抽象的 IR 描述更簡潔但丟失硬體細節,導致 unpredictable performance;過低的 IR 貼近硬體卻損害可移植性。MLIR 通過可巢狀的方言部分緩解了這一矛盾——可以用“linalg”方言描述線性代數操作,用“gpu”方言描述 GPU 特異性,再用“scf”處理迴圈結構,統一在同一個方言下進行漸進式降級(lowering)。

在 TVM 的 Relay 中,IR 採用函式式 SSA(靜態單賦值)形式,支援 let-binding 與遞迴,使得自動微分和梯度裁剪可以編碼進 IR 層。XLA 的 HLO 則嚴格採用靜態形狀,計算圖展開為 HLO 指令序列,適合於 TPU 等資料流架構的自動版面配置與分片。

最新的趨勢是將 IR 與高效能程式碼生成器緊耦合:如 PyTorch 2 的 Inductor 將後臺 FMHA(融合多頭注意力)等模式匹配直接輸出到 Triton 或 CUDA kernel,其抽象層稱為“Inductor IR”或“Prim IR”,它是一種類張量表達式的 SSA 形式,兼具層級下降能力。

技術原理

多層 IR 體系與降級流程

深度學習編譯器通常採用三層 IR 架構,以 TVM 和 MLIR 為典型:

Frontend Model (PyTorch / TF)
   │ (trace or export)

High-level Graph IR (Relay / StableHLO / Torch FX Graph)
   │ 圖級最佳化:運算元融合、常量摺疊、記憶體規劃、形狀推導

Mid-level Tensor IR (TIR / Linalg+Affine)
   │ 張量化:迴圈分塊、向量化、記憶體作用域插入、共享記憶體 promotion

Low-level IR / Codegen (LLVM IR, CUDA C, target dialect)
   │ 暫存器分配、指令排程、二進位制生成

Executable Binary

關鍵機制

  • SSA 形式與 use-def 鏈:每個中間值只被賦值一次,使資料依賴分析可以快速完成,是死程式碼消除、公共子表示式消除的基礎。
  • Dialect(方言):MLIR 允許在同一模組內混合使用不同抽象層次的 IR,通過合法的“轉換”將高層方言降級到低層。例如,tosa.conv2dlinalg.conv_2daffine.for + memref.load/storegpu.launch + nvvm
  • 形狀推導與動態形狀:支援符號維度的 IR 必須攜帶 shape 函式,最佳化過程採用“符號整型”推斷維度,部分架構會回退到執行時編譯(JIT)以處理 unknown dimensions。
  • 記憶體規劃:在 IR 層通過 buffer 內聯、記憶體複用和複製消除,可大幅降低峰值視訊記憶體佔用,這在大型 MoE 模型中效果顯著。
  • 運算元融合:圖 IR 中通過匹配“生產者-消費者”模式將多個運算元合併為一個 kernel,消除中間張量的視訊記憶體訪問。常見融合模式包括 conv-bias-relu、layernorm-後面跟隨的注意力等。

並行策略的 IR 表達

分散式訓練中的模型並行(張量並行、流水線並行、資料並行)在編譯棧中需要 IR 承載。例如,Megatron 風格張量並行需要在 IR 層插入 AllReduce/ReduceScatter 通訊操作(非 All-to-All,後者多見於 MoE 的 expert dispatch)。這些通訊運算元作為 IR 運算元,由編譯器分配裝置並生成相應的集合通訊庫呼叫。IR 中的 sharding 註解(如 sharding dialect)可以描述多維分片方案,指導 lower 過程生成 SPMD 程式碼。

技術演進史

  • 架構內 IR 的萌芽(2015-2017):TensorFlow 提出靜態計算圖 GraphDef,Caffe 使用 Prototxt,它們可以視為最初步的圖 IR。但最佳化能力有限,且與架構緊耦合。
  • XLA 與 HLO 成型(2017):Google 推出 XLA 編譯器,定義 HLO(High-Level Optimizer)IR,專為 TPU 和張量計算設計。它將 TF 圖轉為 HLO,進行大量代數最佳化和融合。
  • TVM 引入分層 IR(2018):TVM 提出 Relay(高層函式式 IR)與 TIR(低層張量 IR),首度將 IR 分層的理念普及到深度學習編譯領域,使開發者可以自定義硬體後端。
  • ONNX 標準化(2017-2019):ONNX 成為跨架構交換的廣義 IR,聚焦推論階段,定義了統一的運算元集和版本管理,讓模型一次匯出多處執行。
  • MLIR 挑戰單層 IR(2019-2021):Google 開源 MLIR,用方言組裝 IR 基礎設施,影響巨大。它被整合到 TensorFlow、JAX、TF Lite、IREE 等多個專案中。
  • PyTorch 2 的全流程 IR 化(2022-2023):PyTorch 引入 TorchDynamo 捕獲 Python 位元組碼,生成 FX Graph(一種圖 IR),再經 Inductor 使用 Wrapper IR 生成 Triton/C++ 核心。同時參與 OpenXLA,推動 StableHLO。
  • 產業趨同:2023-2025 年,StableHLO 成為 OpenXLA 的統一輸入 IR,MLIR 成為多方的基礎設施,各家硬體廠商都基於 MLIR 建置自己的編譯棧。

技術路線對比

維度MLIR+方言XLA/HLO 生態ONNXTVM Relay/TIRTorchInductor IR
設計哲學可組合、多級方言,任意擴充套件單一級別、嚴格靜態形狀,張量計算最佳化可移植的推論格式,標準化運算元函式式高層 + 命令式低層,硬體解耦以 Python 為中心的動態圖捕獲 + 即時程式碼生成
最佳化能力極強,支援跨方言最佳化,適合全流程強,代數最佳化、融合、記憶體分析,面向 TPU/GPU中等,主要靠後端實現,標準受限強,自動排程與張量最佳化,適用於定製硬體強,擅長 Python 級自動微分與融合,依賴 Triton/CUDA
硬體支援最廣泛,自研晶片幾乎都基於 MLIR主要 Google TPU 和 NVIDIA GPU(通過 PJRT)各類硬體,但受運算元集限制CPU、GPU、專用加速器,需要手動開發後端NVIDIA GPU(Triton/CUDA),擴充套件到其他需依賴 Triton 支援
靈活性極高,可引入自定義方言,混合層次較低,受 HLO 語義約束,動態形狀支援弱中,通過 operators 擴充套件和自定義域高,可以手寫排程原語,接近底層較高,通過 torch.compile 自動捕獲,使用者可控性較弱
生態成熟度快速增長,已成為事實標準的基礎設施穩定,在 Google 內部及外部採用廣泛成熟,推論領域存量最大成熟,研究與應用場景廣,是很多 AI 晶片的編譯起點發展極快,依託 PyTorch 使用者基礎

注:以上對比為定性描述,基於公開設計屬性,未引用具體版本效能資料。

上下游

  • 上游:深度學習架構(PyTorch、TensorFlow、JAX)、AI 建模者。架構使用 IR 將 Python 程式碼轉化為可最佳化的形式,需要保證與原有動態語義的相容性。
  • 中游:編譯最佳化廠商和專案(如 OpenXLA、TVM 社群、MLIR 社群),他們維護 IR 的中間層、最佳化 pass 管道、方言轉換規則。
  • 下游:AI 晶片供應商(NVIDIA、AMD、Intel、華為、Google TPU、Graphcore、Groq、各類 NPU 公司等),他們將自己的編譯器後端對接至標準 IR,或開發專有方言來實現最優對映。此外,部署工具鏈(如 TensorRT、OpenVINO、ONNX Runtime)將 IR 轉換為推論 engine。

IR 層實質上定義了生態的介面話語權:擁有良好 IR 標準的一方,上游能吸引更多架構,下游能繫結更多晶片。

關鍵指標

衡量 IR 及其編譯棧質量的主要技術指標(無具體資料,採用定性描述):

  • 端到端延遲:推論時一幀或一批次從輸入到輸出的時間,對比架構直接執行,編譯最佳化帶來的加速比是核心指標。
  • 吞吐量:單位時間處理的最大樣本數,常受 IR 中記憶體融合與流水線編排影響。
  • 編譯時間:IR 生成和最佳化所需時長,尤其對於大型 MoE 或動態形狀模型,編譯開銷可能抵消執行加速。
  • 峰值視訊記憶體佔用:IR 最佳化後的 runtime memory,記憶體規劃 pass 是其關鍵。
  • 運算元覆蓋率:IR 所能表達的原始架構運算元比例,未覆蓋的運算元會回退到架構執行(“graph break”),降低效能。
  • 最佳化成功率:特定模式(如 attention、layernorm)被識別並替換為高效 fused kernel 的比例。

供需與市場資料

由於深度學習編譯器及 IR 多為開源基礎設施,獨立市場資料稀缺且未形成單獨的商業市場。然而,作為 AI 編譯技術棧的核心元件,其戰略價值在 AI 晶片和訓練部署平台競爭中不斷升高。

  • 需求端:大型模型(LLM、多模態)的引數量從十億邁向萬億,使得手動最佳化的 kernel 已經跟不上模型結構演進,對編譯器 IR 的自動化最佳化需求呈爆炸式增長。AI 推論晶片每增加一種,都需要適配,拉動對統一 IR 解決方案的需求。
  • 供應端:主要由開源社群和大型科技公司提供。MLIR、OpenXLA、TVM、ONNX 是主要供給來源,閉源晶片廠商(如Apple、特斯拉自研 NPU)內部也會自研 IR 編譯棧。目前尚未出現以 IR 為產品的純商業化公司,更多被融入整體工具鏈中。
  • 市場趨勢:IR 層正在從“軟體基礎設施”向“硬體生態護城河”演進,晶片公司傾向於建置基於 MLIR 的閉源方言以鎖定開發者,架構方則試圖通過統一 IR 來降低硬體依賴。整體未出現獨立第三方市場報告的具體規模資料([未檢索到公開獨立報告])。

代表公司與資本對映

公司/組織關鍵 IR 專案/產品角色
GoogleXLA(HLO, StableHLO)、MLIR、IREEIR 基礎設施的主要貢獻者,通過 OpenXLA 推動標準化
MetaPyTorch 2(TorchDynamo, FX, Inductor IR)、Glow前端 IR 捕獲與編譯,Inductor 後端已將 Triton 作為重要 low-level IR
NVIDIATensorRT(帶 ONNX 支援及內部 IR)、CUDA 編譯器(NVVM IR)從上層 IR 到 GPU 原生程式碼的最佳化與部署
華為MindSpore(MindIR / GHLO,整合 TVM 與 MLIR 技術)面向昇騰 NPU 的編譯棧,使用類 MLIR/TVM 多級 IR
IntelOpenVINO IR面向 CPU/GPU/VPU 的跨平台推論 IR
阿里BladeDISC(基於 MLIR 的 AI 編譯器)動態形狀支援與叢集化推論,為 MLIR 方言的產業應用
Groq / Graphcore專用 IR 編譯棧自研晶片的全部最佳化都依賴自定義 IR,是其技術壁壘之一

資本對映方面,以上多為大型科技公司內部專案,並未單獨融資。AI 晶片初創公司的估值很大程度上包含其編譯棧(含 IR)的技術能力,但 IR 本身不構成獨立估值單元。投資者更多關注圍繞 IR 形成的生態粘性:掌握 IR 標準的公司對上下游有更強的議價和整合能力。

投資邏輯

  1. 生態鎖定效應:IR 類似於作業系統的 API,一旦架構和模型大量基於某種 IR 生態(如 OpenXLA 的 StableHLO),切換成本高,從而形成持久的競爭力。投資掌握主導 IR 生態的龍頭公司(如 Google、Meta)或其深度合作方具有長期價值。
  2. 硬體適配成本壁壘:AI 晶片創業公司如果能夠高效地將 MLIR 方言轉換為自有硬體程式碼,可以顯著降低客戶遷移成本。因此,編譯棧 IR 技術是 AI 晶片初創公司的核心護城河之一。
  3. 工具鏈標準化紅利:ONNX、MLIR 等開放標準的普及,降低了推論環節的硬體鎖定,受益的是能提供最優效能的實現廠牌,而非 IR 持有者本身。投資邏輯轉向“執行效率的領先者”,而非“格式的定義者”。
  4. 風險點:若大型模型訓練逐漸收斂於少數大型基礎模型,定製最佳化 kernel 可能再度佔據主導,削弱通用 IR 的最佳化價值;另外,若 PyTorch 完全鎖定在 Inductor/Triton 路徑下,可能削弱其他 IR 生態的份額。

注:以上基於產業邏輯推演,未提供具體投資建議與數字。

常見誤讀糾偏

  • “IR 就是 ONNX 的一種”:ONNX 只是眾多 IR 中的一種,專為推論可移植設計。深度學習編譯器內部往往有多層 IR,ONNX 更像是標準化的交換 IR,而非最佳化執行的完整 IR。
  • “同一個 IR 最佳化就能保證在所有硬體上效能一致”:IR 只是抽象的中間表示,真正高效執行需要後端的精細排程和程式碼生成,硬體特性(如 Tensor Core 尺寸、記憶體頻寬)會極大影響最終效能,IR 層無法消除這種差異。
  • “動態圖不需要 IR”:PyTorch eager 模式在執行時不顯式建置全域性圖 IR,但 torch.compile 正是使用 TorchDynamo 捕獲位元組碼並生成 FX IR;JAX 也是將所有計算帶成 HLO IR。可以說,現階段幾乎所有高效能執行都會經過某種形式的 IR。
  • “採用 MLIR 就解決一切適配問題”:MLIR 提供的是架構,具體的方言、轉換和最佳化仍然需要大量人力開發,建置高質量的編譯流程需要深厚的編譯器經驗,並非簡單地換成 MLIR 即可。

學習路徑

  1. 基礎鋪墊:瞭解編譯器基本概念(詞法分析、語法分析、最佳化、程式碼生成),推薦《編譯原理》(龍書) 前幾章,或觀看 LLVM 相關教程。
  2. 入門實踐:通過 TVM 官方教程學習 Relay 和 TIR,用 AutoTVM 跑通一個模型最佳化,直觀感受圖 IR 到張量 IR 的 lowering。
  3. 深入 MLIR:閱讀 MLIR 文件(mlir.llvm.org)下的 “Toy Tutorial”,從頭建置一個方言,理解 dialect conversion。再到深度學習領域的方言(Torch-MLIR、TF-MLIR)。
  4. XLA 與 HLO:研究 XLA 操作語義(StableHLO spec),通過 JAX 示例觀察 jax.jit 生成的 HLO,使用 xla.call_module 等工具。
  5. 產業前沿:關注 PyTorch 2 的 torch.compileInductor 如何生成 Triton 程式碼,研究 OpenAI Triton 自身的 IR。

一句話總結

中間表示 (IR) 是深度學習從模型程式碼到硬體指令的解耦樞紐,既抽象了計算圖語義,又為多層編譯最佳化提供了落地載體,其演進直接定義著 AI 軟體棧的靈活性和效率邊界。

延伸閱讀與來源

  • MLIR 官方文件: https://mlir.llvm.org/
  • TVM 開源專案與論文: “TVM: An Automated End-to-End Optimizing Compiler for Deep Learning” (OSDI 2018), https://tvm.apache.org/
  • XLA 架構: “XLA: Optimizing Compiler for Machine Learning” (2017), OpenXLA 專案: https://github.com/openxla
  • ONNX 規範: https://onnx.ai/onnx/
  • PyTorch 2 技術部落格: “Introducing PyTorch 2.0” (pytorch.org/blog)
  • 阿里 BladeDISC 介紹: “BladeDISC: A Dynamically Shaped AI Compiler Based on MLIR” (相關論文及開源社群)
  • 注:以上內容基於公開開源社群與產業共識,無具體量化資料,所有技術特性源自官方文件說明。部分行業趨勢分析為定性演繹,未依賴特定檢索資料。
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型