ONNX MLIR方法
MLIR中的开放式神经网络交换实现。
Prerequisites
gcc >= 6.4
libprotoc >= 3.11.0
cmake >= 3.15.4
在UNIX上安装MLIR
首先,安装MLIR(作为LLVM-Project的一部分):
git clone https://github.com/llvm/llvm-project.git

Check out a specific branch that is known to work with ONNX MLIR.

cd llvm-project && git checkout 496fb70b141ccbfaba9761294f3b4b97717096a3 && cd …
mkdir llvm-project/build
cd llvm-project/build
cmake -G Ninja …/llvm
-DLLVM_ENABLE_PROJECTS=mlir
-DLLVM_BUILD_EXAMPLES=ON
-DLLVM_TARGETS_TO_BUILD=“host”
-DCMAKE_BUILD_TYPE=Release
-DLLVM_ENABLE_ASSERTIONS=ON
-DLLVM_ENABLE_RTTI=ON

cmake --build . --target – ${MAKEFLAGS}
cmake --build . --target check-mlir
ONNX-MLIR (this project)
需要设置两个环境变量:
• LLVM_PROJ_SRC指向llvm-project src目录(例如llvm-project /)。
• LLVM_PROJ_BUILD指向llvm-project构建目录(例如,llvm-project / build)。
要构建ONNX-MLIR,使用以下命令:
same-as-file: <> ({“ref”: “utils/install-onnx-mlir.sh”, “skip-doc”: 2})
git clone --recursive https://github.com/onnx/onnx-mlir.git

Export environment variables pointing to LLVM-Projects.

export LLVM_PROJ_SRC=(pwd)/llvm−project/exportLLVMPROJBUILD=(pwd)/llvm-project/ export LLVM_PROJ_BUILD=(pwd)/llvm−project/exportLLVMP​ROJB​UILD=(pwd)/llvm-project/build
mkdir onnx-mlir/build && cd onnx-mlir/build
cmake …
cmake --build .

Run FileCheck tests:

export LIT_OPTS=-v
cmake --build . --target check-onnx-lit
上述命令成功onnx-mlir执行后,可执行文件应出现在bin目录中。
在Windows上安装
在Windows上构建onnx-mlir,需要构建一些默认情况下不可用的其它预先条件。
文件中的说明假定正在使用Visual Studio 2019社区版。建议安装具有C ++的桌面开发和具有C ++工作负载的Linux开发。这样可以确保拥有编译此工程,及其在Windows上的依赖项所需的所有工具链和库。
从“ VS 2019开发人员命令提示符”开始的外壳程序中运行所有命令。
Protobuf
将protobuf构建为静态库。
set root_dir=%cd%
git clone --recurse-submodules https://github.com/protocolbuffers/protobuf.git
cd protobuf
cd cmake
cmake -G “Visual Studio 16 2019” -A x64 -T host=x64 -DCMAKE_BUILD_TYPE=Release -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_WITH_ZLIB=OFF -DCMAKE_INSTALL_PREFIX="%root_dir%\protobuf\install"
call msbuild protobuf.sln /m /p:Configuration=Release
call msbuild INSTALL.vcxproj /p:Configuration=Release
在为onnx-mlir运行CMake之前,确保此protobuf的bin目录在PATH中的其它任何目录之前:
set PATH=%root_dir%\protobuf\install\bin;%PATH%
PDCurses
Build a local version of the curses library, used by various commandline tools in onnx-mlir. These instructions assume you use Public Domain Curses.
Run this from a Visual Studio developer command prompt since you will need access to the appropriate version of Visual Studio’s nmake tool.
构建curses库的本地版本,供onnx-mlir中的各种命令行工具使用。这些说明假定使用Public Domain Curses。
从Visual Studio开发命令提示符运行此命令,需要访问相应版本的Visual Studio的nmake工具。
set root_dir=%cd%
git clone https://github.com/wmcbrine/PDCurses.git
set PDCURSES_SRCDIR=%root_dir%/PDCurses
cd PDCurses
call nmake -f wincon/Makefile.vc
MLIR
安装MLIR(作为LLVM-Project的一部分):
git clone https://github.com/llvm/llvm-project.git

Check out a specific branch that is known to work with ONNX MLIR.

