Questa pagina mostra come abilitare Vertex AI TensorBoard Profiler in modo da poter eseguire il debug delle prestazioni di addestramento dei modelli per i job di addestramento personalizzati.
L'addestramento dei modelli può essere costoso. Vertex AI TensorBoard Il Profiler consente di monitorare e ottimizzare le prestazioni dell'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 per addestrare i modelli in modo più rapido ed economico.
Prima di iniziare
- Assicurati di utilizzare Tensorflow 2.4 o versioni successive.
Installare l'SDK Vertex AI con il plug-in
cloud_profiler
. Dal tuo container Docker locale, esegui:pip install google-cloud-aiplatform[cloud_profiler]
Devi avere un'istanza di Vertex AI TensorBoard. Per istruzioni, consulta Creare un'istanza di Vertex AI TensorBoard.
Devi avere un account di servizio con ruoli
roles/storage.admin
eroles/aiplatform.user
. Per le istruzioni, consulta 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, consulta la pagina Creare un bucket Cloud Storage per archiviare i log di TensorBoard di Vertex AI.
Abilita Profiler TensorBoard di Vertex AI
Per abilitare Vertex AI TensorBoard Profiler per il tuo job di addestramento, aggiungi quanto segue allo 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
Di seguito è riportato uno script di esempio per l'addestramento:
#!/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 di Profiler di Vertex AI TensorBoard
Dopo aver configurato lo script di addestramento per abilitare Profiler TensorBoard di AI AIx, esegui lo script di addestramento con un'istanza di TensorBoard di Vertex AI.
Nello script di addestramento, assicurati che 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 i ruoliroles/storage.admin
eroles/aiplatform.user
. Imposta
'tensorboard':
sul nome completo dell'istanza 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 di TensorBoard di Vertex AI dalla console Google Cloud:
- 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 di Vertex AI TensorBoard anche se il job di addestramento è in stato Completato.
Nella console Google Cloud, vai alla scheda Job personalizzati nella pagina Formazione.
Fai clic sul nome del job di addestramento appena creato per andare alla pagina dei dettagli del job.
Fai clic su Apri TensorBoard.
Fai clic sulla scheda Profiler.
Accedere alla dashboard di Profiler dalla pagina Esperimenti
Puoi utilizzare questo metodo per accedere alla dashboard di Profiler di TensorBoard di Vertex AI solo quando il job di addestramento è in stato In esecuzione.
Nella console Google Cloud, vai alla pagina Esperimenti 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 Profiler.
Acquisire una sessione di profilazione
Per acquisire una sessione di profilazione, il tuo job di addestramento deve essere in stato In esecuzione. Dalla scheda Profiler nell'istanza di Vertex AI TensorBoard, esegui i passaggi seguenti:
- Fai clic su Acquisisci profilo.
Nel campo URL del profilo profilo o del nome della TPU, inserisci:
workerpool0-0
In Tipo di indirizzo, seleziona Indirizzo IP.
Fai clic su Acquisisci.
Blocchi note
Passaggi successivi
- Consulta la documentazione di Tensorflow Profiler per informazioni sugli strumenti di Profiler e su come utilizzarli per ottimizzare le prestazioni del modello.