NVIDIAJetsonNano2GB系列文章(64):将模型部署到Jetson设备

NVIDIAJetsonNano2GB系列文章(64):将模型部署到Jetson设备

前面我们花了很多力气在 TAO 上面训练模型,其最终目的就是要部署到推理设备上发挥功能。除了将模型训练过程进行非常大幅度的简化,以及整合迁移学习等功能之外,TAO 还有一个非常重要的任务,就是让我们更轻松获得 TensorRT 加速引擎。

将一般框架训练的模型转换成 TensorRT 引擎的过程并不轻松,但是 TensorRT 所带来的性能红利又是如此吸引人,如果能避开麻烦又能享受成果,这是多么好的福利!


  • 一般深度学习模型转成 TensorRT 引擎的流程

下图是将一般模型转成 TesnorRT 的标准步骤,在中间 Builder 右边的环节是相对单纯的,比较复杂的是 Builder 左边的操作过程

NVIDIAJetsonNano2GB系列文章(64):将模型部署到Jetson设备

下图就上图NetworkDefinition比较深入的内容,TensorRT 提供Caffe、uff 与 ONNX三种解析器,其中 Caffe 框架已淡出市场、uff 仅支持 TensorFlow 框架,其他的模型就需要透过 ONNX 交换格式进行转换。

NVIDIAJetsonNano2GB系列文章(64):将模型部署到Jetson设备

这里以 TensorRT 所提供的 YOLOv3 范例来做范例,在安装Jetpack 4.6 版本的 Jetson Nano 设备上进行体验,请进入到 TesnorRT 的 YOLOv3 范例中:

cd/usr/src/tensorrt/samples/python/yolov3_onnx

根据项目的README.md指示,我们需要先为工作环境添加依赖库,不过由于部分库的版本关系,请先将requirements.txt的第 1、3 行进行以下的修改:

numpy==1.19.4
protobuf>=3.11.3
onnx==1.10.1
Pillow; python_version<"3.6"Pillow==8.1.2; python_version>="3.6"pycuda<2021.1

然后执行以下指令进行安装:

python3-mpipinstall-rrequirements.txt

接下来需要先下载download.yml里面的三个文件,

wgethttps://pjreddie.com/media/files/yolov3.weights 
wgethttps://raw.githubusercontent.com/pjreddie/darknet/f86901f6177dfc6116360a13cc06ab680e0c86b0/cfg/yolov3.cfg 
wgethttps://github.com/pjreddie/darknet/raw/f86901f6177dfc6116360a13cc06ab680e0c86b0/data/dog.jpg

然后就能执行以下指令,将yolov3.weights转成yolov3.onnx:

./yolov3_to_onnx.py  -d  /usr/src/tensorrt

这个执行并不复杂,是因为 TensorRT 已经提供 yolov3_to_onnx.py 的 Python 代码,但如果将代码打开之后,就能感受到这 750+ 行代码要处理的内容是相当复杂,必须对 YOLOv3 的结构与算法有足够了解,包括解析 yolov3.cfg 的 788 行配置。想象一下,如果这个代码需要自行开发的话,这个难度有多高!

接下去再用下面指令,将yolov3.onnx转成yolov3.trt加速引擎:

./onnx_to_tensorrt.py  -d  /usr/src/tensorrt

以上是从一般神经网络模型转成 TensorRT 加速引擎的标准步骤,这需要对所使用的神经网络的结构层、数学公式、参数细节等等都有相当足够的了解,才有能力将模型先转换成 ONNX 文件,这是技术门槛比较高的环节。

  • TAO 工具训练的模型转成 TensorRT 引擎的工具

用 TAO 工具所训练、修剪并汇出的 .etlt 文件,可以跳过上述过程,直接在推理设备上转换成 TensorRT 加速引擎,我们完全不需要了解神经网络的任何结构与算法内容,直接将 .etlt 文件复制到推理设备上,然后用 TAO 所提供的转换工具进行转换就可以。

这里总共需要执行三个步骤:

1、下载 tao-converter 工具,并调试环境:

请根据以下Jetpack版本,下载对应的tao-converter工具:

Jetpack4.4:https://developer.nvidia.com/cuda102-trt71-jp44-0Jetpack4.5:https://developer.nvidia.com/cuda110-cudnn80-trt72-0Jetpack4.6:https://developer.nvidia.com/jp46-20210820t231431z-001zip

下载压缩文件后执行解压缩,就会生成tao-converterREADME.txt两个文件,再根据README.txt的指示执行以下步骤:

(1) 安装libssl-dev库:

sudoapt  install  libssl-dev

(2) 配置环境,请在~/.bashrc最后面添加两行设置:

exportTRT_LIB_PATH=/usr/lib/aarch64-linux-gnuexportTRT_INCLUDE_PATH=/usr/include/aarch64-linux-gnu

(3) 将tao-convert变成可执行文件:

source~/.bashrcchmod+x  tao-convertersudocp  tao-converter  /usr/local/bin

2、安装 TensorRT 的 OSS (Open Source Software)

