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-MLIR: 构建故障排除和测试 ONNX_MLIR

构建 ONNX-MLIR 的故障排除

如果在第一次 onnx-mlir 构建期间遇到问题,您可能需要检查我们构建使用的 cmake 变量。请参阅本页的最后一部分以获取帮助。

如果您已经成功使用源代码目录一段时间,在合并来自 main 分支的最新更改后,您在重新构建 onnx-mlir 时可能会遇到困难。

以下是您可以执行的几个步骤。如果其中任何一个适用,建议删除 onnx-mlir/build 子目录,并使用 cmake 命令从头开始重新构建。

1) 检查 llvm-project 的正确提交

如果最新的 onnx-mlir main 分支已更新到 llvm-project 的更高提交级别,构建过程通常会遇到与 LLVM 和 MLIR 代码相关的多个编译器失败。

所需级别可在构建 ONNX-MLIR 页面的第一个代码框中找到,就在 git checkout 命令旁边。

代码中使用的级别可通过在 llvm-project 子目录中执行 git log 命令找到。

如果不匹配,请将 llvm 项目更新到所需级别。

2) 检查正确的 third_party 支持

通常,当我们更新 ONNX op 级别时,会在 third_party/onnx 子目录中产生新的软件。未能更新该代码通常会导致与 ONNX 方言代码相关的编译器失败。

最简单的方法是直接删除 third_party 目录,然后使用 git submodule update --init --recursive 重新安装代码。

3) 方言更新

有时候,方言更新需要重新构建整个构建目录。您可能会看到的典型错误包括缺失声明,例如 verifier 方法的声明。建议是直接删除 onnx-mlir/build 子目录,并使用 cmake 命令从头开始重新构建。

如果在构建期间遇到 Protobuf 相关错误,请检查以下潜在原因

这些以及设置构建环境的许多其他技巧是我们推荐使用 onnxmlir/onnx-mlir-dev docker 镜像进行开发的原因。

ONNX-MLIR 的高层次测试

要运行 lit ONNX-MLIR 测试,请使用以下命令

[same-as-file]: <> ({“ref”: “utils/check-onnx-mlir.cmd”, “skip-ref”: 1})

call cmake --build . --config Release --target check-onnx-lit

或者只需在构建目录中为 ninjamake 调用 check-onnx-lit 目标。

要运行数值 ONNX-MLIR 测试,请使用以下命令

[same-as-file]: <> ({“ref”: “utils/check-onnx-numerical.cmd”, “skip-ref”: 1})

call cmake --build . --config Release --target check-onnx-numerical

或者只需在构建目录中为 ninjamake 调用 check-onnx-numerical 目标。

要运行文档 ONNX-MLIR 测试,请在安装下方所示的 third_party ONNX 后,使用以下命令。有关首先安装 third_party ONNX 项目的详细信息,请参阅此处。请注意,关键是安装我们 third_party 子目录中列出的 ONNX 项目版本,因为 ONNX-MLIR 可能落后于 ONNX 标准的最新版本。

[same-as-file]: <> ({“ref”: “utils/check-docs.cmd”, “skip-ref”: 1})

call cmake --build . --config Release --target check-docs

或者只需在构建目录中为 ninjamake 调用 check-docs 目标。

LLVM 和 ONNX-MLIR CMake 变量摘要

来自 LLVM 和 ONNX-MLIR 的以下 CMake 变量可在编译 ONNX-MLIR 时使用。

MLIR_DIR:PATH 指向 llvm-project 构建或安装目录中 mlir cmake 模块的路径(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果 MLIR_DIR 尚未从先前的 cmake 调用中设置,则这是必需的。

LLVM_EXTERNAL_LIT:PATH 指向 lit 工具的路径。默认值为空字符串,如果可能,LLVM 将根据 MLIR_DIR 查找工具。当 MLIR_DIR 指向安装目录时,这是必需的。