Benutzerdefiniertes Container-Image f�r das Training erstellen

Die Verwendung eines benutzerdefinierten Container-Image bietet die gr��te Flexibilit�t f�r das Training in Vertex AI. Informationen zu den Unterschieden bei der Verwendung von benutzerdefinierten Container-Images zur Verwendung einer Python-Trainingsanwendung mit einem vordefinierten Container finden Sie unter Anforderungen an Trainingscodes.

Die Anleitung f�hrt Sie durch die folgenden Schritte:

  1. Benutzerdefinierten Container erstellen:
    1. Ein Dockerfile schreiben, das Ihren Container f�r die Arbeit mit Vertex AI einrichtet und die Abh�ngigkeiten enth�lt, die f�r Ihre Trainingsanwendung erforderlich sind.
    2. Ihren Docker-Container lokal erstellen und ausf�hren
  2. Container-Image per Push an Artifact Registry �bertragen

Hinweis

Informationen zum Konfigurieren eines Artifact Registry-API-Repositorys und zum Einrichten von Docker in Ihrer Entwicklungsumgebung finden Sie in der Kurzanleitung zu Artifact Registry f�r Docker. F�hren Sie speziell die folgenden Schritte der Kurzanleitung aus:

  • Hinweis
  • Shell ausw�hlen
  • Docker-Repository erstellen
  • Authentifizierung konfigurieren

Benutzerdefiniertes Container-Image erstellen

Wir empfehlen zwei m�gliche Workflows zum Erstellen eines benutzerdefinierten Container-Images:

Der Rest dieses Abschnitts f�hrt Sie durch ein Beispiel f�r letzteren Workflow.

Trainingscode

Sie k�nnen Trainingscode mit beliebigen Abh�ngigkeiten in jeder Programmiersprache schreiben. Achten Sie darauf, dass Ihr Code die Anforderungen an den Trainingscode erf�llt. Wenn Sie planen, Hyperparameter-Feinabstimmung, GPUs oder verteiltes Training zu verwenden, lesen Sie unbedingt die entsprechenden Abschnitte dieses Dokuments. Diese Abschnitte beschreiben spezifische �berlegungen zur Verwendung der Features mit benutzerdefinierten Containern.

Dockerfile erstellen

Erstellen Sie ein Dockerfile, um alle Anleitungen zum Erstellen des Container-Image anzugeben.

In diesem Abschnitt wird beschrieben, wie Sie ein allgemeines Beispiel f�r ein Dockerfile erstellen, das f�r das benutzerdefinierte Training verwendet werden soll. Weitere Informationen zum Erstellen eines Container-Images finden Sie in der Kurzanleitung zur Docker-Dokumentation.

F�r die Verwendung mit Vertex AI muss Ihr Dockerfile Befehle f�r die folgenden Aufgaben enthalten:

  • Basis-Image ausw�hlen
  • Zus�tzliche Abh�ngigkeiten installieren
  • Trainingscode in das Image kopieren
  • Einstiegspunkt f�r Vertex AI zum Aufrufen Ihres Trainingscodes konfigurieren

Ihr Dockerfile kann je nach Ihren Anforderungen zus�tzliche Logik enthalten. Weitere Informationen zu den einzelnen Anweisungen finden Sie in der Dockerfile-Referenz.

Dockerfile-Befehl Beschreibung Beispiel(e)
FROM image:tag Gibt ein Basis-Image und sein Tag an.

Beispiele f�r Basis-Images mit Tags:

  • pytorch/pytorch:latest
  • tensorflow/tensorflow:nightly
  • python:2.7.15-jessie
  • nvidia/cuda:9.0-cudnn7-runtime
WORKDIR /path/to/directory Gibt das Verzeichnis im Image an, in dem nachfolgende Anweisungen ausgef�hrt werden. /root
RUN pip install pkg1 pkg2 pkg3 Installiert zus�tzliche Pakete mit pip.

Hinweis: Wenn Ihr Basis-Image pip nicht enth�lt, m�ssen Sie einen Befehl zur Installation des Tools hinzuf�gen, bevor Sie weitere Pakete installieren.

Beispielpakete:

  • google-cloud-storage
  • cloudml-hypertune
  • pandas
COPY src/foo.py dest/foo.py Kopiert den Code f�r die Trainingsanwendung in das Image. Je nachdem, wie die Trainingsanwendung aufgebaut ist, umfasst dies wahrscheinlich mehrere Dateien.

Beispielnamen von Dateien in der Trainingsanwendung:

  • model.py
  • task.py
  • data_utils.py
