使用TVM在树莓派部署yolov8模型(二)

这部分主要记录部署环境的搭建。
在电脑或服务器上编译,需要搭建完整的TVM工具链;树莓派上仅负责运行,因此只编译runtime即可。
先从简单的开始

一 在树莓派上编译runtime

我的树莓派是新装的系统,那就从头搭建环境吧。
我用的树莓派最新系统,自带python3.11,但tvm官网表示不支持python3.9以上版本!不想看到版本不兼容导致的各种bug,使用miniconda3再装一个python3.8版本。

root@raspberrypi:/home/yblir_pi/tvm/build#
root@raspberrypi:/home/yblir_pi/tvm/build#
root@raspberrypi:/home/yblir_pi/tvm/build# python
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
  1. 搭建python环境
# 记得选择aarch64格式
# 当前设备,miniconda3最高只能到4.9.2,
# 更新的版本会抛出 "$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs问题。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-aarch64.sh
bash Miniconda3-py38_4.9.2-Linux-aarch64.sh

# 这里,选择安装路径,默认root下,我改到了/usr/local目录下
  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/miniconda3] >>> /usr/local/miniconda3

  1. 树莓派自带了gcc,g++, 但没有cmake,需要另外安装
apt-get install cmake
cmake --version
# 需要安装llvm, 高版本的会有安装问题,用13版本
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/llvm-project-13.0.1.src.tar.xz
tar xvf llvm-project-13.0.1.src.tar.xz
mkdir /usr/local/llvm
mkdir llvm-project-13.0.1.src/build
cd llvm-project-13.0.1.src/build
cmake -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_BUILD_TYPE="Release" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_INSTALL_PREFIX="/usr/local/llvm" ../llvm
# 使用cmake --build而不用make,是为了跨平台。这步要耗时很久,编译了6个小时~
cmake --build . -j3
cmake --build . --target install

# 查看llvm版本
llvm-as --version

# 若显示no command,需要再配置bashrc
vim ~/.bashrc
# 添加自己的llvm路径
export LLVM_HOME=/usr/local/llvm/bin
export PATH=$LLVM_HOME:$PATH

# 再执行llvm-as --version就能看到安装的版本号了
LLVM (http://llvm.org/):
  LLVM version 13.0.1
  Optimized build.
  Default target: aarch64-unknown-linux-gnu
  Host CPU: cortex-a72

# 再写入python路径
export PYTHONPATH=$PYTHONPATH:/home/yblir_pi/tvm/python
  1. 编译安装opencv
# 先安装必要的依赖包,应该有些包不是必要的,装不成功就跳过
apt-get install build-essential -y
apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y 
apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev -y

依次执行以下命令,cmake 指定的opencv路径换成自己的

cmake   -DCMAKE_BUILD=Release \
		-DCMAKE_INSTALL_PREFIX=/usr/local \
		-DBUILD_ZLIB=ON \
		-DBUILD_JPEG=ON \
		-DBUILD_JASPER=ON \
		-DBUILD_WEBP=ON \
		-DBUILD_PNG=ON \
		-DBUILD_TIFF=ON \
		-DBUILD_OPENEXR=ON \
		-DBUILD_TBB=ON \
		-DBUILD_opencv_python2=OFF \
		-DBUILD_opencv_python3=ON \
		-DBUILD_JAVA=OFF \
		-DWITH_TBB=ON \
		-DWITH_CUDA=ON \
		-D OPENCV_ENABLE_NONFREE=ON \
        		-D CUDA_nppicom_LIBRARY=stdc++ \
		-DWITH_NVCUVID=ON \
		-DWITH_CUBLAS=ON \
		-DWITH_CUFFT=ON \
		-DWITH_CUDNN=ON \
		-DCUDA_FAST_MATH=ON \
		-DWITH_FREETYPE=ON \
		-DWITH_FFMPEG=ON \
		-DWITH_V4L=ON \
		-DOPENCV_GENERATE_PKGCONFIG=YES \
		/home/yblir_pi/opencv_install/opencv-4.7.0
# 树莓派4b只有4个线程,开太多有卡死
make -j3
make install
# ldconfig命令的作用主要是在默认搜寻目录/lib和/usr/lib以
# 及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库
ldconfig
  1. 编译安装tvm runtime, 这部分官网写的最详细
git clone --recursive https://github.com/apache/tvm tvm
cd tvm
mkdir build
cp cmake/config.cmake build
cd build
# 必须把 set(USE_LLVM OFF) -> set(USE_LLVM ON)
vim config.cmake
cmake ..
make runtime -j3

二 本地电脑安装交叉编译器

2.1 本地电脑需要是Linux或wsl系统,win系统会有各种bug
本地电脑也需要llvm,安装步骤通上
需要完整版的tvm,安装步骤也同上,需要改变一点,make runtime -j3 -> make -j3,目标是生成libtvm.so,libtvm_runtime.so两个文件。这里步骤不再重复描述了。

2.2 安装交叉编译器

# 在本地电脑上安装
apt-get install g++-arm-linux-gnueabihf
# 查看安装后的版本信息
arm-linux-gnueabihf-g++ -v

在这里插入图片描述

三 总结

流程写到有点乱, 只写了主要搭建过程,因为官方文档写的比我清楚https://tvm.hyper.ai/docs/install/from_source
这里就不再写重复的流程了.

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值