Leistung des Modelltrainings mit Cloud Profiler profilieren

Auf dieser Seite erfahren Sie, wie Sie Cloud Profiler aktivieren, um Fehler im Modelltraining für Ihre benutzerdefinierten Trainingsjobs zu beheben.

Trainingsmodelle können rechenintensiv sein. Mit Profiler können Sie die Leistung Ihres Modelltrainings überwachen und optimieren, indem Sie den Ressourcenverbrauch der Trainingsvorgänge verstehen. Anhand dieser Informationen können Sie Leistungsengpässe ermitteln und beheben, um Modelle schneller und kostengünstiger zu trainieren.

Hinweise

Profiler aktivieren

Fügen Sie dem Trainingsskript Folgendes hinzu, um Profiler für Ihren Trainingsjob zu aktivieren:

  1. Fügen Sie den cloud_profiler-Import auf oberster Ebene hinzu:

    from google.cloud.aiplatform.training_utils import cloud_profiler
    
  2. Initialisieren Sie das Plug-in cloud_profiler, indem Sie Folgendes hinzufügen:

    cloud_profiler.init()
    

Beispiel

Hier ein Beispiel für ein Trainingsskript:

#!/usr/bin/env python

import tensorflow as tf
import argparse
import os
from google.cloud.aiplatform.training_utils import cloud_profiler
import time

"""Train an mnist model and use cloud_profiler for profiling."""

def _create_model():
    model = tf.keras.models.Sequential(
        [
            tf.keras.layers.Flatten(input_shape=(28, 28)),
            tf.keras.layers.Dense(128, activation="relu"),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(10),
        ]
    )
    return model

def main(args):
    strategy = None
    if args.distributed:
        strategy = tf.distribute.MultiWorkerMirroredStrategy()

    mnist = tf.keras.datasets.mnist

    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0

    if args.distributed:
        strategy = tf.distribute.MultiWorkerMirroredStrategy()
        with strategy.scope():
            model = _create_model()
            model.compile(
                optimizer="adam",
                loss=tf.keras.losses.sparse_categorical_crossentropy,
                metrics=["accuracy"],
            )
    else:
        model = _create_model()
        model.compile(
            optimizer="adam",
            loss=tf.keras.losses.sparse_categorical_crossentropy,
            metrics=["accuracy"],
        )

    # Initialize the profiler.
    cloud_profiler.init()

    # Use AIP_TENSORBOARD_LOG_DIR to update where logs are written to.
    tensorboard_callback = tf.keras.callbacks.TensorBoard(
        log_dir=os.environ["AIP_TENSORBOARD_LOG_DIR"], histogram_freq=1
    )

    model.fit(
        x_train,
        y_train,
        epochs=args.epochs,
        verbose=0,
        callbacks=[tensorboard_callback],
    )
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--epochs", type=int, default=100, help="Number of epochs to run model."
    )
    parser.add_argument(
        "--distributed", action="store_true", help="Use MultiWorkerMirroredStrategy"
    )
    args = parser.parse_args()
    main(args)

Auf das Profiler-Dashboard zugreifen

Nachdem Sie Ihr Trainingsskript zur Aktivierung von Profiler konfiguriert haben, führen Sie das Trainingsskript mit einer Vertex AI TensorBoard-Instanz aus.

Achten Sie in Ihrem Trainingsskript auf die folgenden Konfigurationen:

  • Setzen Sie BASE_OUTPUT_DIR: auf den Cloud Storage-Bucket, in dem die von Ihrem Trainingsskript generierten Vertex AI TensorBoard-Logs gespeichert werden sollen.
  • Legen Sie 'serviceAccount': auf das Dienstkonto fest, das Sie mit den Rollen roles/storage.admin und roles/aiplatform.user erstellt haben.
  • Legen Sie für 'tensorboard': den vollständig qualifizierten Namen der Vertex AI TensorBoard-Instanz fest, die Sie mit diesem Trainingsjob verwenden möchten. Der vollständig qualifizierte Name hat folgendes Format:

    projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
    

Es gibt zwei Möglichkeiten, über die Google Cloud Console auf das Profiler-Dashboard zuzugreifen:

  • Auf der Seite "Benutzerdefinierte Jobs"
  • Auf der Seite "Experimente"

Profiler-Dashboard über die Seite "Benutzerdefinierte Jobs" aufrufen

Mit dieser Methode können Sie auf das Profiler-Dashboard zugreifen, auch wenn der Trainingsjob den Status Fertig hat.

  1. Wechseln Sie in der Google Cloud Console auf der Seite Training zum Tab Benutzerdefinierte Jobs.

    Zu Benutzerdefinierte Jobs

  2. Klicken Sie auf den Namen des gerade erstellten Trainingsjobs, um die Seite mit den Jobdetails aufzurufen.

  3. Klicken Sie auf TensorBoard öffnen.

  4. Klicken Sie auf den Tab Profil.

Profiler-Dashboard über die Seite "Tests" aufrufen

Sie können diese Methode nur dann für den Zugriff auf das Profiler-Dashboard verwenden, wenn der Trainingsjob den Status Wird ausgeführt hat.

  1. Rufen Sie in der Console die Seite „Vertex AI Experiments“ auf.

    Zu „Vertex AI Experiments“

  2. Wählen Sie die Region des gerade erstellten Trainingsjobs aus.

  3. Klicken Sie neben dem Namen des Trainingsjobs auf TensorBoard öffnen.

  4. Klicken Sie auf den Tab Profil.

Profilerstellungssitzung erfassen

Ihr Trainingsjob muss sich im Status Wird ausgeführt befinden, um eine Profilerstellungssitzung zu erfassen. Führen Sie auf dem Tab Profile in der Vertex AI TensorBoard-Instanz die folgenden Schritte aus:

  1. Klicken Sie auf Profil erfassen.
  2. Geben Sie in das Feld Profildienst-URL(s) oder TPU-Name Folgendes ein:

    workerpool0-0
    
  3. Wählen Sie als Adresstyp die Option IP-Adresse aus.

  4. Klicken Sie auf Capture.

Notebook

Nächste Schritte