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()[原始碼]¶
- 傳回 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_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 運算子 
- torch.linalg.eighvals()
 - 傳回類型
- _LinalgBackend 
 
- 類別 torch.backends.cuda.SDPAParams¶
- torch.backends.cuda.enable_mem_efficient_sdp(enabled)[source]¶
- 警告 - 此旗標為 beta 版,可能會有所變更。 - 啟用或停用記憶體有效率的縮放點積注意力。 
- torch.backends.cuda.mem_efficient_sdp_enabled()[source]¶
- 警告 - 此旗標為 beta 版,可能會有所變更。 - 傳回是否啟用記憶體有效率的縮放點積注意力。 
- 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.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.mha¶
torch.backends.mps¶
torch.backends.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.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.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.enabled為- True時要嘗試的策略。默認情況下,torch.einsum 將嘗試「自動」策略,但也支持「貪婪」和「最佳」策略。請注意,「最佳」策略的階乘取決於輸入的數量,因為它會嘗試所有可能的路徑。有關更多詳細信息,請參閱 opt_einsum 的文檔(https://optimized-einsum.readthedocs.io/en/stable/path_finding.html)。