快捷方式

torch.backends

torch.backends 控制 PyTorch 支持的各种后端的行为。

这些后端包括

  • torch.backends.cpu

  • torch.backends.cuda

  • torch.backends.cudnn

  • torch.backends.mha

  • torch.backends.mps

  • torch.backends.mkl

  • torch.backends.mkldnn

  • torch.backends.nnpack

  • torch.backends.openmp

  • torch.backends.opt_einsum

  • torch.backends.xeon

torch.backends.cpu

torch.backends.cpu.get_cpu_capability()[source]

以字符串值的形式返回 CPU 功能。

可能的值: - “DEFAULT” - “VSX” - “Z VECTOR” - “NO AVX” - “AVX2” - “AVX512”

返回类型

str

torch.backends.cuda

torch.backends.cuda.is_built()[source]

返回 PyTorch 是否使用 CUDA 支持构建。

请注意,这并不一定意味着 CUDA 可用;只是如果该 PyTorch 二进制文件在具有正常工作的 CUDA 驱动程序和设备的机器上运行,我们就可以使用它。

torch.backends.cuda.matmul.allow_tf32

一个 bool,用于控制是否允许在 Ampere 或更新的 GPU 上的矩阵乘法中使用 TensorFloat-32 张量核心。请参阅 Ampere(及更高版本)设备上的 TensorFloat-32 (TF32)

torch.backends.cuda.matmul.allow_fp16_reduced_precision_reduction

一个 bool,用于控制是否允许在 fp16 GEMMs 中使用减少精度约简(例如,使用 fp16 累积类型)。

torch.backends.cuda.matmul.allow_bf16_reduced_precision_reduction

一个 bool,用于控制是否允许在 bf16 GEMMs 中使用减少精度约简。

torch.backends.cuda.cufft_plan_cache

cufft_plan_cache 包含每个 CUDA 设备的 cuFFT 计划缓存。通过 torch.backends.cuda.cufft_plan_cache[i] 查询特定设备 i 的缓存。

torch.backends.cuda.cufft_plan_cache.size

一个只读的 int,显示当前 cuFFT 计划缓存中的计划数量。

torch.backends.cuda.cufft_plan_cache.max_size

一个 int,用于控制 cuFFT 计划缓存的容量。

torch.backends.cuda.cufft_plan_cache.clear()

清除 cuFFT 计划缓存。

torch.backends.cuda.preferred_blas_library(backend=None)[source]

覆盖 PyTorch 用于 BLAS 操作的库。在 cuBLAS 和 cuBLASLt 之间选择。

警告

此标志是实验性的,可能会发生变化。

当 PyTorch 运行 CUDA BLAS 操作时,它默认使用 cuBLAS,即使 cuBLAS 和 cuBLASLt 都可用。对于为 ROCm 构建的 PyTorch,hipBLAS 和 hipBLASLt 可能会提供不同的性能。此标志(一个 str)允许覆盖要使用的 BLAS 库。

  • 如果设置了 “cublas”,则 cuBLAS 将尽可能使用。

  • 如果设置了 “cublaslt”,则 cuBLASLt 将尽可能使用。

  • 如果没有输入,则此函数将返回当前首选的库。

  • 用户可以使用环境变量 TORCH_BLAS_PREFER_CUBLASLT=1 将首选库全局设置为 cuBLASLt。此标志仅设置首选库的初始值,在脚本中稍后调用此函数时,首选库可能仍会被覆盖。

注意:当首选某个库时,如果首选库未实现调用的操作,则可能仍会使用其他库。如果 PyTorch 的库选择不适合应用程序的输入,则此标志可能会实现更好的性能。

返回类型

_BlasBackend

torch.backends.cuda.preferred_linalg_library(backend=None)[source]

覆盖 PyTorch 用于在 cuSOLVER 和 MAGMA 之间选择 CUDA 线性代数运算的启发式方法。

警告

此标志是实验性的,可能会发生变化。

当 PyTorch 运行 CUDA 线性代数运算时,它通常使用 cuSOLVER 或 MAGMA 库,如果两者都可用,它会使用启发式方法来决定使用哪一个。此标志(一个 str)允许覆盖这些启发式方法。

  • 如果设置了 “cusolver”,则只要可能,就会使用 cuSOLVER。

  • 如果设置了 “magma”,则只要可能,就会使用 MAGMA。

  • 如果设置了 “default”(默认值),则如果两者都可用,将使用启发式方法在 cuSOLVER 和 MAGMA 之间进行选择。

  • 如果没有输入,则此函数将返回当前首选的库。

  • 用户可以使用环境变量 TORCH_LINALG_PREFER_CUSOLVER=1 将首选库全局设置为 cuSOLVER。此标志仅设置首选库的初始值,在脚本中稍后调用此函数时,首选库可能仍会被覆盖。

