profila le prestazioni dell'addestramento dei modelli utilizzando il profiler Vertex AI TensorBoard

Questa pagina mostra come abilitare il profiler di Vertex AI TensorBoard in modo da poter eseguire il debug delle prestazioni di addestramento dei modelli per i job di addestramento personalizzato.

L'addestramento dei modelli può essere costoso dal punto di vista del calcolo. Il profiler Vertex AI TensorBoard ti consente di monitorare e ottimizzare le prestazioni di addestramento dei modelli aiutandoti a comprendere il consumo di risorse delle operazioni di addestramento. Con queste informazioni, puoi individuare e risolvere i colli di bottiglia delle prestazioni per addestrare i modelli in modo più rapido ed economico.

Prima di iniziare

Abilita profiler Vertex AI TensorBoard

Per abilitare il profiler Vertex AI TensorBoard per il job di addestramento, aggiungi quanto segue allo script di addestramento:

  1. Aggiungi l'importazione di cloud_profiler alle importazioni di primo livello:

    from google.cloud.aiplatform.training_utils import cloud_profiler
    
  2. Inizializza il plug-in cloud_profiler aggiungendo:

    cloud_profiler.init()
    

Esempio

Ecco uno script di addestramento di esempio:

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

Accedi alla dashboard del profiler di Vertex AI TensorBoard

Dopo aver configurato lo script di addestramento per abilitare il profiler di Vertex AI TensorBoard, esegui lo script di addestramento con un'istanza di Vertex AI TensorBoard.

Nello script di addestramento, assicurati che le configurazioni siano le seguenti:

  • Imposta BASE_OUTPUT_DIR: sul bucket Cloud Storage in cui vuoi archiviare i log di Vertex AI TensorBoard generati dallo script di addestramento.
  • Imposta 'serviceAccount': sull'account di servizio che hai creato con i ruoli roles/storage.admin e roles/aiplatform.user.
  • Imposta 'tensorboard': sul nome completo dell'istanza di Vertex AI TensorBoard che vuoi utilizzare con questo job di addestramento. Il nome completo ha il seguente formato:

    projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
    

Esistono due modi per accedere alla dashboard del profiler di Vertex AI TensorBoard dalla console Google Cloud:

  • Dalla pagina Job personalizzati.
  • Dalla pagina Esperimenti.

Accedi alla dashboard del profiler tramite la pagina Job personalizzati

Puoi utilizzare questo metodo per accedere alla dashboard del profiler di Vertex AI TensorBoard anche se il job di addestramento è nello stato Terminato.

  1. Nella console Google Cloud, vai alla scheda Job personalizzati nella pagina Addestramento.

    Vai a Job personalizzati

  2. Fai clic sul nome del job di addestramento appena creato per andare alla pagina dei dettagli del job.

  3. Fai clic su Apri TensorBoard.

  4. Fai clic sulla scheda Profilo.

Accedi alla dashboard del profiler dalla pagina Esperimenti

Puoi utilizzare questo metodo per accedere alla dashboard del profiler di Vertex AI TensorBoard solo quando il job di addestramento è nello stato In esecuzione.

  1. Nella console Google Cloud, vai alla pagina degli esperimenti di Vertex AI.

    Vai agli esperimenti di Vertex AI

  2. Seleziona la regione del job di addestramento che hai appena creato.

  3. Fai clic su Apri TensorBoard accanto al nome del job di addestramento.

  4. Fai clic sulla scheda Profilo.

Acquisisci una sessione di profilazione

Per acquisire una sessione di profilazione, il job di addestramento deve essere in stato In esecuzione. Nella scheda Profile (Profilo) nell'istanza di Vertex AI TensorBoard, esegui questi passaggi:

  1. Fai clic su Acquisisci profilo.
  2. Nel campo URL servizio profilo o nome TPU, inserisci:

    workerpool0-0
    
  3. In Tipo di indirizzo, seleziona Indirizzo IP.

  4. Fai clic su Acquisisci.

Blocco note

Passaggi successivi