TensorRT
TensorRT来部署深度学习模型以实现对模型的加速,从而提高深度学习模型运行的效率
神经网络结构和相关参数权重
TensorRT使用流程,
分为两个阶段:预处理阶段和推理阶段。其部署大致流程如下:
1.导出网络定义以及相关权重; 将深度学习模型导出ONNX文件,然后拿着ONNX文件去部署 torch.onnx.export
2.解析网络定义以及相关权重; TensorRT可以直接从ONNX文件中读取出网络定义和权重信息
3.根据显卡算子构造出最优执行计划;
4.将执行计划序列化存储; 序列化为xxx.engine文件持久化保存
5.反序列化执行计划;
6.进行推理 用trtexec.exe实现预推理需要系统安装好cudatoolkit和cudnn
用 Python API 从头创建网络(重点)
1、从头创建engine的9个基本步骤
step1:创建logger
step2:创建builder
step3:创建network
step4:向network中添加网络层
step5:设置并标记输出
step6:创建config并设置最大batchsize和最大工作空间
step7:创建engine
step8:序列化保存engine
step9:释放资源
CUDA 推断使用GPU
Cuda-GPU -sh
CUDA_VISIBLE_DEVICES=1 sh 0_run.sh
CUDA_VISIBLE_DEVICES=1
只有编号为 1 的 GPU 对程序是可见的,
在代码中 gpu[0] 指的就是这块 GPU。
CUDA_VISIBLE_DEVICES=0,2,3
只有编号为 0,2,3 的 GPU 对程序是可见的,
在代码中 gpu[0] 指的是第 0 块,gpu[1] 指的是第 2 块,gpu[2] 指的是第 3 块。
Python- cuda
##注意赋值为字符串,不是整型。
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"
参考:
TensorRT教程8:使用 Python API 从头创建网络(重点) https://blog.csdn.net/weixin_41562691/article/details/118278140