ONNX 模型在 MLIR 编译器基础设施中的表示和参考下推
此项目由 onnx 维护
托管于 GitHub Pages — 主题来自 orderedlist
third_party ONNX后端测试由构建目录中的 make check-onnx-backend 触发,需要几个初步步骤才能成功运行。同样,在 ONNX-MLIR 中从其 ONNX 描述重建 ONNX 操作由 make OMONNXOpsIncTranslation 触发。
如果您的环境中未默认安装 python 3.x,您将需要安装它,并可能需要在您的顶级 cmake 文件中设置 cmake PYTHON_EXECUTABLE 变量。
您还需要 pybind11,可能需要安装(mac: brew install pybind11 或 linux: apt -y install python3-pybind11 例如),您可能需要指明在哪里可以找到该软件(Mac, POWER, 可能还有其他平台: export pybind11_DIR=<your path to pybind>)。然后,在顶级目录中键入 pip install third_party/onnx 安装 third_party/onnx 软件(Mac: pip install third_party/onnx)。
## 升级 ONNX-MLIR 中的 ONNX
以下是升级 ONNX 版本所采取的步骤
创建您自己的分支
“cd”进入 third_party/onnx 并 checkout 最新版本 onnx 的 commit(您可以在这里找到最新的 commit:https://github.com/onnx/onnx/releases)
“pip uninstall onnx”(删除旧版本)
在 onnx-mlir/ 目录中,“pip install third_party/onnx”(从 commit 安装 onnx,而不是在线版本)
使用正确的版本号更新 utils/gen_onnx_mlir.py 文件
使用以下命令在 build/ 目录中构建 onnx:set CMAKE_ARGS=-DONNX_USE_LITE_PROTO=ON
在 build/ 目录中运行:“make OMONNXOpsIncTranslation”
在 build/ 目录中运行:“make onnx-mlir-docs”
在 build/ 目录中运行:“make check-onnx-backend-case”
根据 step 9 的结果更新新的后端测试
更新cpu 的 Opset 文档,然后在 build/ 目录中发出以下命令:“make onnx_mlir_supported_ops_cpu”
更新NNPA 的 Opset 文档,然后在 build/ 目录中发出以下命令:“make onnx_mlir_supported_ops_NNPA”
确保 lit 测试和后端测试成功通过,然后就完成了!
注意:在进行 PR 之前,对于可能已更改的文件,请使用 git add <filename>。
在 Macs/POWER 以及可能其他平台上,当前存在安装 ONNX 时出现的问题。如果您在构建过程中遇到错误,请尝试根据此 PR 中报告的修复方法编辑顶级 CMakefile: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="*"