onnx-mlir

Logo

MLIR 編譯器基礎架構中 ONNX 模型的表示和參考降階

在 GitHub 上檢視專案 onnx/onnx-mlir

操作指南

使用 Python 進行推論
使用 C/C++ 進行推論
使用 Java 進行推論

參考資料

ONNX 方言
OMTensor C99 執行階段 API
OMTensorList C99 執行階段 API
OMTensor Java 執行階段 API
OMTensorList Java 執行階段 API
產生 ONNX 方言
關於文件

開發

新增一個運算
測試指南
錯誤處理
命令列選項
儀表
常數傳播
新增一個加速器

工具

工具

RunONNXModel.py
DocCheck

此專案由 onnx 維護

託管於 GitHub Pages — 主題由 orderedlist 提供

為加速器 NNPA 建置和測試

神經網路處理輔助設施 (NNPA) 在 IBM z16 的處理器單元上實作。Onnx-mlir 可以透過 IBM Z 深度神經網路函式庫 (zDNN) 使用它。建置和 lit 測試在其他 IBM Z 系統 (例如 z15) 上執行,但數值測試需要在 z16 上執行。

建置

新增以下 CMake 選項以建置用於 NNPA 的 onnx-mlir。關於 Linux 作業系統的建置命令,請參閱這裡

測試

Lit 測試

NNPA 的 lit 測試包含在 test/mlir/accelerators/nnpa 中。當為 NNPA 建置 onnx-mlir 時,這些 lit 測試也會使用與 CPU 相同的命令執行。

cmake --build . --target check-onnx-lit

數值測試

NNPA 的數值測試在 test/accelerators/NNPA/numerical 中提供。目前提供 Conv2D、MatMul2D、Gemm、LSTM 和 GRU 的測試,並使用以下命令執行。這些測試可以使用環境變數 TEST_INSTRUCTION 來檢查產生的共享函式庫中是否包含 zDNN 指令。此外,為了檢查結果的準確性,可以使用環境變數 TEST_ATOLTEST_RTOL 設定 ATOL 和 RTOL。環境變數 TEST_DATARANGE 用於設定資料範圍的下限和上限。它們可以設定為 ",例如 "-0.1,0.1"。為了設定測試案例,提供了環境變數 `TEST_CONFIG`。目前的設定寫在下面每個測試的章節中。

cmake --build . --config Release --target check-onnx-numerical-nnpa

這些測試使用與 CPU 的數值測試相同的測試程式碼 (test/modellibtest/numerial),但使用不同的 cmake 檔案 (test/accelerator/NNPA/numerical/CMakeLists.txt)。

Conv2D

由於 zDNN 函式庫中的 Conv2D 僅支援擴張等於 1 的情況,因此測試中擴張始終設定為 1。此外,填充類型設定為 VALID 和 SAME_UPPER,因為它們是唯一支援的類型。所有維度都是靜態的,因為目前不支援動態高度和權重維度。當使用 --maccel=NNPA 時,這些設定會自動設定,相當於手動將環境變數 TEST_CONFIG 設定為 "-dim=static -dilation=1 -padding=valid_upper"。

Gemm

Gemm 中的 alphabeta 始終為 1,這是 zDNN 函式庫支援的情況。當使用 --maccel=NNPA 時,這些設定會自動設定,相當於手動將環境變數 TEST_CONFIG 設定為 "-alpha=1 -beta=1"。

LSTM

不測試窺視張量,因為 zDNN 函式庫中的 LSTM 不支援它。當使用 --maccel=NNPA 時,這些設定會自動設定,相當於手動將環境變數 TEST_CONFIG 設定為 "-peephole=0"。

GRU

zDNN 函式庫的 GRU 僅支援在乘以重置閘輸出之前套用線性轉換的情況。當使用 --maccel=NNPA 時,它會自動設定,相當於手動將環境變數 TEST_CONFIG 設定為 "-linearBeforeReset=1"。

後端測試

NNPA 的後端測試在 test/accelerators/NNPA/backend 中提供。它可以使用以下命令執行。只有 zDNN 支援的測試案例會執行,如 test/accelerators/NNPA/backend/CMakeLists.txt 中所列。

cmake --build . --config Release --target check-onnx-backend-nnpa

NNPA 的 ATOL 和 RTOL 使用環境變數 TEST_ATOLTEST_RTOLCMakeLists.txt 中設定。此外,環境變數 TEST_INSTRUCTION_CHECKTEST_CASE_BY_USER 可讓您檢查共享函式庫中是否產生了 NNPA 指令。在 CMakeLists.txt 中,TEST_INSTRUCTION_CHECK 設定為 true,而 TEST_CASE_BY_USER 包含測試案例和指令名稱。如果共享函式庫中找不到指令名稱,則測試將會失敗。