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 方言
关于文档

开发

添加一个 Operation
测试指南
错误处理
命令行选项
插桩
常量传播
添加加速器

工具

工具

RunONNXModel.py
DocCheck

本项目由 onnx 维护

托管在 GitHub Pages 上 — 主题由 orderedlist

安装 third_party ONNX 用于后端测试或重建 ONNX Operation

后端测试通过在构建目录中运行 make check-onnx-backend 来触发,需要一些前期步骤才能成功运行。类似地,从 ONNX 描述中重建 ONNX-MLIR 中的 ONNX Operation,则是通过 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 版本的步骤

  1. 创建您自己的分支

  2. “cd” 进入 third_party/onnx 目录并检出 (checkout) 最新 ONNX 版本的提交 (commit)(您可以在此处找到最新的提交: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: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. 根据 步骤 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 时会出现一个问题。如果在构建过程中遇到错误,请尝试按照此 PR (https://github.com/onnx/onnx/pull/2482/files) 中报告的方式编辑顶层 CMakefile 来修复它。

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