刚入坑深度学习没多久,做一个小目标检测模型(YOLOv5s改的),在PyTorch里用FP16推理一张图大概8ms,转成TensorRT(FP16)后反而变成12ms了,直接裂开。我查了一下,有人说可能是模型太小,TensorRT的优化对计算密集型任务才有用,但我这个模型也就几十层卷积,难道真不适合?还是说我导出时哪里没配置对?目前用的onnx转trt,动态batch设了1,有没有老哥指点一下排查思路?另外,如果模型小的话,是不是用onnxruntime或者openvino更合适?提前谢谢了。
楼主
2小时前
PyTorch转TensorRT后推理变慢,是我的模型太小了吗?
请 登录 后发表回复
全部回复
共 2 条
2楼
2小时前
确实有可能跟模型大小有关,TensorRT在小模型上启动和显存拷贝的开销占比会更大,你试试把batch size调大或者用int8量化看看。导出时检查下是不是用了explicit batch,动态shape设置不当也会拖慢速度。如果模型就几十层,onnxruntime跑起来反而更省心,部署也简单。
3楼
40分钟前
确实有可能,小模型在TensorRT里启动和算子融合的开销占比会更大,尤其动态batch和onnx导出时的算子支持度也会影响性能。我之前试过类似规模模型,TRT的显存分配和kernel autotuning反而会引入额外延迟。你可以先试试固定batch size、关闭动态shape,或者用trtexec测一下各层耗时。如果实在优化不上,onnxruntime确实对小模型更友好,部署也简单,openvino在Intel平台也值得一试。