Repolode
onnx

onnx/onnx-mlir

将 ONNX 神经网络计算图通过 MLIR 编译为运行时依赖极少的代码的编译器。

Star
1,066
Fork
457
未关闭 Issue
357
最近提交
17小时前

这是什么?

ONNX-MLIR 接收合法的 ONNX 模型计算图,将其编译为实现该计算图的代码,并尽量减少运行时依赖。项目遵循 ONNX 标准,底层基于 LLVM/MLIR 编译框架。

项目提供可被其他 MLIR 项目集成的 ONNX 方言,可将 ONNX 图降级为 MLIR 文件、LLVM 字节码或 C、Java 库的编译接口,以及 onnx-mlir 命令行工具。另外还提供 Python、C、C++ 和 Java 运行时接口,用于加载和执行编译后的模型。

各类 ONNX 算子的支持情况按目标平台分别列出,包括通用 CPU 后端和 IBM Telum 集成 AI 加速器。项目可在 Linux、macOS 和 Windows 上原生构建,官方推荐使用 Docker 镜像进行环境配置。

核心功能

  • 01将 ONNX 计算图编译为 MLIR、LLVM IR、目标文件、共享库或 JAR 文件。
  • 02提供可供其他 MLIR 项目复用的 ONNX 方言。
  • 03提供 Python、C、C++ 和 Java 运行时接口。
  • 04支持 O0 到 O3 的优化级别,并可通过环境变量传入编译选项。
  • 05按通用 CPU 与 IBM Telum NNPA 目标分别列出算子支持情况。

适用场景

  • 将 ONNX 模型编译为依赖极少的库以便部署。
  • 借助 NNPA 后端将 ONNX 模型部署到 IBM Telum 服务器。
  • 在 MLIR 流水线中集成 ONNX 方言,构建编译器工具。

快速上手

  1. 1

    使用预构建的 Docker 容器进行设置(参见 docs/Docker.md)

  2. 2

    在 Linux 或 macOS 上直接构建 ONNX-MLIR(参见 docs/BuildOnLinuxOSX.md)

  3. 3

    使用构建好的驱动将 ONNX 模型降级为 ONNX 方言

    ./onnx-mlir --EmitONNXIR add.onnx

使用前须知

  • 从源码构建需要特定的 LLVM/MLIR 提交版本,以及 clang、protobuf、cmake 等多个前置依赖。
  • 没有简单的包管理器安装方式,在某些系统上设置可能比较困难,因此推荐使用 Docker。
  • 算子支持仅限于项目支持算子文档中列出的算子。

收录于专题

标签

常见问题

onnx-mlir 是什么?
将 ONNX 神经网络计算图通过 MLIR 编译为运行时依赖极少的代码的编译器。 ONNX-MLIR 接收合法的 ONNX 模型计算图,将其编译为实现该计算图的代码,并尽量减少运行时依赖。项目遵循 ONNX 标准,底层基于 LLVM/MLIR 编译框架。
onnx-mlir 可以免费使用吗?用的什么许可证?
onnx-mlir 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
onnx-mlir 还在维护吗?
活跃维护中。onnx-mlir 最近一次提交是在 2026年11月6日。
onnx-mlir 适合用来做什么?
将 ONNX 模型编译为依赖极少的库以便部署。 借助 NNPA 后端将 ONNX 模型部署到 IBM Telum 服务器。 在 MLIR 流水线中集成 ONNX 方言,构建编译器工具。
onnx-mlir 怎么安装和运行?
使用预构建的 Docker 容器进行设置(参见 docs/Docker.md) 在 Linux 或 macOS 上直接构建 ONNX-MLIR(参见 docs/BuildOnLinuxOSX.md) 使用构建好的驱动将 ONNX 模型降级为 ONNX 方言: ./onnx-mlir --EmitONNXIR add.onnx
在哪里获取 onnx-mlir?
源代码和安装说明在 GitHub 上:https://github.com/onnx/onnx-mlir

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目