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

安裝 third_party ONNX 以進行後端測試或重建 ONNX 操作

後端測試由建置目錄中的 make check-onnx-backend 觸發,並且需要幾個初步步驟才能成功執行。同樣地,從 ONNX 描述在 ONNX-MLIR 中重建 ONNX 操作由 make OMONNXOpsIncTranslation 觸發。

如果您的環境中預設不是 Python 3.x,您需要安裝 Python 3.x,並且可能需要在您的頂層 CMake 檔案中設定 CMake PYTHON_EXECUTABLE 變數。

您還需要 pybind11,可能需要安裝(mac:brew install pybind11 或 linux:例如 apt -y install python3-pybind11),您可能需要指定軟體的位置(Mac、POWER,可能還有其他平台:export pybind11_DIR=<您的 pybind 路徑>)。然後安裝 third_party/onnx 軟體(Mac:pip install third_party/onnx),在頂層目錄中輸入。

## 在 ONNX-MLIR 中升級 ONNX

以下是升級 ONNX 版本所採取的步驟

  1. 建立您自己的分支

  2. “cd” 進入 third_party/onnx 並簽出最新版本的 onnx 的提交 (您可以在這裡找到最新的提交:https://github.com/onnx/onnx/releases)

  3. “pip uninstall onnx” (移除舊版本)

  4. onnx-mlir/ 目錄中,“pip install third_party/onnx” (從提交安裝 onnx,而不是線上版本)

  5. 使用正確的版本號更新 utils/gen_onnx_mlir.py 檔案

  6. build/ 目錄中使用以下命令建置 onnx:設定 CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON

  7. build/ 目錄中執行:“make OMONNXOpsIncTranslation”

  8. build/ 目錄中執行:“make onnx-mlir-docs”

  9. build/ 目錄中執行:“make check-onnx-backend-case”

  10. 根據 步驟 9 的結果,更新新的後端測試

  11. 更新cpu 的 Opset 文件,然後在 build/ 目錄中發出以下命令:“make onnx_mlir_supported_ops_cpu”

  12. 更新NNPA 的 Opset 文件,然後在 build/ 目錄中發出以下命令:“make onnx_mlir_supported_ops_NNPA”

  13. 確保 lit 測試和後端測試成功通過,然後您就完成了!

注意:對於可能已變更的檔案,請在使用 PR 之前使用 git add <filename>

已知問題

在 Mac/POWER 和可能其他平台上,安裝 ONNX 時目前存在一個問題。如果在建置期間遇到錯誤,請嘗試修改頂層 CMakefile 的修復方法,如本 PR 中所報告:https://github.com/onnx/onnx/pull/2482/files

在 Mac 上執行 make check-onnx-backend 時,您可能會遇到以下錯誤

Fatal Python error: Aborted

Current thread 0x0000000107919e00 (most recent call first):
  File "/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 2632 in getproxies_macosx_sysconf
  File "/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 2650 in getproxies
  File "/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 795 in __init__
  ...

一個已知的解決方法是在您的 Shell 中匯出 no_proxy 環境變數,如下所示,然後重新執行測試。

 % export no_proxy="*"