Sie können Ihren Dataproc Serverless-Batcharbeitslasten GPU-Beschleuniger hinzufügen, um folgende Vorteile zu erzielen:
Beschleunigen Sie die Verarbeitung umfangreicher Arbeitslasten für die Datenanalyse.
Beschleunigen Sie das Modelltraining für große Datasets mithilfe von GPU-Bibliotheken für maschinelles Lernen.
Erweiterte Datenanalysen wie Videos oder Natural Language ausführen Datenverarbeitung.
Bei allen unterstützten Dataproc Serverless Spark-Laufzeiten wird jedem Arbeitslastknoten die Spark RAPIDS-Bibliothek hinzugefügt. Die Version 1.1 der serverlosen Dataproc-Spark-Laufzeit enthält außerdem die XGBoost-Bibliothek für Arbeitslastknoten. Diese Bibliotheken ermöglichen eine leistungsstarke Datentransformation und ML-Tools, die Sie in Ihren GPU-beschleunigten Arbeitslasten verwenden können.
GPU-Vorteile
Die Verwendung von GPUs mit Ihren serverlosen Dataproc-Spark-Arbeitslasten bietet folgende Vorteile:
Leistungssteigerung: Die GPU-Beschleunigung kann die Leistung von Spark-Arbeitslasten erheblich steigern, insbesondere bei rechenintensiven Aufgaben wie maschinellem Lernen und Deep Learning, Graphenverarbeitung und komplexen Analysen.
Schnelleres Modelltraining: Bei ML-Aufgaben kann das Anhängen von GPUs den Zeitaufwand für das Training von Modellen erheblich reduzieren, sodass Data Scientists und Engineers, um schnell Iterationen und Tests durchzuführen.
Skalierung: Kunden können Knoten weitere GPUs oder leistungsstärkere GPUs hinzufügen, um immer komplexer werdende Verarbeitungsanforderungen zu erfüllen.
Kosteneffizienz: Obwohl GPUs eine Anfangsinvestition erfordern, können Sie dennoch Kosten erzielen. Einsparungen im Laufe der Zeit aufgrund kürzerer Verarbeitungszeiten und effizienterer Ressourcennutzung.
Erweiterte Datenanalyse: Mit der GPU-Beschleunigung können Sie erweiterte Analysen wie Bild- und Videoanalyse sowie Natural Language Processing auf großen Datenmengen durchführen.
Verbesserte Produkte: Eine schnellere Verarbeitung ermöglicht eine schnellere Entscheidungsfindung und reaktionsfähigere Anwendungen.
Einschränkungen und Überlegungen
Sie können NVIDIA A100- oder NVIDIA L4-GPUs an serverlose Dataproc-Batcharbeitslasten anhängen. A100- und L4-Beschleuniger unterliegen der regionalen Verfügbarkeit von Compute Engine-GPUs.
Die XGBoost-Bibliothek wird nur für Dataproc Serverless bereitgestellt GPU-beschleunigte Arbeitslasten bei Verwendung von Dataproc Serverless Spark-Laufzeitversion 1.x
Für serverlose, GPU-beschleunigte Dataproc-Batches mit XGBoost werden erhöhte Compute Engine-Kontingente verwendet. Wenn Sie beispielsweise eine serverlose Batch-Arbeitslast ausführen möchten, die eine NVIDIA L4-GPU verwendet, müssen Sie das Kontingent für NVIDIA_L4_GPUS zuweisen.
Beschleuniger aktivierte Jobs sind nicht kompatibel mit dem
constraints/compute.requireShieldedVm
Organisationsrichtlinie. Wenn Ihre Organisation diese Richtlinie erzwingt, wird ihr Beschleuniger aktiviert Jobs werden nicht erfolgreich ausgeführt.Sie müssen den Standardzeichensatz auf UTF-8 festlegen, wenn Sie die RAPIDS-GPU-Beschleunigung verwenden mit unterstützte serverlose Dataproc-Laufzeiten vor Version
2.2
. Weitere Informationen finden Sie unter Serverlose Batcharbeitslast mit GPU-Beschleunigern erstellen .
Preise
Siehe Dataproc Serverless-Preise für Beschleunigerpreise.
Hinweis
Führen Sie vor dem Erstellen einer serverlosen Batcharbeitslast mit angehängten GPU-Beschleunigern die folgenden Schritte aus: Gehen Sie so vor:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Dataproc, Compute Engine, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Enable the Dataproc, Compute Engine, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Serverlose Batch-Arbeitslast mit GPU-Beschleunigern erstellen
Reichen Sie eine Dataproc Serverless-Batcharbeitslast ein, für die NVIDIA L4-GPUs zum Ausführen einer parallelisierten PySpark-Aufgabe verwendet werden. Führen Sie über die gcloud CLI die folgenden Schritte aus:
Klicken Sie auf Maximieren und erstellen Sie dann mit einem Text- oder Code-Editor den aufgeführten PySpark-Code in einer
test-py-spark-gpu.py
-Datei auf Ihrem lokalen Computer.#!/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() )
Verwenden Sie die gcloud CLI auf Ihrem lokalen Computer, um den Serverloser Dataproc-Batchjob mit fünf Workern, pro Worker mit L4-GPUs beschleunigt:
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
Hinweise:
- PROJECT_ID: Ihre Google Cloud-Projekt-ID.
- REGION: Eine verfügbare Compute Engine-Region zum Ausführen der Arbeitslast.
- BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets Spark lädt Arbeitslastabhängigkeiten in einen
/dependencies
-Ordner in diesem Bucket hoch, bevor die Batcharbeitslast ausgeführt wird. - --version: Bei allen unterstützten serverlosen Dataproc-Laufzeiten wird jedem Knoten einer GPU-beschleunigten Arbeitslast die RAPIDS-Bibliothek hinzugefügt. Derzeit wird die XGBoost-Bibliothek nur bei der Laufzeitversion 1.1 jedem Knoten einer GPU-beschleunigten Arbeitslast hinzugefügt.
--properties (siehe Spark-Attribute für die Ressourcenzuweisung):
spark.dataproc.driverEnv.LANG=C.UTF-8
undspark.executorEnv.LANG=C.UTF-8
(erforderlich mit Laufzeitversionen vor2.2
): Diese Eigenschaften werden festgelegt. Standardzeichensatz auf C.UTF-8.spark.dataproc.executor.compute.tier=premium
(erforderlich): GPU-beschleunigte Arbeitslasten werden mit Premium-Daten-Compute-Units (DCUs) abgerechnet. Preise für Dataproc Serverless-Beschleunigerspark.dataproc.executor.disk.tier=premium
(erforderlich): Knoten mit A100-40-, A100-80- oder L4-Beschleunigern müssen die Premium-Speicherebene verwenden.spark.dataproc.executor.resource.accelerator.type=l4
(erforderlich): Es muss nur ein GPU-Typ angegeben werden. Im Beispieljob wird die L4-GPU ausgewählt. Die folgenden Beschleunigertypen können mit den folgenden Argumentnamen angegeben werden:GPU-Typ Name des Arguments A100 40GB a100-40
A100 80GB a100-80
spark.executor.instances=5
(erforderlich): Es müssen mindestens zwei sein. Festlegen auf fünf für dieses Beispiel.spark.executor.cores
(optional): Mit dieser Eigenschaft können Sie die Anzahl der Kern-vCPUs angeben. Gültige Werte für L4-GPUs sind4
(Standard),8
,12
oder16
. Der einzige gültige und standardmäßige Wert für A100-GPUs ist12
.spark.dataproc.executor.disk.size
(erforderlich): Für L4-GPUs ist eine Größe von 375 GB erforderlich. Wenn Sie diese Eigenschaft beim Einreichen einer L4-beschleunigten Arbeitslast auf einen anderen Wert festlegen, tritt ein Fehler auf. Wenn Sie ein A100 40 oder A100 80 GPU, gültige Größen: 375 g, 750 g, 1500 g, 3000 g, 6000 g und 9.000 g.spark.executor.memory
(optional) undspark.executor.memoryOverhead
(optional): Sie können eine dieser Optionen festlegen. Eigenschaften, aber nicht beides. Der verfügbare Arbeitsspeicher, der nicht von der festgelegten Property belegt wird, wird auf die Property angewendet, die nicht festgelegt ist. Standardmäßig istspark.executor.memoryOverhead
für PySpark-Batch-Arbeitslasten auf 40 % des verfügbaren Arbeitsspeichers und für andere Arbeitslasten auf 10 % festgelegt (siehe Spark-Ressourcenzuweisungseigenschaften).Die folgende Tabelle zeigt die maximale Speichermenge, die für A100- und L4-GPU-Konfigurationen. Der Mindestwert für beide Eigenschaften beträgt
1024
MB.A100 (40 GB) A100 (80 GB) L4 (4 Kerne) L4 (8 Kerne) L4 (12 Kerne) L4 (16 Kerne) Maximaler Gesamtarbeitsspeicher (MB) 78040 165080 13384 26768 40152 53536 Spark RAPIDS-Attribute (optional): Standardmäßig wird Dataproc Serverless legt die folgenden Spark RAPIDS-Attributwerte fest:
spark.plugins
=com.nvidia.spark.SQLPluginspark.executor.resource.gpu.amount
=1spark.task.resource.gpu.amount
=1/$spark_executor_coresspark.shuffle.manager
=''. Diese Eigenschaft ist standardmäßig nicht festgelegt. NVIDIA empfiehlt jedoch, RAPIDS Shuffle-Manager wenn Sie zur Leistungsverbesserung GPUs verwenden. Legen Sie dazuspark.shuffle.manager=com.nvidia.spark.rapids.RapidsShuffleManager
fest, wenn Sie eine Arbeitslast einreichen.
Informationen zum Festlegen von Spark RAPIDS-Attributen finden Sie unter RAPIDS Accelerator für die Apache Spark-Konfiguration, und unter RAPIDS Accelerator für die erweiterte Konfiguration von Apache Spark. um erweiterte Spark-Attribute festzulegen.