Wenn Sie benutzerdefiniertes Training zum Trainieren von Modellen verwenden, können Sie Ihren Trainingsjob so einrichten, dass Ihre Vertex AI TensorBoard-Logs automatisch in Vertex AI TensorBoard hochgeladen werden.
Mit dieser Integration können Sie Ihr Training nahezu in Echtzeit überwachen, da Vertex AI TensorBoard-Logs in Vertex AI TensorBoard zu dem Zeitpunkt gestreamt werden, in dem sie in Cloud Storage geschrieben werden.
Informationen zur Ersteinrichtung finden Sie unter Für Vertex AI TensorBoard einrichten.
Änderungen an Ihrem Trainingsskript
Ihr Trainingsskript muss so konfiguriert sein, dass TensorBoard-Logs in den Cloud Storage-Bucket geschrieben werden. Dies ist der Speicherort, der vom Vertex AI-Trainingsdienst automatisch über die vordefinierte Umgebungsvariable AIP_TENSORBOARD_LOG_DIR
verfügbar gemacht wird.
Dazu können Sie in der Regel os.environ['AIP_TENSORBOARD_LOG_DIR']
als Logverzeichnis für die Open-Source-TensorBoard-APIs zum Schreiben von Logs bereitstellen. Der Speicherort von AIP_TENSORBOARD_LOG_DIR
wird normalerweise mit der Variable staging_bucket
festgelegt.
Erstellen Sie zum Konfigurieren Ihres Trainingsskripts in TensorFlow 2.x einen TensorBoard-Callback und legen Sie die log_dir
Variable auf os.environ['AIP_TENSORBOARD_LOG_DIR']
fest. Der TensorBoard-Callback ist dann in der TensorFlow model.fit
Callback-Liste enthalten.
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
Weitere Informationen darüber, wie Vertex AI Umgebungsvariablen in Ihrer benutzerdefinierten Trainingsumgebung festlegt, erhalten Sie in diesem Artikel.
Benutzerdefinierten Trainingsjob erstellen
Das folgende Beispiel zeigt, wie Sie einen eigenen benutzerdefinierten Trainingsjob erstellen.
Ein ausführliches Beispiel für das Erstellen eines benutzerdefinierten Trainingsjobs finden Sie unter Benutzerdefiniertes Hello-Training. Die Schritte zum Erstellen benutzerdefinierter Trainingscontainer werden unter Benutzerdefiniertes Container-Image für das Training erstellen erläutert.
Verwenden Sie zum Erstellen eines benutzerdefinierten Trainingsjobs entweder das Vertex AI SDK für Python oder REST.
Python
Python
project
: Ihre Projekt-ID. Sie finden die Projekt-IDs auf der Begrüßungsseite der Google Cloud Console.
location
: Der Speicherort, in dem der CustomJob ausgeführt wird. Dies sollte derselbe Ort sein wie für die bereitgestellte TensorBoard-Instanz.staging_bucket
: Der Cloud Storage-Bucket für das Staging von Artefakten während API-Aufrufen, einschließlich TensorBoard-Logs.display_name
: Anzeigename des benutzerdefinierten Trainingsjobs.script_path
: Der Pfad relativ zum Arbeitsverzeichnis im lokalen Dateisystem zum Skript, das der Einstiegspunkt für Ihren Trainingscode ist.container_uri
: Der URI des Trainingscontainer-Images kann ein vordefinierter Trainingscontainer von Vertex AI oder ein benutzerdefinierter Container sein.model_serving_container_image_uri
: Der URI des Modellbereitstellungscontainers, der für die Bereitstellung des vom Trainingsskript erstellten Modells geeignet ist.dataset_id
: Die ID-Nummer für das Dataset, das für das Training verwendet werden soll.model_display_name
: Anzeigename des trainierten Modells.args
: Befehlszeilenargumente, die an das Python-Skript übergeben werden sollen.replica_count
: Die Anzahl der zu verwendenden Worker-Replikate. In den meisten Fällen ist dies auf 1 für den ersten Worker-Pool festgelegt.machine_type
: Der zu verwendende VM-Typ. Eine Liste der unterstützten VMs finden Sie unter Maschinentypen.accelerator_type
: Der GPU-Typ, der an die einzelnen VMs im Ressourcenpool angehängt werden soll. Eine Liste der unterstützten GPUs finden Sie unter GPUs.accelerator_count
: Die Anzahl der GPUs, die an jede VM im Ressourcenpool angehängt werden soll. Der Standardwert ist1
.training_fraction_split
: Der Anteil des Datasets, der zum Trainieren Ihres Modells verwendet wird.validation_fraction_split
: Der Anteil des Datasets, der zum Validieren des Modells verwendet wird.test_fraction_split
: Der Anteil des Datasets, der zum Bewerten des Modells verwendet wird.sync
: Gibt an, ob diese Methode synchron ausgeführt werden soll.tensorboard_resource_name
: Der Ressourcenname der Vertex TensorBoard-Instanz, in die CustomJob TensorBoard-Logs hochlädt.service_account
: Erforderlich beim Ausführen mit TensorBoard. Weitere Informationen finden Sie unter Dienstkonto mit erforderlichen Berechtigungen erstellen.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- LOCATION_ID: Der Standort, in dem der
CustomJob
ausgeführt werden soll, z. B. us-central1. Dies sollte derselbe Ort sein wie für die bereitgestellte TensorBoard-Instanz. - PROJECT_ID: Ihre Projekt-ID.
- TENSORBOARD_INSTANCE_NAME: (Erforderlich) Der vollständige Name der vorhandenen Vertex AI TensorBoard-Instanz, in der Ihre Vertex AI TensorBoard-Logs gespeichert werden:
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
Hinweis: Wenn TensorBoard-Instanz keine vorhandene Instanz ist, wird bei der Erstellung von customJobs ein 404-Fehler ausgegeben. - GCS_BUCKET_NAME: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- USER_SA_EMAIL: (Erforderlich) Das Dienstkonto, das in den vorherigen Schritten erstellt wurde, oder Ihr eigenes Dienstkonto. "USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com"
- TRAINING_CONTAINER: TRAINING_CONTAINER.
- INVOCATION_TIMESTAMP: "$(date +'%Y%m%d-%H%M%S')"
- JOB_NAME: "tensorboard-example-job-${INVOCATION_TIMESTAMP}"
- BASE_OUTPUT_DIR: (Erforderlich) Der Google Cloud-Pfad, in den die gesamte Ausgabe des Trainings geschrieben wird. "gs://$GCS_BUCKET_NAME/$JOB_NAME"
HTTP-Methode und URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobs
JSON-Text anfordern:
{ "displayName": JOB_NAME, "jobSpec":{ "workerPoolSpecs":[ { "replicaCount": "1", "machineSpec": { "machineType": "n1-standard-8", }, "containerSpec": { "imageUri": TRAINING_CONTAINER, } } ], "base_output_directory": { "output_uri_prefix": BASE_OUTPUT_DIR, }, "serviceAccount": USER_SA_EMAIL, "tensorboard": TENSORBOARD_INSTANCE_NAME, } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID", "displayName": "DISPLAY_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-8" }, "replicaCount": "1", "diskSpec": { "bootDiskType": "pd-ssd", "bootDiskSizeGb": 100 }, "containerSpec": { "imageUri": "IMAGE_URI" } } ], "serviceAccount": "SERVICE_ACCOUNT", "baseOutputDirectory": { "outputUriPrefix": "OUTPUT_URI_PREFIX" }, "tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id" }, "state": "JOB_STATE_PENDING", "createTime": "CREATE-TIME", "updateTime": "UPDATE-TIME" }
Nächste Schritte
- Vertex AI TensorBoard ansehen
- Leistung Ihrer benutzerdefinierten Trainingsjobs mit Cloud Profiler optimieren.