笔记|初步了解TensorRT

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bea_tree/article/details/83245850

1. 什么是TensorRT?

众所周知神经网络在CV等领域有着非常出众的表现,但是现实部署往往面临网络模型inference时间过大等问题,各类加速尤其是针对inference阶段的加速手段被提出。TensorRT是NVIDIA针对神经网络inference阶段提供的加速器。

2. TensorRT 做了哪些优化?

相对于训练过程,网络推断时模型结构及参数都已经固定,batchsize一般较小,对于精度的要求相较于训练过程也较低,这就给了很大的优化空间。具体到TensorRT,主要在一下几个方面进行了优化:

  1. 合并某些层
    有时制约计算速度的并不仅仅是计算量,而是网络对于内存的读写花费太大,TensorRT中将多个层的操作合并为同一个层,这样就可以一定程度的减少kernel launches和内存读写。例如conv和relu等操作一次做完。

另外,对于相同输入及相同filtersize的层会合并为同一层,利用preallocating buffers等消除了concat层

  1. 支持FP16 或者INT8的数据类型
    训练时由于梯度等对于计算精度要求较高,但是inference阶段可以利用精度较低的数据类型加速运算,降低模型的大小

  2. Kernel Auto-Tuning
    TensorRT针对不同的超参数有一写算法层面的优化,比如会根据卷积核的大小、输入大小等超参数确定使用哪种算法进行卷积运算

  3. Dynamic Tensor Memory
    TensorRT经过优化减少内存开销,提高内存的reuse

  4. 多支并行运算
    对于同一输入的多个分支可以进行并行运算

更多请细节就要浏览更专业的官方文档https://developer.nvidia.com/tensorrt

猜你喜欢

转载自blog.csdn.net/bea_tree/article/details/83245850
今日推荐