0 背景
见《AI视频行为分析系统项目复盘——技术篇1》
1 tensorRT 介绍
NVIDIA®TensorRT™是一个深度学习平台,用于模型推理加速(仅支持NVIDIA自家GPU,CPU加速一般使用OpenVINO)。
1.1 tensorRT 诞生意义
深度学习计算量相对普通程序还是挺大的,目前CV落地还不是很普及其中一个点就是对硬件要求较高。其次,算法的计算速度直接影响产品的成本和体验,谁能在硬件成本限制下支撑起算法精度,谁就有产品竞争力。
工程上,GPU上的模型推理,业界主流使用TensorRT去加速,一方面极大提高推理速度(主要目的),另一方面减少显存等等。
1.2 tensorRT 原理
TensorRT主要做了两件事:
- TensorRT支持INT8和FP16的计算。模型训练通常使用float32或16,TRT推理时可以选择不用这么高精度。
- TensorRT对网络结构进行了重构,把一些能够合并的运算合并在了一起,针对GPU的特性做了优化。
待续
2 tensorRT 真实情况下的效果
关于tensorRT到底能加速多少,除了与加速原理相关(如某些网络模块加速幅度更快),这个一般好像还得看运气,实际上挺多因素有影响。
参考1:速度提升100%——『深度应用』YoloV5 RTX2080Ti TensorRT与PyTorch速度对比
参考2:
参考3:
3 tensorRT实现的几种方案
3.1 方案1:基于TensorFlow内置的TensorRT
自TensorFlow 1.7后,TensorFlow已经集成TensorRT了(Google和NVIDIA的合作)。
- GitHub官网:tensorflow/tensorrt
- 官方文档:https://docs.nvidia.com/deeplearning/frameworks/tf-trt-user-guide/index.html
3.2 方案2:基于TensorRT自身语法
一般将其他框架模型转成ONNX格式,然后使用TensorRT自身语法去加载并推理ONNX模型。
此方案一个比较好的参考资料:wang-xinyu/tensorrtx (几十个主流算法的tensorRT实现)
4 tensorRT技术未来趋势预估
待续