1.开发板介绍
FZ9D(官方网址)(官方网址)https://ai.baidu.com/ai-doc/HWCE/Akq9bqs05
2.设置电脑静态ip
电脑系统ubuntu20.04
设置-网络-有线-设置-IPv4
地址:192.168.1.111 子网掩码255.255.255.0 网关:192.168.1.1
3.链接开发板和电脑
开发板ip=192.168.1.254 端口号24
使用ssh链接开发板,密码root
ssh root@192.168.1.254
4.将开发板的python升级为python3.8(TVM要求python环境为3.6及以上)
ubuntu安装python3.7,并更新python默认指向为python3.7_正在努力学习的zz的博客-CSDN博客_ubuntu 安装python3.7
5.在开发板上构建 TVM runtime 库(实现rpc链接)
官方构建链接:在树莓派上部署预训练模型 | Apache TVM 中文站
方法一:不联网构建操作:
TVM源码---压缩包下载地址:tvm.tarTVM源码压缩包-深度学习文档类资源-CSDN下载
下载压缩包到本地
# 本地文件传到开发板上
scp /xxx/xxx/tvm.tar root@192.168.1.254:/home/xilinx
# 解压
tar -zxvf tvm.tar
构建RPC服务器
cd tvm
mkdir build
cp cmake/config.cmake build
cd build
cmake ..
make runtime
方法二:联网构建(我不知道开发板怎么联网,所以用的是方法一)
区别就是直接下载tvm源码还是先下载到本地电脑再上传到开发板
git clone --recursive https://github.com/apache/tvm tvm
cd tvm
mkdir build
cp cmake/config.cmake build
cd build
cmake ..
make runtime
设置环境
runtime 构建完成后,在 ~/.bashrc
文件中设置环境变量——用 vim ~/.bashrc
命令来编辑 ~/.bashrc
,添加下面这行代码(假设 TVM 目录在 ~/tvm
中):
vim ~/.bashrc
export PYTHONPATH=$PYTHONPATH:~/tvm/python
source ~/.bashrc
6.缺少numpy、cloudpickle、tornado模块
(1)安装离线numpy
下载地址numpy · PyPI
选择合适的版本下载到本地,再上传到开发板
# Python3.8.0放到了/home/xilinx下,将numpy放在Python3.8.0下
scp /xxx/xxx/numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl root@192.168.1.254:/home/xilinx/Python3.8.0
# 安装numpy
pip install numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
安装时报错:ERROR: *** is not a supported wheel on this platform
解决方法:解决ERROR: *** is not a supported wheel on this platform_there2belief的博客-CSDN博客
在终端输入:pip debug --verbose
必须是上图格式的文件才能被安装,将安装包重命名为:
numpy-1.23.5-cp38-cp38-linux_aarch64.whl
再安装numpy
pip install numpy-1.23.5-cp38-cp38-linux_aarch64.whl
(2)离线安装cloudpickle
下载地址
# 安装
pip install cloudpickle-2.2.0-py3-none-any.whl
(3)离线安装tornado
下载地址:tornado · PyPI
# 下载到本地
tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 更改安装包名称
tornado-6.2-cp37-abi3-linux_aarch64.whl
# 发送到开发板上
scp /path/to/tornado-6.2-cp37-abi3-linux_aarch64.whl root@192.168.1.254:/xxx/xxx/xx
# 安装
pip install tornado-6.2-cp37-abi3-linux_aarch64.whl
7.在设备上设置 RPC 服务器
在远程设备上运行以下命令,启动 RPC 服务器:
python -m tvm.exec.rpc_server --host 0.0.0.0 --port=24
看到如下结果,则表示 RPC 服务器启动成功:
INFO:root:RPCServer: bind to 0.0.0.0:24
8.主机端安装交叉编译链------aarch64 的交叉编译
官方链接:
Deploy Models and Integrate TVM — tvm 0.11.dev0 documentation
部署模型并与 TVM 集成 | Apache TVM 中文站
sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
9.测试
测试代码:在树莓派上部署预训练模型 | Apache TVM 中文站
更改如下代码:替换target
local_demo = False
if local_demo:
target = tvm.target.Target("llvm")
else:
# target = tvm.target.arm_cpu("pynq")
target = tvm.target.Target('llvm -device=arm_cpu -model=UltraScale+ -mtriple=aarch64-linux-gnu -mattr=+neon')
将ip地址和端口号改为自己的
if local_demo:
remote = rpc.LocalSession()
else:
# The following is my environment, change this to the IP address of your target device
host = "192.168.1.254"
port = 24
10.运行程序,完成测试
测试结果:
resnet18 266.66ms