快捷方式

torch_tensorrt

函数

torch_tensorrt.compile(module: Any, ir: str = 'default', inputs: Optional[Sequence[Input | torch.Tensor |InputTensorSpec]] = None, arg_inputs: Optional[Sequence[Sequence[Any]]] = None, kwarg_inputs: Optional[dict[Any, Any]] = None, enabled_precisions: Optional[Set[Union[dtype, dtype]]] = None, **kwargs: Any) Union[Module, ScriptModule, GraphModule, Callable[[...], Any]][source]

使用 TensorRT 为 NVIDIA GPU 编译 PyTorch 模块

接受一个现有的 PyTorch 模块和一组配置编译器的设置,并使用 ir 中指定的路径将模块降低并编译为 TensorRT,然后返回一个 PyTorch 模块

专门转换 Module 的 forward 方法

参数

module (Union(torch.nn.Module,torch.jit.ScriptModule) – 源模块

关键字参数
  • inputs (List[Union(Input, torch.Tensor)]) –

    必需 模块输入的形状、dtype 和内存布局规范列表。此参数为必需项。输入大小可以指定为 torch 大小、元组或列表。dtype 可以使用 torch 数据类型或 torch_tensorrt 数据类型来指定,并且可以使用 torch 设备或 torch_tensorrt 设备类型枚举来选择设备类型。

    inputs=[
        torch_tensorrt.Input((1, 3, 224, 224)), # Static NCHW input shape for input #1
        torch_tensorrt.Input(
            min_shape=(1, 224, 224, 3),
            opt_shape=(1, 512, 512, 3),
            max_shape=(1, 1024, 1024, 3),
            dtype=torch.int32
            format=torch.channel_last
        ), # Dynamic input shape for input #2
        torch.randn((1, 3, 224, 244)) # Use an example tensor and let torch_tensorrt infer settings
    ]
    

  • arg_inputs (Tuple[Any, ...]) – 与 inputs 相同。为了更好地与 kwarg_inputs 对应,可作为别名。

  • kwarg_inputs (dict[Any, ...]) – 可选,模块 forward 函数的关键字参数输入。

  • enabled_precision (Set(Union(torch.dpython:type, torch_tensorrt.dpython:type))) – TensorRT 在选择 Kernel 时可以使用的基本数据类型集合

  • ir (str) – 请求的编译策略。(选项:default - 由 Torch-TensorRT 决定,ts - 使用脚本化路径的 TorchScript)

  • **kwargs – 特定请求策略的其他设置(更多信息请参见子模块)

返回值

编译后的模块,运行时将通过 TensorRT 执行

返回值类型

torch.nn.Module

torch_tensorrt.convert_method_to_trt_engine(module: Any, method_name: str = 'forward', inputs: Optional[Sequence[Input | torch.Tensor |InputTensorSpec]] = None, arg_inputs: Optional[Sequence[Sequence[Any]]] = None, kwarg_inputs: Optional[dict[Any, Any]] = None, ir: str = 'default', enabled_precisions: Optional[Set[Union[dtype, dtype]]] = None, **kwargs: Any) bytes[source]

将 TorchScript 模块方法转换为序列化的 TensorRT 引擎

给定一个转换设置字典,将模块的指定方法转换为序列化的 TensorRT 引擎

参数

module (Union(torch.nn.Module,torch.jit.ScriptModule) – 源模块

关键字参数
  • inputs (List[Union(Input, torch.Tensor)]) –

    必需 模块输入的形状、dtype 和内存布局规范列表。此参数为必需项。输入大小可以指定为 torch 大小、元组或列表。dtype 可以使用 torch 数据类型或 torch_tensorrt 数据类型来指定,并且可以使用 torch 设备或 torch_tensorrt 设备类型枚举来选择设备类型。

    input=[
        torch_tensorrt.Input((1, 3, 224, 224)), # Static NCHW input shape for input #1
        torch_tensorrt.Input(
            min_shape=(1, 224, 224, 3),
            opt_shape=(1, 512, 512, 3),
            max_shape=(1, 1024, 1024, 3),
            dtype=torch.int32
            format=torch.channel_last
        ), # Dynamic input shape for input #2
        torch.randn((1, 3, 224, 244)) # Use an example tensor and let torch_tensorrt infer settings
    ]
    

  • arg_inputs (Tuple[Any, ...]) – 与 inputs 相同。为了更好地与 kwarg_inputs 对应,可作为别名。

  • kwarg_inputs (dict[Any, ...]) – 可选,模块 forward 函数的关键字参数输入。

  • enabled_precision (Set(Union(torch.dpython:type, torch_tensorrt.dpython:type))) – TensorRT 在选择 Kernel 时可以使用的基本数据类型集合

  • ir (str) – 请求的编译策略。(选项:default - 由 Torch-TensorRT 决定,ts - 使用脚本化路径的 TorchScript)

  • **kwargs – 特定请求策略的其他设置(更多信息请参见子模块)

返回值

序列化的 TensorRT 引擎,可以保存到文件或通过 TensorRT API 反序列化

返回值类型

bytes

torch_tensorrt.cross_compile_for_windows(module: Module, file_path: str, inputs: Optional[Sequence[Input | torch.Tensor]] = None, arg_inputs: Optional[Sequence[Sequence[Any]]] = None, kwarg_inputs: Optional[dict[Any, Any]] = None, enabled_precisions: Optional[Set[Union[dtype, dtype]]] = None, **kwargs: Any) None[source]

在 Linux 中使用 TensorRT 编译 PyTorch 模块,用于 Windows 中的推理

接受一个现有的 PyTorch 模块和一组配置编译器的设置,并将方法转换为 AOT 图,这些图会将等效的 TensorRT 序列化引擎信息写入用户提供的指定 file_path 中。然后用户可以在 Windows 中从磁盘加载反序列化的模型。注意:在 Linux 环境中为 Windows 交叉编译的模型只能在 Windows 中加载。

参数

module (torch.nn.Module): 源模块 file_path (str): 用于将序列化模块存储到磁盘的文件路径

关键字参数
  • inputs (List[Union(Input, torch.Tensor)]) –

    必需 模块输入的形状、dtype 和内存布局规范列表。此参数为必需项。输入大小可以指定为 torch 大小、元组或列表。dtype 可以使用 torch 数据类型或 torch_tensorrt 数据类型来指定,并且可以使用 torch 设备或 torch_tensorrt 设备类型枚举来选择设备类型。

    inputs=[
        torch_tensorrt.Input((1, 3, 224, 224)), # Static NCHW input shape for input #1
        torch_tensorrt.Input(
            min_shape=(1, 224, 224, 3),
            opt_shape=(1, 512, 512, 3),
            max_shape=(1, 1024, 1024, 3),
            dtype=torch.int32
            format=torch.channel_last
        ), # Dynamic input shape for input #2
        torch.randn((1, 3, 224, 244)) # Use an example tensor and let torch_tensorrt infer settings
    ]
    

  • arg_inputs (Tuple[Any, ...]) – 与 inputs 相同。为了更好地与 kwarg_inputs 对应,可作为别名。

  • kwarg_inputs (dict[Any, ...]) – 可选,模块 forward 函数的关键字参数输入。

  • enabled_precision (Set(Union(torch.dpython:type, torch_tensorrt.dpython:type))) – TensorRT 在选择 Kernel 时可以使用的基本数据类型集合

  • **kwargs – 特定请求策略的其他设置(更多信息请参见子模块)

torch_tensorrt.load_cross_compiled_exported_program(file_path: str = '') Any[source]

在 Windows 中加载之前在 Linux 中交叉编译的 ExportedProgram 文件

参数

file_path (str) – 磁盘上的文件路径

抛出

ValueError – 如果在 Windows 中调用此 API,或文件不存在,或文件不是有效的 ExportedProgram 文件

torch_tensorrt.save(module: Any, file_path: str = '', *, output_format: str = 'exported_program', inputs: Optional[Sequence[Tensor]] = None, arg_inputs: Optional[Sequence[Tensor]] = None, kwarg_inputs: Optional[dict[str, Any]] = None, retrace: bool = False) None[source]

以指定的输出格式将模型保存到磁盘。

参数
  • module (Optional(torch.jit.ScriptModule | torch.export.ExportedProgram | torch.fx.GraphModule | CudaGraphsTorchTensorRTModule)) – 已编译的 Torch-TensorRT 模块

  • inputs (torch.Tensor) – Torch 输入张量

  • arg_inputs (Tuple[Any, ...]) – 与 inputs 相同。为了更好地与 kwarg_inputs 对应,可作为别名。

  • kwarg_inputs (dict[Any, ...]) – 可选,模块 forward 函数的关键字参数输入。

  • output_format (str) – 保存模型的格式。选项包括 exported_program | torchscript。

  • retrace (bool) – 当模块类型为 fx.GraphModule 时,此选项使用 torch.export.export(strict=False) 重新导出图并保存。此标志目前处于实验阶段。

torch_tensorrt.load(file_path: str = '') Any[source]

加载 Torchscript 模型或 ExportedProgram。

从磁盘加载 TorchScript 或 ExportedProgram 文件。将使用 try, except 检测文件类型。

参数

file_path (str) – 磁盘上的文件路径

抛出

ValueError – 如果文件不存在,或者文件既不是 TorchScript 文件也不是 ExportedProgram 文件

class torch_tensorrt.MutableTorchTensorRTModule(pytorch_model: Module, *, device: Optional[Union[Device, device, str]] = None, disable_tf32: bool = False, assume_dynamic_shape_support: bool = False, sparse_weights: bool = False, enabled_precisions: Set[Union[dtype, dtype]] = {dtype.f32}, engine_capability: EngineCapability = EngineCapability.STANDARD, immutable_weights: bool = False, debug: bool = False, num_avg_timing_iters: int = 1, workspace_size: int = 0, dla_sram_size: int = 1048576, dla_local_dram_size: int = 1073741824, dla_global_dram_size: int = 536870912, truncate_double: bool = False, require_full_compilation: bool = False, min_block_size: int = 5, torch_executed_ops: Optional[Collection[Union[Callable[[...], Any], str]]] = None, torch_executed_modules: Optional[List[str]] = None, pass_through_build_failures: bool = False, max_aux_streams: Optional[int] = None, version_compatible: bool = False, optimization_level: Optional[int] = None, use_python_runtime: bool = False, use_fast_partitioner: bool = True, enable_experimental_decompositions: bool = False, dryrun: bool = False, hardware_compatible: bool = False, timing_cache_path: str = '/tmp/torch_tensorrt_engine_cache/timing_cache.bin', **kwargs: Any)[source]

初始化一个 MutableTorchTensorRTModule,以便像操作普通 PyTorch 模块一样无缝地对其进行操作。在使用该模块时,所有的 TensorRT 编译和重拟合过程都会自动处理。对其属性的任何更改或加载不同的 state_dict 将触发重拟合或重新编译,这些操作将在下一次前向传播期间进行管理。

MutableTorchTensorRTModule 接受一个 PyTorch 模块以及一组用于编译器的配置设置。编译完成后,该模块会保持 TensorRT 图模块与原始 PyTorch 模块之间的连接。对 MutableTorchTensorRTModule 所做的任何修改都将反映在 TensorRT 图模块和原始 PyTorch 模块中。

__init__(pytorch_model: Module, *, device: Optional[Union[Device, device, str]] = None, disable_tf32: bool = False, assume_dynamic_shape_support: bool = False, sparse_weights: bool = False, enabled_precisions: Set[Union[dtype, dtype]] = {dtype.f32}, engine_capability: EngineCapability = EngineCapability.STANDARD, immutable_weights: bool = False, debug: bool = False, num_avg_timing_iters: int = 1, workspace_size: int = 0, dla_sram_size: int = 1048576, dla_local_dram_size: int = 1073741824, dla_global_dram_size: int = 536870912, truncate_double: bool = False, require_full_compilation: bool = False, min_block_size: int = 5, torch_executed_ops: Optional[Collection[Union[Callable[[...], Any], str]]] = None, torch_executed_modules: Optional[List[str]] = None, pass_through_build_failures: bool = False, max_aux_streams: Optional[int] = None, version_compatible: bool = False, optimization_level: Optional[int] = None, use_python_runtime: bool = False, use_fast_partitioner: bool = True, enable_experimental_decompositions: bool = False, dryrun: bool = False, hardware_compatible: bool = False, timing_cache_path: str = '/tmp/torch_tensorrt_engine_cache/timing_cache.bin', **kwargs: Any) None[source]
参数

pytorch_model (torch.nn.module) – 需要加速的源模块

关键字参数
  • device (Union(Device, torch.device, dict)) –

    TensorRT 引擎运行的目标设备

    device=torch_tensorrt.Device("dla:1", allow_gpu_fallback=True)
    

  • disable_tf32 (bool) – 强制 FP32 层使用传统的 FP32 格式,而非默认行为(即在乘法前将输入四舍五入到 10 位尾数,但使用 23 位尾数累加求和)

  • assume_dynamic_shape_support (bool) – 将此设置为 true 可使转换器同时支持动态和静态形状。默认值:False

  • sparse_weights (bool) – 为卷积层和全连接层启用稀疏性。

  • enabled_precision (Set(Union(torch.dpython:type, torch_tensorrt.dpython:type))) – TensorRT 在选择 Kernel 时可以使用的基本数据类型集合

  • immutable_weights (bool) – 构建不可重拟合的引擎。这对于某些不可重拟合的层很有用。

  • debug (bool) – 启用可调试的引擎

  • capability (EngineCapability) – 将内核选择限制为安全的 GPU 内核或安全的 DLA 内核

  • num_avg_timing_iters (python:int) – 用于选择内核的平均计时迭代次数

  • workspace_size (python:int) – 提供给 TensorRT 的最大工作空间大小

  • dla_sram_size (python:int) – DLA 用于层内通信的快速软件管理 RAM。

  • dla_local_dram_size (python:int) – DLA 用于跨操作共享中间张量数据的主机 RAM

  • dla_global_dram_size (python:int) – DLA 用于存储权重和执行元数据的主机 RAM

  • truncate_double (bool) – 将双精度 (float64) 提供的权重截断为 float32

  • calibrator (Union(torch_tensorrt._C.IInt8Calibrator, tensorrt.IInt8Calibrator)) – 校准器对象,将为 INT8 校准的 PTQ 系统提供数据

  • require_full_compilation (bool) – 要求模块从头到尾完整编译,否则返回错误,而非返回一个混合图(其中无法在 TensorRT 中运行的操作在 PyTorch 中运行)

  • min_block_size (python:int) – 在 TensorRT 中运行一组操作所需的连续 TensorRT 可转换操作的最小数量

  • torch_executed_ops (Collection[Target]) – 必须在 PyTorch 中运行的 aten 算子集合。如果此集合非空但 require_full_compilation 为 True,则会抛出错误。

  • torch_executed_modules (List[str]) – 必须在 PyTorch 中运行的模块列表。如果此列表非空但 require_full_compilation 为 True,则会抛出错误。

  • pass_through_build_failures (bool) – 如果编译期间出现问题则报错(仅适用于 torch.compile 工作流)

  • max_aux_stream (Optional[python:int]) – 引擎中的最大流数量

  • version_compatible (bool) – 构建与未来 TensorRT 版本兼容的引擎(限制使用精简运行时算子以提供引擎的版本前向兼容性)

  • optimization_level – (Optional[int]): 设置更高的优化级别允许 TensorRT 花费更长的引擎构建时间来寻找更多的优化选项。生成的引擎可能比使用较低优化级别构建的引擎性能更好。默认优化级别为 3。有效值包括从 0 到最大优化级别(当前为 5)的整数。设置为大于最大级别的值与最大级别行为相同。

  • use_python_runtime – (bool): 使用纯 Python 运行时返回图,减少序列化选项

  • use_fast_partitioner – (bool): 使用基于邻接的划分方案而非全局划分器。邻接划分速度更快,但可能不是最优的。如果追求最佳性能,请使用全局划分器 (False)。

  • enable_experimental_decompositions (bool) – 使用完整的算子分解集合。这些分解可能未经充分测试,但有助于使图更容易转换为 TensorRT,从而可能增加在 TensorRT 中运行的图的数量。

  • dryrun (bool) – “试运行”模式开关,除了转换为 TRT 和记录输出外,运行所有内容

  • hardware_compatible (bool) – 构建与引擎构建所在的 GPU 架构之外的其他 GPU 架构兼容的 TensorRT 引擎(目前适用于 NVIDIA Ampere 及更新架构)

  • timing_cache_path (str) – 时间缓存的路径(如果存在),或者编译后保存的路径

  • lazy_engine_init (bool) – 推迟引擎设置直到所有引擎编译完成。可以允许编译具有多个图中断点的更大模型,但在运行时可能导致 GPU 内存超额订阅。

  • **kwargs – 任意类型,

返回值

MutableTorchTensorRTModule

compile() None[source]

(重新)编译 TRT 图模块,使用 PyTorch 模块。当权重结构发生变化(形状、更多层等)时应调用此函数。MutableTorchTensorRTModule 会自动捕获权重值更新并调用此函数进行重新编译。如果它未能捕获更改,请手动调用此函数重新编译 TRT 图模块。

refit_gm() None[source]

使用任何更新重拟合 TRT 图模块。当权重值发生变化但权重结构保持不变时应调用此函数。MutableTorchTensorRTModule 会自动捕获权重值更新并调用此函数重拟合模块。如果它未能捕获更改,请手动调用此函数更新 TRT 图模块。

set_expected_dynamic_shape_range(args_dynamic_shape: tuple[dict[Any, Any]], kwargs_dynamic_shape: dict[str, Any]) None[source]

设置动态形状范围。形状提示应严格遵循传递给前向函数的 arg_inputs 和 kwarg_inputs,不应省略任何条目(kwarg_inputs 中的 None 除外)。如果输入中有嵌套的字典/列表,则该条目的动态形状也应是嵌套的字典/列表。如果输入不需要动态形状,则应为该输入提供一个空字典作为形状提示。请注意,您应排除值为 None 的关键字参数,因为它们将被过滤掉。

示例: def forward(a, b, c=0, d=0)

pass

seq_len = torch.export.Dim(“seq_len”, min=1, max=10) args_dynamic_shape = ({0: seq_len}, {}) # b 没有动态形状 kwargs_dynamic_shape = {‘c’: {0: seq_len}, ‘d’: {}} # d 没有动态形状 set_expected_dynamic_shape_range(args_dynamic_shape, kwargs_dynamic_shape) # 稍后调用函数 forward(*(a, b), **{c:…, d:…}) 时

参考: https://pytorch.ac.cn/docs/stable/export.html#expressing-dynamism :param args_dynamic_shape: args_inputs 的动态形状提示, :type args_dynamic_shape: tuple[dict[Any, Any]] :param kwargs_dynamic_shape: (dict[str, Any]): kwarg_inputs 的动态形状提示

class torch_tensorrt.Input(*args: Any, **kwargs: Any)[source]

根据预期的形状、数据类型和张量格式定义模块的输入。

变量
  • shape_mode (torch_tensorrt.Input._ShapeMode) – 输入是静态形状还是动态形状

  • shape (Tuple or Dict) –

    定义输入形状的单个 Tuple 或 Dict。静态形状的输入将有一个 Tuple。动态输入将有一个如下形式的 Dict:

    {"min_shape": Tuple, "opt_shape": Tuple, "max_shape": Tuple}
    

  • dtype (torch_tensorrt.dpython:type) – 输入张量的预期数据类型(默认值:torch_tensorrt.dtype.float32)

  • format (torch_tensorrt.TensorFormat) – 输入张量的预期格式(默认值:torch_tensorrt.TensorFormat.NCHW)

__init__(*args: Any, **kwargs: Any) None[source]

torch_tensorrt.Input 的 __init__ 方法

Input 接受以下几种构造模式之一

参数

shape (Tuple or List, optional) – 输入张量的静态形状

关键字参数
  • shape (Tuple or List, optional) – 输入张量的静态形状

  • min_shape (Tuple or List, optional) – 输入张量形状范围的最小值 注:必须同时提供 min_shape, opt_shape, max_shape,不能有位置参数,不能定义 shape,这意味着 Input 的 shape_mode 被设置为 DYNAMIC

  • opt_shape (Tuple or List, optional) – 输入张量形状范围的最佳尺寸。注意:min_shape、opt_shape、max_shape 三者都必须提供,不能有位置参数,不能定义 shape,并且这隐式地将 Input 的 shape_mode 设置为 DYNAMIC

  • max_shape (Tuple or List, optional) – 输入张量形状范围的最大尺寸。注意:min_shape、opt_shape、max_shape 三者都必须提供,不能有位置参数,不能定义 shape,并且这隐式地将 Input 的 shape_mode 设置为 DYNAMIC

  • dtype (torch.dpython:type or torch_tensorrt.dpython:type) – 输入张量预期的数据类型(默认值:torch_tensorrt.dtype.float32)

  • format (torch.memory_format or torch_tensorrt.TensorFormat) – 输入张量的预期格式(默认值:torch_tensorrt.TensorFormat.NCHW)

  • tensor_domain (Tuple(python:float, python:float), optional) – 张量允许的值的范围,以区间表示法表示:[tensor_domain[0], tensor_domain[1])。注意:输入“None”(或不指定)将把范围设置为 [0, 2)

  • torch_tensor (torch.Tensor) – 持有与此 Input 对应的 torch 张量。

  • name (str, optional) – 此输入在输入 nn.Module 的 forward 函数中的名称。用于在 dynamo tracer 中为相应输入指定动态形状。

示例

  • Input([1,3,32,32], dtype=torch.float32, format=torch.channel_last)

  • Input(shape=(1,3,32,32), dtype=torch_tensorrt.dtype.int32, format=torch_tensorrt.TensorFormat.NCHW)

  • Input(min_shape=(1,3,32,32), opt_shape=[2,3,32,32], max_shape=(3,3,32,32)) #隐式地 dtype=torch_tensorrt.dtype.float32, format=torch_tensorrt.TensorFormat.NCHW

example_tensor(optimization_profile_field: Optional[str] = None) Tensor[source]

获取 Input 对象指定的形状的示例张量

参数

optimization_profile_field (Optional(str)) – 如果 Input 是动态形状的,用于指定形状的字段名称

返回值

一个 PyTorch 张量

classmethod from_tensor(t: Tensor, disable_memory_format_check: bool = False) Input[source]

生成一个 Input,其中包含给定 PyTorch 张量的信息。

参数
  • tensor (torch.Tensor) – 一个 PyTorch 张量。

  • disable_memory_format_check (bool) – 是否验证输入张量的内存格式

返回值

一个 Input 对象。

classmethod from_tensors(ts: Sequence[Tensor], disable_memory_format_check: bool = False) List[Input][source]

生成一个 Input 列表,其中包含所有给定 PyTorch 张量的信息。

参数
  • tensors (Iterable[torch.Tensor]) – 一个 PyTorch 张量列表。

  • disable_memory_format_check (bool) – 是否验证输入张量的内存格式

返回值

一个 Input 列表。

dtype: dtype = 1

torch_tensorrt.dtype.float32)

类型

输入张量的预期数据类型(默认值

format: memory_format = 1

torch_tensorrt.memory_format.linear)

类型

输入张量的预期格式(默认值

class torch_tensorrt.Device(*args: Any, **kwargs: Any)[source]

定义可用于指定引擎目标设备的设备

变量
  • device_type (DeviceType) – 目标设备类型(GPU 或 DLA)。基于是否指定了 dla_core 隐式设置。

  • gpu_id (python:int) – 目标 GPU 的设备 ID

  • dla_core (python:int) – 目标 DLA 内核的内核 ID

  • allow_gpu_fallback (bool) – 如果 DLA 不支持某个操作,是否允许回退到 GPU

__init__(*args: Any, **kwargs: Any)[source]

torch_tensorrt.Device 的 __init__ 方法

Device 接受以下几种构造模式之一

参数

spec (str) – 带有设备规格的字符串,例如“dla:0”表示 DLA,内核 ID 0

关键字参数
  • gpu_id (python:int) – 目标 GPU 的 ID(如果指定了 dla_core,将由管理 DLA 的 GPU 覆盖)。如果指定,不应提供位置参数

  • dla_core (python:int) – 目标 DLA 内核的 ID。如果指定,不应提供位置参数。

  • allow_gpu_fallback (bool) – 如果操作在 DLA 上不受支持,则允许 TensorRT 将其调度到 GPU 上(如果设备类型不是 DLA,则忽略)

示例

  • Device(“gpu:1”)

  • Device(“cuda:1”)

  • Device(“dla:0”, allow_gpu_fallback=True)

  • Device(gpu_id=0, dla_core=0, allow_gpu_fallback=True)

  • Device(dla_core=0, allow_gpu_fallback=True)

  • Device(gpu_id=1)

device_type: DeviceType = 1

目标设备类型(GPU 或 DLA)。基于是否指定了 dla_core 隐式设置。

dla_core: int = -1

目标 DLA 内核的内核 ID

gpu_id: int = -1

目标 GPU 的设备 ID

枚举

class torch_tensorrt.dtype(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

描述 Torch-TensorRT 数据类型的枚举,与 torch、tensorrt 和 numpy 的 dtypes 兼容

to(t: Union[Type[dtype], Type[DataType], Type[dtype], Type[dtype]], use_default: bool = False) Union[dtype, DataType, dtype, dtype][source]

将 dtype 转换为 [torch, numpy, tensorrt] 中的等效类型

self 转换为 numpy、torch 和 tensorrt 中的等效 dtypes。如果 self 在目标库中不受支持,则将引发异常。因此,不建议直接使用此方法。

或者使用 torch_tensorrt.dtype.try_to()

参数
  • t (Union(Type(torch.dpython:type), Type(tensorrt.DataType), Type(numpy.dpython:type), Type(dpython:type))) – 要转换到的另一个库的数据类型枚举

  • use_default (bool) – 在某些情况下,一个通用的类型(例如 torch.float)就足够了,因此 instead of throwing an exception, return default value。

返回值

库枚举 t 中等效的 torch_tensorrt.dtype dtype

返回值类型

Union(torch.dtype, tensorrt.DataType, numpy.dtype, dtype)

抛出

TypeError – 不支持的数据类型或未知目标

示例

# Succeeds
float_dtype = torch_tensorrt.dtype.f32.to(torch.dtype) # Returns torch.float

# Failure
float_dtype = torch_tensorrt.dtype.bf16.to(numpy.dtype) # Throws exception
classmethod try_from(t: Union[dtype, DataType, dtype, dtype], use_default: bool = False) Optional[dtype][source]

从另一个库的 dtype 系统创建 Torch-TensorRT dtype。

接受来自 numpy、torch 和 tensorrt 之一的 dtype 枚举,并创建一个 torch_tensorrt.dtype。如果源 dtype 系统不受支持或该类型在 Torch-TensorRT 中不受支持,则返回 None

参数
  • t (Union(torch.dpython:type, tensorrt.DataType, numpy.dpython:type, dpython:type)) – 来自另一个库的数据类型枚举

  • use_default (bool) – 在某些情况下,一个通用的类型(例如 torch_tensorrt.dtype.f32)就足够了,因此 вместо выбрасывания исключения,возвращается значение по умолчанию。

返回值

t 等效的 torch_tensorrt.dtypeNone

返回值类型

Optional(dtype)

示例

# Succeeds
float_dtype = torch_tensorrt.dtype.try_from(torch.float) # Returns torch_tensorrt.dtype.f32

# Unsupported type
float_dtype = torch_tensorrt.dtype.try_from(torch.complex128) # Returns None
try_to(t: Union[Type[dtype], Type[DataType], Type[dtype], Type[dtype]], use_default: bool) Optional[Union[dtype, DataType, dtype, dtype]][source]

将 dtype 转换为 [torch, numpy, tensorrt] 中的等效类型

self 转换为 numpy、torch 和 tensorrt 中的等效 dtypes。如果 self 在目标库中不受支持,则返回 None

参数
  • t (Union(Type(torch.dpython:type), Type(tensorrt.DataType), Type(numpy.dpython:type), Type(dpython:type))) – 要转换到的另一个库的数据类型枚举

  • use_default (bool) – 在某些情况下,一个通用的类型(例如 torch.float)就足够了,因此 instead of throwing an exception, return default value。

返回值

库枚举 t 中等效的 torch_tensorrt.dtype dtype

返回值类型

Optional(Union(torch.dtype, tensorrt.DataType, numpy.dtype, dtype))

示例

# Succeeds
float_dtype = torch_tensorrt.dtype.f32.to(torch.dtype) # Returns torch.float

# Failure
float_dtype = torch_tensorrt.dtype.bf16.to(numpy.dtype) # Returns None
b

布尔值,等同于 dtype.bool

bf16

16 位“Brain”浮点数,等同于 dtype.bfloat16

f16

16 位浮点数,等同于 dtype.halfdtype.fp16dtype.float16

f32

32 位浮点数,等同于 dtype.floatdtype.fp32dtype.float32

f64

64 位浮点数,等同于 dtype.doubledtype.fp64dtype.float64

f8

8 位浮点数,等同于 dtype.fp8dtype.float8

i32

有符号 32 位整数,等同于 dtype.int32dtype.int

i64

有符号 64 位整数,等同于 dtype.int64dtype.long

i8

有符号 8 位整数,等同于 dtype.int8,当启用为内核精度时通常需要模型支持量化

u8

无符号 8 位整数,等同于 dtype.uint8

unknown

标记值

class torch_tensorrt.DeviceType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

TensorRT 将面向的设备类型

to(t: Union[Type[DeviceType], Type[DeviceType]], use_default: bool = False) Union[DeviceType, DeviceType][source]

DeviceType 转换为 tensorrt 中的等效类型

self 转换为 torch 或 tensorrt 中的等效设备类型。如果 self 在目标库中不受支持,则将引发异常。因此,不建议直接使用此方法。

或者使用 torch_tensorrt.DeviceType.try_to()

参数

t (Union(Type(tensorrt.DeviceType), Type(DeviceType))) – 要转换到的另一个库的设备类型枚举

返回值

枚举 t 中等效于 torch_tensorrt.DeviceType 的设备类型

返回值类型

Union(tensorrt.DeviceType, DeviceType)

抛出

TypeError – 未知目标类型或不支持的设备类型

示例

# Succeeds
trt_dla = torch_tensorrt.DeviceType.DLA.to(tensorrt.DeviceType) # Returns tensorrt.DeviceType.DLA
classmethod try_from(d: Union[DeviceType, DeviceType]) Optional[DeviceType][source]

从 TensorRT 设备类型枚举创建 Torch-TensorRT 设备类型枚举。

接受来自 tensorrt 的设备类型枚举,并创建一个 torch_tensorrt.DeviceType。如果源不受支持或该设备类型在 Torch-TensorRT 中不受支持,则将引发异常。因此,不建议直接使用此方法。

或者使用 torch_tensorrt.DeviceType.try_from()

参数

d (Union(tensorrt.DeviceType, DeviceType)) – 来自另一个库的设备类型枚举

返回值

d 等效的 torch_tensorrt.DeviceType

返回值类型

DeviceType

示例

torchtrt_dla = torch_tensorrt.DeviceType._from(tensorrt.DeviceType.DLA)
try_to(t: Union[Type[DeviceType], Type[DeviceType]], use_default: bool = False) Optional[Union[DeviceType, DeviceType]][source]

DeviceType 转换为 tensorrt 中的等效类型

self 转换为 torch 或 tensorrt 中的等效内存格式。如果 self 在目标库中不受支持,则返回 None

参数

t (Union(Type(tensorrt.DeviceType), Type(DeviceType))) – 要转换到的另一个库的设备类型枚举

返回值

枚举 t 中等效于 torch_tensorrt.DeviceType 的设备类型

返回值类型

Optional(Union(tensorrt.DeviceType, DeviceType))

示例

# Succeeds
trt_dla = torch_tensorrt.DeviceType.DLA.to(tensorrt.DeviceType) # Returns tensorrt.DeviceType.DLA
DLA

目标是 DLA 内核

GPU

目标是 GPU

UNKNOWN

标记值

class torch_tensorrt.EngineCapability(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]

EngineCapability 决定了构建时网络的限制以及它面向的运行时。

to(t: Union[Type[EngineCapability], Type[EngineCapability]]) Union[EngineCapability, EngineCapability][source]

EngineCapability 转换为 tensorrt 中的等效类型

self 转换为 torch 或 tensorrt 中的等效引擎能力。如果 self 在目标库中不受支持,则将引发异常。因此,不建议直接使用此方法。

或者使用 torch_tensorrt.EngineCapability.try_to()

参数

t (Union(Type(tensorrt.EngineCapability), Type(EngineCapability))) – 要转换到的另一个库的引擎能力枚举

返回值

枚举 t 中等效于 torch_tensorrt.EngineCapability 的引擎能力

返回值类型

Union(tensorrt.EngineCapability, EngineCapability)

抛出

TypeError – 未知目标类型或不支持的引擎能力

示例

# Succeeds
torchtrt_dla_ec = torch_tensorrt.EngineCapability.DLA_STANDALONE.to(tensorrt.EngineCapability) # Returns tensorrt.EngineCapability.DLA
classmethod try_from() Optional[EngineCapability][source]

从 TensorRT 引擎能力枚举创建 Torch-TensorRT 引擎能力枚举。

获取 TensorRT 的设备类型枚举,并创建一个 torch_tensorrt.EngineCapability。如果源不支持,或者 Torch-TensorRT 不支持该引擎能力级别,则会引发异常。因此,不建议直接使用此方法。

或者使用 torch_tensorrt.EngineCapability.try_from()

参数

c (Union(tensorrt.EngineCapability, EngineCapability)) – 来自其他库的引擎能力枚举

返回值

c 等效的 torch_tensorrt.EngineCapability

返回值类型

EngineCapability

示例

torchtrt_safety_ec = torch_tensorrt.EngineCapability._from(tensorrt.EngineCapability.SAEFTY)
try_to(t: Union[Type[EngineCapability], Type[EngineCapability]]) Optional[Union[EngineCapability, EngineCapability]][source]

EngineCapability 转换为 tensorrt 中的等效类型

self 转换为等效的 torch 或 tensorrt 引擎能力之一。如果目标库不支持 self,则返回 None

参数

t (Union(Type(tensorrt.EngineCapability), Type(EngineCapability))) – 要转换到的另一个库的引擎能力枚举

返回值

枚举 t 中等效于 torch_tensorrt.EngineCapability 的引擎能力

返回值类型

Optional(Union(tensorrt.EngineCapability, EngineCapability))

示例

# Succeeds
trt_dla_ec = torch_tensorrt.EngineCapability.DLA.to(tensorrt.EngineCapability) # Returns tensorrt.EngineCapability.DLA_STANDALONE
DLA_STANDALONE

EngineCapability.DLA_STANDALONE 提供 DLA 兼容的网络操作受限子集,生成的序列化引擎可以使用独立 DLA 运行时 API 执行。

SAFETY

EngineCapability.SAFETY 提供安全认证的网络操作受限子集,生成的序列化引擎可以使用 TensorRT 的 tensorrt.safe 命名空间中的安全运行时 API 执行。

STANDARD

EngineCapability.STANDARD 对功能没有任何限制,生成的序列化引擎可以使用 TensorRT 的标准运行时 API 执行。

class torch_tensorrt.memory_format(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]
to(t: Union[Type[memory_format], Type[TensorFormat], Type[memory_format]]) Union[memory_format, TensorFormat, memory_format][source]

memory_format 转换为 torch 或 tensorrt 中等效的类型

self 转换为等效的 torch 或 tensorrt 内存格式之一。如果目标库不支持 self,则会引发异常。因此,不建议直接使用此方法。

或者使用 torch_tensorrt.memory_format.try_to()

参数

t (Union(Type(torch.memory_format), Type(tensorrt.TensorFormat), Type(memory_format))) – 要转换到的来自另一个库的内存格式类型枚举

返回值

枚举 t 中等效的 torch_tensorrt.memory_format 内存格式

返回值类型

Union(torch.memory_format, tensorrt.TensorFormat, memory_format)

抛出

TypeError – 未知目标类型或不支持的内存格式

示例

# Succeeds
tf = torch_tensorrt.memory_format.linear.to(torch.dtype) # Returns torch.contiguous
classmethod try_from(f: Union[memory_format, TensorFormat, memory_format]) Optional[memory_format][source]

从另一个库的内存格式枚举创建 Torch-TensorRT 内存格式枚举。

获取来自 torch 和 tensorrt 之一的内存格式枚举,并创建一个 torch_tensorrt.memory_format。如果源不支持,或者 Torch-TensorRT 不支持该内存格式,则返回 None

参数

f (Union(torch.memory_format, tensorrt.TensorFormat, memory_format)) – 来自另一个库的内存格式枚举

返回值

f 等效的 torch_tensorrt.memory_format

返回值类型

Optional(memory_format)

示例

torchtrt_linear = torch_tensorrt.memory_format.try_from(torch.contiguous)
try_to(t: Union[Type[memory_format], Type[TensorFormat], Type[memory_format]]) Optional[Union[memory_format, TensorFormat, memory_format]][source]

memory_format 转换为 torch 或 tensorrt 中等效的类型

self 转换为等效的 torch 或 tensorrt 内存格式之一。如果目标库不支持 self,则返回 None

参数

t (Union(Type(torch.memory_format), Type(tensorrt.TensorFormat), Type(memory_format))) – 要转换到的来自另一个库的内存格式类型枚举

返回值

枚举 t 中等效的 torch_tensorrt.memory_format 内存格式

返回值类型

Optional(Union(torch.memory_format, tensorrt.TensorFormat, memory_format))

示例

# Succeeds
tf = torch_tensorrt.memory_format.linear.to(torch.dtype) # Returns torch.contiguous
cdhw32

具有 3 个空间维度的 32 通道向量化行主格式。

此格式绑定到 FP16 和 INT8。仅适用于维度 >= 4 的张量。

对于维度为 {N, C, D, H, W} 的张量,内存布局等同于维度为 [N][(C+31)/32][D][H][W][32] 的 C 数组,其中张量坐标 (n, d, c, h, w) 映射到数组下标 [n][c/32][d][h][w][c%32]。

chw16

16 通道向量化行主格式。

此格式绑定到 FP16。仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][(C+15)/16][H][W][16] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/16][h][w][c%16]。

chw2

2 通道向量化行主格式。

在 TensorRT 中,此格式绑定到 FP16。仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][(C+1)/2][H][W][2] 的 C 数组,其中张量坐标 (n, h, c, w) 映射到数组下标 [n][c/2][h][w][c%2]。

