天天看点

【tensorrt】——trtexec动态batch支持与batch推理耗时评测

tensorrt, batch

trtexec地址

参考官方的说明,进行项目编译

pytorch->onnx的时候,需要在动态尺寸上定义好,例如:

这里就是定义batch的数值为动态的。

导出成onnx后,可以看一下输入的shape:batch_size×3×480×640

【tensorrt】——trtexec动态batch支持与batch推理耗时评测

trtexec模型转换

直接可以用以下命令进行模型转换

说明:

onnx: 输入的onnx模型

saveEngine:转换好后保存的tensorrt engine

workspace:使用的gpu内存,有时候不够,需要手动增大点

minShapes:动态尺寸时的最小尺寸,格式为NCHW,需要给定输入node的名字,

optShapes:推理测试的尺寸,trtexec会执行推理测试,该shape就是测试时的输入shape

maxShapes:动态尺寸时的最大尺寸,这里只有batch是动态的,其他维度都是写死的

fp16:float16推理

推理命令

由上一节的介绍,动态batch推理时,通过改变optShapes的参数就可以实现不同batch的推理。例如:

耗时情况

trtexec会打印出很多时间,这里需要对每个时间的含义进行解释,然后大家各取所需,进行评测。总的打印如下:

Host Latency gpu: 输入+计算+输出 三部分的耗时

Enqueue Time:CPU异步的时间(该时间不具有参考意义,因为GPU的计算可能还没有完成)

GPU Compute:GPU计算的耗时

综上,去了Enqueue Time时间都是有意义的

这里附上个人的测试。

设备

模型

model

batch

gpu 计算耗时/ms

3080pc

ddrnet23_ocr

fp16

1

1.70512

2

2.70069

4

4.78706

8

9.03271

16

16.1414

可以看到tensorrt的batch推理有线性增长的问题

继续阅读