MLIR 方言

總覽

為了區隔不同的硬體和軟體目標,MLIR 具有「方言」,包括:

  • TensorFlow IR,代表 TensorFlow 圖表中所有可能的事物。
  • XLA HLO IR,旨在充分利用 XLA 的編譯能力 (以及輸出到 TPU 等目標)。
  • 實驗性的仿射方言,專注於多面體表示法和最佳化。
  • LLVM IR,它與 LLVM 自身的表示法之間具有 1 對 1 的對應關係,MLIR 可以透過 LLVM 發出 GPU 和 CPU 程式碼。
  • TensorFlow Lite,將轉譯為在行動平台執行的程式碼。

每個方言都包含一組定義的操作,這些操作具有置於其上的不變量,例如:「這是一個二元運算子,而輸入和輸出具有相同的類型。」

新增至 MLIR

MLIR 沒有固定的/內建的全域已知操作清單 (沒有「內部函數」)。方言可以定義完全自訂的類型,這就是 MLIR 如何為 LLVM IR 類型系統 (具有第一級彙總)、對於 ML 優化加速器 (如量化類型) 重要的網域抽象概念,甚至是 Swift 或 Clang 類型系統 (這些系統圍繞 Swift/Clang 宣告節點建構) 等事物建模的方式 (未來亦然)。

如果您想要連接新的低階編譯器,您可以建立新的方言以及 TensorFlow Graph 方言與您的方言之間的降低。這為硬體和編譯器製造商鋪平了道路。您甚至可以在同一模型中以不同的層級為目標方言;較高層級的最佳化工具會尊重 IR 的不熟悉部分,並等待較低層級來處理。