IBuilderConfig

tensorrt.QuantizationFlag

将网络量化为 int8 的有效标志列表。

成员

CALIBRATE_BEFORE_FUSION : 在层融合之前运行 int8 校准过程。仅对 IInt8LegacyCalibrator 和 IInt8EntropyCalibrator 有效。我们始终在层融合之前为 IInt8MinMaxCalibrator 和 IInt8EntropyCalibrator2 运行 int8 校准过程。默认禁用。

tensorrt.DeviceType

TensorRT 可以执行的设备类型

成员

GPU : GPU 设备

DLA : DLA 核心

tensorrt.ProfilingVerbosity

NVTX 注释和引擎检查器中的性能分析详细程度

成员

LAYER_NAMES_ONLY : 仅打印层名称。这是默认设置。

DETAILED : 打印详细的层信息,包括层名称和层参数。

NONE : 不打印任何层信息。

tensorrt.TacticSource

可以为 TensorRT 提供策略的策略来源。

成员

CUBLAS

启用 cuBLAS 策略。默认禁用。[已弃用] 在 TensorRT 10.0 中已弃用。注意: 禁用 CUBLAS 策略来源将导致传递给插件中 attachToContext 的 cuBLAS 句柄为空。

CUBLAS_LT

启用 cuBLAS LT 策略。默认禁用。[已弃用] 在 TensorRT 9.0 中已弃用。

CUDNN

启用 cuDNN 策略。默认禁用。[已弃用] 在 TensorRT 10.0 中已弃用。注意: 禁用 CUDNN 策略来源将导致传递给插件中 attachToContext 的 cuDNN 句柄为空。

EDGE_MASK_CONVOLUTIONS

启用使用边缘掩码表实现的卷积策略。这些策略通过消耗与输入大小成比例的额外内存空间来权衡内存以获得性能。默认启用。

JIT_CONVOLUTIONS

启用使用源代码 JIT 融合实现的卷积策略。启用此功能可能会增加引擎构建时间。默认启用。

tensorrt.EngineCapability
支持的引擎能力流程列表。

EngineCapability 决定了构建时网络和其目标运行时的限制。当 BuilderFlag::kSAFETY_SCOPE 未设置时(默认情况下),EngineCapability.STANDARD 不会对功能提供任何限制,并且生成的序列化引擎可以使用 TensorRT 标准运行时 API 在 nvinfer1 命名空间中执行。EngineCapability.SAFETY 提供安全认证的网络操作的受限子集,并且生成的序列化引擎可以使用 TensorRT 的安全运行时 API 在 tensorrt.safe 命名空间中执行。EngineCapability.DLA_STANDALONE 提供 DLA 兼容的网络操作的受限子集,并且生成的序列化引擎可以使用独立的 DLA 运行时 API 执行。有关将 cuDLA API 与 TensorRT API 集成的示例,请参见 sampleCudla。

成员

STANDARD : 标准:不以标准运行时为目标的 TensorRT 流程。此流程同时支持 DeviceType::kGPU 和 DeviceType::kDLA。

SAFETY : 安全:具有针对安全运行时限制的 TensorRT 流程。有关支持的层和格式列表,请参见安全文档。此流程仅支持 DeviceType::kGPU。

DLA_STANDALONE : DLA 独立:具有针对外部于 TensorRT 的 DLA 运行时限制的 TensorRT 流程。有关支持的层和格式列表,请参见 DLA 文档。此流程仅支持 DeviceType::kDLA。

tensorrt.BuilderFlag

构建器从网络定义创建引擎时可以启用的有效模式。

成员

FP16 : 启用 FP16 层选择

BF16 : 启用 BF16 层选择

INT8 : 启用 Int8 层选择

DEBUG : 通过在每层之后同步来启用层调试

GPU_FALLBACK : 如果层无法在 DLA 上执行,则启用标记为在 GPU 上执行的层

REFIT : 启用构建可重装配引擎

DISABLE_TIMING_CACHE : 禁用跨相同层重用计时信息。

EDITABLE_TIMING_CACHE : 启用可编辑计时缓存。

TF32 : 允许(但不要求)DataType.FLOAT 类型的张量使用 TF32 进行计算。TF32 通过在乘法之前将输入舍入为 10 位尾数来计算内积,但使用 23 位尾数累积总和。默认启用。

