TensorRT安装及使用教程
分类专栏: 人工智能 TensorFlow
一般的深度学习项目,训练时为了加快速度,会使用多GPU分布式训练。但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署,部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等。由于训练的网络模型可能会很大(比如,inception,resnet等),参数很多,而且部署端的机器性能存在差异,就会导致推理速度慢,延迟高。这对于那些高实时性的应用场合是致命的,比如自动驾驶要求实时目标检测,目标追踪等。所以为了提高部署推理的速度,出现了很多轻量级神经网络,比如squeezenet,mobilenet,shufflenet等。基本做法都是基于现有的经典模型提出一种新的模型结构,然后用这些改造过的模型重新训练,再重新部署。
而tensorRT 则是对训练好的模型进行优化。 tensorRT就只是 推理优化器。当你的网络训练完之后,可以将训练模型文件直接丢进tensorRT中,而不再需要依赖深度学习框架(Caffe,TensorFlow等),如下:
可以认为tensorRT是一个只有前向传播的深度学习框架,这个框架可以将 Caffe,TensorFlow的网络模型解析,然后与tensorRT中对应的层进行一一映射,把其他框架的模型统一全部 转换到tensorRT中,然后在tensorRT中可以针对NVIDIA自家GPU实施优化策略,并进行部署加速。
如果想了解更多关于tensorrt的介绍,可参考官网介绍
2 TensorRT安装
tensorrt的安装方式很简单,只需要注意一些环境的依赖关系就可以,截止目前tensorrt最新版本是5.0.4,参考官网安装教程,这里简单总结一下步骤
2.1 环境确认
- 确认CUDA版本是9.0或者10.0,可通过运行nvcc -V指令来查看CUDA,如果不是9.0以上,则需要先把CUDA版本更新一下nn
- cudnn版本是7.3.1,如果不满足要求,按照《Linux之cudnn升级方法》进行升级
- 需安装有tensorflow,uff模块需要
2.2 安装pycuda
如果要使用python接口的tensorrt,则需要安装pycuda
pip install 'pycuda>=2017.1.1'
2.3 下载安装包
- 进入下载链接
- 点击Download Now(需要登录英伟达账号,没有的注册一个)
- 选择下载的版本(最新TensorRT5)
- 完成问卷调查
- 选择同意协议
- 根据自己的系统版本和CUDA版本,选择安装包,如图所示(如果是完整安装,建议选择Tar File Install Packages,这样可以自行选择安装位置)
2.4 安装指令
-
#在home下新建文件夹,命名为tensorrt_tar,然后将下载的压缩文件拷贝进来解压
-
tar xzvf TensorRT-5.0.2.6.Ubuntu-16.04.4.x86_64-gnu.cuda-9.0.cudnn7.3.tar
-
#解压得到TensorRT-5.0.2.6的文件夹,将里边的lib绝对路径添加到环境变量中
-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lthpc/tensorrt_tar/TensorRT-5.0.2.6/lib
-
#安装TensorRT
-
cd TensorRT-5.0.2.6/python
-
#if python2
-
sudo pip2 install tensorrt-5.0.2.6-py2.py3-none-any.whl
-
#if python3
-
sudo pip3 install tensorrt-5.0.2.6-py2.py3-none-any.whl
-
#安装UFF
-
cd TensorRT-5.0.2.6/uff
-
#if python2
-
sudo pip2 install uff-0.5.5-py2.py3-none-any.whl
-
#if python3
-
sudo pip3 install uff-0.5.5-py2.py3-none-any.whl
-
#安装graphsurgeon
-
cd TensorRT-5.0.2.6/graphsurgeon
-
#if python2
-
sudo pip2 install graphsurgeon-0.3.2-py2.py3-none-any.whl
-
#if python3
-
sudo pip3 install graphsurgeon-0.3.2-py2.py3-none-any.whl
2.5 环境测试
运行python测试,导入模块不报错就表明安装正确
安装后会在/usr/src目录下生成一个tensorrt文件夹,里面包含bin,data,python,samples四个文件夹,samples文件夹中是官方例程的源码;data,python文件中存放官方例程用到的资源文件,比如caffemodel文件,TensorFlow模型文件,一些图片等;bin文件夹用于存放编译后的二进制文件。
3 使用流程
在/TensoRT-5.0.2.6/samples/python文件夹下有很多python的例子,我们以第一个end_to_end_tensorflow_mnist的例子为例,描述tensorrt的使用流程,在README.md文件里也说得很明白了
3.1 安装依赖
需要安装好numpy、Pillow、pycuda、tensorflow等环境,如果都有可以跳过
3.2 生成pb文件
-
mkdir models
-
python model.py
运行model.py后,会下载数据mnist.npz,并开始训练,完成后在models文件夹下生成lenet5.pb文件,如果自己已经训练得到pb文件,上述过程可以跳过
3.3 格式转化
要将tensorflow的pb文件转化为uff格式的文件,首先找到convert_to_uff文件,看自己用的是哪个版本的python,如果是python3,则在/usr/lib/python3.5/dist-packages/uff/bin文件夹下,如果是python2,则在/usr/lib/python2.7/dist-packages/uff/bin文件夹下
我们在终端中进入end_to_end_tensorflow_mnist,运行以下指令
python3.5 /usr/lib/python3.5/dist-packages/uff/bin/convert_to_uff.py --input_file models/lenet5.pb
则会在models文件夹中生成lenet5.uff文件
需要注意的是:该转化过程只支持在x86平台上实现,如果想在TX2等嵌入式平台上使用tensorrt,需要先在x86平台上将pb模型转化为uff文件,然后再拷贝到TX2上使用
3.4 运行文件
运行sample.py文件,得到如下输出,表明可完整的使用tensorrt
4 使用自己的模型
前边3步相当于是环境的配置,当然还不够,我们需要的是可以转化并运行我们自己的模型,达到加速的效果,因此接下来对相关的工作进行总结,具体转换参考《TX2之TensorRT加速TensorFlow目标检测模型》
文章最后发布于: 2019-01-08 15:38:07
有 0 个人打赏
关于本文章的最新更新请查看:oldpan博客前言TensorRT是什么,TensorRT是英伟达公司出品的高性能的推断C++库,专门应用于边缘设备的推断,TensorRT可以将我们训练好的模型分解再进...博文来自: OLDPAN的博客
-
weixin_449115971周前#8楼感谢UP主,曲曲折折的趟过很多坑,跑出来了
-
angela00031个月前#7楼運行sample.py的時候有人遇到下面的問題嗎恩的問題嗎end_tensorflow_mnist$ python3.6 sample.py WARNING: /usr/src/tensorrt/data/mnist does not exist. Trying /usr/src/tensorrt/data instead. WARNING: /usr/src/tensorrt/data does not exist. Please provide the correct data path with the -d option. [TensorRT] WARNING: TensorRT was linked against cuDNN 7.6.3 but loaded cuDNN 7.6.0 [TensorRT] ERROR: ../rtSafe/runnerUtils.cpp (425) - Cudnn Error in safeCudnnAddTensor: 8 (CUDNN_STATUS_EXECUTION_FAILED) [TensorRT] ERROR: ../rtSafe/runnerUtils.cpp (425) - Cudnn Error in safeCudnnAddTensor: 8 (CUDNN_STATUS_EXECUTION_FAILED) Traceback (most recent call last): File "sample.py", line 112, in <module> main() File "sample.py", line 98, in main with build_engine(model_file) as engine: AttributeError: __enter__
-
angela00031个月前#6楼楼主有用tensorRT跑过模型吗?速度能快多少?查看回复(1)
-
angela00031个月前#5楼能加个微信qian1680003咨询几个问题吗?
-
wangdinghan1个月前#4楼请问博主,我进行第2.5步加载tensorrt时出现这个错误,NameError: name 'ILogger' is not defined ,请问你遇到了吗?
-
think_three3个月前#3楼一路安装下来,没有报错,但是在import tensorrt的时候还是提示找不到tensorrt查看回复(2)
-
旭旭_哥6个月前#2楼导入tensorrt出现python3.5/site-packages/tensorrt/tensorrt.cpython-35m-x86_64-linux-gnu.so: undefined symbol: _PyThreadState_UncheckedGet 这个错误,楼主碰到过没?查看回复(5)
推荐阅读
-
VMware 12安装及激活图文教程
-
谷歌android apk开发工具Android Studio安装使用图文教程
-
bricscad v17怎么破解?BricsCAD V17.2.08安装激活及运行图文详细教程
-
C#基础之vs2010安装与配置使用教程
-
在Eclipse中在线安装Emmet和图文使用教程
-
一键ghost硬盘版怎样用?(下载/安装/使用图文教程)
-
mac电脑安装jdk及环境变量配置(mac系统java安装教程)
-
caxa2016电子图板怎么破解?caxa cad电子图板2016安装及破解详细图文教程
-
linux iotop 安装使用教程(显示硬盘IO读写情况)
-
PHPUnit 单元测试安装与使用入门教程