• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

TensorRT安装及使用教程

人工智能 宗孝鹏 1746次浏览 0个评论

参考:https://arleyzhang.github.io/articles/7f4b25ce/  

1 什么是TensorRT

  一般的深度学习项目,训练时为了加快速度,会使用多GPU分布式训练。但在部署推理时,为了降低成本,往往使用单个GPU机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署,部署端也要有与训练时相同的深度学习环境,如caffe,TensorFlow等。由于训练的网络模型可能会很大(比如,inception,resnet等),参数很多,而且部署端的机器性能存在差异,就会导致推理速度慢,延迟高。这对于那些高实时性的应用场合是致命的,比如自动驾驶要求实时目标检测,目标追踪等。所以为了提高部署推理的速度,出现了很多轻量级神经网络,比如squeezenet,mobilenet,shufflenet等。基本做法都是基于现有的经典模型提出一种新的模型结构,然后用这些改造过的模型重新训练,再重新部署。   而tensorRT 则是对训练好的模型进行优化。 tensorRT就只是推理优化器。当你的网络训练完之后,可以将训练模型文件直接丢进tensorRT中,而不再需要依赖深度学习框架(Caffe,TensorFlow等),如下:  
TensorRT安装及使用教程   可以认为tensorRT是一个只有前向传播的深度学习框架,这个框架可以将 Caffe,TensorFlow的网络模型解析,然后与tensorRT中对应的层进行一一映射,把其他框架的模型统一全部 转换到tensorRT中,然后在tensorRT中可以针对NVIDIA自家GPU实施优化策略,并进行部署加速。   如果想了解更多关于tensorrt的介绍,可参考官网介绍  

2 TensorRT安装

  tensorrt的安装方式很简单,只需要注意一些环境的依赖关系就可以,我们以tensorrt5.0.4版本为例,参考官网安装教程,这里简单总结一下步骤tensorrt支持的环境和python版本如表所示(来源)  
 

2.1 环境确认

确认CUDA版本是9.0或者10.0,可通过运行nvcc -V指令来查看CUDA,如果不是9.0以上,则需要先把CUDA版本更新一下nncudnn版本是7.3.1,如果不满足要求,按照《Linux之cudnn升级方法》进行升级需安装有tensorflow,uff模块需要  

2.2 安装pycuda

  如果要使用python接口的tensorrt,则需要安装pycudapip install ‘pycuda>=2017.1.1’  

2.3 下载安装包

进入下载链接 点击Download Now(需要登录英伟达账号,没有的注册一个) 选择下载的版本 完成问卷调查 选择同意协议 根据自己的系统版本和CUDA版本,选择安装包,如图所示(如果是完整安装,建议选择Tar File Install Packages,这样可以自行选择安装位置)  
 

2.4 安装指令

如果要使用python版本,则使用pip安装,执行下边的指令 #在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 pip install tensorrt-5.0.2.6-py2.py3-none-any.whl # 安装UFF,支持tensorflow模型转化 cd TensorRT-5.0.2.6/uff pip install uff-0.5.5-py2.py3-none-any.whl # 安装graphsurgeon,支持自定义结构 cd TensorRT-5.0.2.6/graphsurgeon pip install graphsurgeon-0.3.2-py2.py3-none-any.whl   很多人安装某些版本的时候会报错,比如

ERROR: tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl is not a supported wheel on this platform.

