trtexec命令用法

trtexec 是 TensorRT 提供的一个命令行工具,用于将深度学习模型转换为 TensorRT 引擎,并对其进行性能测试和推理。它支持多种模型格式(如 ONNX、Caffe 等),并允许用户配置各种参数以优化模型性能。以下是 trtexec 的主要功能和命令选项介绍:

工具安装

trtexec 是 NVIDIA TensorRT 提供的一个命令行工具,用于测试和运行 TensorRT 引擎。它可以用于快速评估模型的性能、生成 TensorRT 引擎文件等。

安装TensorRT

基本功能

模型转换:

  1. trtexec 可以将 ONNX、Caffe 等格式的模型转换为 TensorRT 引擎文件(.engine),以便在 NVIDIA GPU 上进行高效推理。

性能测试:

  1. 通过运行多次推理,trtexec 可以测量并报告模型的推理性能,包括延迟和吞吐量。

动态形状支持:

  1. 支持动态输入形状,可以在模型转换和推理时指定最小、最佳和最大输入形状。

精度设置:

  1. 支持多种计算精度,包括 FP32、FP16、INT8 和 FP8,以在性能和精度之间进行权衡。 常用命令选项

常用命令选项

模型选项

  • –onnx=:指定要加载的 ONNX 模型文件。
  • –saveEngine=:将转换后的 TensorRT 引擎文件保存到指定路径。
  • –loadEngine=:加载已保存的 TensorRT 引擎文件。

构建选项

  • –minShapes=spec、–optShapes=spec、–maxShapes=spec:指定动态输入形状的最小、最佳和最大值。
  • –fp16:启用 FP16 精度。
  • –int8:启用 INT8 精度,并且需要提供校准文件。
  • –calib=:指定 INT8 校准缓存文件。
  • –builderOptimizationLevel:设置构建优化级别,值越高,构建时间越长但可能性能更好。

推理选项

  • –shapes=spec:设置动态形状输入的实际形状。
  • –iterations=N:指定推理迭代次数。
  • –duration=N:指定推理测试的持续时间(秒)。
  • –warmUp=N:指定推理前的预热时间(毫秒)。

性能报告

  • –verbose:启用详细日志。
  • –avgRuns=N:报告多个连续迭代的平均性能。
  • –percentile=P1,P2,P3,…:报告指定百分位数的性能。

系统选项

  • –device=N:选择 CUDA 设备。
  • –useDLACore=N:选择 DLA 核心。

示例命令

1转换 ONNX 模型为 TensorRT 引擎:

trtexec --onnx=model.onnx --saveEngine=model.engine  

2. 加载 TensorRT 引擎并进行推理测试:

trtexec --loadEngine=model.engine  

3. 指定动态形状并启用 FP16 精度:
注意:
1.命令中的"input"需要替换为ONNX模型中的实际输入名称。
2.需要ONNX模型导出时设置dynamic_axes,否则会报错。

trtexec --onnx=model.onnx --fp16 --minShapes=input:1x3x224x224 --optShapes=input:4x3x224x224 --maxShapes=input:8x3x224x224 --saveEngine=model_fp16.engine  

4. 运行指定次数的推理迭代:

trtexec --loadEngine=model.engine --iterations=100  

5. 启用详细日志并报告性能:

trtexec --loadEngine=model.engine --verbose --avgRuns=50  

获取帮助
可以使用 --help 或 -h 选项查看完整的命令行选项和帮助信息:

trtexec --help  

trtexec 是一个功能强大的工具,能够帮助开发者优化和测试深度学习模型在 NVIDIA GPU 上的性能。通过灵活配置各种参数,可以在性能、精度和资源使用之间找到最佳平衡。

trtexec文档用法(版本为10.0.1)

来源:https://github.com/NVIDIA/trt-samples-for-hackathon-cn/blob/master/cookbook/07-Tool/trtexec/Help.txt

模型选项

