tensorrt处理动态shape
💡
原文中文,约5800字,阅读约需14分钟。
📝
内容提要
本文介绍了在TensorRT中处理动态形状的方法,强调在导出ONNX模型时需指定动态维度。建议使用显式批处理模式和优化配置以提升性能,并提供了设置输入形状和构建引擎的示例代码。
🎯
关键要点
- 在导出ONNX模型时需指定动态shape的维度。
- 使用显式批处理模式和优化配置以提升性能。
- tensorrt的动态shape支持演进,推荐使用显式批处理模式。
- 优化配置可以帮助生成性能更好的engine。
- 提供了导出ONNX和构建engine的示例代码。
- 在使用时需指定实际的shape和使用的profile。
- 可以使用torch2trt_dynamic简化动态shape的支持。
❓
延伸问答
如何在导出ONNX模型时指定动态shape的维度?
在导出ONNX模型时,需要在dynamic_axes参数中指定动态shape的维度,例如将batch_size设置为动态维度。
TensorRT的动态shape支持有哪些演进?
TensorRT的动态shape支持经历了从implicit batch模式到explicit batch模式的演进,当前推荐使用explicit batch模式。
什么是优化配置,如何在TensorRT中使用?
优化配置用于指定输入维度的取值范围,以帮助生成性能更好的engine,可以通过创建optimization profile来实现。
如何构建TensorRT引擎时添加优化配置?
在构建TensorRT引擎时,可以使用builder.create_optimization_profile()创建优化配置,并设置输入的最小、最大和优化形状。
使用TensorRT时如何指定实际的shape和profile?
在使用TensorRT时,可以通过context.set_binding_shape()方法指定实际的shape,并通过context.active_optimization_profile选择使用的profile。
torch2trt_dynamic是什么,如何简化动态shape的支持?
torch2trt_dynamic是一个工具,可以在简单场景下简化TensorRT对动态shape的支持,适合快速实现。
➡️