torch.backends¶
torch.backends 控制 PyTorch 支持的各种后端的行为。
这些后端包括:
torch.backends.cpu
torch.backends.cuda
torch.backends.cudnn
torch.backends.cusparselt
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()[来源][来源]¶
返回 PyTorch 是否使用 CUDA 支持构建。
请注意,这并不一定意味着 CUDA 可用;只是如果这个 PyTorch binary 在具有正常工作的 CUDA 驱动程序和设备的机器上运行,我们将能够使用它。
- torch.backends.cuda.matmul 的allow_tf32¶
控制是否可以在矩阵中使用 TensorFloat-32 张量核心的 A
Ampere 或更高版本的 GPU 上的乘法。请参阅 Ampere(及更高版本)设备上的 TensorFloat-32 (TF32)。
- torch.backends.cuda.matmul 的allow_fp16_reduced_precision_reduction¶
- torch.backends.cuda.matmul 的allow_bf16_reduced_precision_reduction¶
- 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。大小¶
- torch.backends.cuda.cufft_plan_cache。max_size¶
- torch.backends.cuda.cufft_plan_cache。清楚()¶
清除 cuFFT 计划缓存。
- torch.backends.cuda 中。preferred_blas_library(backend=None)[源][源]¶
覆盖 PyTorch 用于 BLAS 操作的库。在 cuBLAS、cuBLASLt 和 CK [仅限 ROCm] 之间进行选择。
警告
此标志是实验性的,可能会发生变化。
当 PyTorch 运行 CUDA BLAS 操作时,即使 cuBLAS 和 cuBLASLt 都可用,它也默认为 cuBLAS 。 对于为 ROCm 构建的 PyTorch,hipBLAS、hipBLASLt 和 CK 可能会提供不同的性能。 此标志 (a
) 允许覆盖要使用的 BLAS 库。
如果设置了 “cublas” ,则将尽可能使用 cuBLAS 。
如果设置了 “cublaslt” ,则将尽可能使用 cuBLASLt 。
如果设置了 “ck” ,则将尽可能使用 CK。
如果未给出 input,则此函数返回当前首选的库。
用户可以使用环境变量 TORCH_BLAS_PREFER_CUBLASLT=1 将首选库设置为 cuBLASLt 全球。 此标志仅设置首选库和首选库的初始值 可能仍会被脚本后面的此函数调用覆盖。
注意:当首选库时,如果首选库是首选库,则仍可使用其他库 不实现调用的操作。 如果 PyTorch 的库选择不正确,此标志可能会获得更好的性能 以获取应用程序的输入。
- 返回类型
_BlasBackend
- torch.backends.cuda 中。preferred_linalg_library(backend=None)[源][源]¶
覆盖 PyTorch 用于在 cuSOLVER 和 MAGMA 之间进行选择的启发式 CUDA 线性代数运算。
警告
此标志是实验性的,可能会发生变化。
当 PyTorch 运行 CUDA 线性代数运算时,它通常使用 cuSOLVER 或 MAGMA 库, 如果两者都可用,它会决定将哪个与 heuristic 一起使用。 此标志 (a
) 允许覆盖这些启发式方法。
如果设置了 “cusolver” ,则将尽可能使用 cuSOLVER 。
如果设置了 “magma”,则将尽可能使用 MAGMA。
如果设置了 “default” (default),则将使用启发式方法在 cuSOLVER 和 MAGMA(如果两者都可用)。
如果未给出 input,则此函数返回当前首选的库。
用户可以使用环境变量 TORCH_LINALG_PREFER_CUSOLVER=1 将首选库设置为 cuSOLVER 全球。 此标志仅设置首选库和首选库的初始值 可能仍会被脚本后面的此函数调用覆盖。
注意:当首选库时,如果首选库是首选库,则仍可使用其他库 不实现调用的操作。 如果 PyTorch 的启发式库选择不正确,此标志可能会获得更好的性能 以获取应用程序的输入。
当前支持的 linalg 运算符:
torch.linalg.eighvals()
- 返回类型
_LinalgBackend
- 类 torch.backends.cuda 中。SDPA 参数¶
- torch.backends.cuda 中。mem_efficient_sdp_enabled()[来源][来源]¶
警告
此标志为 beta 版本,可能会发生更改。
返回是否启用内存高效的缩放点积注意力。
- torch.backends.cuda 中。fp16_bf16_reduction_math_sdp_allowed()[来源][来源]¶
警告
此标志为 beta 版本,可能会发生更改。
返回是否启用了数学缩放点积注意力中的 fp16/bf16 减少。
- torch.backends.cuda 中。allow_fp16_bf16_reduction_math_sdp(启用)[源][源]¶
警告
此标志为 beta 版本,可能会发生更改。
启用或禁用数学缩放点积注意力中的 fp16/bf16 减少。
- torch.backends.cuda 中。is_flash_attention_available()[来源][来源]¶
检查 PyTorch 是否是使用 FlashAttention for scaled_dot_product_attention 构建的。
- 返回
如果 FlashAttention 已构建且可用,则为 True;否则为 False。
- 返回类型
注意
此函数依赖于支持 CUDA 的 PyTorch 版本。它将返回 False 在非 CUDA 环境中。
- torch.backends.cuda 中。can_use_flash_attention(params, debug=False)[源][源]¶
检查 FlashAttention 是否可以在 scaled_dot_product_attention 中使用。
- 参数
params (_SDPAParams) – 包含用于查询的张量的 SDPAParams 实例, key、value、可选的注意力掩码、dropout rate 和 一个标志,指示注意力是否是因果关系。
debug (bool) – 是否 logging.warn 调试信息,说明为什么 FlashAttention 无法运行。 默认为 False。
- 返回
如果 FlashAttention 可以与给定参数一起使用,则为 True;否则为 False。
- 返回类型
注意
此函数依赖于支持 CUDA 的 PyTorch 版本。它将返回 False 在非 CUDA 环境中。
- torch.backends.cuda 中。can_use_efficient_attention(params, debug=False)[来源][来源]¶
检查 efficient_attention 是否可以在 scaled_dot_product_attention 中使用。
- 参数
params (_SDPAParams) – 包含用于查询的张量的 SDPAParams 实例, key、value、可选的注意力掩码、dropout rate 和 一个标志,指示注意力是否是因果关系。
debug (bool) – 是否向 logging.warn 发送有关无法运行efficient_attention原因的信息。 默认为 False。
- 返回
如果 efficient_attention 可以与给定的参数一起使用,则为 True;否则为 False。
- 返回类型
注意
此函数依赖于支持 CUDA 的 PyTorch 版本。它将返回 False 在非 CUDA 环境中。
- torch.backends.cuda 中。can_use_cudnn_attention(params, debug=False)[来源][来源]¶
检查 cudnn_attention 是否可以在 scaled_dot_product_attention 中使用。
- 参数
params (_SDPAParams) – 包含用于查询的张量的 SDPAParams 实例, key、value、可选的注意力掩码、dropout rate 和 一个标志,指示注意力是否是因果关系。
debug (bool) – 是否向 logging.warn 发送有关无法运行 cuDNN 注意的原因的信息。 默认为 False。
- 返回
如果 cuDNN 可以与给定参数一起使用,则为 True;否则为 False。
- 返回类型
注意
此函数依赖于支持 CUDA 的 PyTorch 版本。它将返回 False 在非 CUDA 环境中。
torch.backends.cudnn¶
- torch.backends.cudnn 中。启用¶
- torch.backends.cudnn 中。allow_tf32¶
A
控制 TensorFloat-32 张量核在 cuDNN 中的使用位置 Ampere 或更高版本 GPU 上的卷积。请参阅 Ampere(及更高版本)设备上的 TensorFloat-32 (TF32)。
- torch.backends.cudnn 中。确定性¶
- torch.backends.cudnn 中。基准¶
- torch.backends.cudnn 中。benchmark_limit¶
A
指定当 torch.backends.cudnn.benchmark 为 True 时要尝试的 cuDNN 卷积算法的最大数量。将 benchmark_limit 设置为 0 以尝试每个 可用的算法。请注意,此设置仅影响通过 cuDNN v8 API 的 API 中。
torch.backends.cusparselt¶
torch.backends.mha¶
torch.backends.mps¶
torch.backends.mkl 中¶
- 类 torch.backends.mkl 中。verbose(enable)[源][源]¶
按需 oneMKL 详细功能。
为了更轻松地调试性能问题,oneMKL 可以转储 verbose 包含执行信息(如执行时的持续时间)的消息 内核。详细功能可以通过环境调用 变量 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 中。verbose(level)[来源][来源]¶
按需 oneDNN(以前称为 MKL-DNN)详细功能。
为了更轻松地调试性能问题,oneDNN 可以转储详细 包含内核大小、输入数据大小和 执行内核时的执行持续时间。详细功能 可以通过名为 DNNL_VERBOSE 的环境变量调用。然而 此方法在所有步骤中转储消息。这些是大量的 详细消息。此外,为了调查性能问题, 通常,对一次迭代获取详细消息就足够了。 这种按需详细功能使控制范围成为可能 进行详细消息转储。在以下示例中,详细消息 将仅针对第二次推理转储。
import torch model(data) with torch.backends.mkldnn.verbose(torch.backends.mkldnn.VERBOSE_ON): model(data)
- 参数
level – 详细级别 - : 禁用详细 - : 启用详细 - : 启用详细功能,包括 oneDNN 内核创建
VERBOSE_OFF
VERBOSE_ON
VERBOSE_ON_CREATION
torch.backends.nn 包¶
torch.backends.opt_einsum¶
- torch.backends.opt_einsum。is_available()[来源][来源]¶
返回一个布尔值,指示 opt_einsum 当前是否可用。
您必须安装 opt-einsum 才能让 torch 自动优化 einsum。自 使 opt-einsum 可用,您可以将其与 torch: 一起安装,也可以单独安装: 。如果安装了包,torch 将导入 它会自动并相应地使用它。使用此功能检查 opt-einsum 是否 由 Torch 安装并正确导入。
pip install torch[opt-einsum]
pip install opt-einsum
- 返回类型
- torch.backends.opt_einsum。get_opt_einsum()[来源][来源]¶
如果 opt_einsum 包当前可用,则返回 opt_einsum 包,否则返回 None。
- 返回类型
- torch.backends.opt_einsum。启用¶
控制是否启用 opt_einsum 的 A
( 默认)。㞖 torch.einsum 将使用 opt_einsum (https://optimized-einsum.readthedocs.io/en/stable/path_finding.html) 如果可用,则计算最佳收缩路径以获得更快的性能。
True
如果 opt_einsum 不可用,torch.einsum 将回退到默认的收缩路径 从左到右。
- torch.backends.opt_einsum。策略¶
指定何时尝试哪些策略的 A
为 。默认情况下,torch.einsum 将尝试 “auto” 策略,但 “greedy” 和 “optimal” 还支持策略。请注意,“最佳”策略是阶乘的 inputs 进行 Inputs 操作,因为它会尝试所有可能的路径。在 opt_einsum 的文档中查看更多详细信息 (https://optimized-einsum.readthedocs.io/en/stable/path_finding.html)。
torch.backends.opt_einsum.enabled
True