ONNX 模型在 MLIR 编译器基础设施中的表示和参考降低
该项目由 onnx 维护
托管在 GitHub Pages 上 — 主题由 orderedlist 提供
third_party ONNX
后端测试由构建目录中的 make check-onnx-backend
触发,并且需要一些初步步骤才能成功运行。类似地,从其 ONNX 描述重新构建 ONNX-MLIR 中的 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>
)。然后安装 third_party/onnx
软件(Mac:pip install third_party/onnx
),在顶级目录中键入。
## 升级 ONNX-MLIR 中的 ONNX
以下是升级 ONNX 版本的步骤
创建您自己的分支
“cd”到 third_party/onnx
并检出最新版本 onnx 的提交(您可以在此处找到最新提交:https://github.com/onnx/onnx/releases)
“pip uninstall onnx”(删除旧版本)
在 onnx-mlir/
目录中,“pip install third_party/onnx”(从提交安装 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”
根据 步骤 9
的结果更新 新的后端测试
更新 CPU 的 Opset 文档,然后在 build/
目录中执行以下命令:“make onnx_mlir_supported_ops_cpu”
更新 NNPA 的 Opset 文档,然后在 build/
目录中执行以下命令:“make onnx_mlir_supported_ops_NNPA”
确保 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/[email protected]/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/[email protected]/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 2650 in getproxies
File "/usr/local/Cellar/[email protected]/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="*"