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.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 GEMM 进行降低精度的缩减(例如,使用 fp16 累积类型)。
- torch.backends.cuda.matmul.allow_bf16_reduced_precision_reduction¶
- 一个 - bool控制是否允许使用 bf16 GEMM 进行降低精度的缩减。
- 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.clear()¶
- 清除 cuFFT 计划缓存。 
 
- 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 运算符 
- torch.linalg.eighvals()
 - 返回类型
- _LinalgBackend 
 
- class torch.backends.cuda.SDPAParams¶
- torch.backends.cuda.enable_mem_efficient_sdp(enabled)[source]¶
- 警告 - 此标志处于测试阶段,可能会发生变化。 - 启用或禁用内存高效缩放点积注意力。 
- 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。 
- 返回类型
 - 注意 - 此函数依赖于支持 CUDA 的 PyTorch 版本。在非 CUDA 环境中,它将返回 False。 
- torch.backends.cuda.can_use_efficient_attention(params, debug=False)[source]¶
- 检查在 scaled_dot_product_attention 中是否可以使用 efficient_attention。 - 参数
- params (_SDPAParams) – 包含查询、键、值张量、可选注意力掩码、丢弃率和指示注意力是否因果的标志的 SDPAParams 实例。 
- debug (布尔值) – 是否使用日志记录警告信息,说明为什么无法运行 efficient_attention。默认为 False。 
 
- 返回值
- 如果可以使用给定参数的 efficient_attention,则为 True;否则为 False。 
- 返回类型
 - 注意 - 此函数依赖于支持 CUDA 的 PyTorch 版本。在非 CUDA 环境中,它将返回 False。 
torch.backends.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.mha¶
torch.backends.mps¶
torch.backends.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¶
- 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.opt_einsum¶
- 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.enabled为- True时要尝试的策略。默认情况下,torch.einsum 将尝试“auto”策略,但也支持“greedy”和“optimal”策略。请注意,“optimal”策略在输入数量上是阶乘的,因为它尝试所有可能的路径。有关更多详细信息,请参阅 opt_einsum 的文档 (https://optimized-einsum.readthedocs.io/en/stable/path_finding.html).