这个是因为自己python版本不对,输入pip –version来查看python版本是否是自己想象中的版本,不对的话切换一下 为了避免其它软件找不到tensorrt的库,建议把tensorrt的库和头文件添加到系统路径下   # TensorRT路径下 sudo cp -r ./lib/* /usr/lib sudo cp -r ./include/* /usr/include  ============= 20200618更新 ===============   为了避免安装时各种问题,我们也可以使用deb包的方式安装,即在2.3步骤中选择自己系统对应的版本,然后使用如下指令安装   # 首先根据自己下载的版本填写os和tag变量 # 我下载的版本是 nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.0.0.11-ga-20191216_1-1_amd64.deb # 得到如下值   os=”ubuntu1804″ tag=”cuda10.2-trt7.0.0.11-ga-20191216″ sudo dpkg -i nv-tensorrt-repo-${os}-${tag}_1-1_amd64.deb sudo apt-key add /var/nv-tensorrt-repo-${tag}/7fa2af80.pub sudo apt-get update sudo apt-get install tensorrt sudo apt-get install python-libnvinfer-dev # for python2 sudo apt-get install python3-libnvinfer-dev # for python3 sudo apt-get install uff-converter-tf # for tensorflow   安装完之后运行下边指令   dpkg -l | grep TensorRT 输出如下,表明安装成功   ii graphsurgeon-tf 7.1.0-1+cuda10.2 amd64 GraphSurgeon for TensorRT package ii libnvinfer-bin 7.1.0-1+cuda10.2 amd64 TensorRT binaries ii libnvinfer-dev 7.1.0-1+cuda10.2 amd64 TensorRT development libraries and headers ii libnvinfer-doc 7.1.0-1+cuda10.2 all TensorRT documentation ii libnvinfer-plugin-dev 7.1.0-1+cuda10.2 amd64 TensorRT plugin libraries ii libnvinfer-plugin7 7.1.0-1+cuda10.2 amd64 TensorRT plugin libraries ii libnvinfer-samples 7.1.0-1+cuda10.2 all TensorRT samples ii libnvinfer7 7.1.0-1+cuda10.2 amd64 TensorRT runtime libraries ii libnvonnxparsers-dev 7.1.0-1+cuda10.2 amd64 TensorRT ONNX libraries ii libnvonnxparsers7 7.1.0-1+cuda10.2 amd64 TensorRT ONNX libraries ii libnvparsers-dev 7.1.0-1+cuda10.2 amd64 TensorRT parsers libraries ii libnvparsers7 7.1.0-1+cuda10.2 amd64 TensorRT parsers libraries ii python-libnvinfer 7.1.0-1+cuda10.2 amd64 Python bindings for TensorRT ii python-libnvinfer-dev 7.1.0-1+cuda10.2 amd64 Python development package for TensorRT ii python3-libnvinfer 7.1.0-1+cuda10.2 amd64 Python 3 bindings for TensorRT ii python3-libnvinfer-dev 7.1.0-1+cuda10.2 amd64 Python 3 development package for TensorRT ii tensorrt 7.1.0.x-1+cuda10.2 amd64 Meta package of TensorRT ii uff-converter-tf 7.1.0-1+cuda10.2 amd64 UFF converter for TensorRT package  

2.5 环境测试

  运行python测试,导入模块不报错就表明安装正确  
TensorRT安装及使用教程   注意:导入uff的时候需要安装tensorflow模块,tensorflow版本要与cuda版本对应,比如cuda9要对应tensorflow1.12及以下版本,以上版本需要cuda10,具体参考官网如果导入tensorrt报错如下,则是因为python版本不对,应根据2.1节上边的那个表调整自己的python版本   Traceback (most recent call last): File “<stdin>”, line 1, in <module> File “/home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/__init__.py”, line 1, in <module> from .tensorrt import * ImportError: /home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/tensorrt.so: undefined symbol: _Py_ZeroStruct   安装后会在/usr/src目录下生成一个tensorrt文件夹,里面包含bin,data,python,samples四个文件夹,samples文件夹中是官方例程的源码;data,python文件中存放官方例程用到的资源文件,比如caffemodel文件,TensorFlow模型文件,一些图片等;bin文件夹用于存放编译后的二进制文件。    ============= 20200618更新 ===============   也可以使用如下方法测试   sudo cp -r /usr/src/tensorrt/ ~/ cd ~/tensorrt/samples sudo make cd ../bin ./sample_int8 mnist  

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

TensorRT安装及使用教程

 

4 使用自己的模型

  前边3步相当于是环境的配置,当然还不够,我们需要的是可以转化并运行我们自己的模型,达到加速的效果,因此接下来对相关的工作进行总结,具体转换参考《TX2之TensorRT加速TensorFlow目标检测模型》


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明TensorRT安装及使用教程
喜欢 (0)

您必须 登录 才能发表评论!

加载中……