cd llvm-project && git checkout 496fb70b141ccbfaba9761294f3b4b97717096a3 && cd …
set root_dir=%cd%
md llvm-project\build
cd llvm-project\build
call cmake -G “Visual Studio 16 2019” -A x64 -T host=x64 …\llvm ^
-DCMAKE_INSTALL_PREFIX="%root_dir%\llvm-project\build\install" ^
-DLLVM_ENABLE_PROJECTS=mlir ^
-DLLVM_BUILD_EXAMPLES=ON ^
-DLLVM_TARGETS_TO_BUILD=“host” ^
-DCMAKE_BUILD_TYPE=Release ^
-DLLVM_ENABLE_ASSERTIONS=ON ^
-DLLVM_ENABLE_RTTI=ON ^
-DLLVM_ENABLE_ZLIB=OFF

call cmake --build . --config Release --target – /m
call cmake --build . --config Release --target install
call cmake --build . --config Release --target check-mlir
ONNX-MLIR (this project)
在构建onnx-mlir之前,需要设置以下环境变量:
• CURSES_LIB_PATH:curses库的路径(例如c:/ repos / PDCurses)
• LLVM_PROJ_BUILD:LLVM构建目录的路径(例如c:/ repos / llvm-project / build)
• LLVM_PROJ_SRC:LLVM源目录的路径(例如c:/ repos / llvm-project)
该项目使用带lit(LLVM的Integrated Tester)进行单元测试。运行CMake时,使用LLVM_EXTERNAL_LIT定义从LLVM指定lit工具的路径。
要构建ONNX MLIR,使用以下命令:
same-as-file: <> ({“ref”: “utils/install-onnx-mlir.cmd”, “skip-doc”: 2})
git clone --recursive https://github.com/onnx/onnx-mlir.git

REM Export environment variables pointing to LLVM-Projects.
set root_dir=%cd%
set CURSES_LIB_PATH=%root_dir%/PDCurses
set LLVM_PROJ_BUILD=%root_dir%/llvm-project/build
set LLVM_PROJ_SRC=%root_dir%/llvm-project

md onnx-mlir\build
cd onnx-mlir\build
call cmake -G “Visual Studio 16 2019” -A x64 -T host=x64 -DLLVM_EXTERNAL_LIT="%root_dir%\llvm-project\build\Release\bin\llvm-lit.py" -DCMAKE_BUILD_TYPE=Release …
call cmake --build . --config Release --target onnx-mlir – /m

REM Run FileCheck tests
set LIT_OPTS=-v
call cmake --build . --config Release --target check-onnx-lit
上述命令成功onnx-mlir执行后,可执行文件应出现在bin目录中。
使用ONNX-MLIR
onnx-mlir用法如下:

OVERVIEW: ONNX MLIR modular optimizer driver

USAGE: onnx-mlir [options]

OPTIONS:

Generic Options:

–help - Display available options (–help-hidden for more)
–help-list - Display list of available options (–help-list-hidden for more)
–version - Display the version of this program

ONNX MLIR Options:
These are frontend options.

Choose target to emit:
–EmitONNXIR - Ingest ONNX and emit corresponding ONNX dialect.
–EmitMLIR - Lower model to MLIR built-in transformation dialect.
–EmitLLVMIR - Lower model to LLVM IR (LLVM dialect).
–EmitLLVMBC - Lower model to LLVM IR and emit (to file) LLVM bitcode for model.
Example
例如,要将ONNX模型(例如add.onnx)降低为ONNX方言,使用以下命令:
./onnx-mlir --EmitONNXIR add.onnx
输出应如下所示:
module {
func @main_graph(%arg0: tensor<10x10x10xf32>, %arg1: tensor<10x10x10xf32>) -> tensor<10x10x10xf32> {
%0 = “onnx.Add”(%arg0, %arg1) : (tensor<10x10x10xf32>, tensor<10x10x10xf32>) -> tensor<10x10x10xf32>
return %0 : tensor<10x10x10xf32>
}
}

