GPUs Clustern hinzufügen

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 oder NVIDIA_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 den GPU-Typ angeben, wenn Sie Ihrem Dataproc-Cluster GPUs hinzufügen.

  • 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-tesla-p100-vws – NVIDIA® Tesla® P100 Virtual Workstations
  • nvidia-tesla-p4-vws – NVIDIA® Tesla® P4 Virtual Workstations
  • nvidia-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:

  1. den GPU-Typ, der dem Knoten hinzugefügt werden soll
  2. 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 der Google Cloud Console auf der Seite Cluster erstellen im Bereich „Knoten konfigurieren“ auf CPU PLATFORM AND GPU→GPUs→ADD GPU, um die Anzahl der GPUs und den GPU-Typ für die Knoten anzugeben.

GPU-Treiber installieren

Zum Verwenden von GPUs, die Dataproc-Knoten hinzugefügt wurden, sind GPU-Treiber erforderlich. Sie können GPU-Treiber installieren, indem Sie der Anleitung für diese Initialisierungsaktion folgen.

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:

  1. Führen Sie eines der Spark ML-Beispiele aus.
  2. 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!")

Nächste Schritte