ENTRYPOINT ["exec", "file"] Legt den Einstiegspunkt fest, �ber den der Trainingscode zur Ausf�hrung aufgerufen wird. Wenn Sie das benutzerdefinierte Training starten, k�nnen Sie diesen Einstiegspunkt �berschreiben. Geben Sie dazu das Feld command in Ihrer ContainerSpec an. Sie k�nnen auch das Feld args in der ContainerSpec angeben, um zus�tzliche Argumente f�r den Einstiegspunkt bereitzustellen (und die CMD-Anweisung des Container-Images zu �berschreiben, wenn es eine solche hat). ["python", "task.py"]

Die Logik im Dockerfile kann je nach Ihren Anforderungen variieren, im Allgemeinen sieht sie jedoch so aus:

# Specifies base image and tag
FROM image:tag
WORKDIR /root

# Installs additional packages
RUN pip install pkg1 pkg2 pkg3

# Downloads training data
RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

# Copies the trainer code to the docker image.
COPY your-path-to/model.py /root/model.py
COPY your-path-to/task.py /root/task.py

# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "task.py"]

(Optional) Dockerfile f�r TPU-VMs anpassen

Wenn Sie in Vertex AI mit einer TPU-VM trainieren m�chten, m�ssen Sie das Dockerfile anpassen, um speziell erstellte Versionen der Bibliotheken tensorflow und libtpu zu installieren. Weitere Informationen finden Sie unter Container f�r die Verwendung mit einer TPU-VM anpassen.

Container-Image erstellen

Erstellen Sie den richtigen Image-URI mithilfe von Umgebungsvariablen und anschlie�end das Docker-Image:

export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export REPO_NAME=REPOSITORY_NAME
export IMAGE_NAME=IMAGE_NAME
export IMAGE_TAG=IMAGE_TAG
export IMAGE_URI=us-central1-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}

docker build -f Dockerfile -t ${IMAGE_URI} ./

Ersetzen Sie in diesen Befehlen Folgendes:

  • REPOSITORY_NAME: Name des Artifact Registry-Repositorys, das Sie im Abschnitt Vorbereitung erstellt haben.
  • IMAGE_NAME : ein Name Ihrer Wahl f�r das Container-Image.
  • IMAGE_TAG: ein Tag Ihrer Wahl f�r diese Version des Container-Images.

Weitere Informationen zu den Artifact Registry-Anforderungen zur Benennung eines Container-Image

Container lokal ausf�hren (optional)

Verifizieren Sie das Container-Image, indem Sie es lokal als Container ausf�hren. Sie m�chten den Trainingscode wahrscheinlich f�r ein kleineres Dataset oder f�r eine k�rzere Anzahl von Iterationen ausf�hren als in Vertex AI. Wenn beispielsweise das Einstiegspunktskript in Ihrem Container-Image ein --epochs-Flag akzeptiert, um zu steuern, f�r wie viele Epochen es ausgef�hrt wird, k�nnen Sie den folgenden Befehl ausf�hren:

docker run ${IMAGE_URI} --epochs 1

�bertragen Sie den Container per Push in die Artifact Registry.

Wenn die lokale Ausf�hrung funktioniert, k�nnen Sie den Container per Push in Artifact Registry �bertragen.

F�hren Sie als Erstes gcloud auth configure-docker us-central1-docker.pkg.dev aus, wenn Sie dies noch nicht in Ihrer Entwicklungsumgebung getan haben. F�hren Sie dann den folgenden Befehl aus:

docker push ${IMAGE_URI}

Artifact Registry-Berechtigungen

Wenn Sie ein Artifact Registry-Image aus demselben Google Cloud-Projekt verwenden, in dem Sie Vertex AI verwenden, m�ssen Sie keine Berechtigungen konfigurieren. Sie k�nnen sofort einen benutzerdefinierten Trainingsjob erstellen, der Ihr Container-Image verwendet.

Wenn Sie das Container-Image jedoch nicht in dem Google Cloud-Projekt, in dem Sie Vertex AI verwenden m�chten, per Push in Artifact Registry �bertragen haben, m�ssen Sie dem Vertex AI-Dienst-Agent f�r Ihr Vertex AI-Projekt die Berechtigung erteilen, das Image aus dem anderen Projekt abzurufen. Weitere Informationen zum Vertex AI-Dienst-Agent und wie Sie ihm Berechtigungen zuweisen.

Artifact Registry

Informationen dazu, wie Sie dem Vertex AI-Dienst-Agent Zugriff auf Ihr Artifact Registry-Repository gew�hren, finden Sie in der Artifact Registry-Dokumentation unter Repository-spezifische Berechtigungen erteilen.

N�chste Schritte