tensorrt能够对模型进行加速,主要原因如下:
1、降低数据精度
模型训练通常使用 32 位或 16 位数据。而TensorRT支持kFLOAT(float32)、kHALF(float16)、kINT8(int8)三种精度的计算。可以通过低精度进行网络推理,达到加速的目的。但是该方法,会对推理精度有一定影响。
2、模型压缩
tensorrt对网络结构进行重构,把一些能合并的运算合并在一起,从而进行加速。合并方式主要为以下两种:
1)垂直合并
垂直方向,合并一些网络层。例如,把Conv、BN、Relu三个层融合为一个层CBR。
如图1到图2 的合并。
2)水平合并
将输入为相同张量和执行相同操作的层融合在一起。
例如,图2到图3。