Shortcuts

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()[源代码]

返回CPU能力作为字符串值。

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

Return type

str

torch.backends.cuda

torch.backends.cuda.is_built()[源代码]

返回 PyTorch 是否支持 CUDA。

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

torch.backends.cuda.matmul.allow_tf32

一个 bool 控制是否可以在安培或更新架构的GPU上使用TensorFloat-32张量核心进行矩阵乘法。参见 安培(及以后)设备上的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

一个控制cuFFT计划缓存容量的int

torch.backends.cuda.cufft_plan_cache.clear()

清除 cuFFT 计划缓存。

torch.backends.cuda.preferred_linalg_library(backend=None)[源代码]

覆盖PyTorch用于在CUDA线性代数操作中选择cuSOLVER和MAGMA的启发式方法。

警告

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

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

  • 如果设置了“cusolver”,则在可能的情况下将使用cuSOLVER。

  • 如果设置了“magma”,则在可能的情况下将使用MAGMA。

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

  • 当没有输入时,此函数返回当前首选的库。

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

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

目前支持的线性代数运算符:

Return type

_LinalgBackend

class torch.backends.cuda.SDPAParams
torch.backends.cuda.flash_sdp_enabled()[源代码]

警告

此标志为测试版,可能会发生变化。

返回是否启用了flash缩放点积注意力。

torch.backends.cuda.enable_mem_efficient_sdp(enabled)[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.mem_efficient_sdp_enabled()[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.enable_flash_sdp(enabled)[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.math_sdp_enabled()[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.enable_math_sdp(enabled)[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.cudnn_sdp_enabled()[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.enable_cudnn_sdp(enabled)[源代码]

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cuda.can_use_flash_attention(params, debug=False)[源代码]

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

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

  • 调试 (布尔值) – 是否记录调试信息,说明为什么无法运行FlashAttention。 默认为False。

Returns

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

Return type

bool

注意

此函数依赖于启用了CUDA的PyTorch构建。在非CUDA环境中,它将返回False。

torch.backends.cuda.can_use_efficient_attention(params, debug=False)[源代码]

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

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

  • 调试 (布尔值) – 是否记录警告信息,说明为什么无法运行高效注意力机制。 默认为 False。

Returns

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

Return type

bool

注意

此函数依赖于启用了CUDA的PyTorch构建。在非CUDA环境中,它将返回False。

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

警告

此标志为测试版,可能会发生变化。

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

torch.backends.cudnn

torch.backends.cudnn.version()[源代码]

返回 cuDNN 的版本。

torch.backends.cudnn.is_available()[源代码]

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

torch.backends.cudnn.enabled

一个 bool 控制是否启用 cuDNN。

torch.backends.cudnn.allow_tf32

一个 bool 控制是否可以在安培或更新版本的GPU上的cuDNN卷积中使用TensorFloat-32张量核心。参见 安培(及以后)设备上的TensorFloat-32 (TF32)

torch.backends.cudnn.deterministic

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

torch.backends.cudnn.benchmark

一个 bool,如果为 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()[源代码]

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

..note:

即使 get_fastpath_enabled 返回 True,如果输入条件不满足,fastpath 也可能不会运行。

Return type

bool

torch.backends.mha.set_fastpath_enabled(value)[源代码]

设置是否启用快速路径

torch.backends.mps

torch.backends.mps.is_available()[源代码]

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

Return type

bool

torch.backends.mps.is_built()[源代码]

返回 PyTorch 是否支持 MPS 构建。

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

Return type

bool

torch.backends.mkl

torch.backends.mkl.is_available()[源代码]

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

class torch.backends.mkl.verbose(enable)[源代码]

按需的oneMKL详细功能。

为了更容易调试性能问题,oneMKL 可以输出包含执行信息的详细消息,例如在执行内核时的持续时间。可以通过名为 MKL_VERBOSE 的环境变量调用详细功能。然而,这种方法会在所有步骤中输出消息。这些是大量的详细消息。此外,为了调查性能问题,通常只需要一个迭代的详细消息就足够了。这种按需详细功能使得可以控制详细消息输出的范围。在下面的示例中,仅在第二次推理时输出详细消息。

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

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

torch.backends.mkldnn

torch.backends.mkldnn.is_available()[源代码]

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

class torch.backends.mkldnn.verbose(level)[源代码]

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

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

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

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

torch.backends.nnpack

torch.backends.nnpack.is_available()[源代码]

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

torch.backends.nnpack.flags(enabled=False)[源代码]

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

torch.backends.nnpack.set_flags(_enabled)[源代码]

设置是否全局启用 nnpack

torch.backends.openmp

torch.backends.openmp.is_available()[源代码]

返回 PyTorch 是否构建了 OpenMP 支持。

torch.backends.opt_einsum

torch.backends.opt_einsum.is_available()[源代码]

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

Return type

bool

torch.backends.opt_einsum.get_opt_einsum()[源代码]

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

Return type

任意

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

优云智算