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:
- Benutzerdefinierten Container erstellen:
- 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.
- Ihren Docker-Container lokal erstellen und ausf�hren
- 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:
Schreiben Sie Ihren Trainingscode. Verwenden Sie dann den Befehl
local-run
der gcloud-Befehlszeile, um ein benutzerdefiniertes Container-Image zu erstellen und zu testen, das auf Ihrem Trainingscode basiert, ohne selbst ein Dockerfile zu schreiben.Dieser Workflow kann einfacher sein, wenn Sie nicht mit Docker vertraut sind. Wenn Sie diesen Workflow befolgen, k�nnen Sie den Rest dieses Abschnitts �berspringen.
Schreiben Sie Ihren Trainingscode. Schreiben Sie dann ein Dockerfile und erstellen Sie ein Container-Image. Testen Sie den Container lokal.
Dieser Workflow bietet mehr Flexibilit�t, da Sie das Container-Image nach Bedarf anpassen k�nnen.
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:
|
WORKDIR /path/to/directory |
Gibt das Verzeichnis im Image an, in dem nachfolgende Anweisungen ausgef�hrt werden. | /root |
|
Installiert zus�tzliche Pakete mit pip .Hinweis: Wenn Ihr Basis-Image |
Beispielpakete:
|
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:
|
|
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
- Konzepte f�r die Verwendung von Containern
- Weitere Anforderungen von zus�tzlichen Trainingscodes f�r benutzerdefiniertes Training
- Lernen Sie, wie Sie einen benutzerdefinierten Trainingsjob erstellen oder eine Trainingspipeline erstellen, die Ihren benutzerdefinierten Container verwendet