如何编写trtexec命令编译支持动态输入形状的TensorRT引擎?
编译支持动态形状的TensorRT引擎正确命令
要让TensorRT引擎支持动态输入形状,仅使用--shapes参数无法生效,必须明确指定输入形状的最小值、最优值、最大值三个范围——TensorRT需要这三个参数完成跨不同形状的优化逻辑。
针对你的场景(批量大小固定为1,token数量动态变化),可使用如下命令:
trtexec \ --onnx=model.onnx \ --minShapes=input_ids:1x1,attention_mask:1x1 \ --optShapes=input_ids:1x128,attention_mask:1x128 \ --maxShapes=input_ids:1x512,attention_mask:1x512 \ --saveEngine=model.plan
参数说明:
--minShapes:输入允许的最小形状,这里设置为单token场景(对应日志默认的1x1)--optShapes:引擎优化时针对的核心形状,建议设为业务中最常用的token数量(示例为128)--maxShapes:输入允许的最大形状,设为业务场景中可能出现的最大token数(示例为512)
编译完成后,推理阶段即可输入1xN(N介于1到512之间)的input_ids和attention_mask数据,引擎会正常处理动态形状输入。
注意事项:
- 三个参数中每个输入的维度数量必须与ONNX模型定义一致,动态维度的位置要统一
- 最优形状(
--optShapes)的选择会影响引擎的推理性能,建议贴近实际业务的主流输入尺寸
内容的提问来源于stack exchange,提问作者happygrammer
相关产品推荐
相关产品推荐

