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 提供

ONNX-MLIR:建置疑難排解與測試 ONNX_MLIR

疑難排解 ONNX-MLIR 的建置

如果您在第一次建置 onnx-mlir 時遇到問題,您可能需要檢查我們建置所使用的 cmake 變數。請參閱本頁的最後一節以取得協助。

如果您已成功使用原始程式碼目錄一段時間,則在合併 main 分支的最新變更後,您可能會遇到重建 onnx-mlir 的困難。

以下是您可能執行的一些步驟。如果其中任何一個步驟適用,建議移除 onnx-mlir/build 子目錄,並使用 cmake 命令從頭開始重建。

1) 檢查 llvm-project 的正確提交

如果最新的 onnx-mlir main 分支已移至 llvm-project 的較新提交層級,則建置過程通常會遇到多個與 LLVM 和 MLIR 程式碼相關的編譯器錯誤。

所需層級可以在建置 ONNX-MLIR頁面上的第一個程式碼方塊中找到,就在 git checkout 命令旁邊。

程式碼中使用的層級可以透過在 llvm-project 子目錄中執行 git log 來找到。

如果它們不匹配,請將 llvm 專案更新至所需層級。

2) 檢查正確的第三方支援

通常,當我們更新 ONNX op 層級時,會在 third_party/onnx 子目錄中產生新的軟體。未能更新該程式碼通常會導致與 ONNX 方言程式碼相關的編譯器錯誤。

最簡單的方法是直接移除 third_party 目錄,然後使用 git submodule update --init --recursive 重新安裝程式碼。

3) 方言更新

有時,方言更新需要重建整個建置目錄。您可能會看到的典型錯誤是遺失宣告,例如 verifier 方法。建議直接移除 onnx-mlir/build 子目錄,並使用 cmake 命令從頭開始重建。

如果您在建置期間遇到與 protobuf 相關的錯誤,請檢查以下潛在原因

這些以及許多其他設定建置環境的技巧,是我們建議使用 onnxmlir/onnx-mlir-dev docker 映像進行開發的原因。

ONNX-MLIR 的高階測試

若要執行 lit ONNX-MLIR 測試,請使用以下命令

[same-as-file]: <> ({“ref”: “utils/check-onnx-mlir.cmd”, “skip-ref”: 1})

call cmake --build . --config Release --target check-onnx-lit

或者直接在建置目錄中呼叫 ninjamakecheck-onnx-lit 目標。

若要執行數值 ONNX-MLIR 測試,請使用以下命令

[same-as-file]: <> ({“ref”: “utils/check-onnx-numerical.cmd”, “skip-ref”: 1})

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

或者直接在建置目錄中呼叫 ninjamakecheck-onnx-numerical 目標。

若要執行 doc ONNX-MLIR 測試,請在安裝下方顯示的第三方 ONNX 後使用以下命令。首次安裝第三方 ONNX 專案的詳細資訊請參閱此處。請注意,關鍵是要安裝我們第三方子目錄中列出的 ONNX 專案版本,因為 ONNX-MLIR 可能落後於 ONNX 標準的最新版本。

[same-as-file]: <> ({“ref”: “utils/check-docs.cmd”, “skip-ref”: 1})

call cmake --build . --config Release --target check-docs

或者直接在建置目錄中呼叫 ninjamakecheck-docs 目標。

LLVM 和 ONNX-MLIR Cmake 變數摘要

編譯 ONNX-MLIR 時可以使用以下來自 LLVM 和 ONNX-MLIR 的 CMake 變數。

MLIR_DIR:PATH 指向 llvm-project 建置或安裝目錄內 mlir cmake 模組的路徑(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果先前 cmake 調用未設定 MLIR_DIR,則這是必需的。

LLVM_EXTERNAL_LIT:PATH 指向 lit 工具的路徑。預設為空字串,如果可能,LLVM 將根據 MLIR_DIR 找到該工具。當 MLIR_DIR 指向安裝目錄時,這是必需的。