下面是TensorRT的介绍,也能够参考官方文档,更权威一些:https://developer.nvidia.com/tensorrt html
关于TensorRT首先要清楚如下几点:git
1. TensorRT是NVIDIA开发的深度学习推理工具,只支持推理,不支持训练;目前TensorRT3已经支持Caffe、Caffe二、TensorFlow、MxNet、Pytorch等主流深度学习库;github
2. TensorRT底层针对NVIDIA显卡作了多方面的优化,不单单是量化,能够和 CUDA CODEC SDK 结合使用,也就是另外一个开发包DeepStream;算法
3. TensorRT独立于深度学习框架,经过解析框架文件来实现,不须要额外安装DL库;编程
NVIDIA TensorRT是一种高性能神经网络推理(Inference)引擎,用于在生产环境中部署深度学习应用程序,应用有图像分类、分割和目标检测等,可提供最大的推理吞吐量和效率。TensorRT是第一款可编程推理加速器,能加速现有和将来的网络架构。 TensorRT须要CUDA的支持。TensorRT包含一个为优化生产环境中部署的深度学习模型而建立的库,可获取通过训练的神经网络(一般使用32位或16位数据),并针对下降精度的INT8运算来优化这些网络。借助CUDA的可编程性,TensorRT将可以加速助推深度 神经网络日益多样化、复杂的增加趋势。经过TensorRT的大幅度加速,服务提供商可以以经济实惠的成本部署这些计算密集型人工智能工做负载。 已有来自各行各业的公司开始采用NVIDIA推理平台,借助此从数据中得到全新洞察,并为企业和消费者部署智能服务。 TensorRT由英伟达(NVIDIA)发布,目前包括TensorRT一、TensorRT 二、TensorRT 3,是深度学习软件包,支持FP16特性。TensorRT支持使用Caffe的模型。TensorRT相对简单易用,在深度学习算法推理阶段能将GPU的计算能力更大程度释放出来。 TensorRT在不断的改进过程当中,在保证软件精度的同时,不断提升速度。TensorRT针对运行时性能自动优化训练过的神经网络。 TensorRT是一个C++库。TensorRT只能用来作Inference(推理),不能用来进行train。 TensorRT基本处理过程:(1)、caffe model转化GIE的model,或者从磁盘或者网络加载GIE可用的model;(2)、运行GIE引擎(数据提早copy到GPU中);(3)、提取结果。 转化GIE model两种方式:(1)、caffeToGIEModel;(2)、参考sampleMNIST API本身构建GIE model. 用深度神经网络解决监督机器学习问题包含两个步骤:第一步是使用GPU对海量标签数据进行深度神经网络训练,训练时须要迭代的经过网络进行前向传播和反向传播。最终会生成训练好的model文件。第二步是推理(Inference)即便用训练好的模型对新 数据作出预测,仅需经过网络进行前向传播。TensorRT是一款高性能的推理引擎,旨在为常见的深度学习应用如图像分类、分割、目标检测等提供最大的推理吞吐量和效率。针对运行时性能,TensorRT会优化已训练的神经网络。 使用TensorRT包含两个阶段:构建(build)和部署(deployment)。在构建阶段,TensorRT对网络配置进行优化,并生成一个优化了的plan用于计算深度神经网络的前向传播。这个plan是一个优化了的目标代码,能够序列化存储在内存或磁盘上。 部署阶段一般采用长时间运行的服务或用户应用程序的形式,该服务或用户应用程序接受批量输入数据,经过对输入数据执行plan来执行推理,并返回批量输出数据。使用TensorRT,你无需在部署硬件上安装并运行深度学习框架。 TensorRT构建阶段:TensorRT运行时须要三个文件来部署一个分类神经网络:一个网络体系结构文件(deploy.prototxt),已训练的权值(net.caffemodel)和一个标签文件为每一个输出类提供一个名称。另外,你必须定义batch size和输出层。 TensorRT对神经网络图(neural network graph)进行了几个重要的转换和优化:消除未使用的输出的层以免没必要要的计算;在可能的状况下,convolution、bias和ReLU层被融合以造成单个层,包括垂直层融合和水平层融合。 在TensorRT解析器读入已训练的网络和配置文件后,TensorRT在构建阶段对API用户透明地执行其转换。 在构建阶段,TensorRT优化网络,在部署阶段,TensorRT以最小化延迟和最大化吞吐量运行优化了的网络。 TensorRT 2.1关键特性:(1)、支持自定义层;(2)、INT8支持以用于性能改进;(3)、提供递归神经网络(LSTM(Long Short-Term Memory)、GRU(Gated Recurrent Unit))实现;(4)、”original” RNN层实现。 2017年9月,NVIDIA发布了神经网络推理加速器TensorRT3,TensorRT 3是一款针对人工智能应用生产部署的高性能优化编译器和运行时引擎,用于在生产环境中部署深度学习程序。它可以快速优化、验证并部署通过训练的神经网络, 从而在超大型数据中心、嵌入式GPU或车用GPU平台上开展推理工做。它可以确保高度精确的INT8和FP16网络执行。 TensorRT 3能支持Caffe二、Mxnet、Pytorch、TensorFlow等全部的深度学习框架,将TensorRT 3和NVIDIA的GPU结合起来,能在全部的框架中进行超快速和高效的推理传输,支持图像和语言识别、天然语言处理、可视化搜索和个性化推荐等AI服务。 借助该推理引擎能够大幅提高云端及包括机器人、无人驾驶汽车在内的终端设备的推理性能,并有效下降成本。
可从 https://developer.nvidia.com/nvidia-tensorrt-download 下载TensorRT 1.0和TensorRT2.1.性能优化
安装TensorRT 2.1要求:网络
(1)、操做系统仅支持Ubuntu14.04或Ubuntu 16.04,目前不支持Windows和Mac;架构
(2)、安装的CUDA要求是7.5或8.0;框架
(3)、有两种方法安装TensorRT2.1:经过deb包或者经过tar文件;机器学习
(4)、对于显卡为GTX 750和K1200的用户须要将CUDA升级到8.0。
TensorRT 2.1用户指南能够参考: http://docs.nvidia.com/deeplearning/sdk/tensorrt-user-guide/index.html
以上部份内容翻译于: https://devblogs.nvidia.com/parallelforall/deploying-deep-learning-nvidia-tensorrt/
GitHub: https://github.com/fengbingchun/CUDA_Test