【TensorRT】trtexec的参数说明

部署运行你感兴趣的模型镜像

以下是 trtexec 工具的详细参数说明:

1、参数

Model Options

参数说明示例备注
--uff=<file>指定 UFF 模型文件--uff=model.uff用于加载 UFF 格式的模型。
--onnx=<file>指定 ONNX 模型文件--onnx=model.onnx用于加载 ONNX 格式的模型。
--model=<file>指定 Caffe 模型文件(默认 = 无模型,使用随机权重)--model=model.caffemodel用于加载 Caffe 格式的模型文件。
--deploy=<file>指定 Caffe 的 prototxt 文件--deploy=deploy.prototxt用于加载 Caffe 模型的网络结构文件。
--output=<name>[,<name>]*指定输出名称(可以多次指定);UFF 和 Caffe 模型至少需要一个输出--output=output1,output2用于指定模型的输出节点名称。
--uffInput=<name>,X,Y,Z指定输入 blob 名称及其维度(X,Y,Z = C,H,W),可以多次指定;UFF 模型至少需要一个输入--uffInput=input1,3,224,224用于指定 UFF 模型的输入名称和维度。
--uffNHWC设置输入是否为 NHWC 布局而不是 NCHW(在 --uffInput 中使用 X,Y,Z = H,W,C 顺序)--uffNHWC用于指定 UFF 模型的输入布局格式。

Build Options

