欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > IREE AI编译器编译测试流程指南

IREE AI编译器编译测试流程指南

2026/2/2 21:26:05 来源:https://blog.csdn.net/sexyluna/article/details/146408807  浏览:    关键词:IREE AI编译器编译测试流程指南

iree onnx demo

计划协议系列博客,记录学习iree编译器的过程.

今天第一篇博客,记录安装和测试iree

文章目录

  • iree onnx demo
    • 下载安装iree
    • python环境安装
    • 编译测试
      • 1. [前端] onnx模型转MLIR文件
      • 2. [后端] MLIR文件转可执行文件
      • 3. [执行] 执行测试编译后的文件
    • 关于后端设备的介绍

下载安装iree

IREE官网教程

这里都已经非常详细了,按照官网教程可以成功配置

当然如果你和我一样懒得看这么多, 你可以直接下载iree项目后, 项目内有一个编译脚本

build_tools/cmake/build_all.sh ,直接执行 build_tools/cmake/build_all.sh build就可以编译iree到build文件夹了.

python环境安装

上述的编译步骤会自动编译iree python的相关库,前端IR的导入就是依赖这一部分,可以惨考 官网-python包编译安装 , 我是使用cmake指令直接安装的

CMAKE_INSTALL_METHOD=ABS_SYMLINK python -m pip install -e ../iree-build/compiler
CMAKE_INSTALL_METHOD=ABS_SYMLINK python -m pip install -e ../iree-build/runtime

编译测试

1. [前端] onnx模型转MLIR文件

下载onnx 模型可以在: https://github.com/onnx/models/tree/main 这里找onnx 模型用来实验.

本文将下载模型: https://github.com/onnx/models/tree/main/Computer_Vision/adv_inception_v3_Opset16_timm 用于后续的测试

  • 使用下述指令即可将onnx模型转为mlir文件,
    • free-import-onnx 是python工具,需要编译IREE后安装python相关的东西,
      • 也可以直接使用pip下载,自行查阅官网文档.
iree-import-onnx \./*.onnx \--opset-version 17 \-o model.mlir

生成的MLIR文件是一个文本文件,可以直接打开

image-20250320230858104

里面基本分类2个部分:

  1. 有哪些算子,比如

    1. 卷积算子

      1. %190 = torch.operator "onnx.Conv"(%arg0, %2, %3) {torch.onnx.dilations = [1 : si64, 1 : si64], torch.onnx.group = 1 : si64, torch.onnx.kernel_shape = [3 : si64, 3 : si64], torch.onnx.pads = [0 : si64, 0 : si64, 0 : si64, 0 : si64], torch.onnx.strides = [2 : si64, 2 : si64]} : (!torch.vtensor<[1,3,299,299],f32>, !torch.vtensor<[32,3,3,3],f32>, !torch.vtensor<[32],f32>) -> !torch.vtensor<[1,32,149,149],f32> 
        
      2. 常量算子

        1.     %188 = torch.operator "onnx.Constant"() {torch.onnx.value = dense_resource<_onnx__Conv_1156> : tensor<192x2048x1x1xf32>} : () -> !torch.vtensor<[192,2048,1,1],f32> 
          
  2. 有哪些常量

    1. 一般就是权重和算子的参数

      _onnx__Conv_1156: "0x0800000098233D3B52728ABEE29334BE1F0CF4BD48A5BDBD8D90713D..."
      

2. [后端] MLIR文件转可执行文件

  • 编译MLIR
iree-compile \model.mlir \--iree-hal-target-backends=llvm-cpu \--iree-llvmcpu-target-cpu=host \-o model_cpu.vmfb

可以生成最终的编译结果 vmfb 文件, 这是一个flatbuffer格式的, 可以通过 iree-dump-module ./model_cpu.vmfb 指令来看模型的结构.


#   # | Offset   |   Length | Blocks | i32 # | ref # | Requirements | Aliases
# ----+----------+----------+--------+-------+-------+--------------+-----------------------------------------------------
#   0 | 00000000 |    17232 |      1 |   340 |     4 |              |
#   1 | 00004350 |      488 |      1 |    24 |     8 |              | main_graph$async
#   2 | 00004538 |       90 |      1 |     2 |     3 |              | main_graph
#   3 | 00004598 |     2311 |     14 |    26 |     6 |              | __init

其中J:

# main_graph$async 和 main_graph 更有可能是用于模型推理的函数。其中,main_graph$async 或许是异步执行的函数,而 main_graph 是同步执行的函数。你可以先尝试使用 main_graph 作为函数名来运行模型

3. [执行] 执行测试编译后的文件

  • 执行测试
    • 这里使用的是fp32全是2的数值的TV.
iree-run-module \--module=model_cpu.vmfb \--device=local-task \--function=main_graph \--input="1x3x299x299xf32=2" \./model_cpu.vmfb

image-20250320231446248

关于后端设备的介绍

1. llvm-cpu

  • 通用 CPU 后端(默认选项)
  • 基于 LLVM 编译器优化 CPU 指令
  • 支持 x86/ARM 等主流 CPU 架构
  • 适合没有专用加速硬件的设备

2. metal-spirv

  • 苹果专有 GPU 加速方案
  • 支持 iOS/macOS 设备的 Metal API
  • 适配 Apple Silicon(M 系列芯片)和 A 系列芯片
  • 需要 macOS 10.13 + 或 iOS 11+

3. vmvx

  • 针对 Intel 视觉处理单元(VPU)
  • 如 Movidius Myriad X 等边缘 AI 芯片
  • 适合低功耗嵌入式设备的视觉推理
  • 需安装 VPU 驱动和相关工具链

4. vmvx-inline

  • 实验性的 VPU 内联编译模式
  • 直接在 CPU 上模拟 VPU 指令集
  • 主要用于开发调试,性能较低

5. vulkan-spirv

  • 跨平台 GPU 加速方案
  • 支持 NVIDIA/AMD/Intel 等主流 GPU
  • 适用于 Linux/Windows/macOS 等系统
  • 需安装对应 GPU 的 Vulkan 驱动

6. webgpu-spirv

  • 浏览器端 GPU 加速方案
  • 基于 WebGPU API(需 Chrome/Firefox 等支持)
  • 允许在网页中直接运行 AI 模型
  • 适用于 WebAssembly 环境

选择建议

  • CPU 设备 → llvm-cpu
  • 苹果设备 → metal-spirv
  • 通用 GPU → vulkan-spirv
  • 边缘 AI 设备 → vmvx
  • 网页应用 → webgpu-spirv

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词