SPARSE_WEIGHTS : 允许构建器检查权重并在权重具有合适的稀疏性时使用优化的函数。

SAFETY_SCOPE : 更改 EngineCapability.STANDARD 流程中允许的参数,以匹配 EngineCapability.SAFETY 针对 DeviceType.GPU 检查的限制以及 EngineCapability.DLA_STANDALONE 针对 DeviceType.DLA 情况检查的限制。如果在构建时 EngineCapability.SAFETY 未设置此标志,则强制为 true。

OBEY_PRECISION_CONSTRAINTS : 要求层以指定的精度执行。否则构建失败。

PREFER_PRECISION_CONSTRAINTS : 倾向于层以指定的精度执行。如果构建否则会失败,则回退(并发出警告)到另一种精度。

DIRECT_IO要求在层和为其设置了 ITensor.allowed_formats 的网络 I/O 张量之间不插入任何重新格式化。如果功能正确性需要重新格式化,则构建失败。

[已弃用] 在 TensorRT 10.7 中已弃用。)

REJECT_EMPTY_ALGORITHMS : [已弃用] 在 TensorRT 10.8 中已弃用。请改用 ITimingCache 中的可编辑模式。如果 IAlgorithmSelector.select_algorithms 返回空算法集,则失败。

VERSION_COMPATIBLE : 限制为精简运行时算子,以提供计划文件版本的向前兼容性。

EXCLUDE_LEAN_RUNTIME : 从计划中排除精简运行时。

FP8 : 启用具有 FP8 输入/输出的插件

ERROR_ON_TIMING_CACHE_MISS : 当计时的策略未出现在计时缓存中时发出错误。

DISABLE_COMPILATION_CACHE : 在引擎构建期间禁用缓存 JIT 编译结果。

WEIGHTLESS从计划文件中剥离与性能无关的权重,稍后使用重装配更新它们,以获得更好的文件大小。

[已弃用] 在 TensorRT 10.0 中已弃用。

STRIP_PLAN : 从引擎计划文件中剥离可重装配权重。

REFIT_IDENTICAL : 使用相同的权重创建可重装配引擎。重装配期间的不同权重会产生不可预测的行为。

WEIGHT_STREAMING : 启用构建,使其能够在运行时流式传输不同数量的权重。这会减少 TRT 的 GPU 内存,但会牺牲性能。

INT4 : 启用具有 INT4 输入/输出的插件

REFIT_INDIVIDUAL : 创建可重装配引擎,并允许用户指定哪些权重可重装配,哪些不可重装配。

STRICT_NANS : 禁用浮点优化:0*x => 0,x-x => 0 或 x/x => 1。当 x 是 NaN 或 Inf 时,这些恒等式不成立,因此可能会隐藏 NaN 的传播或生成。

MONITOR_MEMORY : 在构建时启用内存监视器。

FP4 : 启用具有 FP4 输入/输出的插件

tensorrt.PreviewFeature
可以启用的预览功能列表。预览功能已完全测试,但尚未像 TensorRT 中的其他功能那样稳定。

它们作为至少一个版本的选择加入功能提供。例如,要启用更快的动态形状,请使用 set_preview_feature()PreviewFeature.PROFILE_SHARING_0806 调用 set_preview_feature()

成员

PROFILE_SHARING_0806

[已弃用] 允许跨执行上下文共享优化配置文件。此标志的默认值在 TensorRT 10.0 中为开启。关闭此标志已弃用。

ALIASED_PLUGIN_IO_10_03

在使用 IPluginV3OneBuildV2 时允许插件 I/O 被别名。

tensorrt.MemoryPoolType

TensorRT 使用的内存池的类型。

成员

WORKSPACE

WORKSPACE 由 TensorRT 用于存储操作中的中间缓冲区。这默认为最大设备内存。设置为较小的值以限制大量使用超过阈值的策略。对于更有针对性的策略删除,请使用 IAlgorithmSelector 接口([已弃用] 在 TensorRT 10.8 中已弃用。请改用 ITimingCache 中的可编辑模式)。

DLA_MANAGED_SRAM

