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
- Achten Sie darauf, dass Sie TensorFlow 2.4 oder eine neuere Version verwenden.
Installieren Sie das Vertex AI SDK mit dem Plug-in
cloud_profiler
. Führen Sie in Ihrem lokalen Docker-Container Folgendes aus:pip install google-cloud-aiplatform[cloud_profiler]
Sie benötigen eine Vertex AI TensorBoard-Instanz. Eine Anleitung finden Sie unter Vertex AI TensorBoard-Instanz erstellen.
Sie benötigen ein Dienstkonto mit den Rollen
roles/storage.admin
undroles/aiplatform.user
. Eine Anleitung finden Sie unter Dienstkonto mit erforderlichen Berechtigungen erstellen.Zum Speichern von Vertex AI TensorBoard-Logs benötigen Sie einen Cloud Storage-Bucket. Eine Anleitung finden Sie unter Cloud Storage-Bucket zum Speichern von Vertex AI TensorBoard-Logs erstellen.
Profiler aktivieren
Fügen Sie Ihrem Trainingsskript Folgendes hinzu, um den Profiler für Ihren Trainingsjob zu aktivieren:
Fügen Sie den
cloud_profiler
-Import auf oberster Ebene hinzu:from google.cloud.aiplatform.training_utils import cloud_profiler
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 Rollenroles/storage.admin
undroles/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.
Wechseln Sie in der Google Cloud Console auf der Seite Training zum Tab Benutzerdefinierte Jobs.
Klicken Sie auf den Namen des gerade erstellten Trainingsjobs, um die Seite mit den Jobdetails aufzurufen.
Klicken Sie auf TensorBoard öffnen.
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.
Rufen Sie in der Console die Seite „Vertex AI Experiments“ auf.
Wählen Sie die Region des gerade erstellten Trainingsjobs aus.
Klicken Sie neben dem Namen des Trainingsjobs auf TensorBoard öffnen.
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:
- Klicken Sie auf Profil erfassen.
Geben Sie in das Feld Profildienst-URL(s) oder TPU-Name Folgendes ein:
workerpool0-0
Wählen Sie als Adresstyp die Option IP-Adresse aus.
Klicken Sie auf Capture.
Notebook
Nächste Schritte
- Informationen zu den Profiler-Tools und zu ihrer Verwendung zur Optimierung der Modellleistung finden Sie in der Dokumentation zu TensorFlow Profiler.