tensorrt python版推理代码流程(1)

本文介绍了使用TensorRT进行模型推理的流程,包括模型转换、序列化与反序列化、解析、配置等步骤。在转换过程中,详细讨论了静态与动态batchsize的设置,并解释了显式与隐式batch size的概念。同时,概述了构建期与运行期的基本流程,强调了Logger、Builder、Context和Engine的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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上的进程概

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值