Questa pagina mostra come abilitare Cloud Profiler per poter eseguire il debug del rendimento dell'addestramento del modello per i job di addestramento serverless.
L'addestramento dei modelli può essere costoso dal punto di vista computazionale. Profiler ti consente di monitorare e ottimizzare il rendimento dell'addestramento del modello aiutandoti a comprendere il consumo di risorse delle operazioni di addestramento. Grazie a queste informazioni, puoi individuare e correggere i colli di bottiglia delle prestazioni per addestrare i modelli in modo più rapido ed economico.
Prima di iniziare
- Assicurati di utilizzare TensorFlow 2.4 o una versione successiva.
Installa l'SDK Agent Platform con il plug-in
cloud_profiler. Dal container Docker locale, esegui:pip install google-cloud-aiplatform[cloud_profiler]Devi avere un'istanza di Vertex AI TensorBoard. Per istruzioni, vedi Creare un'istanza di Vertex AI TensorBoard.
Devi avere un account di servizio con i ruoli
roles/storage.admineroles/aiplatform.user. Per istruzioni, vedi Creare un account di servizio con le autorizzazioni richieste.Devi avere un bucket Cloud Storage per archiviare i log di Vertex AI TensorBoard. Per istruzioni, vedi Creare un bucket Cloud Storage per archiviare i log di Vertex AI TensorBoard.
Abilitare Profiler
Per abilitare Profiler per il job di addestramento, aggiungi quanto segue allo script di addestramento:
Aggiungi l'importazione
cloud_profileralle importazioni di primo livello:from google.cloud.aiplatform.training_utils import cloud_profilerInizializza il plug-in
cloud_profileraggiungendo: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)
Accedere alla dashboard di Profiler
Dopo aver configurato lo script di addestramento per abilitare Profiler, esegui lo script di addestramento con un'istanza di Vertex AI TensorBoard.
Nello script di addestramento, assicurati che siano presenti le seguenti configurazioni:
- 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':sul account di servizio che hai creato conroles/storage.admineroles/aiplatform.userruoli. 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 di Profiler dalla Google Cloud console:
- Dalla pagina Job personalizzati.
- Dalla pagina Esperimenti.
Accedere alla dashboard di Profiler tramite la pagina Job personalizzati
Puoi utilizzare questo metodo per accedere alla dashboard di Profiler anche se il job di addestramento è nello stato Completato.
Nella Google Cloud console, vai alla scheda Job personalizzati nella pagina Addestramento.
Fai clic sul nome del job di addestramento appena creato per accedere alla pagina dei dettagli del job.
Fai clic su Apri TensorBoard.
Fai clic sulla scheda Profilo.
Accedere alla dashboard di Profiler tramite la pagina Esperimenti
Puoi utilizzare questo metodo per accedere alla dashboard di Profiler solo quando il job di addestramento è nello stato In esecuzione.
Nella Google Cloud console, vai alla pagina Esperimenti di Vertex AI.
Seleziona la regione del job di addestramento appena creato.
Fai clic su Apri TensorBoard accanto al nome del job di addestramento.
Fai clic sulla scheda Profilo.
Acquisire una sessione di profilazione
Per acquisire una sessione di profilazione, il job di addestramento deve essere nello stato In esecuzione. Dalla scheda Profilo nell'istanza di Vertex AI TensorBoard, procedi nel seguente modo:
- Fai clic su Acquisisci profilo.
Nel campo URL dei servizi del profilo o nome TPU, inserisci:
workerpool0-0In Tipo di indirizzo, seleziona Indirizzo IP.
Fai clic su Acquisisci.
Notebook
Passaggi successivi
- Consulta la documentazione di Tensorflow Profiler per scoprire di più sugli strumenti di profilazione e su come utilizzarli per ottimizzare il rendimento del modello.