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 commit

如果最新的 onnx-mlir main 分支已移至 llvm-project 的新 commit 级别,构建过程通常会遇到与 LLVM 和 MLIR 代码相关的多个编译器故障。

所需级别可在 Building ONNX-MLIR 页面的第一个代码框中,位于 git checkout 命令旁边。

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

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

2) 检查正确的 third_party 支持

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

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

3) Dialect 更新

有时 dialect 的更新需要整个构建目录重新构建。您可能会看到的典型错误是缺少声明,例如对 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 变量摘要

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

MLIR_DIR:PATH MLIR cmake 模块在 llvm-project 构建或安装目录中的路径(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果 **MLIR_DIR** 在之前的 cmake 调用中未设置,则需要此变量。

LLVM_EXTERNAL_LIT:PATH lit 工具的路径。默认为空字符串,如果可能,LLVM 会根据 **MLIR_DIR** 查找工具。当 **MLIR_DIR** 指向安装目录时,需要此变量。