chw32

32 通道向量化行主格式。

此格式仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][(C+31)/32][H][W][32] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/32][h][w][c%32]。

chw4

4 通道向量化行主格式。此格式绑定到 INT8。仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][(C+3)/4][H][W][4] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/4][h][w][c%4]。

dhwc

非向量化通道最后格式。此格式绑定到 FP32。仅适用于维度 >= 4 的张量。

等效于 memory_format.channels_last_3d

dhwc8

8 通道格式,其中 C 填充到 8 的倍数。

此格式绑定到 FP16,仅适用于维度 >= 4 的张量。

对于维度为 {N, C, D, H, W} 的张量,内存布局等同于维度为 [N][D][H][W][(C+7)/8*8] 的数组,其中张量坐标 (n, c, d, h, w) 映射到数组下标 [n][d][h][w][c]。

dla_hwc4

DLA 图像格式。通道最后格式。C 只能是 1、3、4。如果 C == 3,则会四舍五入到 4。沿 H 轴步进的步长向上取整到 32 字节。

此格式绑定到 FP16/Int8,仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,其中当 C 分别为 1、3、4 时,C’ 为 1、4、4,内存布局等同于维度为 [N][H][roundUp(W, 32/C’/elementSize)][C’] 的 C 数组,其中 elementSize 对于 FP16 为 2,对于 Int8 为 1,C’ 是取整后的 C。张量坐标 (n, c, h, w) 映射到数组下标 [n][h][w][c]。

