基于 MLIR 的机器学习编译器与运行时,将模型统一降级到中间表示,覆盖数据中心到移动与边缘设备。
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
使用预构建的 Docker 容器进行设置(参见 docs/Docker.md)
- 2
在 Linux 或 macOS 上直接构建 ONNX-MLIR(参见 docs/BuildOnLinuxOSX.md)
- 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 数据每日更新。
相关项目
一门用于编写高效自定义深度学习 GPU 内核的语言与编译器,开发效率高于 CUDA。
跨平台的机器学习推理与训练加速器,用于运行 ONNX 格式的模型。
面向 Java 开发者的深度学习框架,与底层引擎无关,可直接用 Java 构建、训练和部署模型。
基于 PyTorch 的计算机视觉工具库,支持目标检测、实例分割和图像分类的训练与模型导出。
一个用 C++ 编写的高性能神经网络推理框架,用于在手机、嵌入式和桌面设备上运行深度学习模型。