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 描述重新构建 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 版本的步骤

  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: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 时会出现一个问题。如果在构建过程中出现错误,请尝试修复方法,即编辑顶级 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="*"