一、Tensorrt推理流程
1、模型的转换
默认已安装好tensorrt,配置好环境。
进入tensorrt解压的路径,找到trtexec.exe,在此路径下运行:
**trtexec.exe --onnx=model.onnx --saveEngine=model.trt --workspace=1024 --best**
生成的trt模型,其输入尺寸、batchsize默认和onnx一致,作区大小设置为1024M,启动所有精度以达到最佳性能(静态batchsize)
**trtexec.exe --onnx=model.onnx --saveEngine=model.trt --fp16**
转换为fp16精度的trt模型(静态batchsize)
trtexec --onnx=mnist.onnx --minShapes=input:<shape_of_min_batch> --optShapes=input:<shape_of_opt_batch> --maxShapes=input:<shape_of_max_batch> --saveEngine=mnist.trt --best --workspace=1024 --best
input->:batchsize x 通道数 x 输入尺寸宽 x 输入尺寸高
--minShapes=input:1x3x416x416
--optShapes=input:8x3x416x416
--maxShapes=input:8x3x416x416
将ONNX模型转换为动态batchsize的TensorRT模型,启动所有精度以达到最佳性能,工作区大小设置为1024M(动态batchsize)
2、tensorrt流程中使用到的术语
serialize序列化:指将优化后的模型保存为一个二进制文件的过程(包括模型的结构、权重和优化配置等信息),以便在后续的推理过程中加载和使用。优点:模型持久化、跨平台部署、模型保护(可机进行加密、签名操作)
deserialize反序列化:用于将序列化的模型加载回内存中,用来进行模型推理
parser 解析:读取onnx模型文件,根据模型的结构和参数信息,构建模型的计算图;在解析模型的基础上,TensorRT Parser会根据硬件设备的特性和优化策略,对模型进行优化和调整,以提高推理性能;’
profile:创建用于Dynamic Shape输入的配置器。
config:创建一个 config 对象,用于保存模型优化过程中的各种设置,如精度、最大 batch size 等。
显/隐式batch size:即explicit batch 和 implicit batch。显式batch size结构是[N,C,H,W],隐式是[C,H,W]。后面手动指定 flag 为 trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH 以标志构建网络的显式batch size。
Logger:日志记录器,以trt.Logger创建用于记录模型编译的过程;
Builder:以trt.Builder创建,可用于创建 Network,对模型进行序列化生成engine(把模型序列化成tensorrt框架可以执行的格式,加快模型的加载、模型的推理、模型的精简化、减少内存占用、方便部署到其它硬件平台);
Network:由 Builder 的创建,最初只是一个空的容器;
context:上接 engine,下接 inference,因此解释为上下文;用于计算GPU的上下文。类比于cpu上的进程概