【网络加速】TensorRT 7-开发指南中文_Plus版【2】
文章目录
前言:
英伟达官方 开发者指南的翻译+整理版,会有一个完整的系列。前面的基础理论以翻译为主,外加实战及理解。
TensorRT交流群
我建立了一个,TensorRT微信交流群,
关注公众号:菜鸡Ai
后台回复:加群
备注:学校|公司+昵称+TensorRT 会有小哥哥拉你进群。
深度炼丹一般要经过三个阶段
炼丹前
训练阶段,首先搞清楚要解决的问题,然后确定输入、输出、激活函数、损失函数等,开始建模。
接着你不得,收集、整理、扩充、标记训练、测试和验证数据集,根据建立的模型网络结构训练。然后就是看火炼丹,不断的转换姿势,最后,丹成保存收丹。
注意!!这上面所有的过程,都与TensorRT没什么关系。
炼丹思考10个问题
1、你有一个网络还是多个网络?例如,您是否正在开发基于单个网络(人脸检测)的功能或系统,您的系统也不会由不同模型的混合或级联组成,或者可能是由最终用户提供的集合模型的更通用的工具组成?
2、您将使用什么设备或计算元素来运行网络?CPU,GPU,其他,还是混合?如果模型要在GPU上运行,它是单一类型的GPU,还是需要设计一个可以在各种GPU上运行的应用程序?
\3、数据如何到达模型?什么是数据管道?数据来自摄像机或传感器,来自一系列文件,还是通过网络连接上传?
\4、将进行哪些预处理?数据的格式是什么?如果是图像,是否需要裁剪、旋转?如果是文本,它是什么字符集?是否允许所有字符作为模型的输入?有什么特别的代币吗?
\5、您对延迟和吞吐量有什么要求?
\6、你能批量处理多个请求吗?
7、您是否需要单个网络的多个实例来实现所需的总体系统吞吐量和延迟?
\8、你将如何处理网络的输出?
\9、需要哪些后处理步骤?
收丹
丹炼好了,该收丹检验药性了,怎么又快又好的检验药性,TensorRT就是帮炼丹师做这个事情。
使用TensorRT从保存的网络中构建一个推理引擎,这个引擎是仅需要运行到推理服务器里的,不再需要原来的训练框架。
注意几点Tips:
1、根据使用的训练框架,使用对应解析器将保存的神经网络保存的格式解析为TensorRT识别格式。
2、解析网络后,考虑优化选项——批处理大小、工作区大小、混合精度和动态形状的边界这些选项被选择并指定为TensorRT构建步骤的一部分
3、在使用TensorRT创建了一个推理引擎之后,我们需要验证它是否再现了在训练过程中测量到的模型结果。如果您选择了FP32或FP16,准确率比较接近,掉的不会太厉害。如果选择了INT8,那么推理精度估计会掉的比较厉害,一般还需要finetune.
4、以序列化格式写出推理引擎。这也称为计划文件。
\5、TensorRT库将链接到部署应用程序,该应用程序将在需要推理结果时调用库。为了初始化推理机,应用程序首先将模型从计划文件反序列化到推理机中。
\6、TensorRT通常是异步使用的,因此,当输入数据到达时,程序将调用一个包含输入缓冲区和
7、TensorRT应将结果放入其中的缓冲区的排队函数。
TensorRT怎么优化的?
为了优化推理模型,TensorRT获取网络定义,执行包括特定于平台的优化在内的优化,并生成推理引擎。这个过程被称为构建阶段。
构建阶段,TensorRT对层图执行以下优化:
- Elimination of layers whose outputs are not used
- Elimination of operations which are equivalent to no-op
- The fusion of convolution, bias and ReLU operations
- Aggregation of operations with sufficiently similar parameters and the same source tensor (for example, the 1x1 convolutions in GoogleNet v5’s inception module)
- Merging of concatenation layers by directing layer outputs to the correct eventual destination.
如果需要,生成器还可以修改权重的精度。当以8位整数精度生成网络时,它使用一个称为校准的过程来确定中间激活的动态范围,从而确定量化的适当比例因子。
此外,构建阶段还对虚拟数据运行层,以从其内核目录中选择最快的,并在适当的情况下执行权重预格式化和内存优化。
注意:生成的计划文件不能跨平台或跨TensorRT版本移植,不能在不同的GPU上运行它们。
TensorRT提供的能力
1、TensorRT使开发人员能够导入、校准、生成和部署优化的网络。网络可以直接从Caffe导入,也可以通过UFF或ONNX格式从其他框架导入。它们也可以通过实例化各个层并直接设置参数和权重来以编程方式创建。
\2、使用插件接口通过TensorRT运行自定义层。Graph Surgeon实用程序提供了将TensorFlow节点映射到TensorRT中的自定义层的能力,从而可以使用TensorRT对许多TensorFlow网络进行推理。
\3、TensorRT在所有支持的平台上提供C++实现,以及在x86, aarch64, and ppc64le上实现Python。
TensorRT弃用方针
从Tensorrt8.0开始,n.x版中不推荐使用的特性将在主发行版(n+2)中删除。例如,TensorRT 9.0将省略TensorRT 7.x中不推荐使用的功能。