已啟用 GPU 的計算

注意

某些已啟用 GPU 的實體類型位於 Beta,當您在計算建立期間選取驅動程式和背景工作角色類型時,會在下拉式清單中標示為這類類型。

概觀

Azure Databricks 支援使用圖形處理單位 (GPU) 加速計算。 本文說明如何使用已啟用 GPU 的實例來建立計算,並描述這些實例上安裝的 GPU 驅動程式和連結庫。

若要深入瞭解已啟用 GPU 計算的深度學習,請參閱 深度學習

建立 GPU 計算

建立 GPU 計算類似於建立任何計算。 您應該記住下列事項:

  • Databricks 運行時間版本必須是已啟用 GPU 的版本,例如 Runtime 13.3 LTS ML(GPU、Scala 2.12.15、Spark 3.4.1)。
  • 背景工作類型和驅動程式類型必須是 GPU 實例類型。

支援的實例類型

Azure Databricks 支援下列實例類型:

  • NC 實例類型系列:Standard_NC12、Standard_NC24
  • NC v3 實例類型系列:Standard_NC6s_v3、Standard_NC12s_v3、Standard_NC24s_v3
  • NC T4 v3 實例類型系列:Standard_NC4as_T4_v3、Standard_NC8as_T4_v3、Standard_NC16as_T4_v3、Standard_NC64as_T4_v3
  • NC A100 v4 實例類型系列:Standard_NC24ads_A100_v4、Standard_NC48ads_A100_v4、Standard_NC96ads_A100_v4
  • ND A100 v4 實例類型系列:Standard_ND96asr_v4
  • NV A10 v5 實例類型系列:Standard_NV36ads_A10_v5、Standard_NV36adms_A10_v5、Standard_NV72ads_A10_v5
    • Standard_NV72ads_A10_v5與 PyTorch 2.0+ 不相容,並在執行多 GPU 工作負載時引發 CUDA 錯誤。 由於 Databricks Runtime ML 14.0 和更新版本會預安裝 PyTorch 2.0+,建議您使用 Databricks Runtime ML 13.x,或在多 GPU 工作負載上執行 PyTorch 時手動執行 pip install torch==1.13.1

如需支援的 GPU 實例類型及其可用性區域的最新清單,請參閱 Azure Databricks 定價 。 您的 Azure Databricks 部署必須位於支援的區域中,才能啟動已啟用 GPU 的計算。

GPU 排程

Databricks Runtime 支援 Apache Spark 3.0 的 GPU 感知排程 。 Azure Databricks 在 GPU 計算上預先設定它。

單一節點計算上未啟用 GPU 排程。

spark.task.resource.gpu.amount 是唯一與 GPU 感知排程相關的 Spark 設定,您可能需要變更。 如果您使用的是所有 GPU 節點,預設組態會針對分散式推斷工作負載和分散式定型使用每個工作一個 GPU。這很適合使用分散式推斷工作負載和分散式定型。 若要在節點子集上執行分散式定型,這有助於降低分散式定型期間的通訊額外負荷,Databricks 建議將設定 spark.task.resource.gpu.amount 為計算 Spark 組態中每個背景工作節點的 GPU 數目。

針對 PySpark 工作,Azure Databricks 會自動將指派的 GPU 重新對應至索引 0、1、...。 在每個工作使用一個 GPU 的預設組態下,您的程式代碼只需使用預設 GPU,而不需要檢查指派給工作的 GPU。 如果您為每個工作設定多個 GPU,例如 4,您的程式代碼可以假設指派的 GPU 索引一律為 0、1、2 和 3。 如果您需要指派之 GPU 的實體索引,您可以從環境變數取得它們 CUDA_VISIBLE_DEVICES

如果您使用 Scala,您可以從 取得指派給工作的 TaskContext.resources().get("gpu")GPU 索引。

針對低於 7.0 的 Databricks Runtime 版本,為了避免嘗試使用相同的 GPU 的多個 Spark 工作發生衝突,Azure Databricks 會自動設定 GPU 計算,讓每個節點最多有一個執行中的工作。 如此一來,工作就可以在節點上使用所有 GPU,而不會與其他工作發生衝突。

NVIDIA GPU 驅動程式、CUDA 和 cuDNN

Azure Databricks 會安裝在 Spark 驅動程式和背景工作實例上使用 GPU 所需的 NVIDIA 驅動程式和連結庫:

  • CUDA Toolkit,安裝在 底下 /usr/local/cuda
  • cuDNN:NVIDIA CUDA 深度類神經網路連結庫。
  • NCCL:NVIDIA 集體通訊連結庫。

隨附的 NVIDIA 驅動程式版本是 535.54.03,其支援 CUDA 11.0。 針對 NV A10 v5 實體類型系列,包含的 NVIDIA 驅動程式版本為 525.105.17

如需包含的連結庫版本,請參閱 您所使用之特定 Databricks Runtime 版本的版本資訊

注意

此軟體包含 NVIDIA Corporation 提供的原始程式碼。 具體而言,為了支援 GPU,Azure Databricks 包含來自 CUDA 範例的程式代碼。

NVIDIA 終端使用者許可協定 (EULA)

當您在 Azure Databricks 中選取已啟用 GPU 的「Databricks 運行時間版本」時,會隱含同意 NVIDIA EULA 中針對 NCCL 連結庫、cuDNN 和 Tesla 連結庫所概述的條款及條件,以及 NCCL 連結庫的 NVIDIA 終端使用者許可協定(含 NCCL 補充)。

GPU 計算上的 Databricks Container Services

重要

這項功能處於公開預覽狀態

您可以使用 計算上的 Databricks Container Services 搭配 GPU 來建立具有自定義連結庫的可攜式深度學習環境。 如需相關指示,請參閱 使用 Databricks Container Service 自定義容器。

若要建立 GPU 計算的自定義映像,您必須選取標準運行時間版本,而不是適用於 GPU 的 Databricks Runtime ML。 當您選取 [ 使用您自己的 Docker 容器] 時,可以選擇具有標準運行時間版本的 GPU 計算。 GPU 的自定義映像是以官方 CUDA 容器為基礎,這與適用於 GPU 的 Databricks Runtime ML 不同。

當您建立 GPU 計算的自定義映射時,無法變更 NVIDIA 驅動程式版本,因為它必須符合主電腦上的驅動程式版本。

databricksruntimeDocker Hub 包含具有 GPU 功能的範例基底映像。 用來產生這些映像的 Dockerfiles 位於範例容器 GitHub 存放庫中,其中也有範例映射提供的詳細數據,以及如何自定義這些映像。