Dataflow-Unterstützung für GPUs

Diese Seite enthält Hintergrundinformationen zur Funktionsweise von GPUs mit Dataflow.

Bevor Sie Ihren Entwicklungsjob mit GPUs beginnen, lesen Sie den Entwickler-Workflow und die Tipps zum Erstellen von Pipelines mit GPUs, die unter Mit GPUs entwickeln beschrieben werden.

Informationen und Beispiele zum Aktivieren von GPUs in Ihren Dataflow-Jobs finden Sie unter GPUs verwenden und Landsat-Satellitenbilder mit GPUs verarbeiten. Weitere Beispiele:

Mit GPUs in Dataflow-Jobs können Sie einige Datenverarbeitungsaufgaben beschleunigen. GPUs können bestimmte Berechnungen schneller ausführen als CPUs. Diese Berechnungen sind in der Regel numerisch oder lineare Algebra, die häufig in Anwendungsfällen im Bereich Bildverarbeitung und maschinelles Lernen verwendet wird. Der Umfang der Leistungsverbesserungen hängt vom Anwendungsfall, der Art der Berechnung und der verarbeiteten Datenmenge ab.

Voraussetzungen für die Verwendung von GPUs in Dataflow

Dataflow führt Nutzercode in Worker-VMs in einem Docker-Container aus. Auf diesen Worker-VMs wird Container-Optimized OS ausgeführt. Damit Dataflow-Jobs GPUs verwenden können, müssen folgende Installationen erfolgen:

Preise

Für Jobs, die GPUs verwenden, fallen Gebühren an, wie unter Preise für Dataflow beschrieben.

Hinweise

Spezifikationen für Maschinentypen

Weitere Informationen zur Unterstützung von Maschinentypen für die einzelnen GPU-Modelle finden Sie unter GPU-Plattformen. GPUs, die mit N1-Maschinentypen unterstützt werden, unterstützen auch die benutzerdefinierten N1-Maschinentypen.

Typ und Anzahl der GPUs definieren die Obergrenzen für die verfügbare Anzahl von vCPUs und Arbeitsspeicher, die Worker haben können. Die entsprechenden Einschränkungen finden Sie im Abschnitt Verfügbarkeit.

Wenn Sie eine höhere Anzahl von CPUs oder Arbeitsspeicher angeben, müssen Sie möglicherweise eine höhere Anzahl von GPUs angeben.

Weitere Informationen finden Sie unter GPUs in Compute Engine.

GPUs und Parallelität der Worker

Bei Python-Pipelines mit der Dataflow Runner v2-Architektur startet Dataflow einen Apache Beam SDK-Prozess pro VM-Kern. Jeder SDK-Prozess wird in einem eigenen Docker-Container ausgeführt und erzeugt somit viele Threads, die jeweils eingehende Daten verarbeiten.

GPUs verwenden mehrere Prozessarchitekturen. GPUs in Dataflow-Workern sind für alle Prozesse und Threads sichtbar. Daher müssen Sie den GPU-Zugriff möglicherweise verwalten, um eine GPU-Überbelegung zu vermeiden. Wenn Sie TensorFlow verwenden, können Sie mit einem der folgenden Vorschläge verhindern, dass GPU-Arbeitsspeicher überbelegt wird:

  • Konfigurieren Sie die Dataflow-Worker so, dass unabhängig von der Anzahl der Worker-vCPUs nur ein containerisierter Python-Prozess gestartet wird. Verwenden Sie für diese Konfiguration beim Starten des Jobs die folgenden Pipelineoptionen:

    • --experiments=no_use_multiple_sdk_containers
    • --number_of_worker_harness_threads

    Weitere Informationen zur Anzahl der zu verwendenden Threads finden Sie unter Anzahl der Threads reduzieren.

  • Verwenden Sie einen Maschinentyp mit nur einer vCPU.

Wenn mehrere TensorFlow-Prozesse dieselbe GPU verwenden, müssen Sie unter Umständen jeden Prozess so konfigurieren, dass nur ein Teil des GPU-Arbeitsspeichers belegt wird. Diese Konfiguration verhindert, dass alle Prozesse gemeinsam GPU-Arbeitsspeicher überbelegen. Da das Erstellen dieser Konfiguration nicht einfach ist, begrenzen Sie die Anzahl der TensorFlow-Prozesse.

Verfügbarkeit

Informationen zu verfügbaren GPU-Typen und zur Konfiguration der Worker-VM finden Sie unter Dataflow-Standorte.

Nächste Schritte