Anda dapat menambahkan akselerator GPU ke workload batch Dataproc Serverless untuk mencapai hasil berikut:
Percepat pemrosesan workload analisis data berskala besar.
Percepat pelatihan model pada set data besar menggunakan library machine learning GPU.
Lakukan analisis data tingkat lanjut, seperti video atau natural language processing.
Semua runtime Dataproc Serverless Spark yang didukung menambahkan library Spark RAPIDS ke setiap node beban kerja. Runtime Dataproc Serverless Spark versi 1.1 juga menambahkan library XGBoost ke node workload. Library ini memberikan transformasi data yang canggih dan alat machine learning yang dapat Anda gunakan dalam beban kerja yang dipercepat GPU.
Manfaat GPU
Berikut beberapa manfaat saat Anda menggunakan GPU dengan beban kerja Dataproc Serverless Spark:
Peningkatan performa: Akselerasi GPU dapat meningkatkan performa workload Spark secara signifikan, terutama untuk tugas-tugas komputasi yang intensif, seperti mesin dan deep learning, pemrosesan grafik, dan analisis yang kompleks.
Pelatihan model yang lebih cepat: Untuk tugas machine learning, penambahan GPU dapat mengurangi waktu yang diperlukan untuk melatih model secara dramatis, sehingga data scientist dan engineer dapat melakukan iterasi dan eksperimen dengan cepat.
Skalabilitas: Pelanggan dapat menambahkan lebih banyak node GPU atau GPU yang lebih canggih ke node untuk menangani kebutuhan pemrosesan yang semakin kompleks.
Efisiensi biaya: Meskipun GPU memerlukan investasi awal, Anda dapat mencapai penghematan biaya dari waktu ke waktu karena pengurangan waktu pemrosesan dan penggunaan resource yang lebih efisien.
Analisis data yang ditingkatkan: Akselerasi GPU memungkinkan Anda melakukan analisis lanjutan, seperti analisis gambar dan video serta natural language processing, pada set data besar.
Produk yang ditingkatkan: Pemrosesan yang lebih cepat memungkinkan pengambilan keputusan yang lebih cepat dan aplikasi yang lebih responsif.
Batasan dan pertimbangan
Anda dapat memasang GPU NVIDIA A100 atau NVIDIA L4 ke workload batch Dataproc Serverless. Akselerator A100 dan L4 tunduk pada ketersediaan regional GPU Compute Engine.
Library XGBoost hanya disediakan untuk workload yang diakselerasi GPU Dataproc Serverless saat menggunakan Spark runtime versi 1.x Dataproc Serverless.
Batch Dataproc Serverless GPU yang dipercepat dengan XGBoost memanfaatkan peningkatan kuota Compute Engine. Misalnya, untuk menjalankan beban kerja batch tanpa server yang menggunakan GPU NVIDIA L4, Anda harus mengalokasikan kuota NVIDIA_L4_GPUS.
Tugas yang mendukung akselerator tidak kompatibel dengan kebijakan organisasi
constraints/compute.requireShieldedVm
. Jika organisasi Anda menerapkan kebijakan ini, tugas dengan akseleratornya tidak akan berhasil dijalankan.Anda harus menyetel karakter default ke UTF-8 saat menggunakan akselerasi GPU RAPIDS dengan runtime Dataproc Serverless yang didukung sebelum versi
2.2
. Lihat Membuat beban kerja batch serverless dengan akselerator GPU untuk mengetahui informasi selengkapnya.
Harga
Lihat Harga Dataproc Serverless untuk mengetahui informasi harga akselerator.
Sebelum memulai
Sebelum membuat workload batch serverless dengan akselerator GPU terpasang, lakukan hal berikut:
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataproc, Compute Engine, and Cloud Storage.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataproc, Compute Engine, and Cloud Storage.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
- Klik Buat bucket.
- Di halaman Buat bucket, masukkan informasi bucket Anda. Untuk melanjutkan ke
langkah berikutnya, klik Lanjutkan.
- Untuk Beri nama bucket, masukkan nama yang memenuhi persyaratan penamaan bucket.
-
Untuk Pilih tempat untuk menyimpan data, lakukan tindakan berikut:
- Pilih opsi Jenis lokasi.
- Pilih opsi Lokasi.
- Untuk Memilih kelas penyimpanan default untuk data Anda, pilih kelas penyimpanan.
- Untuk Memilih cara mengontrol akses ke objek, pilih opsi Kontrol akses.
- Untuk Setelan lanjutan (opsional), tentukan metode enkripsi, kebijakan retensi, atau label bucket.
- Klik Buat.
Membuat workload batch serverless dengan akselerator GPU
Kirimkan workload batch Dataproc Serverless yang menggunakan GPU NVIDIA L4 untuk menjalankan tugas PySpark yang diparalelkan. Ikuti langkah-langkah berikut menggunakan gcloud CLI:
Klik Luaskan me, lalu buat dan simpan kode PySpark yang tercantum ke file
test-py-spark-gpu.py
di komputer lokal menggunakan editor teks atau kode.#!/usr/bin/env python """S8s Accelerators Example.""" import subprocess from typing import Any from pyspark.sql import SparkSession from pyspark.sql.functions import col from pyspark.sql.types import IntegerType from pyspark.sql.types import StructField from pyspark.sql.types import StructType spark = SparkSession.builder.appName("joindemo").getOrCreate() def get_num_gpus(_: Any) -> int: """Returns the number of GPUs.""" p_nvidia_smi = subprocess.Popen( ["nvidia-smi", "-L"], stdin=None, stdout=subprocess.PIPE ) p_wc = subprocess.Popen( ["wc", "-l"], stdin=p_nvidia_smi.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, ) [out, _] = p_wc.communicate() return int(out) num_workers = 5 result = ( spark.sparkContext.range(0, num_workers, 1, num_workers) .map(get_num_gpus) .collect() ) num_gpus = sum(result) print(f"Total accelerators: {num_gpus}") # Run the join example schema = StructType([StructField("value", IntegerType(), True)]) df = ( spark.sparkContext.parallelize(range(1, 10000001), 6) .map(lambda x: (x,)) .toDF(schema) ) df2 = ( spark.sparkContext.parallelize(range(1, 10000001), 6) .map(lambda x: (x,)) .toDF(schema) ) joined_df = ( df.select(col("value").alias("a")) .join(df2.select(col("value").alias("b")), col("a") == col("b")) .explain() )
Gunakan gcloud CLI di mesin lokal Anda untuk mengirimkan tugas batch serverless Dataproc Serverless dengan lima pekerja, dengan setiap pekerja yang dipercepat dengan L4 GPU:
gcloud dataproc batches submit pyspark test-py-spark-gpu.py \ --project=PROJECT_ID \ --region=REGION \ --deps-bucket=BUCKET_NAME \ --version=1.1 \ --properties=spark.dataproc.executor.compute.tier=premium,spark.dataproc.executor.disk.tier=premium,spark.dataproc.executor.resource.accelerator.type=l4,spark.executor.instances=5,spark.dataproc.driverEnv.LANG=C.UTF-8,spark.executorEnv.LANG=C.UTF-8,spark.shuffle.manager=com.nvidia.spark.rapids.RapidsShuffleManager
Catatan:
- PROJECT_ID: ID project Google Cloud Anda.
- REGION: Region Compute Engine yang tersedia untuk menjalankan beban kerja.
- BUCKET_NAME: Nama bucket Cloud Storage Anda. Spark mengupload dependensi workload ke folder
/dependencies
di bucket ini sebelum menjalankan workload batch. - --version: Semua Runtime Serverless Dataproc yang didukung menambahkan library RAPIDS ke setiap node beban kerja yang dipercepat GPU. Saat ini, hanya runtime versi 1.1 yang menambahkan library XGBoost ke setiap node beban kerja yang dipercepat GPU.
--properties (lihat Properti alokasi resource Spark) :
spark.dataproc.driverEnv.LANG=C.UTF-8
danspark.executorEnv.LANG=C.UTF-8
(wajib dengan versi runtime sebelum2.2
): Properti ini menetapkan karakter default yang disetel ke C.UTF-8.spark.dataproc.executor.compute.tier=premium
(wajib): Beban kerja yang dipercepat GPU ditagih menggunakan Unit Komputasi Data (DCU) premium. Lihat Harga Akselerator Dataproc Serverless.spark.dataproc.executor.disk.tier=premium
(wajib): Node dengan akselerator A100-40, A100-80, atau L4 harus menggunakan tingkat disk premium.spark.dataproc.executor.resource.accelerator.type=l4
(wajib): Hanya satu jenis GPU yang harus ditentukan. Contoh tugas memilih GPU L4. Jenis akselerator berikut dapat ditentukan dengan nama argumen berikut:GPU type Nama argumen A100 40GB a100-40
A100 80GB a100-80
spark.executor.instances=5
(wajib): Minimal dua. Tetapkan ke lima untuk contoh ini.spark.executor.cores
(opsional): Anda dapat menetapkan properti ini untuk menentukan jumlah vCPU inti. Nilai yang valid untuk GPU L4 adalah4
, default, atau8
,12
, atau16
. Satu-satunya nilai yang valid dan default untuk GPU A100 adalah12
.spark.dataproc.executor.disk.size
(opsional untukA100-40
danA100-80
GPU): Dataproc Serverless menetapkan ukuran disk SSD GPU default ke 375 GB. Anda dapat mengubah ukuran saat menggunakan GPU A100 40 atau A100 80 (lihat Properti alokasi resource Spark). GPU L4 memerlukan ukuran 375 GB. Jika Anda menetapkan properti ini ke nilai yang berbeda saat mengirimkan beban kerja yang diakselerasi L4, error akan terjadi.spark.executor.memory
(opsional) danspark.executor.memoryOverhead
(opsional): Anda dapat menetapkan salah satu properti ini, tetapi tidak keduanya. Jumlah memori tersedia yang tidak dipakai oleh properti yang ditetapkan akan diterapkan ke properti yang tidak disetel. Sebagai default,spark.executor.memoryOverhead
ditetapkan ke 40% dari memori yang tersedia untuk beban kerja batch PySpark, dan 10% untuk beban kerja lainnya (lihat Properti alokasi resource Spark).Tabel berikut menunjukkan jumlah memori maksimum yang dapat ditetapkan untuk berbagai konfigurasi GPU A100 dan L4. Nilai minimum untuk kedua properti tersebut adalah
1024
MB.A100 (40 GB) A100 (80 GB) L4 (4 core) L4 (8 core) L4 (12 core) L4 (16 core) Total memori maksimum (MB) 78040 165080 13384 26768 40152 53536 Properti Spark RAPIDS (opsional): Secara default, Dataproc Serverless menetapkan nilai properti Spark RAPIDS berikut:
spark.plugins
=com.nvidia.spark.SQLPluginspark.executor.resource.gpu.amount
=1spark.task.resource.gpu.amount
=1/$spark_executor_coresspark.shuffle.manager
=''. Secara default, properti ini tidak ditetapkan. Namun, NVIDIA merekomendasikan untuk mengaktifkan pengelola pengacakan RAPIDS saat menggunakan GPU untuk meningkatkan performa. Untuk melakukannya, tetapkanspark.shuffle.manager=com.nvidia.spark.rapids.RapidsShuffleManager
saat Anda mengirimkan beban kerja.
Lihat Akselerator RAPIDS untuk Konfigurasi Apache Spark untuk menetapkan properti RAPIDS Spark, dan Akselerator RAPIDS untuk Konfigurasi Lanjutan Apache Spark untuk menetapkan properti lanjutan Spark.