ICudaEngine

tensorrt.TensorIOMode

TensorRT 的 IO 张量模式。

成员

NONE : 张量既不是输入也不是输出。

INPUT : 张量是引擎的输入。

OUTPUT : 张量是引擎的输出。

class tensorrt.ICudaEngine

用于在构建的网络上执行推理的 ICudaEngine

引擎可以使用 [] 进行索引。当使用整数进行索引时,它将返回相应的绑定名称。当使用字符串进行索引时,它将返回相应的绑定索引。

变量:
  • num_io_tensorsint IO 张量的数量。

  • has_implicit_batch_dimensionbool [已弃用] 在 TensorRT 10.0 中已弃用。由于已删除隐式批次维度支持,因此始终为 false。

  • num_layersint 网络中的层数。网络中的层数不一定是原始 INetworkDefinition 中的数量,因为在优化 ICudaEngine 时,层可能会被组合或消除。此值在构建每层表时可能很有用,例如在聚合多次执行的性能分析数据时。

  • max_workspace_sizeint ICudaEngine 使用的工作区大小。工作区大小将不大于构建 ICudaEngine 时提供给 Builder 的值,并且通常会更小。将为每个 IExecutionContext 分配工作区。

  • device_memory_sizeint IExecutionContext 所需的设备内存量。

  • device_memory_size_v2int IExecutionContext 所需的设备内存量。返回值取决于是否启用了权重流式传输预算。

  • refittablebool 引擎是否可以重拟合。

  • namestr 与引擎关联的网络名称。名称在网络创建期间设置,并在构建或反序列化后检索。

  • num_optimization_profilesint 为此引擎定义的优化配置数量。这始终至少为 1。

  • error_recorderIErrorRecorder 应用程序实现的 TensorRT 对象错误报告接口。

  • engine_capabilityEngineCapability 引擎能力。有关详细信息,请参阅 EngineCapability

  • tactic_sourcesint 此引擎所需的策略来源。

  • profiling_verbosity – 构建引擎时构建器配置设置的性能分析详细程度。

  • hardware_compatibility_level – 引擎的硬件兼容性级别。

  • num_aux_streams – 只读。此引擎使用的辅助流数量,它将小于或等于通过在构建引擎时设置 builder_config.max_aux_streams 允许的最大辅助流数量。

  • weight_streaming_budget – [已弃用] 在 TensorRT 10.1 中已弃用,已被 weight_streaming_budget_v2 取代。设置和获取当前用于推理的权重流式传输预算。预算可以设置为 -1(在运行时禁用权重流式传输),0(默认值)(使 TRT 选择是否进行权重流式传输),或包含范围 [minimum_weight_streaming_budget, streamable_weights_size - 1] 内的正值。

  • minimum_weight_streaming_budget – [已弃用] 在 TensorRT 10.1 中已弃用,已被 weight_streaming_budget_v2 取代。返回成功运行网络所需的最小权重流式传输预算(以字节为单位)。引擎必须已使用 kWEIGHT_STREAMING 构建。

  • streamable_weights_size – 返回引擎中可流式传输权重的大小。这可能不包括所有权重。

  • weight_streaming_budget_v2 – 设置和获取当前用于推理的权重流式传输预算。预算可以设置为任何非负值。值为 0 时流式传输的权重最多。值等于 streamable_weights_size(默认值)或更大值将禁用权重流式传输。

  • weight_streaming_scratch_memory_size – TensorRT ExecutionContext 执行推理所需的暂存内存量。此值可能会根据当前的权重流式传输预算而变化。请使用 V2 内存 API,engine.device_memory_size_v2 和 ExecutionContext.set_device_memory() 来提供包含当前权重流式传输暂存内存的内存。不指定这些 API 或使用 V1 API 将不包括此内存,因此 TensorRT 将自行分配。

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

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

__getitem__(self: tensorrt.tensorrt.ICudaEngine, arg0: int) str
__init__(*args, **kwargs)
create_engine_inspector(self: tensorrt.tensorrt.ICudaEngine) tensorrt.tensorrt.EngineInspector