–onnx=:指定要加载的 ONNX 模型文件。

构建选项

–minShapes=spec:使用提供的最小形状配置文件构建具有动态形状的模型。
–optShapes=spec:使用提供的最佳形状配置文件构建具有动态形状的模型。
–maxShapes=spec:使用提供的最大形状配置文件构建具有动态形状的模型。
–minShapesCalib=spec:使用提供的最小形状配置文件进行校准(用于动态形状)。
–optShapesCalib=spec:使用提供的最佳形状配置文件进行校准(用于动态形状)。
–maxShapesCalib=spec:使用提供的最大形状配置文件进行校准(用于动态形状)。
–inputIOFormats=spec:指定每个输入张量的类型和格式(默认所有输入都是 fp32:chw)。
–outputIOFormats=spec:指定每个输出张量的类型和格式(默认所有输出都是 fp32:chw)。
–memPoolSize=poolspec:指定指定内存池的大小限制(以 MiB 为单位)。
–profilingVerbosity=mode:指定性能分析的详细程度(layer_names_only、detailed、none)。
–avgTiming=M:设置每次迭代中用于内核选择的平均次数(默认 8)。
–refit:标记引擎为可重新调整的。
–stripWeights:从计划中剥离权重。
–weightless:[已弃用] 请使用 --stripWeights。
–versionCompatible, --vc:标记引擎为版本兼容。
–pluginInstanceNorm, --pi:在 ONNX 解析器中将 kNATIVE_INSTANCENORM 设置为 false。
–useRuntime=runtime:指定执行引擎的 TensorRT 运行时(full、lean、dispatch)。
–leanDLLPath=:在版本兼容模式下使用的外部精简运行时 DLL。
–excludeLeanRuntime:生成的引擎不应包含嵌入的精简运行时。
–sparsity=spec:控制稀疏性(disable、enable、force)。
–noTF32:禁用 tf32 精度。
–fp16:启用 fp16 精度。
–bf16:启用 bf16 精度。
–int8:启用 int8 精度。
–fp8:启用 fp8 精度。
–best:启用所有精度以获得最佳性能。
–stronglyTyped:创建强类型网络。
–directIO:避免在网络边界进行重新格式化。
–precisionConstraints=spec:控制精度约束设置(none、obey、prefer)。
–layerPrecisions=spec:控制每层的精度约束。
–layerOutputTypes=spec:控制每层的输出类型约束。
–layerDeviceTypes=spec:指定每层的设备类型。
–calib=:读取 INT8 校准缓存文件。
–safe:启用构建安全认证引擎。
–buildDLAStandalone:启用构建 DLA 独立可加载文件。
–allowGPUFallback:启用 DLA 时,允许 GPU 回退。
–consistency:对安全认证引擎进行一致性检查。
–restricted:启用安全范围检查。
–saveEngine=:保存序列化的引擎。
–loadEngine=:加载序列化的引擎。
–getPlanVersionOnly:仅打印加载的计划的 TensorRT 版本。
–tacticSources=tactics:指定要使用的策略。
–noBuilderCache:禁用构建器中的计时缓存。
–noCompilationCache:禁用构建器中的编译缓存。
–errorOnTimingCacheMiss:当计时缓存中未包含策略时发出错误。
–timingCacheFile=:保存/加载序列化的全局计时缓存。
–preview=features:指定预览功能。
–builderOptimizationLevel:设置构建器优化级别。
–hardwareCompatibilityLevel=mode:使引擎文件与其他 GPU 架构兼容。
–tempdir =<dir>:覆盖 TensorRT 用于创建临时文件的默认临时目录。
–tempfileControls=controls:控制 TensorRT 创建临时可执行文件时允许使用的选项。
–maxAuxStreams=N:设置每个推理流允许使用的最大辅助流数。
–profile:使用提供的最小/最大/最佳形状构建动态形状配置文件。
–calibProfile:选择校准的优化配置文件索引。
–allowWeightStreaming:启用权重流引擎。
–markDebug:指定要标记为调试张量的张量名称列表。

