向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

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实施优化策略,并进行部署加速。

2 TensorRT安装

tensorrt的安装方式很简单,只需要注意一些环境的依赖关系就可以,我们以tensorrt5.0.4版本为例,参考官网安装教程https://docs.nvidia.com/deeplearning/sdk/tensorrt-install-guide/index.html,这里简单总结一下步骤

tensorrt支持的环境和python版本如表所示

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

2.3 下载安装包

  1. 进入下载链接https://developer.nvidia.com/nvidia-tensorrt-download

  2. 点击Download Now(需要登录英伟达账号,没有的注册一个)

  3. 选择下载的版本(最新TensorRT5)

  4. 完成问卷调查

  5. 选择同意协议

  6. 根据自己的系统版本和CUDA版本,选择安装包,如图所示(如果是完整安装,建议选择Tar File Install Packages,这样可以自行选择安装位置)

2.4 安装指令

如果要使用python版本,则使用pip安装,执行下边的指令

为了避免安装时各种问题,我们也可以使用deb包的方式安装,即在2.3步骤中选择自己系统对应的版本,然后使用如下指令安装

2.5 环境测试

运行python测试,导入模块不报错就表明安装正确

注意:导入uff的时候需要安装tensorflow模块,tensorflow版本要与cuda版本对应,比如cuda9要对应tensorflow1.12及以下版本,以上版本需要cuda10,具体参考官网

如果导入tensorrt报错如下,则是因为python版本不对,应根据2.1节上边的那个表调整自己的python版本

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文件

运行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,运行以下指令

需要注意的是:该转化过程只支持在x86平台上实现,如果想在TX2等嵌入式平台上使用tensorrt,需要先在x86平台上将pb模型转化为uff文件,然后再拷贝到TX2上使用

3.4 运行文件

运行sample.py文件,得到如下输出,表明可完整的使用tensorrt

参考文章

通过pytorch搭建卷积神经网络完成手写识别任务,并将训练好的模型以多种方式部署到TensorRT中加速

https://github.com/GuanLianzheng/pytorch_to_TensorRT5

TensorRT之TX2部署TensorFlow目标检测模型

https://blog.csdn.net/zong596568821xp/article/details/86077553

TensorRT安装及使用教程

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


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

加速深度学习在线部署,TensorRT安装及使用教程相关推荐

  1. 如何使用TensorRT加速深度学习推理

    文章目录 1.TensorRT 简介 2.一个简单的TensorRT示例 3.简要代码演练 3.1.批量输入 4.配置文件 5.优化您的应用 6.使用混合精度计算 7.设置最大工作区大小 8.重用Te ...

  2. NVIDIA教你用TensorRT加速深度学习推理计算 | 量子位线下沙龙笔记

    主讲人:Ken(何琨)| NVIDIA开发者社区经理 张康 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 12月22日,量子位联合NVIDIA英伟达举行了线下交流会,跟现场近百位开发者同学共 ...

  3. 基于TensorRT的深度学习模型部署实战教程!

    应用背景介绍 早在遥远的1989年,一家叫做ALVIVN的公司首次将神经网络用在汽车上,进行车道线检测和地面分割.时至今日,深度学习已经应用在自动驾驶系统的多个分支领域.首先是感知领域,常用的传感器有 ...

  4. 听Alluxio小姐姐讲述:Alluxio云上K8S部署如何加速深度学习训练

    Alluxio云上K8S部署如何加速深度学习训练 在2021 Alluxio Day V中,Alluxio核心研发工程师邱璐,为我们带来[Alluxio云上K8S部署如何加速深度学习训练]的分享 邱璐 ...

  5. [转载]使用 TensorRT 加速深度学习推理 Speeding Up Deep Learning Inference Using TensorRT

    最近在NVIDIA Blog上看到一篇TensorRT教学,挺不错的,收藏了一下.作者是:Josh Park, Sirisha Rella, Siddharth Sharma and Houman A ...

  6. 基于web端和C++的两种深度学习模型部署方式

    深度学习Author:louwillMachine Learning Lab 本文对深度学习两种模型部署方式进行总结和梳理.一种是基于web服务端的模型部署,一种是基... 深度学习 Author:l ...

  7. 深度学习模型部署技术方案

    深度学习模型部署技术方案 训练好的深度学习模型如何进行部署的相关技术方案 1 什么是模型部署? 2 数据科学项目整个开发流程 3 使用flask 将 Keras深度学习模型部署为Web应用程序 4 T ...

  8. 深度学习模型部署简要介绍

    一.模型部署简介 近几年来,随着算力的不断提升和数据的不断增长,深度学习算法有了长足的发展.深度学习算法也越来越多的应用在各个领域中,比如图像处理在安防领域和自动驾驶领域的应用,再比如语音处理和自然语 ...

  9. 如何将深度学习模型部署到实际工程中?(分类+检测+分割)

    应用背景介绍 早在遥远的1989年,一家叫做ALVIVN的公司首次将神经网络用在汽车上,进行车道线检测和地面分割.时至今日,深度学习已经应用在自动驾驶系统的多个分支领域.首先是感知领域,常用的传感器有 ...

最新文章

  1. 脸书 AI 识别误将黑人标记为「灵长类动物」
  2. jq实现文字个数限制_jQuery插件InputLimitor实现文本框输入限制字数统计
  3. Java集合及concurrent并发包总结(转)
  4. LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
  5. oracle怎么关闭约束,Oracle约束enable/disablenovalidate
  6. win7 64系统无法看见其他计算机,win7一直显示正在启动进不了系统怎么办
  7. Ubuntu开启telnet服务
  8. 转载-使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试
  9. get post put delete在vue中传参方式
  10. ARM一面(二轮技术面)
  11. Linux 虚拟机内挂载 iso 文件
  12. 杭州电子科技大学acm--2011
  13. 计算机启动应用程序的方法,应用程序无法正常启动,教您应用程序无法正常启动的解决方法...
  14. 写好英语科技论文的诀窍: 主动迎合读者期望,预先回答专家可能质疑--周耀旗教授...
  15. 2020我也当了面试官-java面试题之四
  16. 吸血鬼数字java_Java求吸血鬼数算法(通用)
  17. 4.10 使用照片滤镜命令修改图像色温和色调 [原创Ps教程]
  18. 使用PLSQL Developer连接Oracle数据库详解
  19. 【linux】循序渐进学运维-基础篇-netstat命令详解
  20. python变量名必须以字母或下划线开头不区分字母大小写_Python变量名必须以字符或下划线开头,并且区分字母大小写。...

热门文章

  1. [机器学习实战]决策树
  2. Discuz常见小问题-如何为每个板块设置不同的图标
  3. 一个进程(Process)最多可以生成多少个线程(Thread)
  4. MySQL_PHP学习笔记_2015_0614_PHP传参总结_URL传参_表单传参
  5. Python中的原始字符串
  6. Fluent NHibernate实战(原创)
  7. Spring 3.x 企业应用开发实战(含CD光盘1张)
  8. acctype mysql assoc_dedeCMS数据库类的一些常见的使用方法
  9. java enum 2d array,Java-打印2D数组的最佳方法?
  10. html 音标显示乱码,网页显示音标/拼音显示乱码的解决办法(.net)