dla_linear

DLA 平面格式。行主格式。沿 H 轴步进的步长向上取整到 64 字节。

此格式绑定到 FP16/Int8,仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][C][H][roundUp(W, 64/elementSize)] 的 C 数组,其中 elementSize 对于 FP16 为 2,对于 Int8 为 1,张量坐标 (n, c, h, w) 映射到数组下标 [n][c][h][w]。

hwc

非向量化通道最后格式。此格式绑定到 FP32,仅适用于维度 >= 3 的张量。

等效于 memory_format.channels_last

hwc16

16 通道格式,其中 C 填充到 16 的倍数。此格式绑定到 FP16。仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][H][W][(C+15)/16*16] 的数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][h][w][c]。

hwc8

8 通道格式,其中 C 填充到 8 的倍数。

此格式绑定到 FP16。仅适用于维度 >= 3 的张量。

对于维度为 {N, C, H, W} 的张量,内存布局等同于维度为 [N][H][W][(C+7)/8*8] 的数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][h][w][c]。

linear

行主线性格式。

对于维度为 {N, C, H, W} 的张量,W 轴始终具有单位步长,而其他每个轴的步长至少是下一个维度乘以下一个步长的乘积。步长与维度为 [N][C][H][W] 的 C 数组相同。

等效于 memory_format.contiguous

子模块

文档

访问 PyTorch 的综合开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获取问题解答

查看资源