DLA_MANAGED_SRAM 是 DLA 使用的快速软件管理 RAM,用于在层内通信。此池的大小必须至少为 4 KiB,并且必须是 2 的幂。默认为 1 MiB。Orin 每个核心的容量为 1 MiB。

DLA_LOCAL_DRAM

DLA_LOCAL_DRAM 是 DLA 使用的主机 RAM,用于跨操作共享中间张量数据。此池的大小必须至少为 4 KiB,并且必须是 2 的幂。默认为 1 GiB。

DLA_GLOBAL_DRAM

DLA_GLOBAL_DRAM 是 DLA 使用的主机 RAM,用于存储执行的权重和元数据。此池的大小必须至少为 4 KiB,并且必须是 2 的幂。默认为 512 MiB。

TACTIC_DRAM

TACTIC_DRAM 是优化器用于运行策略的主机 DRAM。在嵌入式设备上,主机和设备内存是统一的,这包括 TensorRT 构建网络直到每次内存分配点所需的所有设备内存。当 cudaGetDeviceProperties.embedded 为 true 时,这默认为 cudaGetDeviceProperties 报告的 totalGlobalMem 的 75%,否则为 100%。

TACTIC_SHARED_MEMORY

TACTIC_SHARED_MEMORY 定义了用于驱动程序保留和执行后端 CUDA 内核实现的最大共享内存大小。调整此值以限制大量超过指定阈值的策略。默认值为设备最大容量。此值必须小于 1GiB。

更新此标志将覆盖由 ref HardwareCompatibilityLevel 设置的共享内存限制,默认值为 48KiB。

tensorrt.HardwareCompatibilityLevel
描述与构建引擎的 GPU 以外的 GPU 架构兼容性的要求

构建。除 NONE 以外的级别仅支持在 NVIDIA Ampere 及更高版本的 GPU 上构建的引擎。请注意,与未来硬件的兼容性取决于 CUDA 向前兼容性支持。

成员

NONE

不要求与构建引擎的 GPU 以外的 GPU 架构硬件兼容性。

AMPERE_PLUS

要求引擎与 Ampere 及更高版本的 GPU 兼容。这将限制驱动程序保留和后端内核最大共享内存的组合使用量为 48KiB,可能会减少每层可用的策略数量,并可能阻止某些融合发生。因此,这可能会降低性能,特别是对于 tf32 模型。此选项将禁用 cuDNN,cuBLAS 和 cuBLAS LT 作为策略来源。

tensorrt.TilingOptimizationLevel

描述平铺策略的优化级别。较高的级别允许 TensorRT 花费更多时间搜索更好的平铺策略。

成员

NONE

不应用任何平铺策略。

FAST

使用快速算法和基于启发式的策略。略微增加引擎构建时间。

MODERATE

增加搜索空间并使用混合的启发式/性能分析策略。适度增加引擎构建时间。

FULL

进一步扩大搜索空间。显著增加引擎构建时间。

