当出现onnx head和转出的tensorrt head output数量不一致时
问题是条件分支影响
解决方案:
去掉 --useCudaGraph,因为此优化不支持条件分支,会让output出现不一致情况
--separateProfileRun
和 --useCudaGraph
是 NVIDIA TensorRT 的命令行工具(如 trtexec
)中的选项,用于执行模型推理时的特定配置。以下是每个选项的详细说明:
--separateProfileRun
-
用途:
- 该选项用于在
trtexec
运行时将模型的 profile(性能分析)与实际的推理执行分开。 - 很适合用于分析模型性能,而不会干扰实际推理性能的数据。
- 该选项用于在
-
工作原理:
- 当启用
--separateProfileRun
时,trtexec
将会首先运行一个独立的配置、优化和编译阶段,以获取最佳执行路径和内存配置,而后在单独的阶段运行实际的推理测试。 - 这有助于分析阶段不出现偏差以及更准确地评估推理过程中的性能。
- 当启用
--useCudaGraph
-
用途:
- 启用 CUDA 图(Cuda Graphs)特性,以优化 GPU 上的模型推理。
- CUDA 图可以显著减少在多次执行相同计算图(例如推理过程中)的开销。
-
工作原理:
--useCudaGraph
通过记录 GPU 操作并措为单独的 CUDA 图进行多次重复执行,从而提升模型推理性能。- 这样能减少每次推理调用的启动和调度开销,对高频、低延迟的请求特别有效。
-
适用场景:
- 当模型执行是稳定的,输入和输出形状是固定的情况下,CUDA 图能提供显著的性能增益。
- 需要注意的是,不支持动态输入尺寸和条件分支的情况。