Profiler les performances d'entraînement des modèles à l'aide de Profiler

Cette page explique comment activer Vertex AI TensorBoard Profiler afin de pouvoir déboguer les performances d'entraînement de modèle pour vos tâches d'entraînement personnalisé.

L'entraînement des modèles peut s'avérer coûteux en ressources de calcul. Vertex AI TensorBoard Profiler vous permet de surveiller et d'optimiser les performances de l'entraînement de modèle en vous aidant à comprendre la consommation de ressources des opérations d'entraînement. Grâce à ces informations, vous pouvez identifier et corriger les goulots d'étranglement qui affectent vos performances afin d'entraîner les modèles plus rapidement et à moindre coût.

Avant de commencer

Activer Vertex AI TensorBoard Profiler

Pour activer Vertex AI TensorBoard Profiler pour votre tâche d'entraînement, ajoutez ce qui suit à votre script d'entraînement :

  1. Ajoutez l'importation cloud_profiler aux importations de premier niveau :

    from google.cloud.aiplatform.training_utils import cloud_profiler
    
  2. Initialisez le plug-in cloud_profiler en ajoutant :

    cloud_profiler.init()
    

Exemple

Voici un exemple de script d'entraînement :

#!/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)

Accéder au tableau de bord Vertex AI TensorBoard Profiler

Une fois que vous avez configuré votre script d'entraînement pour activer Vertex AI TensorBoard Profiler, exécutez le script d'entraînement avec une instance TensorBoard Vertex AI.

Dans votre script d'entraînement, vérifiez les configurations suivantes :

  • Définissez BASE_OUTPUT_DIR: sur le bucket Cloud Storage dans lequel vous souhaitez stocker les journaux TensorBoard de Vertex AI générés par votre script d'entraînement.
  • Définissez 'serviceAccount': sur le compte de service que vous avez créé avec les rôles roles/storage.admin et roles/aiplatform.user.
  • Définissez 'tensorboard': sur le nom complet de l'instance TensorBoard Vertex AI que vous souhaitez utiliser avec cette tâche d'entraînement. Le nom complet est au format suivant :

    projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
    

Deux options s'offrent à vous pour accéder au tableau de bord Vertex AI TensorBoard Profiler depuis la console Google Cloud :

  • Depuis la page "Tâches personnalisées".
  • Depuis la page "Tests".

Accéder au tableau de bord de Profiler via la page "Tâches personnalisées"

Vous pouvez employer cette méthode pour accéder au tableau de bord Vertex AI TensorBoard Profiler, même si la tâche d'entraînement est à l'état Terminée.

  1. Dans la console Google Cloud, accédez à l'onglet Tâches personnalisées de la page Entraînement.

    Accéder à la page Tâches personnalisées

  2. Cliquez sur le nom de la tâche d'entraînement que vous venez de créer pour accéder à la page des détails.

  3. Cliquez sur Ouvrir TensorBoard.

  4. Cliquez sur l'onglet Profiler.

Accéder au tableau de bord de Profiler via la page "Tests"

Vous pouvez utiliser cette méthode pour accéder au tableau de bord Vertex AI TensorBoard Profiler uniquement lorsque la tâche d'entraînement est à l'état En cours d'exécution.

  1. Dans la console Google Cloud, accédez à la page "Tests" de Vertex AI.

    Accéder à la page "Tests" de Vertex AI

  2. Sélectionnez la région de la tâche d'entraînement que vous venez de créer.

  3. Cliquez sur Ouvrir TensorBoard à côté du nom de la tâche d'entraînement.

  4. Cliquez sur l'onglet Profiler.

Capturer une session de profilage

Pour capturer une session de profilage, la tâche d'entraînement doit être à l'état En cours d'exécution. Dans l'onglet Profiler de l'instance TensorBoard Vertex AI, procédez comme suit :

  1. Cliquez sur Enregistrer le profil.
  2. Dans le champ URL de service du profil ou nom du TPU, saisissez :

    workerpool0-0
    
  3. Pour Type d'adresse, sélectionnez Adresse IP.

  4. Cliquez sur Capture.

Notebooks

Étapes suivantes