ONNX MLIR方法相关推荐

  1. ONNX MLIR应用示例(含源码链接)

    ONNX MLIR应用示例(含源码链接) 开放式神经网络交换在MLIR中的实现 (http://onnx.ai/onnx-mlir/). Prebuilt Containers 开始使用ONNX-ML ...

  2. pytorch模型(.pt)转onnx模型(.onnx)的方法详解(1)

    1. pytorch模型转换到onnx模型 2.运行onnx模型 3.比对onnx模型和pytorch模型的输出结果 我这里重点是第一点和第二点,第三部分  比较容易 首先你要安装 依赖库:onnx ...

  3. MLIR中间表示与编译

    MLIR中间表示与编译 概述 目前深度模型的推理引擎按照实现方式大体分为两类: 解释型推理引擎:  一般包含模型解析器,模型解释器,模型优化器.  模型解析器负责读取和解析模型文件,转换为适用于解 ...

  4. onnx格式转tensorRT

    自己写的onnx转trt的代码. 此处记录几点: 模型的输入须为numpy格式,所以直接从DataLoader取出的数据是不能直接扔进模型的 模型的输入是多个的时候,如输入多张图片时,可以通过下面这种 ...

  5. 【Pytorch】netron可视化——靠谱的使用方法

    在神经网络结构可视化这一块,有很多比较实用的工具,但目前来说我看的比较舒服的还是微软小哥开发的Netron软件. 最近又遇到了一些问题,在可视化yolov5结构的时候,使用官方自带的export.py ...

  6. Jetson 学习笔记(五):pb转uff---pb转onnx转trt----pth转onnx转pb

    文章目录 pb转uff具体代码 运行结果 pb转onnx转trt具体代码 pb转onnx运行结果 onnx转化trt 方法1:trtexec 方法2:onnx-tensorrt工具 推理trt模型 p ...

  7. MLIR (Multi-Level Intermediate Representation)

    MLIR 意思为:多级中间表示,是一种新的IR表示.MLIR 是 LLVM 项目的子项目. MLIR 是一种新型的编译器框架,其设计中参考了已有的编译器优点,规避了一些缺陷.包括了中间表示的定义.转换 ...

  8. onnx文件及其结构、正确导出onnx、onnx读取、onnx创建、onnx修改、onnx解析器

    一.onnx基本概念 1.ONNX的本质,是一种Protobuf格式文件,ONNX文件其实就是Protobuf序列化过后储存的东西.其定义是protobuf语法,语法类似json. 2.Protobu ...

  9. ResNet网络的训练和预测

    ResNet网络的训练和预测 简介 Introduction 图像分类与CNN 图像分类 是指将图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法,是计算机视觉中其他任务,比如目标检测 ...

最新文章

  1. MSRA副院长周明博士:四大研究领域揭示自然语言技术的奥秘
  2. 利用zookeeper实现发布订阅模式
  3. 三种方式实现分布式锁
  4. 手工备份与还原Windows8激活文件
  5. mysql phpmyadmin远程_phpmyadmin登录远程mysql数据库
  6. ae saber插件_AE激光插件Video Copilot Saber安装方法
  7. python如何执行代码漏洞_任意代码执行漏洞
  8. [Java2入门经典]第9章 访问文件和目录
  9. Luogu P1963 [NOI2009]变换序列(二分图匹配)
  10. 在线阅读各版本android系统源代码
  11. Gson将json转Map的那些坑
  12. .net cms系统
  13. vue.js转换乘html_Vue.js的声明式共享元素转换
  14. 普通话测试第四题评分标准_普通话等级考试内容及评分标准
  15. 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
  16. WordPress入门
  17. OPA 论坛为流程控制设备接口扩展了开放性、互操作性标准 - 第一部分
  18. 高校师生疫情管理系统
  19. STM32F105RCT6使用CubeMX初始化工程——2:初始化CAN通信
  20. 量子计算与区块链抗量子算法

热门文章

  1. 简单两步,spring aop上手即用即会
  2. Spring Boot整合Spring Data JPA操作数据
  3. deepin初试与file browser使用小结
  4. 2021年中国服装行业分析报告-产业规模现状与发展规划趋势
  5. 查看LINUX发行版的名称及其版本号
  6. 深度学习——Xavier初始化方法
  7. LeetCode简单题之统计匹配检索规则的物品数量
  8. Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构)
  9. GPU端到端目标检测YOLOV3全过程(上)
  10. YOLOv3和YOLOv4长篇核心综述(下)