爱笑的小姐姐 · 2021年02月09日

Tengine在GPU上支持CUDA/TensorRT加速啦

文章转载于: 阿chai带你学AI
作者:阿chai

Tengine框架在最近\支持了GPU上通过CUDA或TensorRT加速,那么今天阿chai就带着大家看看我们如何在NVIDIA的嵌入式设备中使用Tengine框架。今天的算法完全在嵌入式上进行,请小伙伴们自行学习有关LInux下开发的相关知识。

Tengine的架构如下图所示。

image.png

之前我们已经介绍过tengine的安装方式以及算法模型的使用过程,相关书名请移步Tengine的入门教程。下面分别介绍Tengine在GPU是通过CUDA与TensorRT做加速的测试,小伙伴根据自己的需求去选择。

Tengine CUDA

image.png

如果是在不知道自己的版本,可以输入如下命令:

# XXXX为查询的内容dpkg -l | grep xxxx

首先安装相关依赖:

sudo apt-get install cmake make g++ git

clone新的Tengien Lite Demo:

git clone -b tengine-lite https://github.com/OAID/Tengine.git  Tengine-Lite

设置NVCC的环境变量,NVCC的位置一般情况下在这:

export CUDACXX=/usr/local/cuda/bin/nvcc

建立编译文件夹并进入:

mkdir -p build-linux-cudacd build-linux-cuda

cmake参数的文件路径一定要设置成自己的,如果不知道在哪里,可以根据下方阿chai的路径进行寻找。

cmake -DTENGINE_ENABLE_CUDABACKEND=ON \ -DCUDA_INCLUDE_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/include \ -DCUDA_LIBARAY_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/lib ..

编译:

make -j4make install

测试用的程序文件在如下路径中,为tm\_classification\_cuda

Tengine-Lite/build-linux-cuda/examples/

测试以MobileNet V1为例,测试的图片与模型可在如下链接中下载:

链接: https://pan.baidu.com/s/1Izm0RlLJvwTIkhfQ_NXg5Q  密码: faan

将模型预测师图片下载好导入嵌入式设备中并记住路径,输入如下命令进行测试,模型与图片的路径以自己设置的为准。

./tm_classification_cuda -m mobilenet_v1.tmfile -i dog.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10

我们可以看到如下结果:

Tengine plugin allocator CUDA is registered.tengine-lite library version: 1.2-devmodel file : mobilenet_v1.tmfileimage file : dog.jpgimg_h, img_w, scale[3], mean[3] : 224 224 , 0.017 0.017 0.017, 104.0 116.7 122.7Repeat 10 times, thread 1, avg time 35.95 ms, max_time 100.85 ms, min_time 19.96 ms--------------------------------------22.900383, 53720.012611, 24818.909063, 24918.323162, 25014.298100, 174--------------------------------------

同样我们可以输入如下命令测试纯CPU的推理速度:

./tm_classification -m mobilenet_v1.tmfile -i dog.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10

CPU的推理速度是远远慢于CUDA加速的GPU推理。

Tengine TensorRT

image.png

如果是在不知道自己的版本,可以输入如下命令:

# XXXX为查询的内容dpkg -l | grep xxxx

首先安装相关依赖:

sudo apt-get install cmake make g++ git

clone新的Tengien Lite Demo:

git clone -b tengine-lite https://github.com/OAID/Tengine.git  Tengine-Lite

设置NVCC的环境变量,NVCC的位置一般情况下在这:

export CUDACXX=/usr/local/cuda/bin/nvcc

建立编译文件夹并进入:

mkdir -p build-linux-trtcd build-linux-trt

cmake参数的比CUDA的要多一些,千万不要弄错。如果不知道在哪里,可以根据下方阿chai的路径进行寻找。

cmake -DTENGINE_ENABLE_TENSORRT=ON \ -DTENSORRT_INCLUDE_DIR=/usr/include/aarch64-linux-gnu \ -DTENSORRT_LIBRARY_DIR=/usr/lib/aarch64-linux-gnu \ -DCUDA_INCLUDE_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/include \ -DCUDA_LIBARAY_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/lib ..

编译:

make -j4make install

测试用的程序文件在如下路径中,为tm\_classification\_trt

Tengine-Lite/build-linux-cuda/examples/

测试以MobileNet V1为例,测试的模型可在如下链接中下载:

链接: https://pan.baidu.com/s/1Izm0RlLJvwTIkhfQ_NXg5Q  密码: faan

将模型预测师图片下载好导入嵌入式设备中并记住路径,输入如下命令进行测试,模型与图片的路径以自己设置的为准。

./tm_classification_trt -m mobilenet_v1.tmfile -i cat.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10

我们可以看到如下结果:

Tengine plugin allocator TRT is registered.tengine-lite library version: 1.2-devTengine: Try using inference precision TF32 failed, rollback.model file : mobilenet_v1.tmfileimage file : cat.jpgimg_h, img_w, scale[3], mean[3] : 224 224 , 0.017 0.017 0.017, 104.0 116.7 122.7Repeat 1 times, thread 1, avg time 2.91 ms, max_time 2.91 ms, min_time 2.91 ms--------------------------------------8.574147, 2827.880117, 2777.812574, 2787.286457, 2636.357487, 281--------------------------------------

同样我们可以输入如下命令测试纯CPU的推理速度:

./tm_classification -m mobilenet_v1.tmfile -i cat.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10

CPU的推理速度是远远慢于CUDA加速的GPU推理。

- The End -

推荐阅读

更多嵌入式AI技术相关内容请关注嵌入式AI专栏。
推荐阅读
关注数
3391
内容数
68
Tengine是一款轻量级模块化高性能的神经网络推理引擎 ;欢迎体验Tengine,[链接] 《Tengine开发者入门资料包》[链接]
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息