捷徑

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”

傳回類型

str

torch.backends.cuda

torch.backends.cuda.is_built()[原始碼]

傳回 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.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)[原始碼]

覆寫 PyTorch 用於 BLAS 操作的函式庫。在 cuBLAS 和 cuBLASLt 之間做選擇。

警告

此旗標為實驗性功能,可能會有所變更。

當 PyTorch 執行 CUDA BLAS 操作時,即使 cuBLAS 和 cuBLASLt 都可用,它預設會使用 cuBLAS。對於為 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 用於為 CUDA 線性代數操作選擇 cuSOLVER 或 MAGMA 的啟發式方法。

警告

此旗標為實驗性功能,可能會有所變更。

當 PyTorch 執行 CUDA 線性代數操作時,它通常會使用 cuSOLVER 或 MAGMA 函式庫,如果兩者都可用,它會使用啟發式方法來決定要使用哪一個。此旗標(一個 str)允許覆寫這些啟發式方法。

  • 如果設定為 “cusolver”,則會盡可能使用 cuSOLVER。

  • 如果設定為 “magma”,則會盡可能使用 MAGMA。

  • 如果設定為 “default”(預設值),則如果 cuSOLVER 和 MAGMA 都可用,將會使用啟發式方法在兩者之間進行選擇。

  • 如果沒有提供任何輸入,則此函式會傳回目前偏好的函式庫。

  • 使用者可以使用環境變數 TORCH_LINALG_PREFER_CUSOLVER=1 來將偏好的函式庫全域設定為 cuSOLVER。此旗標只會設定偏好函式庫的初始值,而且偏好的函式庫之後仍然可能會被腳本中的此函式呼叫所覆寫。

注意:當偏好某個函式庫時,如果偏好的函式庫沒有實作所呼叫的操作,則仍然可能會使用其他函式庫。如果 PyTorch 的啟發式函式庫選擇不適合您應用程式的輸入,則此旗標可能會達到更好的效能。

目前支援的 linalg 運算子

傳回類型

_LinalgBackend

類別 torch.backends.cuda.SDPAParams
torch.backends.cuda.flash_sdp_enabled()[source]

警告

此旗標為 beta 版,可能會有所變更。

傳回是否啟用 flash 縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

啟用或停用記憶體有效率的縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

傳回是否啟用記憶體有效率的縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

啟用或停用 flash 縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

傳回是否啟用 math 縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

啟用或停用 math 縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

傳回是否啟用 cuDNN 縮放點積注意力。

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

警告

此旗標為 beta 版,可能會有所變更。

啟用或停用 cuDNN 縮放點積注意力。

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

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

參數
  • params (_SDPAParams) – 一個 SDPAParams 的實例,其中包含查詢、鍵、值的張量,一個可選的注意力遮罩,丟棄率,以及一個標記,指示注意力是否是因果的。

  • debug (布林值) – 是否要 logging.warn 有關為什麼無法執行 FlashAttention 的除錯資訊。預設值為 False。

傳回值

如果可以使用給定的參數使用 FlashAttention,則為 True;否則為 False。

傳回類型

布林值

注意

此函式取決於 PyTorch 的 CUDA 啟用建置。在非 CUDA 環境中,它將傳回 False。

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

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

參數
  • params (_SDPAParams) – 一個 SDPAParams 的實例,其中包含查詢、鍵、值的張量,一個可選的注意力遮罩,丟棄率,以及一個標記,指示注意力是否是因果的。

  • debug (布林值) – 是否要使用 logging.warn 來顯示有關為什麼無法執行 efficient_attention 的資訊。預設值為 False。

傳回值

如果可以使用給定的參數使用 efficient_attention,則為 True;否則為 False。

傳回類型

布林值

注意

此函式取決於 PyTorch 的 CUDA 啟用建置。在非 CUDA 環境中,它將傳回 False。

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

警告

此旗標為 beta 版,可能會有所變更。

這個上下文管理器可以用於暫時啟用或停用縮放點積注意力的三個後端中的任何一個。退出上下文管理器後,將會恢復旗標的先前狀態。

torch.backends.cudnn

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

傳回 cuDNN 的版本。

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

傳回一個布林值,指示 CUDNN 目前是否可用。

torch.backends.cudnn.enabled

一個 布林值,用於控制是否啟用 cuDNN。

torch.backends.cudnn.allow_tf32

一個 布林值,用於控制是否可以在 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

一個 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

.. 注意

即使 get_fastpath_enabled 傳回 True,除非滿足輸入的所有條件,否則可能不會執行快速路徑。

傳回類型

布林值

torch.backends.mha.set_fastpath_enabled(value)[原始碼]

設定是否啟用快速路徑

torch.backends.mps

torch.backends.mps.is_available()[原始碼]

傳回一個布林值,表示 MPS 目前是否可用。

傳回類型

布林值

torch.backends.mps.is_built()[原始碼]

傳回 PyTorch 是否使用 MPS 支援建置。

請注意,這並不一定表示 MPS 可用;只是如果這個 PyTorch 二進制檔案是在具有正常運作的 MPS 驅動程式和裝置的機器上執行,我們將能夠使用它。

傳回類型

布林值

torch.backends.mkl

torch.backends.mkl.is_available()[原始碼]

傳回 PyTorch 是否使用 MKL 支援建置。

類別 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)
參數

level – 詳細訊息級別 - VERBOSE_OFF:停用詳細訊息記錄 - VERBOSE_ON:啟用詳細訊息記錄

torch.backends.mkldnn

torch.backends.mkldnn.is_available()[原始碼]

傳回 PyTorch 是否使用 MKL-DNN 支援建置。

類別 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 – 詳細訊息級別 - 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 目前是否可用。

傳回類型

布林值

torch.backends.opt_einsum.get_opt_einsum()[原始碼]

如果 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 將嘗試「自動」策略,但也支持「貪婪」和「最佳」策略。請注意,「最佳」策略的階乘取決於輸入的數量,因為它會嘗試所有可能的路徑。有關更多詳細信息,請參閱 opt_einsum 的文檔(https://optimized-einsum.readthedocs.io/en/stable/path_finding.html)。

torch.backends.xeon

文件

獲取 PyTorch 的完整開發人員文檔

查看文檔

教學課程

獲取針對初學者和高級開發人員的深入教學課程

查看教學課程

資源

查找開發資源並獲得問題解答

查看資源