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) 检查正确的第三方支持

通常,当我们更新 ONNX 操作级别时,会导致 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 后,可以使用以下命令运行 doc ONNX-MLIR 测试。有关首先安装第三方 ONNX 项目的详细信息,请参阅 此处。请注意,安装我们第三方子目录中列出的 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 指向 llvm-project 构建或安装目录内的 mlir cmake 模块的路径(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果先前 cmake 调用尚未设置 MLIR_DIR,则需要此参数。

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