StableHLO 翻譯工具檢查清單

本文將總結關於導入及審查 o 或 BERT 模型我們刻意加入了幾項輔助動作 與驗證器和型別推斷相關的項目,以及對於驗證結果 在這些國家/地區使用翻譯功能

實作運算時

  1. 提供明確書面的測試策略 (在 PR 說明中) 類似 這份文件,即可使用 當做參考,以檢視驗證 方法和對應的測試。審查人員會再次確認 說明的內容完整詳盡
  2. 諮詢 hlo_evaluator 辨識棘手的實作細節和潛在的功能缺口。
  3. 如果您發現任何錯誤,可以提交對應軟體元件的支援單 或是功能缺失

實作註解後

  1. StablehloOps.td 中:

    1. 請確認運算 ODS 中的 summary 符合標準格式。 (相關票券)
    2. 新增參照限制標籤 (例如 CnIn) 的註解, 格式為 xyz_cnxyz_in,也就是運算 XyzOp 的規格,以便識別 ODS 限制與規格之間的對應關係。 以下範例說明如何將限制標籤新增為註解 和 mlir TraitsTypeConstraints 一併使用附註 xyz_c4 是指 StableHLO_FooOp 類別中定義的限制條件 (例如 StableHLO_ShapedInterfaceOpStableHLO_UnaryElementwiseOpStableHLO_Op 等)。

       def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1,
           Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/
            ...
         let summary = "Xyz operation";
         let arguments = (ins
            1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/
            HLO_Tensor:$b, /*xyz_i2*/
            ....
         );
      );
      
  2. TypeInference.cpp 中 和 StablehloOps.cpp

    1. 刪除含有「驗證下列屬性」等字詞的註解: ..."
    2. 新增參照限制標籤 (例如 CnIn) 的註解, 格式為 xyz_cnxyz_in,也就是運算 XyzOp 要識別的 驗證器和形狀函式哪些部分與 特定的限制條件。
      1. 註解可以具有多個限制標籤,或 。這取決於 限制條件的執行方式。如有連續限制條件 合併為 xyz_cn...xyz_cm, xyz_in...xyz_jn
      2. 萬一 與規格中的實作比較,請確認 反映出這項差異的待處理問題
  3. 解譯器測試中:

    1. 新增名為 <op_mnemonic>.mlir 的檔案。
    2. 按照測試指南編寫測試。
  4. testdata 目錄中:

    1. 執行新新增作業涵蓋的所有已停用測試。
    2. 如果測試通過,請將 RUN-DISABLED 轉換為 RUN 以啟用這些測試。
    3. 如果測試基於某些原因 (精確度不符除外) 而失敗,請修正 導入/測試
    4. 如果是精確度不相符的情況,請使用 RUN-DISABLED(#1278) 標記測試 (如果 表示這在容器中建立
  5. ops_stablehlo.mlir 中:

    1. 確定每個工具都至少加入一項測試 (正面或負面) 限制及型別推斷方法;限制條件 但不會測試 ODS 中涵蓋的內容這些測試大多會是負值 測試未達成或陽性的限制,請測試 但推斷的形狀是正確的
    2. 確認已放進測試中運算的所有相關測試 。
    3. 請確認受測試的作業相關的所有測試均 前方加上 CHECK-LABEL 照明巨集。
    4. 按照下列格式選擇測試的函式名稱 xyz_cn_im_...:用於測試函式限制 CnIm、 運算 XyzOp 等事件不適用提議的格式 並保留現有名稱
    5. 上述步驟完成後,排序與運算相關的所有測試 這些函式的字母與函式名稱
    6. 繼續新增測試,直到 ccov 為止 顯示 >= 90% 運算的涵蓋率。
  6. infer_stablehlo.mlir 中:

    1. 確認設有形狀推論測試的所有相關限制 ,並遵循上面提到的相同命名規範。
    2. ops_stablehlo.mlir 移動任何形狀推論測試 並貼到這個檔案
  7. spec.md 中:

    1. 新增「stablehlo/tests/interpret/<op_mnemonic>.mlir」的連結 投影片中的「範例」區段 (例如「更多範例」)。
    2. 請確認規格僅包含 1 個範例。
    3. 請確認規格範例符合測試規範
    4. 確保規格範例測試可供解讀。
    5. 請確定規格範例與 ODS 中的範例相同。
  8. status.md 中:

    1. 更新「翻譯器」改為「yes」。