class tensorrt.IBuilderConfig
变量:
  • avg_timing_iterationsint 定时层时使用的平均迭代次数。在定时层时,构建器在层执行的一组平均时间上取最小值。此参数控制平均中使用的迭代次数。默认情况下,平均迭代次数为 1。

  • int8_calibratorIInt8Calibrator [已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。Int8 校准接口。校准器旨在最大程度地减少 INT8 量化过程中的信息损失。

  • flagsint 用于为此网络启用构建器选项的构建模式标志。这些标志在 BuilderFlags 枚举中列出。这些标志设置配置选项以构建网络。这应该是一个整数,由一个或多个 BuilderFlag s 组成,通过二进制 OR 组合。例如,1 << BuilderFlag.FP16 | 1 << BuilderFlag.DEBUG

  • profile_streamint 用于分析此网络的 CUDA 流的句柄。

  • num_optimization_profilesint 优化配置文件的数量。

  • default_device_typetensorrt.DeviceType 构建器要使用的默认 DeviceType。

  • DLA_coreint 引擎在其上执行的 DLA 核心。必须介于 0 和 N-1 之间,其中 N 是可用 DLA 核心的数量。

  • profiling_verbosity – NVTX 注释中的性能分析详细程度。

  • engine_capability – 所需的引擎能力。有关详细信息,请参见 EngineCapability

  • algorithm_selector – [已弃用] 在 TensorRT 10.8 中已弃用。请改用 ITimingCache 中的可编辑模式。要使用的 IAlgorithmSelector

  • builder_optimization_level – TensorRT 应在其上构建引擎的构建器优化级别。设置更高的优化级别允许 TensorRT 花费更长的引擎构建时间来搜索更多优化选项。与使用较低优化级别构建的引擎相比,生成的引擎可能具有更好的性能。默认优化级别为 3。有效值包括从 0 到最大优化级别的整数,当前为 5。将其设置为大于最大级别的值会导致与最大级别相同的行为。

  • max_num_tactics – 当有策略选择时,要计时的最大策略数。设置更大的数字允许 TensorRT 花费更长的引擎构建时间来搜索更多优化选项。与使用较少策略数构建的引擎相比,生成的引擎可能具有更好的性能。有效值包括从 -1 到最大 32 位整数的整数。默认值 -1 表示 TensorRT 可以根据其自身的启发式方法来决定策略的数量。

  • hardware_compatibility_level – 硬件兼容性允许引擎与构建引擎的 GPU 以外的 GPU 架构兼容。

  • plugins_to_serialize – 要与向前兼容的引擎一起序列化的插件库。

  • max_aux_streams – TRT 允许使用的最大辅助流数。如果网络包含可以并行运行的算子,则 TRT 可以使用辅助流以及提供给 IExecutionContext::enqueueV3() 调用的流来执行它们。默认的最大辅助流数由 TensorRT 中的启发式方法确定,即是否启用多流会提高性能。可以通过调用此 API 显式设置最大辅助流数来覆盖此行为。将其设置为 0 以强制单流推理。如果网络不包含足够的并行性,或者如果 TensorRT 确定使用更多辅助流无助于提高性能,则生成的引擎可能使用少于最大值的辅助流。允许更多辅助流并不总是能提供更好的性能,因为流之间会存在同步开销。在运行时使用 CUDA 图可以帮助减少跨流同步引起的开销。使用更多辅助流会导致运行时更多的内存使用,因为某些激活内存块将无法重用。

  • progress_monitor – 要使用的 IProgressMonitor

  • tiling_optimization_level – 平铺策略的优化级别。更高的级别允许 TensorRT 花费更多时间搜索更好的优化策略。

  • l2_limit_for_tiling – 平铺优化的目标 L2 缓存使用量。

以下是关于每个构建器优化级别的描述

  • 级别 0:通过禁用动态内核生成并选择执行成功的第一个策略,启用最快的编译。这也不会考虑计时缓存。

  • 级别 1:可用策略按启发式方法排序,但仅测试顶部策略以选择最佳策略。如果生成动态内核,则其编译优化较低。

  • 级别 2:可用策略按启发式方法排序,但仅测试最快的策略以选择最佳策略。

  • 级别 3:应用启发式方法来查看是否静态预编译内核适用,或者是否必须动态编译新内核。

  • 级别 4:始终编译动态内核。

  • 级别 5:始终编译动态内核并将其与静态内核进行比较。

__del__(self: tensorrt.tensorrt.IBuilderConfig) None
__exit__(exc_type, exc_value, traceback)

上下文管理器已弃用且无效。当引用计数达到 0 时,对象会自动释放。

__init__(*args, **kwargs)
add_optimization_profile(self: tensorrt.tensorrt.IBuilderConfig, profile: tensorrt.tensorrt.IOptimizationProfile) int

添加优化配置文件。

如果网络具有动态或形状输入张量,则必须至少调用此函数一次。

参数:

profile – 新的优化配置文件,必须满足 bool(profile) == True

返回:

如果输入有效,则返回优化配置文件的索引(从 0 开始),如果输入无效,则返回 -1。

can_run_on_DLA(self: tensorrt.tensorrt.IBuilderConfig, layer: tensorrt.tensorrt.ILayer) bool

检查层是否可以在 DLA 上运行。

参数:

layer – 要检查的层

返回:

指示层是否可以在 DLA 上运行的 bool

clear_flag(self: tensorrt.tensorrt.IBuilderConfig, flag: tensorrt.tensorrt.BuilderFlag) None

从启用的标志中清除构建器模式标志。

参数:

flag – 要清除的标志。

clear_quantization_flag(self: tensorrt.tensorrt.IBuilderConfig, flag: tensorrt.tensorrt.QuantizationFlag) None

从启用的量化标志中清除量化标志。

参数:

flag – 要清除的标志。

create_timing_cache(self: tensorrt.tensorrt.IBuilderConfig, serialized_timing_cache: buffer) tensorrt.tensorrt.ITimingCache

创建计时缓存

从序列化的原始数据创建 ITimingCache 实例。创建的计时缓存不属于特定的构建器配置。它可以由多个构建器实例共享

参数:

serialized_timing_cache – 序列化的计时缓存。如果提供了空缓存(即 b""),则将创建一个新缓存。

返回:

创建的 ITimingCache 对象。

get_calibration_profile(self: tensorrt.tensorrt.IBuilderConfig) tensorrt.tensorrt.IOptimizationProfile

[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。

获取当前的校准配置文件。

返回:

当前的校准配置文件,如果校准配置文件未设置,则为 None。

get_device_type(self: tensorrt.tensorrt.IBuilderConfig, layer: tensorrt.tensorrt.ILayer) tensorrt.tensorrt.DeviceType

获取层在其上执行的设备。

参数:

layer – 要获取 DeviceType 的层

返回:

层的 DeviceType

get_flag(self: tensorrt.tensorrt.IBuilderConfig, flag: tensorrt.tensorrt.BuilderFlag) bool

检查是否设置了构建模式标志。

参数:

flag – 要检查的标志。

返回:

一个 bool 值,指示是否设置了该标志。

get_memory_pool_limit(self: tensorrt.tensorrt.IBuilderConfig, pool: tensorrt.tensorrt.MemoryPoolType) int

检索相应内存池的内存大小限制(以字节为单位)。如果尚未调用池的 set_memory_pool_limit() ,则此函数返回 TensorRT 使用的默认值。此默认值不一定是该配置的最大可能值。

参数:

pool – 要获取限制的内存池。

返回:

相应内存池的内存限制大小,以字节为单位。

get_preview_feature(self: tensorrt.tensorrt.IBuilderConfig, feature: tensorrt.tensorrt.PreviewFeature) bool

检查是否启用了预览功能。

参数:

feature – 要查询的功能

返回:

如果功能已启用,则为 true,否则为 false

get_quantization_flag(self: tensorrt.tensorrt.IBuilderConfig, flag: tensorrt.tensorrt.QuantizationFlag) bool

检查是否设置了量化标志。

参数:

flag – 要检查的标志。

返回:

一个 bool 值,指示是否设置了该标志。

get_tactic_sources(self: tensorrt.tensorrt.IBuilderConfig) int

获取引擎构建配置中当前设置的策略来源。

get_timing_cache(self: tensorrt.tensorrt.IBuilderConfig) tensorrt.tensorrt.ITimingCache

从当前的 IBuilderConfig 获取 timing cache。

返回:

当前 IBuilderConfig 中使用的 timing cache,如果未设置 timing cache,则为 None

is_device_type_set(self: tensorrt.tensorrt.IBuilderConfig, layer: tensorrt.tensorrt.ILayer) bool

检查层的 DeviceType 是否已显式设置。

参数:

layer – 要检查 DeviceType 的层

返回:

如果 DeviceType 不是默认值,则为 True,否则为 False

reset(self: tensorrt.tensorrt.IBuilderConfig) None

将构建器配置重置为默认值。初始化构建器配置对象时,我们可以调用此函数。

reset_device_type(self: tensorrt.tensorrt.IBuilderConfig, layer: tensorrt.tensorrt.ILayer) None

重置给定层的 DeviceType。

参数:

layer – 要重置 DeviceType 的层

set_calibration_profile(self: tensorrt.tensorrt.IBuilderConfig, profile: tensorrt.tensorrt.IOptimizationProfile) bool

[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。

设置校准配置文件。

如果使用 int8 校准为具有运行时维度的网络设置比例,则必须设置校准优化配置文件。

参数:

profile – 新的校准配置文件,必须满足 bool(profile) == True 或为 None。MIN 和 MAX 值将被 OPT 值覆盖。

返回:

如果校准配置文件设置正确,则为 True。

set_device_type(self: tensorrt.tensorrt.IBuilderConfig, layer: tensorrt.tensorrt.ILayer, device_type: tensorrt.tensorrt.DeviceType) None

设置此层必须在其上执行的设备。如果未设置或重置 DeviceType,TensorRT 将使用构建器中设置的默认 DeviceType。

层的 DeviceType 必须与安全流(如果指定)兼容。例如,当构建器配置为 SAFE_GPU 时,层不能标记为 DLA 执行。

参数:
  • layer – 要设置 DeviceType 的层

  • device_type – 层必须在其上执行的 DeviceType

set_flag(self: tensorrt.tensorrt.IBuilderConfig, flag: tensorrt.tensorrt.BuilderFlag) None

将输入的构建器模式标志添加到已启用的标志中。

参数:

flag – 要设置的标志。

set_memory_pool_limit(self: tensorrt.tensorrt.IBuilderConfig, pool: tensorrt.tensorrt.MemoryPoolType, pool_size: int) None

设置内存池的内存大小。

TensorRT 层根据操作访问不同的内存池。此函数在 IBuilderConfig 中设置由 `pool_size` 指定的、对应于由 `pool` 指定的内存池的大小限制。TensorRT 将构建一个受这些限制约束的 plan 文件,或者报告哪个约束导致了失败。

如果由 `pool_size` 指定的池大小未能满足池的大小要求,则此函数不执行任何操作,并向注册的 IErrorRecorder 发出可恢复错误 `ErrorCode.INVALID_ARGUMENT`。

如果池的大小大于配置的最大可能值,则此函数不执行任何操作,并发出 `ErrorCode.UNSUPPORTED_STATE`。

如果在构建网络时请求的设备类型上不存在该池,则会向记录器发出警告,并且内存池值将被忽略。

请参阅 MemoryPoolType 以查看每个池的大小要求。

参数:
  • pool – 要限制可用内存的内存池。

  • pool_size – 池的大小,以字节为单位。

set_preview_feature(self: tensorrt.tensorrt.IBuilderConfig, feature: tensorrt.tensorrt.PreviewFeature, enable: bool) None

启用或禁用特定的预览功能。

允许启用或禁用实验性功能,这些功能在当前版本中默认情况下未启用。预览功能已经过全面测试,但尚未像 TensorRT 中的其他功能那样稳定。它们作为可选功能提供至少一个版本。

请参阅 PreviewFeature 以获取更多信息以及可用功能的列表。

参数:
  • feature – 要启用的功能

  • enable – 是否启用或禁用

set_quantization_flag(self: tensorrt.tensorrt.IBuilderConfig, flag: tensorrt.tensorrt.QuantizationFlag) None

将输入的量化标志添加到已启用的量化标志中。

参数:

flag – 要设置的标志。

set_tactic_sources(self: tensorrt.tensorrt.IBuilderConfig, tactic_sources: int) bool

设置策略来源。

此位集控制 TensorRT 允许使用哪些策略来源进行策略选择。

多个策略来源可以使用按位 OR 运算进行组合。例如,要启用 cublas 和 cublasLt 作为策略来源,请使用以下值: 1 << int(trt.TacticSource.CUBLAS) | 1 << int(trt.TacticSource.CUBLAS_LT)

参数:

tactic_sources – 要设置的策略来源

返回:

一个 bool 值,指示构建配置中的策略来源是否已更新。如果提供的值无效,则构建配置中的策略来源将不会更新。

set_timing_cache(self: tensorrt.tensorrt.IBuilderConfig, cache: tensorrt.tensorrt.ITimingCache, ignore_mismatch: bool) bool

将 timing cache 附加到 IBuilderConfig。

timing cache 具有验证标头,以确保提供的缓存可以在当前环境中使用。如果提供的缓存中的 CUDA 设备属性与当前环境不同,则会报告失败。 bool(ignore_mismatch) == True 跳过严格的验证,并允许加载从不同设备创建的缓存。缓存必须在引擎构建完成后才能销毁。

参数:
  • cache – 要使用的 timing cache

  • ignore_mismatch – 是否允许使用包含不同 CUDA 设备属性的缓存

返回:

一个 BOOL 值,指示操作是否成功完成。