参数说明示例备注
--maxBatch设置最大批处理大小并构建隐式批处理引擎(默认值与 --batch 相同)--maxBatch=32当输入模型为 ONNX 或提供动态形状时,不应使用此选项。
--minShapes=spec使用提供的最小形状配置文件构建动态形状--minShapes=input0:1x3x256x256,input1:1x3x128x128必须同时提供 minShapesoptShapesmaxShapes
--optShapes=spec使用提供的最优形状配置文件构建动态形状--optShapes=input0:1x3x256x256,input1:1x3x128x128如果仅提供 optShapes,则 minShapesmaxShapes 将设置为与 optShapes 相同的值。
--maxShapes=spec使用提供的最大形状配置文件构建动态形状--maxShapes=input0:1x3x256x256,input1:1x3x128x128输入名称可以用转义的单引号包裹(例如:'Input:0')。
--minShapesCalib=spec使用提供的最小形状配置文件校准动态形状--minShapesCalib=input0:1x3x256x256,input1:1x3x128x128必须同时提供 minShapesCaliboptShapesCalibmaxShapesCalib
--optShapesCalib=spec使用提供的最优形状配置文件校准动态形状--optShapesCalib=input0:1x3x256x256,input1:1x3x128x128如果仅提供 optShapesCalib,则 minShapesCalibmaxShapesCalib 将设置为与 optShapesCalib 相同的值。
--maxShapesCalib=spec使用提供的最大形状配置文件校准动态形状--maxShapesCalib=input0:1x3x256x256,input1:1x3x128x128输入名称可以用转义的单引号包裹(例如:'Input:0')。
--inputIOFormats=spec指定每个输入张量的类型和格式(默认 = 所有输入为 fp32:chw--inputIOFormats=fp16:chw,fp32:chw如果指定此选项,请为所有输入设置逗号分隔的类型和格式,顺序与网络输入 ID 相同。
--outputIOFormats=spec指定每个输出张量的类型和格式(默认 = 所有输出为 fp32:chw--outputIOFormats=fp16:chw,fp32:chw如果指定此选项,请为所有输出设置逗号分隔的类型和格式,顺序与网络输出 ID 相同。
--workspace=N设置工作空间大小(MiB)--workspace=1024工作空间大小以 MiB 为单位。
--memPoolSize=poolspec指定指定内存池的大小约束(MiB)--memPoolSize=workspace:1024,dlaSRAM:64接受小数大小(例如 0.25MiB),并向下舍入到最接近的整数字节。
--profilingVerbosity=mode指定分析详细程度--profilingVerbosity=detailed模式包括 layer_names_onlydetailednone(默认 = layer_names_only)。
--minTiming=M设置内核选择中使用的最小迭代次数(默认 = 1)--minTiming=5用于内核选择的最小迭代次数。
--avgTiming=M设置每次迭代中用于内核选择的平均次数(默认 = 8)--avgTiming=10用于内核选择的平均次数。
--refit将引擎标记为可重构--refit允许检查引擎中的可重构层和权重。
--versionCompatible, --vc将引擎标记为版本兼容--versionCompatible允许引擎在相同主机操作系统上与新版本的 TensorRT 一起使用。
--useRuntime=runtime指定用于执行引擎的 TensorRT 运行时--useRuntime=lean运行时选项包括 fullleandispatch
--leanDLLPath=<file>在版本兼容模式下使用的外部精简运行时 DLL--leanDLLPath=lean.dll仅适用于版本兼容模式。
--excludeLeanRuntime在启用 --versionCompatible 时,此标志表示生成的引擎不应包含嵌入式精简运行时--excludeLeanRuntime用户必须显式指定有效的精简运行时以加载引擎。
--sparsity=spec控制稀疏性(默认 = 禁用)--sparsity=enable选项包括 disableenableforce
--noTF32禁用 TF32 精度(默认启用 TF32,同时启用 FP32)--noTF32默认情况下启用 TF32。
--fp16启用 FP16 精度,同时启用 FP32(默认 = 禁用)--fp16默认情况下禁用 FP16。
--int8启用 INT8 精度,同时启用 FP32(默认 = 禁用)--int8默认情况下禁用 INT8。
--fp8启用 FP8 精度,同时启用 FP32(默认 = 禁用)--fp8默认情况下禁用 FP8。
--best启用所有精度以实现最佳性能(默认 = 禁用)--best默认情况下禁用。
--directIO避免在网络边界处重新格式化(默认 = 禁用)--directIO默认情况下禁用。
--precisionConstraints=spec控制精度约束设置(默认 = none--precisionConstraints=obey选项包括 noneobeyprefer
--layerPrecisions=spec控制每层精度约束--layerPrecisions=conv1:fp16,conv2:fp32仅在 precisionConstraints 设置为 obeyprefer 时有效。
--layerOutputTypes=spec控制每层输出类型约束--layerOutputTypes=conv1:fp16,conv2:fp32仅在 precisionConstraints 设置为 obeyprefer 时有效。
--layerDeviceTypes=spec指定每层设备类型--layerDeviceTypes=conv1:GPU,conv2:DLA如果未指定设备类型,则层将选择默认设备类型。
--calib=<file>读取 INT8 校准缓存文件--calib=calib.cache用于 INT8 校准的缓存文件。
--safe启用构建安全认证引擎--safe如果启用了 DLA,则自动指定 --buildDLAStandalone
--buildDLAStandalone启用构建 DLA 独立可加载文件--buildDLAStandalone启用此选项时,--allowGPUFallback 被禁止,--skipInference 默认启用。
--allowGPUFallback当启用 DLA 时,允许 GPU 回退以处理不受支持的层(默认 = 禁用)--allowGPUFallback默认情况下禁用。
--consistency对安全认证引擎执行一致性检查--consistency用于安全认证引擎的一致性检查。
--restricted启用安全范围检查--restricted使用 kSAFETY_SCOPE 构建标志启用安全范围检查。
--saveEngine=<file>保存序列化引擎--saveEngine=engine.plan保存生成的引擎文件。
--loadEngine=<file>加载序列化引擎--loadEngine=engine.plan加载现有的引擎文件。
--tacticSources=tactics指定要使用的策略--tacticSources=-CUDNN,+CUBLAS通过添加(+)或删除(-)策略来指定使用的策略。
--noBuilderCache禁用构建器中的计时缓存(默认启用计时缓存)--noBuilderCache默认情况下启用计时缓存。
--heuristic启用构建器中的策略选择启发式(默认禁用启发式)--heuristic默认情况下禁用启发式。
--timingCacheFile=<file>保存/加载序列化的全局计时缓存--timingCacheFile=cache.timing用于保存或加载计时缓存文件。
--preview=features指定要使用的预览功能--preview=+fasterDynamicShapes0805通过添加(+)或删除(-)预览功能来指定使用的功能。
--builderOptimizationLevel设置构建器优化级别(默认 = 3)--builderOptimizationLevel=5较高的级别允许 TensorRT 花费更多时间进行优化。
--hardwareCompatibilityLevel=mode使引擎文件与其他 GPU 架构兼容(默认 = none--hardwareCompatibilityLevel=ampere+选项包括 noneampere+
--tempdir=<dir>覆盖 TensorRT 创建临时文件时使用的默认临时目录--tempdir=/tmp指定临时文件目录。
--tempfileControls=controls控制 TensorRT 创建临时可执行文件时的权限--tempfileControls=in_memory:allow,temporary:deny控制是否允许创建内存中或文件系统中的临时文件。
--maxAuxStreams=N设置每个推理流的最大辅助流数量--maxAuxStreams=4用于并行运行内核的辅助流数量,设置为 0 以实现最佳内存使用。

Inference Options

参数说明示例备注
--batch=N设置隐式批处理引擎的批处理大小(默认 = 1)--batch=16当引擎从 ONNX 模型构建或引擎构建时提供了动态形状时,不应使用此选项。
--shapes=spec设置动态形状推理输入的输入形状--shapes=input0:1x3x256x256,input1:1x3x128x128输入名称可以用转义的单引号包裹(例如:'Input:0')。
--loadInputs=spec从文件加载输入值(默认 = 生成随机输入)--loadInputs=input0:input0.bin,input1:input1.bin输入名称可以用单引号包裹(例如:'Input:0')。
--iterations=N运行至少 N 次推理迭代(默认 = 10)--iterations=100用于控制推理运行的迭代次数。
--warmUp=N在测量性能之前运行 N 毫秒进行预热(默认 = 200)--warmUp=500用于预热 GPU 或其他硬件。
--duration=N运行性能测量至少 N 秒的挂钟时间(默认 = 3)--duration=10如果指定为 -1,推理将持续运行,除非手动停止。
--sleepTime=N延迟推理启动,在启动和计算之间设置 N 毫秒的间隔(默认 = 0)--sleepTime=100用于模拟延迟启动的场景。
--idleTime=N在两次连续迭代之间休眠 N 毫秒(默认 = 0)--idleTime=50用于控制迭代之间的间隔时间。
--infStreams=N实例化 N 个引擎以并发运行推理(默认 = 1)--infStreams=4用于并发推理的场景。
--exposeDMA序列化与设备之间的 DMA 传输(默认 = 禁用)--exposeDMA用于调试或分析 DMA 传输。
--noDataTransfers禁用与设备之间的 DMA 传输(默认 = 启用)--noDataTransfers用于测试无数据传输的场景。
--useManagedMemory使用托管内存而不是单独的主机和设备分配(默认 = 禁用)--useManagedMemory用于简化内存管理。
--useSpinWait主动同步 GPU 事件。此选项可能会减少同步时间,但会增加 CPU 使用率和功耗(默认 = 禁用)--useSpinWait用于优化同步性能。
--threads启用多线程以使用独立线程驱动引擎或加速重构(默认 = 禁用)--threads用于多线程推理或重构优化。
--useCudaGraph使用 CUDA 图捕获引擎执行,然后启动推理(默认 = 禁用)--useCudaGraph如果图捕获失败,此标志可能会被忽略。
--timeDeserialize测量反序列化网络所需的时间并退出--timeDeserialize用于测量反序列化性能。
--timeRefit测量推理前重构引擎所需的时间--timeRefit用于测量重构性能。
--separateProfileRun不在基准测试运行中附加分析器;如果启用了分析,将执行第二次分析运行(默认 = 禁用)--separateProfileRun用于分离性能测量和分析。
--skipInference在引擎构建完成后退出并跳过推理性能测量(默认 = 禁用)--skipInference用于仅构建引擎而不运行推理的场景。
--persistentCacheRatio以比率设置持久缓存限制,0.5 表示最大持久 L2 大小的一半(默认 = 0)--persistentCacheRatio=0.5用于控制持久缓存的大小。

Build and Inference Batch Options

说明备注
使用隐式批处理时,如果未指定引擎的最大批处理大小,则将其设置为推理批处理大小。适用于隐式批处理模式。
使用显式批处理时,如果仅指定了推理的形状,则这些形状也将用作构建配置文件中的最小/最优/最大形状。适用于显式批处理模式。
如果仅指定了构建的形状,则最优形状也将用于推理。适用于显式批处理模式。
如果同时指定了推理和构建的形状,则它们必须兼容。适用于显式批处理模式。
如果启用了显式批处理但未指定任何形状,则模型必须为所有输入提供完整的静态维度,包括批处理大小。适用于显式批处理模式。
使用 ONNX 模型时,自动强制启用显式批处理。ONNX 模型不支持隐式批处理。

Reporting Options

参数说明示例备注
--verbose启用详细日志记录(默认 = false--verbose用于输出更详细的日志信息。
--avgRuns=N报告连续 N 次迭代的平均性能测量结果(默认 = 10)--avgRuns=20用于控制性能测量的平均次数。
--percentile=P1,P2,P3,...报告 P1,P2,P3,… 百分比的性能(0≤P_i≤100,0 表示最大性能,100 表示最小性能;默认 = 90,95,99%)--percentile=50,90,99用于分析性能的百分位数分布。
--dumpRefit打印可重构引擎中的可重构层和权重--dumpRefit用于调试或分析可重构引擎的结构。
--dumpOutput打印最后一次推理迭代的输出张量(默认 = 禁用)--dumpOutput用于查看推理结果的输出。
--dumpRawBindingsToFile将最后一次推理迭代的输入/输出张量打印到文件(默认 = 禁用)--dumpRawBindingsToFile用于保存推理的输入/输出数据。
--dumpProfile打印每层的分析信息(默认 = 禁用)--dumpProfile用于查看每层的性能分析数据。
--dumpLayerInfo将引擎的层信息打印到控制台(默认 = 禁用)--dumpLayerInfo用于查看引擎的层结构信息。
--exportTimes=<file>将计时结果写入 JSON 文件(默认 = 禁用)--exportTimes=times.json用于保存性能计时数据。
--exportOutput=<file>将输出张量写入 JSON 文件(默认 = 禁用)--exportOutput=output.json用于保存推理的输出结果。
--exportProfile=<file>将每层的分析信息写入 JSON 文件(默认 = 禁用)--exportProfile=profile.json用于保存每层的性能分析数据。
--exportLayerInfo=<file>将引擎的层信息写入 JSON 文件(默认 = 禁用)--exportLayerInfo=layer_info.json用于保存引擎的层结构信息。

System Options

参数说明示例备注
--device=N选择 CUDA 设备 N(默认 = 0)--device=1用于指定运行推理的 GPU 设备。
--useDLACore=N选择支持 DLA 的层的 DLA 核心 N(默认 = 无)--useDLACore=0用于指定使用 DLA 核心的编号。
--staticPlugins静态加载插件库(.so)(可多次指定)--staticPlugins=libplugin.so用于在构建时静态加载插件库。
--dynamicPlugins动态加载插件库(.so),如果包含在 --setPluginsToSerialize 中,则可能与引擎一起序列化(可多次指定)--dynamicPlugins=libplugin.so用于在运行时动态加载插件库。
--setPluginsToSerialize与引擎一起序列化的插件库(.so)(可多次指定)--setPluginsToSerialize=libplugin.so用于指定需要与引擎一起序列化的插件库。
--ignoreParsedPluginLibs默认情况下,当构建版本兼容引擎时,ONNX 解析器指定的插件库会隐式地与引擎一起序列化(除非指定了 --excludeLeanRuntime)并动态加载。启用此标志以忽略这些插件库。--ignoreParsedPluginLibs用于忽略 ONNX 解析器指定的插件库。

Help

参数说明示例备注
--help, -h打印帮助信息--help-h用于显示所有可用参数及其说明。

2、参考

说明:

  • trtexec 是 TensorRT 提供的一个命令行工具,用于优化和推理深度学习模型。
  • 参数的具体使用取决于模型类型、硬件配置和推理需求。
  • 更多参数和详细说明可参考官方文档或运行 trtexec --help 查看帮助信息。

示例:

trtexec --onnx=model.onnx --batch=8 --fp16 --saveEngine=engine.trt --verbose

此命令将加载一个ONNX模型,设置批量大小为8,启用FP16精度,保存生成的TensorRT引擎文件,并启用详细日志输出。

您可能感兴趣的与本文相关的镜像

TensorRT-v8.6

TensorRT-v8.6

TensorRT

TensorRT 是NVIDIA 推出的用于深度学习推理加速的高性能推理引擎。它可以将深度学习模型优化并部署到NVIDIA GPU 上,实现低延迟、高吞吐量的推理过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值