极智AI | ubuntu编译安装onnx-mlir的正确姿势

Posted 极智视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了极智AI | ubuntu编译安装onnx-mlir的正确姿势相关的知识,希望对你有一定的参考价值。

欢迎关注我的公众号 [极智视界],获取我的更多经验分享

大家好,我是极智视界,本文介绍一下 ubuntu编译安装onnx-mlir的正确姿势。

邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq

首先需要说说:什么是MLIR,什么是ONNX-MLIR。ONNX-MLIR是一个基于MLIR(Multi-Level Intermediate Representation)的开源项目,旨在将ONNX(Open Neural Network Exchange)模型转换为MLIR IR,以实现高效、可扩展和可优化的机器学习推理。而MLIR是一种多级别中间表示(IR),它提供了一个统一的框架,用于将各种不同的前端语言和后端目标之间的高效、可重用和可扩展的转换。ONNX-MLIR将ONNX图转换为MLIR IR,使得可以使用MLIR所提供的一些高级优化技术,例如优化缓冲区分配、运行时缩减和特定硬件的代码生成。

这里咱们来看看在ubuntu上如何正确编译安装onnx-mlir。

下面开始。

一、创建容器

# 首先拉取镜像
docker pull nvidia/cuda:11.1.1-cudnn8-devel-ubuntu18.04

# 创建docker容器
sudo docker run -it -p 9663:22 --gpus all --privileged --net=bridge --ipc=host --pid=host --name mlir -v /workspace:/workspace nvidia/cuda:11.1.1-cudnn8-devel-ubuntu18.04 /bin/bash

二、安装依赖

编译和后续开发依赖要求:

python >= 3.8
gcc >= 6.4
protobuf >= 3.20.3
cmake >= 3.13.4
make >= 4.2.1 or ninja >= 1.10.2
java >= 1.11 (optional)
aptitude >= 0.8.12

lit==15.0.6
# numpy 1.24 deprecates np.object, np.bool, np.float, np.complex, np.str,
# and np.int which are used heavily in onnx-mlir.
numpy>=1.19.5, <=1.23.5
pytest>=4.6.9, <=7.2.0
pytest-xdist>=1.31.0, <=2.5

咱们可以使用anaconda来管理python的版本,可以使用如下命令进行mlir版本的管理:

conda create -n mlir_py385 python=3.8.5

让我们开始安装依赖:

apt update
apt install gcc libprotobuf-dev protobuf-compiler cmake aptitude 
# ==> 这样安装完后像cmake、make、ninja、protoc这些应该版本还不符合要求,还需要做一个升级
# ==> 对于怎么升级cmake、make、ninja和protoc版本,一般可以采用源码编译,由于我还没形成文章发布(只有本地笔记),这里就不放相关链接了,后面有机会会整理发布相关教程

# 安装python依赖
pip install -i https://pypi.douban.com/simple lit==15.0.6 numpy==1.19.5 pytest==4.6.9 pytest-xdist==1.31.0

到这里应该咱们的依赖以及依赖的版本都安装好了,没有问题了。

三、安装MLIR

安装MLIR,MLIR目前是LLVM项目的一部分。

# clone llvm项目
git clone -n 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 ba8b8a73fcb6b830e63cd8e20c6e13b2a14d69bf

cd ..

开始编译:

mkdir llvm-project/build
cd llvm-project/build

cmake -G Ninja ../llvm \\
   -DLLVM_ENABLE_PROJECTS=mlir \\
   -DLLVM_TARGETS_TO_BUILD="host" \\
   -DCMAKE_BUILD_TYPE=Release \\
   -DLLVM_ENABLE_ASSERTIONS=ON \\
   -DLLVM_ENABLE_RTTI=ON

cmake --build . -- $MAKEFLAGS
cmake --build . --target check-mlir

四、安装ONNX-MLIR

基于MLIR安装ONNX-MLIR:

git clone --recursive https://github.com/onnx/onnx-mlir.git

# MLIR_DIR must be set with cmake option now
MLIR_DIR=$(pwd)/llvm-project/build/lib/cmake/mlir
mkdir onnx-mlir/build && cd onnx-mlir/build
if [[ -z "$pythonLocation" ]]; then
  cmake -G Ninja \\
        -DCMAKE_CXX_COMPILER=/usr/bin/c++ \\
        -DMLIR_DIR=$MLIR_DIR \\
        ..
else
  cmake -G Ninja \\
        -DCMAKE_CXX_COMPILER=/usr/bin/c++ \\
        -DPython3_ROOT_DIR=$pythonLocation \\
        -DMLIR_DIR=$MLIR_DIR \\
        ..
fi
cmake --build .

# Run lit tests:
export LIT_OPTS=-v
cmake --build . --target check-onnx-lit

这样就把onnx-mlir安装成功了。

好了,以上分享了 ubuntu编译安装onnx-mlir的正确姿势,希望我的分享能对你的学习有一点帮助。

【极智视界】

极智AI | ubuntu编译安装onnx-mlir的正确姿势

 畅享人工智能的科技魅力。邀请您加入我的知识星球,星球内有丰富的AI技术应用相关技术文章、资源、项目源码,涵盖人脸、检测、分割、多模态、自动驾驶、工业等实用、好玩的项目应用,一定会对你的学习有所帮助。https://t.zsxq.com/0aiNxERDq

以上是关于极智AI | ubuntu编译安装onnx-mlir的正确姿势的主要内容,如果未能解决你的问题,请参考以下文章

极智AI | libtorch 调用模型推理方法

极智AI | centos7源码编译tensorflow

极智开发 | ubuntu源码编译cuda版opencv

极智AI | 算能SC5+智算卡驱动安装与升级

极智AI | 昇腾开发环境搭建 CANN & MindStudio (无坑版)

极智开发 | ubuntu 安装 libtorch