加速深度学习在线部署,TensorRT安装及使用教程
向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 下载安装包
进入下载链接https://developer.nvidia.com/nvidia-tensorrt-download
点击Download Now(需要登录英伟达账号,没有的注册一个)
选择下载的版本(最新TensorRT5)
完成问卷调查
选择同意协议
根据自己的系统版本和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安装及使用教程相关推荐
- 如何使用TensorRT加速深度学习推理
文章目录 1.TensorRT 简介 2.一个简单的TensorRT示例 3.简要代码演练 3.1.批量输入 4.配置文件 5.优化您的应用 6.使用混合精度计算 7.设置最大工作区大小 8.重用Te ...
- NVIDIA教你用TensorRT加速深度学习推理计算 | 量子位线下沙龙笔记
主讲人:Ken(何琨)| NVIDIA开发者社区经理 张康 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 12月22日,量子位联合NVIDIA英伟达举行了线下交流会,跟现场近百位开发者同学共 ...
- 基于TensorRT的深度学习模型部署实战教程!
应用背景介绍 早在遥远的1989年,一家叫做ALVIVN的公司首次将神经网络用在汽车上,进行车道线检测和地面分割.时至今日,深度学习已经应用在自动驾驶系统的多个分支领域.首先是感知领域,常用的传感器有 ...
- 听Alluxio小姐姐讲述:Alluxio云上K8S部署如何加速深度学习训练
Alluxio云上K8S部署如何加速深度学习训练 在2021 Alluxio Day V中,Alluxio核心研发工程师邱璐,为我们带来[Alluxio云上K8S部署如何加速深度学习训练]的分享 邱璐 ...
- [转载]使用 TensorRT 加速深度学习推理 Speeding Up Deep Learning Inference Using TensorRT
最近在NVIDIA Blog上看到一篇TensorRT教学,挺不错的,收藏了一下.作者是:Josh Park, Sirisha Rella, Siddharth Sharma and Houman A ...
- 基于web端和C++的两种深度学习模型部署方式
深度学习Author:louwillMachine Learning Lab 本文对深度学习两种模型部署方式进行总结和梳理.一种是基于web服务端的模型部署,一种是基... 深度学习 Author:l ...
- 深度学习模型部署技术方案
深度学习模型部署技术方案 训练好的深度学习模型如何进行部署的相关技术方案 1 什么是模型部署? 2 数据科学项目整个开发流程 3 使用flask 将 Keras深度学习模型部署为Web应用程序 4 T ...
- 深度学习模型部署简要介绍
一.模型部署简介 近几年来,随着算力的不断提升和数据的不断增长,深度学习算法有了长足的发展.深度学习算法也越来越多的应用在各个领域中,比如图像处理在安防领域和自动驾驶领域的应用,再比如语音处理和自然语 ...
- 如何将深度学习模型部署到实际工程中?(分类+检测+分割)
应用背景介绍 早在遥远的1989年,一家叫做ALVIVN的公司首次将神经网络用在汽车上,进行车道线检测和地面分割.时至今日,深度学习已经应用在自动驾驶系统的多个分支领域.首先是感知领域,常用的传感器有 ...
最新文章
- 脸书 AI 识别误将黑人标记为「灵长类动物」
- jq实现文字个数限制_jQuery插件InputLimitor实现文本框输入限制字数统计
- Java集合及concurrent并发包总结(转)
- LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
- oracle怎么关闭约束,Oracle约束enable/disablenovalidate
- win7 64系统无法看见其他计算机,win7一直显示正在启动进不了系统怎么办
- Ubuntu开启telnet服务
- 转载-使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试
- get post put delete在vue中传参方式
- ARM一面(二轮技术面)
- Linux 虚拟机内挂载 iso 文件
- 杭州电子科技大学acm--2011
- 计算机启动应用程序的方法,应用程序无法正常启动,教您应用程序无法正常启动的解决方法...
- 写好英语科技论文的诀窍: 主动迎合读者期望,预先回答专家可能质疑--周耀旗教授...
- 2020我也当了面试官-java面试题之四
- 吸血鬼数字java_Java求吸血鬼数算法(通用)
- 4.10 使用照片滤镜命令修改图像色温和色调 [原创Ps教程]
- 使用PLSQL Developer连接Oracle数据库详解
- 【linux】循序渐进学运维-基础篇-netstat命令详解
- python变量名必须以字母或下划线开头不区分字母大小写_Python变量名必须以字符或下划线开头,并且区分字母大小写。...
热门文章
- [机器学习实战]决策树
- Discuz常见小问题-如何为每个板块设置不同的图标
- 一个进程(Process)最多可以生成多少个线程(Thread)
- MySQL_PHP学习笔记_2015_0614_PHP传参总结_URL传参_表单传参
- Python中的原始字符串
- Fluent NHibernate实战(原创)
- Spring 3.x 企业应用开发实战(含CD光盘1张)
- acctype mysql assoc_dedeCMS数据库类的一些常见的使用方法
- java enum 2d array,Java-打印2D数组的最佳方法?
- html 音标显示乱码,网页显示音标/拼音显示乱码的解决办法(.net)