NVIDIA TensorRT 是用于高性能深度学习推理的软件开发工具包,能够以更高的吞吐量和更低的延迟运行深度学习模型。借助 TensorRT,可以优化当前主要框架(例如 Caffe 2、Chainer、Microsoft Cognitive Toolkit、MxNet 和 PyTorch)中训练的神经网络模型,并将模型部署到大规模数据中心、嵌入式或产品平台中。在准确度几乎不损失的情况下,可以大大提升模型在端侧、边缘侧以及云端的推理速度,有利于产品部署。
(1)TensorRT 加速原理
TensorRT 主要通过两方面加速神经网络的运行速度。首先是 TensorRT 支持INT8 和 FP16 的计算。在训练深度学习算法网络时,通常会采取 FP32(全精度)进行计算。但是用 TensorRT 部署神经网络进行推理时则采用相对较低的精度,从而达到加速推断的目的。更为重要的是 TensorRT 对于网络结构进行了重构和优化,从而提高 GPU 运行效率,实现加速计算的目的。
(2)TensorRT 加速步骤
1)解析卷积神经网络模型,TensorRT 通过将神经网络中无用的输出层消除以减小计算。原始网络模型如图 14 所示。
2)垂直整合网络结构,垂直整合是指将目前主流神经网络的 CONV、BN、
Leaky Relu 三个层融合为了一个 CBL 层,实现从图 14 原始网络结构到图 15所示网络结构的转变。
3)水平组合网络结构,水平组合是指将输入为相同张量和执行相同操作的层
融合一起,如图 16 所示将 3 个 1×1 的 CBL 融合为一个的 1×1 的 CBL;