StableHLO 藍圖

在本文撰寫時間,StableHLO 已準備好取代 MHLO/HLO 做為編譯器介面。它可以使用 TensorFlow、JAX 和 PyTorch 產生,可供 XLA 和 IREE 使用,而且具備 MHLO/HLO 提供的所有公開功能,以及其他功能。

本文件說明 StableHLO 專案的後續步驟,將 Issue Tracker 中反映的進行中的工作分類,並將這項工作整理成預定交付項目。

里程碑

我們預計在 2023 年規劃兩項重要里程碑:1) StableHLO v0.9,其中提供運算集的初始版本和初始相容性保證,2) StableHLO v1.0,將實施高優先順序改善項目,並開始提供全面的相容性保證。

StableHLO v0.9 會鏡像 MHLO/HLO,強化了靜態形狀操作規格和初始相容性保證。根據相容性 RFC,這個版本提供前 1 個月的前瞻相容性和回溯相容性。這些中等保證可以讓您透過方言演進獲得經驗,並且在完全保證生效前預留一些時間進行清理。我們預計於 2023 年第 1 季推出 StableHLO v0.9。

StableHLO v1.0 將導入高優先順序的改善項目,包括清理前端合約 (其目標是 StableHLO 程式只會納入來自 StableHLO 方言的 Ops,而不是今日的方言和未註冊屬性的運算),並提供參考實作。我們預計於 2023 下半年推出 StableHLO v1.0。

工作流程

為了根據上述里程碑進行開發,我們已將 Issue Tracker 中的票證歸類至多個工作流程,並將這些工作流程與里程碑相關聯。有限的票券數量 (小於 10%) 不會指派給任何特定工作流程,也不參與任何特定里程碑。

(P0) 相容性實作工作流程專門用於實作相容性 RFC 以及相容性測試套件。大部分工作預計會在 StableHLO v0.9 中完成,其餘工作則在 StableHLO v1.0 中完成。

(P0) 前端合約工作流程包含完全實作 StableHLO 前端使用,但尚未採用 StableHLO 規格的功能。這個工作流程的目標,是確保 StableHLO 程式只包含 StableHLO 方言的運算,而不是今日的方言和未註冊屬性的混合。我們預計在 StableHLO v1.0 中完成這個工作流程中的所有或幾乎所有作業。

(P0)「參考實作」工作流程整理了在 StableHLO 規格中定義的 100% StableHLO 運算的實作解譯器工作。我們預計在 StableHLO v1.0 這個工作流程中完成所有或幾乎所有的工作。

(P0)「說明文件」工作流程旨在提供 StableHLO 生產者或消費者可能需要的所有資訊。StableHLO 規格是可提交的主要內容,以及 StableHLO API 和 StableHLO 序列化格式的參考資料。這個工作流程的重要部分將透過 StableHLO v1.0 提交,優先順序較低的項目會陸續處理。

(P1) 合規套件工作流程提供一個測試套件,該套件會將參考實作與 StableHLO 後端提供的實作進行比較。參考實作的測試會提供符合標準的類型套件,因此這個工作流程沒有 P0 優先順序。不過,隨著其他有趣的測試案例進一步擴充這個套件,可能會是日後作業的實用領域。

(P1)「規範法規遵循」工作流程可確保所有 StableHLO 運算均已根據 StableHLO 規格定義的 StableHLO 方言中實作。StableHLO 方言已合理符合規範,因此這個工作流程沒有 P0 優先順序,但仍然有許多次要項目 (尤其是在驗證器實作的極端情況下),將陸續處理。

(P1)「新功能」工作流程包含 StableHLO 藍圖,並包含 StableHLO 運算集的 ragtag 集合 (而非 StableHLO 方言或 StableHLO 繫結,屬於其他工作流程)。我們計劃在 StableHLO v1.0 中提供部分新功能,但大多數目前優先順序較低,並不屬於任何特定里程碑。

(P1) Public API 工作流程是用於為 StableHLO 方言提供 C/C++/Python 繫結。現有的 C++/Python 繫結本身也相當合理,因此這個工作流程沒有 P0 優先順序。不過,我們仍有許多工作尚待處理,尤其是針對這些繫結提升穩定性;這方面目前不在相容性 RFC 的涵蓋範圍內,但可能會成為日後工作的重要領域。