Deep-Learning-Container (DL-Container) bereitstellen und verwenden

Ein Deep-Learning-Container ist ein Docker-Container mit vorinstallierten Data-Science-Frameworks, -Bibliotheken und -Tools. Ein Nutzer, z. B. ein Data Scientist, wählt einen einzelnen DL-Container aus und stellt ihn bereit. Der bereitgestellte Container bietet eine leistungsoptimierte, konsistente Umgebung, die das schnelle Erstellen von Prototypen und Implementieren von Workflows unterstützt.

DL-Container bereitstellen

Bevor Sie einen DL-Container verwenden, müssen Sie ein Container-Image auswählen und bereitstellen, in dem Ihr ML-Task ausgeführt wird. Vorgefertigte Frameworks, Bibliotheken und Tools stellen einen DL-Container bereit.

DL-Container mit kubeconfig-Dateien bereitstellen

Die Google Distributed Cloud (GDC) Air Gap-Appliance stellt die folgende kubeconfig-Datei bereit, mit der Ihr DL-Container bereitgestellt wird:

  • CLUSTER_KUBECONFIG: Die kubeconfig-Datei für den Bare-Metal-Kubernetes-Cluster. GDC stellt einen Cluster für alle Arbeitslasten bereit.

Weitere Informationen zum Anmelden in der Benutzeroberfläche und im kubectl-Tool finden Sie unter Anmelden. Informationen zum Abrufen der Datei CLUSTER_KUBECONFIG finden Sie unter kubeconfig-Datei abrufen.

Beispielskript und ‑dataset für maschinelles Lernen (ML) herunterladen

Laden Sie das Beispiel-ML-Skript beginner.ipynb und das Dataset mnist.npz herunter, um die ML-Kurzanleitung auszuführen. In der Anleitung wird gezeigt, wie Sie einen DL-Container bereitstellen und verwenden, um ML-Tests auszuführen.

mkdir -p /tmp/datasets
cd /tmp/datasets

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/beginner.ipynb

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/mnist.npz

Ersetzen Sie GDC_APPLIANCE_URL durch den Domainnamen, der für den Zugriff auf GDC verwendet wird. Wenn Sie eine URL zum ersten Mal öffnen, werden Sie von GDC zur Anmeldeseite Ihres Identitätsanbieters weitergeleitet.

IP-Adresse der Harbor-Registrierung ermitteln

Bevor Sie das Beispielskript und das Dataset verwenden können, müssen Sie den Speicherort des DL-Container-Images in der Harbor-Registry ermitteln. Die Harbor-Registry ist ein Dienst, in dem private Container-Images gespeichert werden.

In der ersten Zeile des Beispielcodes wird der Pfad der Umgebungsvariable KUBECONFIG festgelegt, die die Harbor-Registrierungsadresse abruft. Über die Harbor-Registry-Adresse haben Sie Zugriff auf eine Liste der verfügbaren Container-Images.

In der zweiten Zeile des Beispielcodes verwendet das kubectl-Tool die Umgebungsvariable KUBECONFIG.

In der dritten Zeile des Beispielcodes wird mit dem Befehl REGISTRY_URL#https:// das Präfix https:// aus der URL entfernt und die Harbor-Registrierungsdomain in der Umgebungsvariable REGISTRY_IP gespeichert.

In der letzten Zeile des Beispielcodes ruft das kubectl-Tool das Passwort für den Nutzer admin ab.

export KUBECONFIG=CLUSTER_KUBECONFIG

REGISTRY_URL=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
REGISTRY_IP=${REGISTRY_URL#https://}
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d)

Container-Image auswählen

Sie müssen ein Container-Image für die Bereitstellung auswählen, bevor Sie eine ML-Aufgabe ausführen können. Verwenden Sie die Harbor-Registry-Domain und den Pfad in der folgenden Tabelle aus der Harbor-Registry, um die Liste der verfügbaren Container-Images aufzurufen:

