1、什么的TensorRT
TensorRT是nvidia家的一款高性能深度学习推理SDK。此SDK包含深度学习推理优化器和运行环境,可为深度学习推理应用提供低延迟和高吞吐量。在推理过程中,基于TensorRT的应用程序比仅仅使用CPU作为平台的应用程序要快40倍。
2、cuda、cudnn和tensorrt的关系
CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。CUDA的主要作用是连接GPU 和 应用程序,方便用户通过 CUDA 的 API 调度 GPU 进行计算。
cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。它能将模型训练的计算优化之后,再通过 CUDA 调用 GPU 进行运算.
当然你也可直接使用 CUDA,而不通过 cuDNN ,但运算效率会低好多。因为你的模型训练计算没有优化。
TensorRT是英伟达针对自家平台做的加速包,只负责模型的推理(inference)过程,一般不用TensorRT来训练模型的,而是用于部署时加速模型运行速度。
3、TensorRT部署
TensorRT 只需要知道网络的结构和参数即可,它支持三种转换入口:
TF-TRT,要求是 TensorFlow 模型
ONNX 模型格式
使用 TensorRT API 手动把模型搭起来,然后把参数加载进去
找到TensorRT的下载地址,我这边选择的是TensorRT8,TensorRT支持以下几种方式安装,分别是deb,tar,rpm。我这边的系统是Ubuntu 22.04,CUDA版本是11.6,选择的安装方式是tar进行安装。
关于tar的安装方式,可以参考Nvidia官方文档中关于tar的部分。NVIDIA Deep Learning TensorRT Documentation关于tar的安装方式,可以参考Nvidia官方文档中关于tar的部分。
所以整个逻辑就是:
把你的模型导出成 ONNX 格式。
把 ONNX 格式模型输入给 TensorRT,并指定优化参数。
使用 TensorRT 优化得到 TensorRT Engine。
使用 TensorRT Engine 进行 inference。