Questa pagina mostra come attivare Cloud Profiler 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 dell'elaborazione. Profiler consente di monitorare e ottimizzare le prestazioni di addestramento del modello aiutandoti a comprendere il consumo di risorse delle operazioni di addestramento. Con queste informazioni, puoi individuare e correggere i colli di bottiglia delle prestazioni dei modelli in modo rapido ed economico.
Prima di iniziare
- Assicurati di utilizzare TensorFlow 2.4 o una versione successiva.
Installa l'SDK Vertex AI con il plug-in
cloud_profiler
. Dal container Docker locale, esegui:pip install google-cloud-aiplatform[cloud_profiler]
Devi avere un'istanza Vertex AI TensorBoard. Consulta Crea un'istanza Vertex AI TensorBoard per istruzioni.
Devi avere un account di servizio con
roles/storage.admin
eroles/aiplatform.user
ruoli. Consulta Creare un account di servizio con le autorizzazioni richieste per istruzioni.Devi avere un bucket Cloud Storage per archiviare Vertex AI TensorBoard logaritmi. Consulta Crea un bucket Cloud Storage per archiviare i log di Vertex AI TensorBoard per istruzioni.
Abilita Profiler
Per abilitare Profiler per il tuo job di addestramento, aggiungi il parametro seguendo lo script di addestramento:
Aggiungi l'importazione
cloud_profiler
alle importazioni di primo livello:from google.cloud.aiplatform.training_utils import cloud_profiler
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 Profiler
Dopo aver configurato lo script di addestramento per abilitare Profiler esegui lo script di addestramento con un'istanza Vertex AI TensorBoard.
Nello script di addestramento, verifica 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':
sull'account di servizio che hai creato con Ruoliroles/storage.admin
eroles/aiplatform.user
. Imposta
'tensorboard':
sul nome completo del Istanza Vertex AI TensorBoard che vuoi utilizzare con questo addestramento un lavoro. Il nome completo ha il seguente formato:projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
Ci sono due modi per accedere alla dashboard di Profiler dalla console Google Cloud:
- Dalla pagina Job personalizzati.
- Dalla pagina Esperimenti.
Accedi alla dashboard Profiler tramite la pagina Job personalizzati
Puoi utilizzare questo metodo per accedere a Profiler anche se il job di addestramento è nello stato Terminato.
Nella console Google Cloud, vai alla scheda Job personalizzati in Addestramento. .
Fai clic sul nome del job di addestramento appena creato per passare ai dettagli del job .
Fai clic su Apri TensorBoard.
Fai clic sulla scheda Profilo.
Accedere alla dashboard Profiler dalla pagina Esperimenti
Puoi utilizzare questo metodo per accedere a Profiler dashboard solo quando il job di addestramento è nello stato In esecuzione.
Nella console Google Cloud, vai alla pagina degli esperimenti di Vertex AI.
Seleziona la regione del job di addestramento che hai appena creato.
Fai clic su Apri TensorBoard accanto al nome del job di addestramento.
Fai clic sulla scheda Profilo.
Acquisisci una sessione di profilazione
Per acquisire una sessione di profilazione, il job di addestramento deve trovarsi nel percorso In esecuzione stato. Dalla scheda Profilo nell'istanza Vertex AI TensorBoard, segui questi passaggi:
- Fai clic su Acquisisci profilo.
Nel campo URL del servizio profilo o nome TPU, inserisci:
workerpool0-0
Per Tipo di indirizzo, seleziona Indirizzo IP.
Fai clic su Acquisisci.
Blocco note
Passaggi successivi
- Consulta le Documentazione di TensorFlow Profiler per saperne di più sugli strumenti profiler e su come utilizzarli per ottimizzare il modello delle prestazioni.