Framework Prozessor Container-Image-Name
Basis GPU base-cu113
Basis CPU base-cpu
TensorFlow Enterprise 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

Diese Tabelle ist nach Framework und Prozessor sortiert. So wählen Sie ein DL-Container-Image aus, mit dem Ihr ML-Test verarbeitet werden kann:

  1. Ermitteln Sie das Framework, das die ML-Tools enthält.
  2. Wählen Sie den Prozessor aus. Sie wählen den Prozessor basierend auf der Art der auszuführenden ML-Aufgabe und der Rechenintensität dieser Aufgabe aus. Wählen Sie beispielsweise einen der GPU-Prozessoren aus, wenn Sie eine rechenintensive ML-Aufgabe haben, und weisen Sie dem DL-Container eine GPU-Ressource zu.

DL-Container erstellen und im Kubernetes-Cluster bereitstellen

Geben Sie zum Erstellen der GDC-Instanz den Pfad zur Datei kubeconfig des Bare-Metal-Kubernetes-Clusters an. Die Umgebungsvariable KUBECONFIG gibt an, in welchem Cluster das Tool kubectl den DL-Container bereitstellt. Mit dem Befehl kubectl apply wird die DL-Containerinstanz bereitgestellt.

Ersetzen Sie CONTAINER_IMAGE_NAME durch das Image, das Sie in Container-Image auswählen aus der Liste der Images ausgewählt haben, und geben Sie das Tag an.

export KUBECONFIG=CLUSTER_KUBECONFIG

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: dl-container-pod
  namespace: NAMESPACE
spec:
  containers:
  - image: gcr.io/private-cloud-staging/notebooks/deeplearning-platform-release/CONTAINER_IMAGE_NAME:CONTAINER_IMAGE_TAG
    command: ["tail", "-f", "/dev/null"]
    name: training
EOF

Bereitgestellten DL-Container verwenden

In den folgenden Themen wird anhand eines Beispiels gezeigt, wie Sie ein DL-Container-Image verwenden, um ein Modell zu trainieren und damit Vorhersagen zu generieren.

Anleitungsdateien in den DL-Container-Pod kopieren

Kopieren Sie die Dateien des Schnellstart-Tutorials in Ihren DL-Container-Pod. Die beginner.ipynb enthält die Schritte zum Trainieren und Verwenden eines Modells für Vorhersagen. Im Tutorial zum ML-Training wird die Dataset-Datei mnist.npz zum Trainieren eines Modells verwendet.

cd /tmp/datasets

kubectl cp beginner.ipynb dl-container-pod:/tmp
kubectl cp mnist.npz dl-container-pod:/tmp

ML-Schnellstartanleitung ausführen

Führen Sie das Tutorial mit den folgenden Befehlen aus. Verwenden Sie die erste Zeile, um den Container-Pod aufzurufen. Wechseln Sie nach dem Aufrufen des Container-Pods zum Verzeichnis tmp und führen Sie das Tool papermill aus, das im DL-Container enthalten ist. Das papermill-Tool führt das Tutorial aus, um ein Notebook zu erstellen, das Vorhersagen generiert.

  1. Geben Sie ein interaktives Terminal in den DL-Pod ein:

    kubectl exec -it dl-container-pod -- /bin/bash
    
  2. Führen Sie im Kontext des DL-Pods die folgenden Befehle aus:

    cd tmp
    papermill beginner.ipynb result.ipynb
    

    Bei der Bereitstellung wird eine result.ipynb-Datei im Verzeichnis /tmp generiert.

  3. Inhalte und Vorhersageausgaben des generierten ML-Modells ansehen:

    cat result.ipynb
    

Optional: DL-Container-Pod löschen

Nachdem Sie den Test im DL-Container-Pod abgeschlossen haben, sollten Sie den Pod löschen:

kubectl delete pod dl-container-pod