最近在用PyTorch训练一个语义分割模型,准备部署到Jetson上,所以想把模型转成TensorRT。但折腾了两天,各种报错快把我整懵了。比如动态shape怎么处理?有些自定义算子(像F.interpolate)在onnx导出时总警告,转trt后直接报错。还有量化精度掉得厉害,int8比fp32掉了5个点,不知道是不是校准集没选好。另外,有没有办法在不重写网络结构的情况下,让TensorRT自动融合一些算子?我看官方文档说支持Layer Fusion,但实际效果好像不明显。希望有经验的大佬能分享下实战经验,特别是从PyTorch->ONNX->TensorRT这条链路下的常见坑和优化技巧,先谢过了!
楼主
2026-07-19
PyTorch转TensorRT时,有哪些常见的踩坑点和优化思路?
请 登录 后发表回复
全部回复
共 163 条
2楼
2天前
校准集没代表性的话int8掉点很正常,建议多塞点难样本进去再试试。
3楼
1天前
动态shape记得用onnx的dynamic_axes,interpolate换成nearest导出基本不报错,int8掉点先查校准集覆盖度。
4楼
18小时前
动态shape这块建议直接在onnx导出时用dynamic_axes标好,转trt时开optimization_profile,不然默认全静态后面推理尺寸一变就崩。interpolate的问题可以试试换成resize加align_corners=False,或者用trt自带的resize层替代,能省不少事。int8掉点5个算正常,校准集最好从验证集里抽几百张有代表性的,别用训练集,另外可以试试逐层敏感度分析,把segmentation head那几层保fp16。算子融合别抱太大期望,trt对非标准结构的融合有限,实在不行拿polygraphy跑一遍看哪层拖后腿。