注意:当首选某个库时,如果首选库未实现调用的操作,则可能仍会使用其他库。如果 PyTorch 的启发式库选择不适合应用程序的输入,则此标志可能会实现更好的性能。

当前支持的 linalg 运算符

返回类型

_LinalgBackend

class torch.backends.cuda.SDPAParams
torch.backends.cuda.flash_sdp_enabled()[source]

警告

此标志为测试版,可能会更改。

返回 Flash 缩放点积注意力是否已启用。

torch.backends.cuda.enable_mem_efficient_sdp(enabled)[source]

警告

此标志为测试版,可能会更改。

启用或禁用内存高效的缩放点积注意力。

torch.backends.cuda.mem_efficient_sdp_enabled()[source]

警告

此标志为测试版,可能会更改。

返回内存高效的缩放点积注意力是否已启用。

torch.backends.cuda.enable_flash_sdp(enabled)[source]

警告

此标志为测试版,可能会更改。

启用或禁用 Flash 缩放点积注意力。

torch.backends.cuda.math_sdp_enabled()[source]

警告

此标志为测试版,可能会更改。

返回数学缩放点积注意力是否已启用。

torch.backends.cuda.enable_math_sdp(enabled)[source]

警告

此标志为测试版,可能会更改。

启用或禁用数学缩放点积注意力。

torch.backends.cuda.cudnn_sdp_enabled()[source]

警告

此标志为测试版,可能会更改。

返回 cuDNN 缩放点积注意力是否已启用。

torch.backends.cuda.enable_cudnn_sdp(enabled)[source]

警告

此标志为测试版,可能会更改。

启用或禁用 cuDNN 缩放点积注意力。

torch.backends.cuda.can_use_flash_attention(params, debug=False)[source]

检查 FlashAttention 是否可以在 scaled_dot_product_attention 中使用。

参数
  • params (_SDPAParams) – 一个包含查询、键、值、可选注意力掩码、丢弃率和指示注意力是否为因果关系的标志的张量的 SDPAParams 实例。

  • debug (bool) – 是否将调试信息记录为警告,说明为什么 FlashAttention 无法运行。默认为 False。

返回值

如果 FlashAttention 可以使用给定的参数,则为 True;否则为 False。

返回类型

bool

注意

此函数依赖于支持 CUDA 的 PyTorch 构建。它将在非 CUDA 环境中返回 False。

torch.backends.cuda.can_use_efficient_attention(params, debug=False)[source]

检查 efficient_attention 是否可以在 scaled_dot_product_attention 中使用。

参数
  • params (_SDPAParams) – 一个包含查询、键、值、可选注意力掩码、丢弃率和指示注意力是否为因果关系的标志的张量的 SDPAParams 实例。

  • debug (bool) – 是否使用信息记录警告,说明为什么 efficient_attention 无法运行。默认为 False。

返回值

如果 efficient_attention 可以使用给定的参数,则为 True;否则为 False。

返回类型

bool

注意

此函数依赖于支持 CUDA 的 PyTorch 构建。它将在非 CUDA 环境中返回 False。

torch.backends.cuda.sdp_kernel(enable_flash=True, enable_math=True, enable_mem_efficient=True, enable_cudnn=True)[source]

警告

此标志为测试版,可能会更改。

此上下文管理器可用于暂时启用或禁用缩放点积注意力的三种后端中的任何一种。退出上下文管理器后,将恢复标志的先前状态。

torch.backends.cudnn

torch.backends.cudnn.version()[source]

返回 cuDNN 的版本。

torch.backends.cudnn.is_available()[source]

返回一个布尔值,指示 CUDNN 是否当前可用。

torch.backends.cudnn.enabled

一个 bool,用于控制是否启用 cuDNN。

torch.backends.cudnn.allow_tf32

一个 bool,用于控制在 Ampere 或更新的 GPU 上的 cuDNN 卷积中是否可以使用 TensorFloat-32 张量核心。请参阅 Ampere(及更高版本)设备上的 TensorFloat-32 (TF32)

torch.backends.cudnn.deterministic

一个 bool,如果为 True,则会导致 cuDNN 仅使用确定性卷积算法。另请参阅 torch.are_deterministic_algorithms_enabled()torch.use_deterministic_algorithms()

torch.backends.cudnn.benchmark

如果为 True,则会导致 cuDNN 对多个卷积算法进行基准测试并选择最快的算法。

torch.backends.cudnn.benchmark_limit

一个 int,指定当 torch.backends.cudnn.benchmark 为 True 时,要尝试的最大 cuDNN 卷积算法数量。将 benchmark_limit 设置为零以尝试所有可用算法。请注意,此设置仅影响通过 cuDNN v8 API 分派的卷积。

torch.backends.mha

torch.backends.mha.get_fastpath_enabled()[source]

