前言

NVIDIA TensorRT是一种高性能神经网络推理(Inference)引擎,用于在生产环境中部署深度学习应用程序,

应用有图像分类、分割和目标检测等,可提供最大的推理吞吐量和效率。TensorRT是第一款可编程推理加速器,

能加速现有和未来的网络架构。TensorRT需要CUDA的支持。TensorRT包含一个为优化生产环境中部署的深度

学习模型而创建的库,可获取经过训练的神经网络(通常使用32位或16位数据),并针对降低精度的INT8运算来

优化这些网络。借助CUDA的可编程性,TensorRT将能够加速助推深度神经网络日益多样化、复杂的增长趋势。

通过TensorRT的大幅度加速,服务提供商能够以经济实惠的成本部署这些计算密集型人工智能工作负载。

已有来自各行各业的公司开始采用NVIDIA推理平台,借助此从数据中获得全新洞察,并为企业和消费者部署智能服务。

TensorRT由英伟达(NVIDIA)发布,目前包括TensorRT1、TensorRT 2、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能支持Caffe2、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 

参考

1.CSDN大神原链接;

2.TensorRT2;

3.nvidia-tensorrt;

4.Jetson TX1 开发教程;