这是 TensorRT 的开源插件,项目在https://github.com/NVIDIA/TensorRT,下面提供的安装说明非常复杂,我们将繁琐的步骤整理之后,就是下面的步骤:

exportARCH=请根据设备进行设置,例如Nano为53、NX为72、Xavier为62exportTRTVER=请根据系统的TensorRT版本,例如Jetpack 4.6为8.0.1gitclone  -b  $TRTVER  https://github.com/nvidia/TensorRT  TRTosscdTRToss/gitcheckout  -b  $TRTVER  &&  git  submodule  update  --init  --recursivemkdir-p  build  &&  cd  buildcmake.. \
-DGPU_ARCHS=$ARCH \
-DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu/ \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DTRT_BIN_DIR=`pwd`/out \
-DTRT_PLATFORM_ID=aarch64 \
-DCUDA_VERSION=10.2makenvinfer_plugin  -j$(nproc)sudomv /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8.0.1 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8.0.1.baksudocp libnvinfer_plugin.so.8.0.1  /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8.0.1

这样就能开始用tao-converter来将.etlt文件转换成TensorRT加速引擎了。

3、用 tao-converter 进行转换

(1)首先将 TAO 最终导出 (export) 的文件复制到 Jetson Nano 上,例如前面的实验中最终导出的文件ssd_resnet18_epoch_080.etlt

(2)在 Jetson Nano 上执行 TAO 的ssd.ipynb最后所提供的转换指令,如下:

%set_envKEY=taoconverter  -k  $KEY \
-d  3,300,300 \
    -o  NMS \
    -e  ssd_resnet18_epoch_080.trt \   自己设定输出名称-m16 \
    -t  fp16 \                       使用export时相同精度-inchw \
    ssd_resnet18_epoch_080.etlt

这样就能生成在 Jetson Nano 上的ssd_resnet18_epoch_080.trt加速引擎文件,整个过程比传统方式要简便许多。

主题测试文章,只做测试使用。发布者:觉鸟网,转转请注明出处:https://www.jueniao.cn/n/20554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年6月10日 18:48
下一篇 2022年6月10日 18:50

相关推荐

  • 韩国k-pop界的“四大巨头”你觉得谁赚得最多呢?

    在前几年 K-Pop 的三大娱乐公司,一直被认为是 SM、YG 和 JYP 的。它们之所以被称为三大巨头,不仅是因为它们的公司很大。而是从 K-Pop 第一代爱豆开始,它们在培养团体方面就已经被誉为是业界的先驱者。近几年来,随着 BTS 在 K-Pop 界甚至全球的崛起,现在 HYBE(Bit Hit)娱乐公司。也正式地加入了这个巨头俱乐部,成为了如今的 B…

    2022年6月18日
    2600
  • 自动驾驶专家图森未来的最新财报不简单

    第二季度报告显示,公司正在迅速扩张,正在逐渐加大它在美国卡车自动驾驶市场的投入 重点: 图森未来最新的招聘潮和逐渐壮大的主要卡车业务伙伴都显示出,它的自动驾驶技术距离实现商业化越来越近 公司强调它在美国的业务进展,而低调处理涉及中国的业务,这显示出它正在迅速将重心转移至美国 本文作者 阳歌 至少从表面来看,卡车自动驾驶技术专家图森未来(TuSimple Ho…

    2022年6月17日
    3000
  • 计算机行业专题研究:汽车中间件迎发展机遇

    (报告出品方/作者:华泰证券,谢春生、彭钢) 汽车中间件:汽车软件中的重要基础软件 观点一:汽车中间件重要性有望进一步提升 汽车中间件独特的功能属性,满足汽车智能化需求。中间件的诞生与 IT 架构的变化紧密 相关,其在 IT 架构中的位置也决定了其独特的功能属性。从传统 IT 架构的角度看,中间 件的位于上层应用和底层操作系统之间,其起源与分布式架构下异构环…

    2022年6月29日
    2500
  • 京东造系:“亲儿子、干儿子”23家已上市,投资314家公司

    作者 |余青 编辑 |李红梅 来源 |风云资本界 巨头大战免不了争夺市场,各大公司除了立足于自身外,纷纷布局各行各业。根据IT桔子数据显示,在头部几家互联网战投公司中腾讯投资企业数量最多,达835家企业,位列第一;阿里则投资了565家公司,位列第二。 作为后起之秀的京东,在投资公司数量上也已达到314家,排名第三。如今京东造系,护城河究竟有多深?资本版图又有…

    2022年6月15日
    2900
  • 数字化|昆仑数智数字化做了什么

    文/吕青莉 王胜斌 中国石油报 7月21日晚,中国石油科技园员工周天在橇装站加完油后,兴高采烈地说:给加油站点个赞!体验不一般还有优惠!加油全过程无感支付,便利店自助购物,智慧加油带来的便捷和科技感十足的加油环境,让他感觉很酷。这是昆仑数智利用智慧销售产品助力北京销售打造的智慧加油示范站。 今年,集团公司整合重组原中油瑞飞和凌怡科技公司,组建了更具市场竞争力…

    智能科技 2022年6月17日
    2500

发表回复

您的电子邮箱地址不会被公开。

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信