TVM学习(八)记录 在百度EdgeBoard开发板上构建RPC

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

https://files.pythonhosted.org/packages/bf/d1/1017fe3f5d65c4fe054a793f18f940d913868bb2846a02d3f6244a829a30/numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

选择合适的版本下载到本地,再上传到开发板

# 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

下载地址

https://files.pythonhosted.org/packages/cf/26/cd6c4177273ee35f7a31245893489c68bc340988f12ca315b392f1f18a93/cloudpickle-2.2.0-py3-none-any.whl

# 安装

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值