创建一个 IEngineInspector,它会打印出引擎或执行上下文的层信息。

返回:

IEngineInspector

create_execution_context(self: tensorrt.tensorrt.ICudaEngine, strategy: tensorrt.tensorrt.ExecutionContextAllocationStrategy = <ExecutionContextAllocationStrategy.STATIC: 0>) tensorrt.tensorrt.IExecutionContext

创建一个 IExecutionContext 并指定设备内存分配策略。

返回:

新创建的 IExecutionContext

create_execution_context_without_device_memory(self: tensorrt.tensorrt.ICudaEngine) tensorrt.tensorrt.IExecutionContext

创建一个未分配任何设备内存的 IExecutionContext。此设备上下文的执行内存必须由应用程序提供。

返回:

一个未分配设备内存的 IExecutionContext

create_serialization_config(self: tensorrt.tensorrt.ICudaEngine) tensorrt.tensorrt.ISerializationConfig

创建一个序列化配置对象。

get_device_memory_size_for_profile(self: tensorrt.tensorrt.ICudaEngine, profile_index: int) int

返回特定配置所需的设备内存大小。

参数:

profile_index – 配置的索引。

get_device_memory_size_for_profile_v2(self: tensorrt.tensorrt.ICudaEngine, profile_index: int) int

返回特定配置所需的设备内存大小。

返回值将根据以下 API 调用而更改 1. setWeightStreamingBudgetV2

参数:

profile_index – 配置的索引。

get_tensor_bytes_per_component(*args, **kwargs)

重载函数。

  1. get_tensor_bytes_per_component(self: tensorrt.tensorrt.ICudaEngine, name: str) -> int

    返回元素每个组件的字节数。

    如果 get_tensor_vectorized_dim() != -1,则返回向量组件大小。

    arg name:

    张量名称。

  2. get_tensor_bytes_per_component(self: tensorrt.tensorrt.ICudaEngine, name: str, profile_index: int) -> int

    返回元素每个组件的字节数。

    如果 get_tensor_vectorized_dim() != -1,则返回向量组件大小。

    arg name:

    张量名称。

get_tensor_components_per_element(*args, **kwargs)

重载函数。

  1. get_tensor_components_per_element(self: tensorrt.tensorrt.ICudaEngine, name: str) -> int

    返回一个元素中包含的组件数。

    如果 get_tensor_vectorized_dim() != -1,则返回向量中元素的数量。

    arg name:

    张量名称。

  2. get_tensor_components_per_element(self: tensorrt.tensorrt.ICudaEngine, name: str, profile_index: int) -> int

    返回一个元素中包含的组件数。

    如果 get_tensor_vectorized_dim() != -1,则返回向量中元素的数量。

    arg name:

    张量名称。

get_tensor_dtype(self: tensorrt.tensorrt.ICudaEngine, name: str) tensorrt.tensorrt.DataType

从张量名称返回缓冲区所需的数据类型。

参数:

name – 张量名称。

get_tensor_format(*args, **kwargs)

重载函数。

  1. get_tensor_format(self: tensorrt.tensorrt.ICudaEngine, name: str) -> tensorrt.tensorrt.TensorFormat

    返回张量格式。

    arg name:

    张量名称。

  2. get_tensor_format(self: tensorrt.tensorrt.ICudaEngine, name: str, profile_index: int) -> tensorrt.tensorrt.TensorFormat

    返回张量格式。

    arg name:

    张量名称。

get_tensor_format_desc(*args, **kwargs)

