In diesem Dokument wird erläutert, wie Sie einen verteilten PyTorch-Trainingsjob erstellen. Wenn Sie einen verteilten Trainingsjob erstellen, führt AI Platform Training Ihren Code auf einem Cluster von VM-Instanzen (auch Knoten genannt) mit Umgebungsvariablen aus, die verteiltes PyTorch unterstützen. Ausbildung. Damit können Sie den Trainingsjob skalieren, um große Datenmengen zu verarbeiten.
In diesem Leitfaden wird davon ausgegangen, dass Sie vorkonfigurierte PyTorch-Container für das Training verwenden, wie unter Erste Schritte mit PyTorch beschrieben. Für die Anpassung des PyTorch-Code für verteiltes Training sind nur geringfügige Änderungen erforderlich.
Struktur des Trainingsclusters angeben
Konfigurieren Sie für verteiltes PyTorch-Training den Job, um einen Master-Worker-Knoten und einen oder mehrere Worker-Knoten zu verwenden. Diese Rollen verhalten sich wie folgt:
- Master-Worker: Die VM mit Rang 0. Dieser Knoten richtet Verbindungen zwischen den Knoten im Cluster ein.
- Worker: Die verbleibenden Knoten im Cluster. Jeder Knoten hat einen Teil des Trainings, wie durch den Trainingsanwendungscode angegeben.
Informationen zum Angeben von Master-Worker-Knoten und Worker-Knoten für Ihren Trainingscluster finden Sie unter Maschinentypen oder Skalierungsstufen angeben.
Container-Images angeben
Geben Sie beim Erstellen eines Trainingsjobs das Image eines Docker-Containers für den Master-Worker im Feld trainingInput.masterConfig.imageUri
an und geben Sie das Image eines Docker-Containers für jeden Worker im Feld trainingInput.workerConfig.imageUri
an. Liste der vordefinierten PyTorch-Container
Wenn Sie den Trainingsjob mit dem Befehl gcloud ai-platform jobs submit training
erstellen, können Sie diese Felder mit den Flags --master-image-uri
und --worker-image-uri
angeben.
Wenn Sie jedoch das Feld trainingInput.workerConfig.imageUri
nicht angeben, wird dessen Wert standardmäßig auf trainingInput.masterConfig.imageUri
festgelegt. Oft ist es sinnvoll, auf jedem Knoten denselben vorkonfigurierten PyTorch-Container zu verwenden.
Trainingscode aktualisieren
Fügen Sie der Trainingsanwendung den folgenden Code hinzu, um den Trainingscluster zu initialisieren:
import torch
torch.distributed.init_process_group(
backend='BACKEND',
init_method='env://'
)
Ersetzen Sie BACKEND durch eines der unterstützten verteilten Trainings-Back-Ends, die im folgenden Abschnitt beschrieben werden. Das Schlüsselwortargument init_method='env://'
weist PyTorch an, Umgebungsvariablen zur Initialisierung der Kommunikation im Cluster zu verwenden. Weitere Informationen erhalten Sie im Abschnitt Umgebungsvariablen dieser Anleitung.
Aktualisieren Sie außerdem den Trainingscode für die Verwendung der Klasse torch.nn.parallel.DistributedDataParallel
. Wenn Sie in Ihrem Code beispielsweise ein PyTorch-Modul namens model
erstellt haben, fügen Sie die folgende Zeile hinzu:
model = torch.nn.parallel.DistributedDataParallel(model)
Weitere Informationen zur Konfiguration des verteilten Trainings finden Sie in der PyTorch-Dokumentation zu verteiltem Training.
Verteilte Trainings-Back-Ends
AI Platform Training unterstützt die folgenden Back-Ends für verteiltes PyTorch-Training:
gloo
: empfohlen für CPU-Trainingsjobsnccl
: empfohlen für GPU-Trainingsjobs
Lesen Sie mehr über die Unterschiede zwischen Back-Ends.
Umgebungsvariablen
Wenn Sie einen verteilten PyTorch-Trainingsjob erstellen, legt AI Platform Training auf jedem Knoten die folgenden Umgebungsvariablen fest:
WORLD_SIZE
: Die Anzahl der Knoten im Cluster. Diese Variable hat auf jedem Knoten den gleichen Wert.RANK
: Eine eindeutige Kennung für jeden Knoten. Für den Master-Worker ist er auf0
gesetzt. Für jeden Worker wird ein anderer Wert als1
vonWORLD_SIZE - 1
angegeben.MASTER_ADDR
: Der Hostname des Master-Worker-Knotens. Diese Variable hat auf jedem Knoten den gleichen Wert.MASTER_PORT
: Der Port, mit dem der Master-Worker-Knoten kommuniziert. Diese Variable hat auf jedem Knoten den gleichen Wert.
PyTorch verwendet diese Umgebungsvariablen, um den Cluster zu initialisieren.
Nächste Schritte
- Weitere Informationen zum Training mit PyTorch in AI Platform Training erhalten Sie in der Anleitung Erste Schritte mit PyTorch.
- Weitere Informationen zum verteilten PyTorch-Training finden Sie im PyTorch-Leitfaden für verteiltes Training.