tensorrt使用教程,tensorrt部署
参考:TensorRT(1)-简介-使用-安装 arleyzhang
1 TensorRT的通用深度学习项目是什么?为了加快训练速度,将使用多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安装tensort的方法非常简单,只需要注意一些环境依赖即可。我们以TensorRT 5 . 0 . 4版本为例,参考官网安装教程。下面是这些步骤的简要总结。
表中显示了TensorRT支持的环境和Python版本(源代码)
2.1环境确认确认CUDA版本为9.0或10.0。您可以通过运行nvcc -V命令来检查CUDA。如果不是9.0以上,需要先更新CUDA版本。cudnn版本是7.3.1。如果不符合要求,需要按照《Linux之cudnn升级方法》安装TensorFlow进行升级。Uff模块需要Pycuda的2.2安装。如果想用Python接口使用TensorRT,需要安装pycuda。
Pip pycuda=2017.1.1 我在ubuntu 16.04上安装时报告了以下错误
错误:无法为使用PEP 517且无法直接安装的pycuda构建轮子
我还没找到解决方案,但是我安装在ubuntu18.04上就没有问题了。
2.3下载安装包,进入下载链接。点击立即下载(需要登录Nvidia账号,没有的话注册),选择下载的版本,完成问卷调查,选择协议,根据自己的系统版本和CUDA版本选择安装包,如图(如果是完整安装,建议选择Tar文件安装包,可以自行选择安装位置)
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 inside的绝对路径添加到环境变量exportld _ library _ path=$ LD _ library _ path:/home/lth PC/TensorRT _ tar/TensorRT-5 . 0 . 2 . 6/lib中按顺序
# TensorRT path sudocp-r ./lib/*/usr/libsudocp-r ./include/*/usr/include如果要使用python版本,请使用pip安装并执行以下指令。
# 安装张量TCD张量rt-5。0 .2 .6/python pip安装张量rt-5。0 .2 .6-py2。py3-无-任何。whl #安装UFF,支持张量流模型转化cd TensorRT-5.0.2.6/uffpip安装uff-0。5 .5-py2。py3-无-任何。whl #安装笔迹外科医生,支持自定义结构CD TensorRT-5。0 .2 .6/graphsurgeonpip安装笔迹外科医生-0。3 .2-py2。py3-无-任何。万海很多人安装某些版本的时候会报错,比如
错误:tensorrt-6。0 .1 .5-cp36-无-Linux _ x86 _ 64。万海在此平台上不受支持。
这个是因为自己大蟒版本不对,输入点版本来查看大蟒版本是否是自己想象中的版本,不对的话切换一下
=============20200618更新===============
为了避免安装时各种问题,我们也可以使用黛比包的方式安装,即在2.3 步骤中选择自己系统对应的版本,然后使用如下指令安装
# 首先根据自己下载的版本填写骨和标签变量# 我下载的版本是NV-tensorrt-repo-Ubuntu 1804-cuda 10.2-TRT 7。0 .0 .11-ga-2019 12 16 _ 1-1 _ amd64。deb #得到如下值OS= Ubuntu 1804 tag= cuda 10.2-TRT 7。0 .0 .11-ga-2019 12 16 sudo dpkg-I NV-tensorrt-repo-$ { OS }-$ { tag } _ 1-1 _ amd64。debsudo apt-key add/var/NV-tensorrt-repo-$ { tag }/7fa 2 af 80。pubsudo apt-get更新udo apt-get安装tensorrtsudo apt-get安装完之后运行下边指令
dpkg -l grep TensorRT输出如下,表明安装成功
图形外科医生-TF 7。1 .0-1 cuda 10。2am d64图形外科医生,用于tensort包ii libnvinfer-xsddy 7。1 .0-1 cuda 10。2am d64 tensort xsddyariesii libn infer-dev 7。1 .0-1 cuda 10。2am d64 TensorRT开发库和头libnvinfer-doc 7。1 .0-1 cuda 10。2所有tensort文档ii libnvinfer-plugin-dev 7。1 .0-1 cuda 10环境测试运行大蟒测试,导入模块不报错就表明安装正确
注意:导入超滤衰竭的时候需要安装张量流模块,张量流版本要与库达版本对应,比如cuda9要对应张量流1.12及以下版本,以上版本需要cuda10,具体参考官网
如果导入滕索特报错如下,则是因为大蟒版本不对,应根据2.1 节上边的那个表调整自己的大蟒版本
回溯(最近一次呼叫):
模块中文件性病的第一行
file /home/XXX/anaconda 3/lib/python 3.6/site-packages/tensorrt/_ _ init _ _ .模块中第一行的巴拉圭
从100 . tensorrt进口公司*
导入错误:/home/XXX/anaconda 3/lib/python 3.6/site-packages/tensorrt/tensorrt。所以:未定义的符号:_Py_ZeroStruct
安装后会在/usr/src目录下生成一个滕索特文件夹,里面包含xsddy,数据,python,样本四个文件夹,样品文件夹中是官方例程的源码;数据,python文件中存放官方例程用到的资源文件,比如咖啡模特文件,张量流模型文件,一些图片等;xsddy文件夹用于存放编译后的二进制文件。
=============20200618更新===============
也可以使用如下方法测试
sudo CP-r/usr/src/tensort/~/CD ~/tensort/samples sudo make CD./xsddy。/sample _ int8mnist3使用/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 modelspython model.py运行model.py后,将下载数据mnist.npz,开始训练。完成后,您将在models文件夹中生成lenet5.pb文件。如果你已经接受了获取pb文件的训练,那么可以跳过上面的过程。
3.3格式转换要把tensorflow的pb文件转换成uff格式文件,先找到convert_to_uff文件,看看你用的是哪个版本的python。如果是python3,在/usr/lib/python 3.5/dist-packages/UFF/xsd dy的文件夹里。如果是python2,则在文件夹/usr/lib/python 2.7/dist-packages/uff/xsddy中。
我们在终端中输入end_to_end_tensorflow_mnist并运行以下指令
python 3.5/usr/lib/python 3.5/dist-packages/uff/xsddy/convert _ to _ uff . py-input _ file models/lenet 5 . Pb将在models文件夹中生成lenet5.uff文件。
需要注意的是:该转化过程只支持在 x86 平台上实现,如果想在 TX2 等嵌入式平台上使用 TensorRT
,需要先在 x86 平台上将 pb 模型转化为 uff 文件,然后再拷贝到 TX2 上使用
3.4运行文件运行sample.py文件,得到如下输出,表明TensorRT完全可以使用。
4使用自己模型的前三步相当于环境的配置,当然是不够的。我们需要的是,我们可以改造和运行我们自己的模型,以达到加速的效果。所以我们会对相关工作进行总结,具体换算参考《TX2之TensorRT加速TensorFlow目标检测模型》。