关于TensorRT的了解笔记(急) --- 2023.5.17
Reference:
- 知乎 - TensorRT入门,简单介绍与初步上手,有基本的信息,以及相关链接
- Github-TensorRT:包含了安装版本对齐
- Nvidia-TensorRT Guide:官方的介绍
重点参考 官方文档 - TensorRT支持的平台 - (限制) 最快的实现手段,当然是pull一个nvidia的docker下来,直接跑人家的样例了
- 在NVIDIA各种GPU硬件平台下运行的一个C++推理框架
- 利用Pytorch、TF或者其他框架训练好的模型,可以转化为TensorRT的格式(通过 ONNX)
- 利用TensorRT推理引擎去运行这个模型,从而提升这个模型在英伟达GPU上运行的速度
- 所支持的Nvidia平台 - (有一定的算力限制)
加速效果:①SSD检测模型,加速3倍(Caffe);②CenterNet检测模型,加速3-5倍(Pytorch);③LSTM、Transformer(细op),加速0.5倍-1倍(TensorFlow);④resnet系列的分类模型,加速3倍左右(Keras);⑤GAN、分割模型系列比较大的模型,加速7-20倍左右(Pytorch)
-
算子融合(层与张量融合):通过融合一些计算op或者去掉一些多余op来减少数据流通次数、显存的使用
-
**量化:**量化即INT8量化或者FP16以及TF32等不同于常规FP32精度的使用,这些精度可以显著提升模型执行速度但是会很小程度上降低精度,小于 1% 精度下降
这一点在效果上和 TensorCore上产生了关联 - 这玩意是硬件,而TensorRT算一种编译优化 - 软硬之间;而TensorRT在包含有 TensorCore确实能起到更好的效果
-
内核自动调整:根据不同的显卡构架、SM数量、内核频率等(例如1080TI和2080TI),自调优
-
动态张量显存:我们都知道,显存的开辟和释放是比较耗时的,通过调整一些策略可以减少模型中这些操作的次数,从而可以减少模型运行的时间
-
多流执行:使用CUDA中的stream技术,最大化实现并行操作
以上的情况中,优化策略的代码本身是闭源的
-
硬件环境配置
CPU intel i7-11700k 内存 16GB GPU Nvidia 3090(24GB) -
软件环境配置(Anaconda中实际部署)
GCC/G++ 11.3.0 CUDA cuda-12.0.1 CuDNN cuDNN-8.8.0 TensorRT 8.6.1 torch torch=2.0.0+cu118, torchvision=0.15.1+cu118 ,torchaudio=2.0.1
