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 diese Anleitung mithilfe von Cloud Shell oder mit Befehlszeilentools lokal ausführen. In Cloud Shell sind die in dieser Anleitung verwendeten Befehlszeilentools gcloud
, docker
und kubectl
vorinstalliert. Wenn Sie Cloud Shell verwenden, müssen Sie diese Befehlszeilentools nicht auf Ihrer Workstation 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 die 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
Sie haben die Google Cloud CLI und Docker installiert, als Sie die ersten Schritte ausgeführt haben.
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
Um das Container-Image zu erstellen und in Artifact Registry hochzuladen, 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