推理选项

–shapes=spec:设置动态形状推理输入的输入形状。
–loadInputs=spec:从文件加载输入值(默认生成随机输入)。
–iterations=N:运行至少 N 次推理迭代(默认 10 次)。
–warmUp=N:在测量性能前预热 N 毫秒(默认 200 毫秒)。
–duration=N:至少运行 N 秒的性能测量(默认 3 秒)。
–sleepTime=N:在启动推理前延迟 N 毫秒(默认 0 毫秒)。
–idleTime=N:连续两次迭代之间休眠 N 毫秒(默认 0 毫秒)。
–infStreams=N:实例化 N 个执行上下文以并发运行推理(默认 1)。
–exposeDMA:序列化到设备和从设备的 DMA 传输(默认禁用)。
–noDataTransfers:禁用到设备和从设备的 DMA 传输(默认启用)。
–useManagedMemory:使用托管内存而不是单独的主机和设备分配(默认禁用)。
–useSpinWait:主动同步 GPU 事件(默认禁用)。
–threads:启用多线程以独立线程驱动引擎或加快重新调整速度(默认禁用)。
–useCudaGraph:使用 CUDA 图捕获引擎执行然后启动推理(默认禁用)。
–timeDeserialize:计时反序列化网络的时间并退出。
–timeRefit:计时重新调整引擎的时间并推理。
–separateProfileRun:在基准测试运行中不附加性能分析器;如果启用了性能分析,将执行第二次性能分析运行(默认禁用)。
–skipInference:在引擎构建完成后退出,跳过推理性能测量(默认禁用)。
–persistentCacheRatio:设置持久性缓存限制的比例。
–useProfile:为推理上下文设置优化配置文件(默认 0)。
–allocationStrategy=spec:指定推理时内部设备内存的分配策略。
–saveDebugTensors:指定打开调试状态的张量名称列表和保存原始输出的文件名。
–weightStreamingBudget:设置 TensorRT 用于权重的最大 GPU 内存量。

报告选项

–verbose:使用详细日志(默认禁用)。
–avgRuns=N:报告 N 次连续迭代的平均性能(默认 10 次)。
–percentile=P1,P2,P3,…:报告 P1、P2、P3,… 百分位的性能。
–dumpRefit:打印可重新调整的层和权重。
–dumpOutput:打印最后一次推理迭代的输出张量(默认禁用)。
–dumpRawBindingsToFile:将最后一次推理迭代的输入/输出张量打印到文件(默认禁用)。
–dumpProfile:打印每层的性能信息(默认禁用)。
–dumpLayerInfo:将引擎的层信息打印到控制台(默认禁用)。
–dumpOptimizationProfile:打印优化配置文件的信息(默认禁用)。
–exportTimes=:将计时结果写入 JSON 文件(默认禁用)。
–exportOutput=:将输出张量写入 JSON 文件(默认禁用)。
–exportProfile=:将每层的性能信息写入 JSON 文件(默认禁用)。
–exportLayerInfo=:将引擎的层信息写入 JSON 文件(默认禁用)。

系统选项

–device=N:选择 CUDA 设备(默认 0)。
–useDLACore=N:选择 DLA 核心(默认无)。
–staticPlugins:加载静态插件库(.so 文件,可以多次指定)。
–dynamicPlugins:加载动态插件库并可能与引擎序列化在一起(可以多次指定)。
–setPluginsToSerialize:将插件库与引擎一起序列化(可以多次指定)。
–ignoreParsedPluginLibs:在构建版本兼容引擎时忽略由 ONNX 解析器指定的插件库。

帮助

–help, -h:打印帮助信息。

通过上述参数,用户可以根据需要灵活地配置 trtexec 工具,以优化深度学习模型在 NVIDIA GPU 上的推理性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现实、狠残酷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值