Dataproc 可讓您將圖形處理器 (GPU) 附加至 Dataproc 叢集中的主要節點及工作站 Compute Engine 節點。您可以使用這些 GPU 加速處理執行個體上的特定工作負載,例如機器學習和資料處理。
如要進一步瞭解您可以使用 GPU 執行哪些作業,以及 GPU 硬體類型,請閱讀 Compute Engine 上的 GPU。
事前準備
- GPU 需要特殊的驅動程式和軟體。這些項目未預先安裝在 Dataproc 叢集內。
- 請閱讀 Compute Engine 上的 GPU 定價,瞭解在執行個體中使用 GPU 所需費用。
- 請閱讀具有 GPU 的執行個體的限制,瞭解這些執行個體的運作方式與非 GPU 執行個體有何不同。
- 請查看專案的配額頁面,確保專案有足夠的 GPU 配額 (
NVIDIA_T4_GPUS
、NVIDIA_P100_GPUS
或NVIDIA_V100_GPUS
)。如果配額頁面未列出 GPU,或您需要額外的 GPU 配額,請要求增加配額。
GPU 類型
Dataproc 節點支援下列 GPU 類型。將 GPU 附加至 Dataproc 叢集時,必須指定 GPU 類型。
nvidia-tesla-l4
- NVIDIA® Tesla® L4nvidia-tesla-a100
- NVIDIA® Tesla® A100nvidia-tesla-p100
- NVIDIA® Tesla® P100nvidia-tesla-v100
- NVIDIA® Tesla® V100nvidia-tesla-p4
- NVIDIA® Tesla® P4nvidia-tesla-t4
- NVIDIA® Tesla® T4nvidia-tesla-p100-vws
- NVIDIA® Tesla® P100 虛擬工作站nvidia-tesla-p4-vws
- NVIDIA® Tesla® P4 虛擬工作站nvidia-tesla-t4-vws
- NVIDIA® Tesla® T4 虛擬工作站
將 GPU 附加至叢集
gcloud
建立叢集時,使用 ‑‑master-accelerator
、‑‑worker-accelerator
和 ‑‑secondary-worker-accelerator
標記將 GPU 附加至 Dataproc 叢集中的主要執行個體和主要/次要工作站節點。這些標記採用下面兩個值:
- 要附加至節點的 GPU 類型,以及
- 要附加至節點的 GPU 數量。
GPU 類型是必填欄位,而 GPU 數量是選填欄位 (預設值是 1 個 GPU)。
示例:
gcloud dataproc clusters create cluster-name \ --region=region \ --master-accelerator type=nvidia-tesla-t4 \ --worker-accelerator type=nvidia-tesla-t4,count=4 \ --secondary-worker-accelerator type=nvidia-tesla-t4,count=4 \ ... other flags
如要在叢集中使用 GPU,您必須安裝 GPU 驅動程式。
REST API
如要將 GPU 附加至 Dataproc 叢集中的主要執行個體和主要/次要工作站節點,請在 cluster.create API 要求中填寫 InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri
和 acceleratorCount
欄位。
控制台
在 Google Cloud 控制台的「Create a cluster」頁面上,按一下「Configure nodes」面板中主要節點和工作站節點的「CPU 平台和 GPU」→「GPU」→「ADD GPU」,即可指定節點的 GPU 數量和 GPU 類型。
安裝 GPU 驅動程式
您必須安裝 GPU 驅動程式,才能使用附加至 Dataproc 節點的 GPU。如要安裝 GPU 驅動程式,請參閱下列操作說明:
驗證 GPU 驅動程式安裝
在 Dataproc 節點上完成 GPU 驅動程式安裝後,您可以驗證驅動程式是否正常運作。使用 SSH 連結至 Dataproc 叢集的主要節點,然後執行下列指令:
nvidia-smi
如果驅動程式正常運作,輸出會顯示驅動程式版本和 GPU 統計資料 (請參閱驗證 GPU 驅動程式安裝)。
Spark 設定
將工作提交至 Spark 時,您可以使用 spark.executorEnv
Spark 設定 執行階段環境屬性屬性搭配 LD_PRELOAD
環境變數,預先載入所需的程式庫。
範例:
gcloud dataproc jobs submit spark --cluster=CLUSTER_NAME \ --region=REGION \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --properties=spark.executorEnv.LD_PRELOAD=libnvblas.so,spark.task.resource.gpu.amount=1,spark.executor.resource.gpu.amount=1,spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh
範例 GPU 工作
您可以執行下列任何工作來測試 Dataproc 上的 GPU,這些工作在使用 GPU 時會增加效能:
- 執行一個 Spark 機器學習範例。
- 使用
spark-shell
執行下列範例,以執行矩陣運算:
import org.apache.spark.mllib.linalg._ import org.apache.spark.mllib.linalg.distributed._ import java.util.Random def makeRandomSquareBlockMatrix(rowsPerBlock: Int, nBlocks: Int): BlockMatrix = { val range = sc.parallelize(1 to nBlocks) val indices = range.cartesian(range) return new BlockMatrix( indices.map( ij => (ij, Matrices.rand(rowsPerBlock, rowsPerBlock, new Random()))), rowsPerBlock, rowsPerBlock, 0, 0) } val N = 1024 * 4 val n = 2 val mat1 = makeRandomSquareBlockMatrix(N, n) val mat2 = makeRandomSquareBlockMatrix(N, n) val mat3 = mat1.multiply(mat2) mat3.blocks.persist.count println("Processing complete!")
後續步驟
- 瞭解如何建立附加 GPU 的 Compute Engine 執行個體。
- 進一步瞭解 GPU 機器類型。