返回 TransformerEncoder 和 MultiHeadAttention 的快速路径是否已启用,如果 jit 正在脚本化,则返回 True

..注意

即使 get_fastpath_enabled 返回 True,除非满足所有输入条件,否则快速路径可能不会运行。

返回类型

bool

torch.backends.mha.set_fastpath_enabled(value)[source]

设置快速路径是否已启用

torch.backends.mps

torch.backends.mps.is_available()[source]

返回一个布尔值,指示 MPS 当前是否可用。

返回类型

bool

torch.backends.mps.is_built()[source]

返回 PyTorch 是否使用 MPS 支持构建。

请注意,这并不一定意味着 MPS 可用;只是如果此 PyTorch 二进制文件在具有工作 MPS 驱动程序和设备的机器上运行,我们就可以使用它。

返回类型

bool

torch.backends.mkl

torch.backends.mkl.is_available()[source]

返回 PyTorch 是否使用 MKL 支持构建。

class torch.backends.mkl.verbose(enable)[source]

按需 oneMKL 详细功能。

为了更方便地调试性能问题,oneMKL 可以转储包含执行信息(如持续时间)的详细消息,这些信息在执行内核时会显示出来。详细功能可以通过名为 MKL_VERBOSE 的环境变量来调用。但是,这种方法会转储所有步骤中的消息。这些是大量的详细消息。此外,为了调查性能问题,通常只需获取一次迭代的详细消息就足够了。此按需详细功能使控制详细消息转储范围成为可能。在以下示例中,将为第二次推断转储详细消息。

import torch
model(data)
with torch.backends.mkl.verbose(torch.backends.mkl.VERBOSE_ON):
    model(data)
参数

level – 详细级别 - VERBOSE_OFF: 禁用详细 - VERBOSE_ON: 启用详细

torch.backends.mkldnn

torch.backends.mkldnn.is_available()[source]

返回 PyTorch 是否使用 MKL-DNN 支持构建。

class torch.backends.mkldnn.verbose(level)[source]

按需 oneDNN(前身为 MKL-DNN)详细功能。

为了更方便地调试性能问题,oneDNN 可以转储包含信息(如内核大小、输入数据大小和执行持续时间)的详细消息,这些信息在执行内核时会显示出来。详细功能可以通过名为 DNNL_VERBOSE 的环境变量来调用。但是,这种方法会转储所有步骤中的消息。这些是大量的详细消息。此外,为了调查性能问题,通常只需获取一次迭代的详细消息就足够了。此按需详细功能使控制详细消息转储范围成为可能。在以下示例中,将为第二次推断转储详细消息。

import torch
model(data)
with torch.backends.mkldnn.verbose(torch.backends.mkldnn.VERBOSE_ON):
    model(data)
参数

level – 详细级别 - VERBOSE_OFF: 禁用详细 - VERBOSE_ON: 启用详细 - VERBOSE_ON_CREATION: 启用详细,包括 oneDNN 内核创建

torch.backends.nnpack

torch.backends.nnpack.is_available()[source]

返回 PyTorch 是否使用 NNPACK 支持构建。

torch.backends.nnpack.flags(enabled=False)[source]

用于设置 nnpack 是否全局启用的上下文管理器

torch.backends.nnpack.set_flags(_enabled)[source]

设置 nnpack 是否全局启用

torch.backends.openmp

torch.backends.openmp.is_available()[source]

返回 PyTorch 是否使用 OpenMP 支持构建。

torch.backends.opt_einsum

torch.backends.opt_einsum.is_available()[source]

返回一个布尔值,指示 opt_einsum 当前是否可用。

返回类型

bool

torch.backends.opt_einsum.get_opt_einsum()[source]

如果 opt_einsum 当前可用,则返回 opt_einsum 包,否则返回 None。

返回类型

任何

torch.backends.opt_einsum.enabled

一个 :class:bool,控制 opt_einsum 是否启用(默认情况下为 True)。如果是,则 torch.einsum 将使用 opt_einsum (https://optimized-einsum.readthedocs.io/en/stable/path_finding.html)(如果可用)来计算最佳收缩路径以提高性能。

如果 opt_einsum 不可用,则 torch.einsum 将回退到从左到右的默认收缩路径。

torch.backends.opt_einsum.strategy

一个 :class:str,指定当 torch.backends.opt_einsum.enabledTrue 时要尝试哪些策略。默认情况下,torch.einsum 将尝试“auto”策略,但也支持“greedy”和“optimal”策略。请注意,“optimal”策略在输入数量上是阶乘的,因为它会尝试所有可能的路径。有关更多详细信息,请参阅 opt_einsum 的文档 (https://optimized-einsum.readthedocs.io/en/stable/path_finding.html).

torch.backends.xeon

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

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

查看资源