onnx-mlir

Logo

ONNX 模型在 MLIR 编译器基础设施中的表示和参考下推

在 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 操作安装 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 版本所采取的步骤

  1. 创建您自己的分支

  2. “cd”进入 third_party/onnx 并 checkout 最新版本 onnx 的 commit(您可以在这里找到最新的 commit:https://github.com/onnx/onnx/releases)

  3. “pip uninstall onnx”(删除旧版本)

  4. onnx-mlir/ 目录中,“pip install third_party/onnx”(从 commit 安装 onnx,而不是在线版本)

  5. 使用正确的版本号更新 utils/gen_onnx_mlir.py 文件

  6. 使用以下命令在 build/ 目录中构建 onnx:set 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. 根据 step 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>

已知问题

在 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="*"