天天看點

【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推理有線性增長的問題

繼續閱讀