Dataproc bietet die Möglichkeit, Grafikprozessoren (Graphics Processing Units, GPUs) zu den Master- und Worker-Knoten für Google Compute Engine in einem Dataproc-Cluster hinzuzufügen. Sie können diese GPUs verwenden, um bestimmte Arbeitslasten wie maschinelles Lernen und Datenverarbeitung in Ihren Instanzen zu beschleunigen.
Weitere Informationen zu den Vorteilen von GPUs und den unterschiedlichen Arten von GPU-Hardware finden Sie unter GPUs in Compute Engine.
Hinweise
- GPUs erfordern spezielle Treiber und Software. Diese Elemente sind auf Dataproc-Clustern nicht vorinstalliert.
- Lesen Sie mehr über die GPU-Preisgestaltung für Compute Engine, um zu erfahren, mit welchen Kosten die Nutzung von GPUs in Ihren Instanzen verbunden ist.
- Lesen Sie mehr über die Einschränkungen für Instanzen mit GPUs, um zu erfahren, wie sich diese Instanzen von Nicht-GPU-Instanzen unterscheiden.
- Prüfen Sie auf der Seite "Kontingente" für Ihr Projekt, ob ausreichend GPU-Kontingente (
NVIDIA_T4_GPUS
,NVIDIA_P100_GPUS
oderNVIDIA_V100_GPUS
) vorhanden sind. Wenn auf der Seite "Kontingente" keine GPUs aufgeführt sind oder Sie zusätzliche GPU-Kontingente benötigen, können Sie eine Erhöhung des Kontingents beantragen.
GPU-Typen
Dataproc-Knoten unterstützen die folgenden GPU-Typen. Sie müssen angeben, GPU-Typ, wenn Sie GPUs an Ihren Dataproc-Cluster anhängen.
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 Virtual Workstationsnvidia-tesla-p4-vws
– NVIDIA® Tesla® P4 Virtual Workstationsnvidia-tesla-t4-vws
– NVIDIA® Tesla® T4 Virtual Workstations
GPUs Clustern hinzufügen
gcloud
Fügen Sie dem Master-, den primären und den sekundären Worker-Knoten in einem Dataproc-Cluster GPUs hinzu, wenn Sie den Cluster mit den Flags ‑‑master-accelerator
, ‑‑worker-accelerator
und ‑‑secondary-worker-accelerator
erstellen. Diese Flags verwenden zwei Werte:
- den GPU-Typ, der dem Knoten hinzugefügt werden soll
- die Anzahl der GPUs, die dem Knoten hinzugefügt werden sollen
Der GPU-Typ ist erforderlich, die Anzahl der GPUs ist optional (der Standardwert ist 1 GPU).
Example:
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
Damit Sie GPUs in Ihrem Cluster verwenden können, müssen Sie GPU-Treiber installieren.
REST API
Fügen Sie dem Haupt-, den primären und den Worker-Knoten auf Abruf in einem Dataproc-Cluster GPUs hinzu, indem Sie die Felder InstanceGroupConfig.AcceleratorConfig acceleratorTypeUri
und acceleratorCount
als Teil der cluster.create-API-Anfrage ausfüllen.
Console
Klicken Sie in den Abschnitten für Master- und Worker-Knoten der Bereich „Knoten“ im Bereich Cluster erstellen konfigurieren Seite in der Google Cloud Console, um die Anzahl der GPUs und den GPU-Typ anzugeben. für die Knoten.
GPU-Treiber installieren
Zum Verwenden von GPUs, die Dataproc-Knoten hinzugefügt wurden, sind GPU-Treiber erforderlich. Sie können GPU-Treiber installieren, Folgen Sie dazu der Anleitung für diese Initialisierungsaktion.
Installieren des GPU-Treibers bestätigen
Nachdem Sie den GPU-Treiber auf den Dataproc-Knoten installiert haben, können Sie prüfen, ob der Treiber ordnungsgemäß funktioniert. Stellen Sie eine SSH-Verbindung zum Masterknoten Ihres Dataproc-Clusters her und führen Sie den folgenden Befehl aus:
nvidia-smi
Wenn der Treiber ordnungsgemäß funktioniert, umfasst die Ausgabe die Treiberversion und die GPU-Statistiken (siehe Installieren des GPU-Treibers bestätigen).
Spark-Konfiguration
Wenn Sie einen Job an Spark senden, können Sie das Attribut spark.executorEnv
runtime environment property (Laufzeitumgebungsattribut) der Spark-Konfiguration mit der Umgebungsvariablen LD_PRELOAD
verwenden, um die erforderlichen Bibliotheken vorab zu laden.
Beispiel:
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
Beispiel für GPU-Job
Sie können GPUs in Cloud Dataproc testen, indem Sie einen der folgenden Jobs ausführen:
- Führen Sie eines der Spark ML-Beispiele aus.
- Führen Sie das folgende Beispiel mit
spark-shell
aus, um eine Matrixberechnung durchzuführen:
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!")