重载函数。

  1. get_tensor_format_desc(self: tensorrt.tensorrt.ICudaEngine, name: str) -> str

    返回张量格式的人类可读描述。

    描述包括顺序、向量化、数据类型、步幅等。例如

    示例 1:CHW + FP32
    “行主序线性 FP32 格式”
    示例 2:CHW2 + FP16
    “两通道宽向量化行主序 FP16 格式”
    示例 3:HWC8 + FP16 + 行步幅 = 32
    “通道主序 FP16 格式,其中 C % 8 == 0 且 H 步幅 % 32 == 0”
    arg name:

    张量名称。

  2. get_tensor_format_desc(self: tensorrt.tensorrt.ICudaEngine, name: str, profile_index: int) -> str

    返回张量格式的人类可读描述。

    描述包括顺序、向量化、数据类型、步幅等。例如

    示例 1:CHW + FP32
    “行主序线性 FP32 格式”
    示例 2:CHW2 + FP16
    “两通道宽向量化行主序 FP16 格式”
    示例 3:HWC8 + FP16 + 行步幅 = 32
    “通道主序 FP16 格式,其中 C % 8 == 0 且 H 步幅 % 32 == 0”
    arg name:

    张量名称。

get_tensor_location(self: tensorrt.tensorrt.ICudaEngine, name: str) tensorrt.tensorrt.TensorLocation

确定输入或输出张量是否必须在 GPU 或 CPU 上。

参数:

name – 张量名称。

get_tensor_mode(self: tensorrt.tensorrt.ICudaEngine, name: str) tensorrt.tensorrt.TensorIOMode

确定张量是输入张量还是输出张量。

参数:

name – 张量名称。

get_tensor_name(self: tensorrt.tensorrt.ICudaEngine, index: int) str

返回输入或输出张量的名称。

参数:

index – 张量索引。

get_tensor_profile_shape(self: tensorrt.tensorrt.ICudaEngine, name: str, profile_index: int) List[tensorrt.tensorrt.Dims]

获取优化配置下特定张量的最小/最佳/最大维度。

参数:
  • name – 张量名称。

  • profile_index – 配置的索引。

get_tensor_profile_values(self: tensorrt.tensorrt.ICudaEngine, name: int, profile_index: str) List[List[int]]

获取优化配置下输入形状绑定的最小/最佳/最大值。如果指定的绑定不是输入形状绑定,则会引发异常。

参数:
  • name – 张量名称。

  • profile_index – 配置的索引。

返回:

长度为 3 的 List[List[int]],按顺序包含最小值、最佳值和最大值。如果尚未设置值,则返回一个空列表。

get_tensor_shape(self: tensorrt.tensorrt.ICudaEngine, name: str) tensorrt.tensorrt.Dims

返回输入或输出张量的形状。

参数:

name – 张量名称。

get_tensor_vectorized_dim(*args, **kwargs)

重载函数。

  1. get_tensor_vectorized_dim(self: tensorrt.tensorrt.ICudaEngine, name: str) -> int

    返回缓冲区向量化的维度索引。

    具体来说,如果每个向量的标量数为 1,则返回 -1。

    arg name:

    张量名称。

  2. get_tensor_vectorized_dim(self: tensorrt.tensorrt.ICudaEngine, name: str, profile_index: int) -> int

    返回缓冲区向量化的维度索引。

    具体来说,如果每个向量的标量数为 1,则返回 -1。

    arg name:

    张量名称。

get_weight_streaming_automatic_budget(self: tensorrt.tensorrt.ICudaEngine) int

根据可用的设备内存获取自动权重流式传输预算。此值可能会在 TensorRT 主要版本和次要版本之间发生变化。请使用 CudaEngine.weight_streaming_budget_v2 设置返回的预算。

is_debug_tensor(self: tensorrt.tensorrt.ICudaEngine, name: str) bool

确定给定的名称是否对应于调试张量。

参数:

name – 张量名称。

is_shape_inference_io(self: tensorrt.tensorrt.ICudaEngine, name: str) bool

确定张量是否被 infer_shapes 读取或写入。

参数:

name – 张量名称。

serialize(self: tensorrt.tensorrt.ICudaEngine) tensorrt.tensorrt.IHostMemory

将引擎序列化为流。

返回:

包含序列化 ICudaEngineIHostMemory 对象。

serialize_with_config(self: tensorrt.tensorrt.ICudaEngine, arg0: tensorrt.tensorrt.ISerializationConfig) tensorrt.tensorrt.IHostMemory

将网络序列化为流。