TensorRT简介
TensorRT是NVIDIA推出的一款高性能的深度学习推理引擎(C++库)。相比于一般的深度学习框架,在GPU模式下其可提供36X的加速,极大提高了深度学习模型在边缘设备上的推断速度,以满足无人机、无人车等无人系统的快速视觉检测场景。
TensorRT加速原理
1、TensorRT加速主要在:
· 它支持INT8和FP16的计算,通过量化和减少浮点精度来提高计算效率; · 它可以对网络结构进行重构和优化,例如融合层、剪枝、深度缓存等技术,以减少计算量和内存访问,从而提高推理性能。
TensorRT的网络结构重构和优化不仅包括消除无用的输出层,还涉及到计算的可重复利用性和内存访问的高效性。具体来说,通过融合层、剪枝、深度缓存等技术,TensorRT可以将网络结构进行垂直整合,即将多个层合并为一个层,从而减少计算量和内存访问次数。
例如,对于常见的卷积神经网络结构,TensorRT可以将其中的卷积、偏置和激活函数(如ReLU)合并为一个层,同时通过重排卷积核的顺序,以便在计算时利用输入数据的局部性进行计算。这样可以有效地提高计算效率和内存访问效率,并且能够充分利用GPU的并行计算能力。此外,TensorRT还支持动态图形优化技术,即根据实时数据流的特点,动态地选择最优的计算路径和数据布局,进一步提高了推理性能。例如将下方图1所示的常见的Inception结构重构为图2所示的网络结构。 图1. Inception结构
对于网络的水平组合,水平组合是指将输入为相同张量和执行相同操作的层融合一起,如图2向图3的转化。
图2. Inception结构重构
图3. 相同操作的层水平融合
SpireCV的TensorRT应用
目前,SpireCV在平台层方面已全面支持Nvidia GPU(推荐10系、20系、30系显卡)、Jetson(AGX Orin/Xavier、Orin NX/Nano、Xavier NX),同样地在这些平台上也相应的支持TensorRT加速。
1、环境准备
· X86+Nvidia GPU(推荐10系、20系、30系显卡),SpireCV已将环境准备信息整理为脚本文件,方便快捷,开发者可参考“阿木实验室”官网的SpireCV wiki自行下载使用;· Jetson(AGX Orin/Xavier、Orin NX/Nano、Xavier NX),[color=var(--weui-LINK)]SpireCV开发者套件已预装好全部环境,开箱即用。
2、应用方法
简单思路:在训练平台使用PyTorch框架训练完检测器模型后,需要先将PyTorch模型(.pt模型)转换为TensorRT模型(.wts模型),再在实际运行平台将.wts模型转为TensorRT的.engine文件,使用TensorRT引擎进行推理。
.wts模型是一个二进制文件,其中存储了TensorRT引擎所需的所有权重和偏置参数,以及对应神经网络层的配置信息。与其他模型表示格式相比,.wts模型更加紧凑高效,可以充分利用TensorRT引擎的各种优化技术,从而获得更高的推理性能。
相比于另一种TensorRT引擎的转换方法,即借助ONNX模型转为TensorRT引擎,SpireCV使用的方法不仅无需外部的模型转换工具,而且能够获得更高的推理性能。
需要注意的是,由于.wts模型是TensorRT引擎所特有的格式,因此它只能在TensorRT引擎上运行,无法在其他深度学习框架或平台上进行加载和运行。
关于如何用自定义数据集训练检测器,以及SpireCV使用TensorRT的具体应用步骤,感兴趣的开发者可以参考我们上一篇文章[color=var(--weui-LINK)]《不想敲代码,如何快速实现数据标注、模型训练、高效部署?》或者在文章底部留言。
TensorRT加速性能
- End -
往期推荐:
阿木实验室:为机器人研发提供开源软硬件工具和课程服务,让研发更高效!
硬件工程师:yinyue199506(欢迎洽谈合作) 课程助手:jiayue199506 (领取学习资料包)
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。
|