Auf dieser Seite erfahren Sie, wie Sie einen Trainingsjob in einer Deep Learning Container-Instanz ausführen und das Container-Image in einem Google Kubernetes Engine-Cluster ausführen.
Hinweis
Führen Sie zuerst die im Folgenden aufgeführten Schritte aus.
Führen Sie die Einrichtungsschritte im Abschnitt „Hinweise“ von Erste Schritte mit einem lokalen Deep-Learning-Containeraus.
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
Aktivieren Sie die APIs von Google Kubernetes Engine, Compute Engine und Artifact Registry.
Befehlszeilentool aufrufen
Sie können dieser Anleitung folgen, indem Sie
Cloud Shell oder
Befehlszeilentools lokal ausführen. In Cloud Shell sind die in dieser Anleitung verwendeten Befehlszeilentools gcloud
, docker
und kubectl
vorinstalliert. Wenn Sie Cloud Shell verwenden,
die Befehlszeilentools
auf Ihrer Workstation zu installieren.
Cloud Shell
So verwenden Sie Cloud Shell:
Öffnen Sie die Google Cloud Console.
Klicken Sie im oberen Bereich des Konsolenfensters auf Cloud Shell aktivieren.
Es öffnet sich eine Cloud Shell-Sitzung in einem neuen Rahmen im unteren Teil der Console und zeigt eine Befehlszeilenaufforderung an.
Lokale Befehlszeile
Führen Sie die folgenden Schritte aus, um Ihre lokale Befehlszeile zu verwenden.
Verwenden Sie die gcloud GLI um das Kubernetes-Befehlszeilentool zu installieren.
kubectl
wird für die Kommunikation mit Kubernetes verwendet. Dies ist das Cluster-Orchestrierungssystem für Deep Learning Container-Cluster.gcloud components install kubectl
Wenn Sie den Einstieg in die Schritte, die Sie installiert haben, die Google Cloud CLI und Docker:
GKE-Cluster erstellen
Führen Sie den folgenden Befehl aus, um in GKE einen Cluster mit zwei Knoten namens pytorch-training-cluster
zu erstellen:
gcloud container clusters create pytorch-training-cluster \
--num-nodes=2 \
--zone=us-west1-b \
--accelerator="type=nvidia-tesla-p100,count=1" \
--machine-type="n1-highmem-2" \
--scopes="gke-default,storage-rw"
Weitere Informationen zu diesen Einstellungen finden Sie in der Dokumentation zum Erstellen von Clustern für die Ausführung von Containern.
Es kann einige Minuten dauern, bis der Cluster erstellt ist.
Statt einen neuen Cluster zu erstellen, können Sie auch einen vorhandenen Cluster in Ihrem Google Cloud-Projekt verwenden. Dazu müssen Sie möglicherweise den folgenden Befehl ausführen, damit das kubectl
-Befehlszeilentool die korrekten Anmeldedaten für den Zugriff auf den Cluster hat:
gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER
Als Nächstes installieren Sie die NVIDIA GPU-Gerätetreiber.
Dockerfile erstellen
Es gibt viele Möglichkeiten, ein Container-Image zu erstellen.
Mit den folgenden Schritten wird gezeigt, wie Sie ein Container-Image mit einem Python-Skript namens trainer.py
erstellen.
So rufen Sie eine Liste der verfügbaren Container-Images auf:
gcloud container images list \
--repository="us-docker.pkg.dev/deeplearning-platform-release/gcr.io"
Unter Container auswählen können Sie den gewünschten Container auswählen.
Im folgenden Beispiel wird gezeigt, wie Sie ein Python-Skript mit dem Namen trainer.py
in einen bestimmten Deep Learning-Containertyp von PyTorch einfügen.
Schreiben Sie zum Erstellen des Dockerfile die unten aufgeführten Befehle in eine Datei mit dem Namen Dockerfile
. In diesem Schritt wird davon ausgegangen, dass Code zum Trainieren eines ML-Modells in einem Verzeichnis namens model-training-code
vorhanden ist und das Haupt-Python-Modul in diesem Verzeichnis den Namen trainer.py
hat. In diesem Szenario wird der Container entfernt, sobald der Job abgeschlossen ist. Daher sollte Ihr Trainingsskript so konfiguriert sein, dass die Ausgabe nach Cloud Storage erfolgt (siehe das Beispielskript für eine Ausgabe nach Cloud Storage) oder in einen nichtflüchtigen Speicher.
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]
Container-Image erstellen und hochladen
So erstellen Sie das Container-Image und laden es in Artifact Registry hoch: verwenden Sie die folgenden Befehle:
export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export IMAGE_REPO_NAME=pytorch_custom_container
export IMAGE_TAG=$(date +%Y%m%d_%H%M%S)
export IMAGE_URI=us-docker.pkg.dev/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG
docker build -f Dockerfile -t $IMAGE_URI ./
docker push $IMAGE_URI
Anwendung bereitstellen
Erstellen Sie eine Datei namens pod.yaml mit dem unten aufgeführten Inhalt. Ersetzen Sie dabei IMAGE_URI durch den URI Ihres Images.
apiVersion: v1
kind: Pod
metadata:
name: gke-training-pod
spec:
containers:
- name: my-custom-container
image: IMAGE_URI
resources:
limits:
nvidia.com/gpu: 1
Führen Sie mit dem kubectl
-Befehlszeilentool den folgenden Befehl aus, um die Anwendung bereitzustellen:
kubectl apply -f ./pod.yaml
Um den Status des Pods festzustellen, führen Sie folgenden Befehl aus:
kubectl describe pod gke-training-pod