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或重新构建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. 进入third_party/onnx目录并签出最新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. 根据步骤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中报告的修复方法编辑顶层CMake文件: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="*"