【GiantPandaCV导语】这篇文章主要是讲解了如何给Jetson Nano装机,以及在Jetson Nano上如何配置TVM并将MxNet的ResNet18跑起来获取分类结果,最后我们还体验了一下使用AutoTVM来提升ResNet50在Jetson Nano上的推理效率,AutoTune了一个Task(一共需要AutoTune 20个Task)之后可以将ResNet50的推理速度做到150ms跑完一张图片(224x224x3),从上面的BenchMark可以看到TensorRT在FP32的时候大概能做到50-60ms推理一张图片(224x224x3)。本文所有实验代码均可以在这里找到:https://github.com/BBuf/tvm_learn/blob/main/relay ,如果你对学习TVM感兴趣可以考虑点个star。
0x00. Jetson Nano 安装
这里就不详细介绍Jetson Nano了,我们只需要知道NVIDIA Jetson是NVIDIA的一系列嵌入式计算板,可以让我们在嵌入式端跑一些机器学习应用就够了。手上刚好有一块朋友之前寄过来的Jetson Nano,过了一年今天准备拿出来玩玩。
拿到的Jetson Nano大概长这个样子:

我们需要为Jetson Nano烧录一个系统,Jetson Nano的系统会被烧录在一个SD Card中,然后插入到板子上。我这里选取了一块内存为128GB的SD Card。
首先,我们下载Jetson Nano镜像(https://developer.nvidia.com/embedded/jetpack),这个镜像里面包含提供引导加载程序、Ubuntu18.04、必要的固件、NVIDIA驱动程序、示例文件系统等。
然后下载Etcher(https://www.balena.io/etcher)这个镜像烧录工具把我们下载好的Jetson Nano镜像烧录到SD卡中,操作很简单,选择镜像和我们的读卡器就可以了。下面展示了完成烧录后的界面。

然后将SDCard插回Jetson Nano并插入电源完成系统的安装即可,安装完成后界面如下。

只有一个显示器,为了不影响基于windows的开发工作,所以直接ssh登录:

为了开发方便,可以将jetson Nano在VsCode里面进行配置,配置信息这样写:
Host JetsonNano
HostName 192.168.1.6
User bbuf
然后就可以通过VsCode远程连接到Jetson Nano上进行开发了。
0x01. 基础环境安装
首先使用uname -a查看一下系统的基本信息:
Linux bbuf-desktop 4.9.201-tegra #1 SMP PREEMPT Fri Feb 19 08:40:32 PST 2021 aarch64 aarch64 aarch64 GNU/Linux
可以看到这个系统是64位的arm系统,接下来我们为ubuntu更换一下国内源,换源前最好备份一下原始的源:
sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
然后换源:
sudo gedit /etc/apt/sources.list
我这里选择的是清华的镜像源,将下面的代码粘贴进去:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
保存之后,执行sudo apt-get update就完成了。

然后我们就可以来配置TVM需要的一些依赖了,我们一边编译一边配置,根据报错提示来。
首先建一个新的文件夹,克隆一下TVM源码然后执行下面这些操作:
git clone --recursive https://github.com/apache/tvm tvm
cd tvm
mkdir build
cp c

本文介绍了如何在JetsonNano上搭建TVM环境,部署MxNet ResNet18模型,并通过AutoTVM进行性能优化,实测ResNet50推理速度达到150ms。对比TensorRT,展示了TVM与AutoTune潜力。
最低0.47元/天 解锁文章
674





