Memasang GPU ke cluster Dataproc

Dataproc menyediakan kemampuan untuk memasang unit pemrosesan grafis (GPU) ke node Compute Engine master dan worker di cluster Dataproc. Anda dapat menggunakan GPU ini untuk mempercepat workload tertentu di instance Anda, seperti machine learning dan pemrosesan data.

Untuk mengetahui informasi selengkapnya tentang hal yang dapat Anda lakukan dengan GPU dan jenis hardware GPU yang tersedia, baca GPU di Compute Engine.

Sebelum memulai

  • GPU memerlukan driver dan software khusus. Item ini telah diinstal sebelumnya di image -ml Dataproc (sebaiknya gunakan image -ml), dan dapat diinstal secara manual jika dan saat diperlukan.
  • Baca harga GPU di Compute Engine untuk memahami biaya penggunaan GPU di instance Anda.
  • Baca pembatasan untuk instance dengan GPU untuk mempelajari cara fungsi instance ini berbeda dari instance non-GPU.
  • Periksa halaman kuota untuk project Anda guna memastikan bahwa Anda memiliki kuota GPU yang cukup (NVIDIA_T4_GPUS, NVIDIA_P100_GPUS, atau NVIDIA_V100_GPUS) yang tersedia di project Anda. Jika GPU tidak tercantum di halaman kuota atau Anda memerlukan kuota GPU tambahan, minta penambahan kuota.

Jenis GPU

Node Dataproc mendukung jenis GPU berikut. Anda harus menentukan jenis GPU saat memasang GPU ke cluster Dataproc.

  • nvidia-tesla-l4 - NVIDIA® Tesla® L4
  • nvidia-tesla-a100 - NVIDIA® Tesla® A100
  • nvidia-tesla-p100 - NVIDIA® Tesla® P100
  • nvidia-tesla-v100 - NVIDIA® Tesla® V100
  • nvidia-tesla-p4 - NVIDIA® Tesla® P4
  • nvidia-tesla-t4 - NVIDIA® Tesla® T4
  • nvidia-rtx-pro-6000 - NVIDIA® RTX® PRO 6000
  • nvidia-tesla-p100-vws - Workstation Virtual NVIDIA® Tesla® P100
  • nvidia-tesla-p4-vws - Workstation Virtual NVIDIA® Tesla® P4
  • nvidia-tesla-t4-vws - Workstation Virtual NVIDIA® Tesla® T4

Memasang GPU ke cluster

Untuk memasang GPU ke cluster Dataproc, saat membuat cluster, Anda harus menentukan image -ml (direkomendasikan) atau menggunakan tindakan inisialisasi untuk menginstal driver GPU. Contoh berikut menentukan image 2.3-ml-ubuntu saat membuat cluster.

Google Cloud CLI

Untuk memasang GPU ke node master dan worker primer dan sekunder di cluster Dataproc, buat cluster menggunakan tanda gcloud dataproc clusters create ‑‑master-accelerator, ‑‑worker-accelerator, dan ‑‑secondary-worker-accelerator. Flag ini mengambil nilai berikut:

  • Jenis GPU yang akan dipasang ke node
  • Jumlah GPU yang akan dipasang ke node

Jenis GPU wajib diisi dan jumlah GPU bersifat opsional (defaultnya adalah 1 GPU).

Contoh:

gcloud dataproc clusters create cluster-name \
    --image-version=2.3-ml-ubuntu \
    --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

REST API

Untuk memasang GPU ke node master dan pekerja primer serta sekunder di cluster Dataproc, isi kolom InstanceGroupConfig.AcceleratorConfig acceleratorTypeUri dan acceleratorCount sebagai bagian dari permintaan cluster.create API. Kolom ini mengambil nilai berikut:

  • Jenis GPU yang akan dipasang ke node
  • Jumlah GPU yang akan dipasang ke node

Konsol

Untuk memasang GPU ke node master dan pekerja primer serta sekunder di cluster Dataproc, lakukan langkah-langkah berikut:

  1. Buka halaman Create a Dataproc cluster on Compute Engine.
  2. Pilih panel Configure nodes.
  3. Di bagian Manager Node, Worker nodes, dan Secondary worker nodes, di bagian CPU platform and GPU > GPUs, tentukan jumlah GPU dan jenis GPU untuk node.

Menginstal driver GPU

Driver GPU diperlukan untuk memanfaatkan GPU yang terpasang ke node Dataproc. Sebagai alternatif untuk menggunakan driver GPU yang diinstal di image Dataproc -ml, Anda dapat menggunakan tindakan inisialisasi berikut untuk menginstal driver GPU saat membuat cluster:

Memverifikasi penginstalan driver GPU

Anda dapat memverifikasi penginstalan driver GPU di cluster dengan menghubungkan menggunakan SSH ke node master cluster, lalu menjalankan perintah berikut:

nvidia-smi

Jika driver berfungsi dengan baik, output akan menampilkan versi driver dan statistik GPU (lihat Memverifikasi penginstalan driver GPU).

Konfigurasi Spark

Saat mengirimkan tugas ke Spark, Anda dapat menggunakan properti lingkungan runtime konfigurasi Spark spark.executorEnv dengan variabel lingkungan LD_PRELOAD untuk memuat library yang diperlukan terlebih dahulu.

Contoh:

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

Contoh tugas GPU

Anda dapat menguji GPU di Dataproc dengan menjalankan salah satu tugas berikut, yang akan lebih efektif jika dijalankan dengan GPU:

  1. Jalankan salah satu contoh Spark ML.
  2. Jalankan contoh berikut dengan spark-shell untuk menjalankan komputasi matriks:
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!")

Langkah Berikutnya