En esta página se explica cómo habilitar Cloud Profiler para depurar el rendimiento del entrenamiento de modelos en tus trabajos de entrenamiento personalizados.
Entrenar modelos puede ser costoso a nivel computacional. Profiler te permite monitorizar y optimizar el rendimiento del entrenamiento de tu modelo, ya que te ayuda a comprender el consumo de recursos de las operaciones de entrenamiento. Con esta información, puede identificar y corregir los cuellos de botella del rendimiento para entrenar modelos más rápido y a un coste menor.
Antes de empezar
- Asegúrate de que estás usando TensorFlow 2.4 o una versión posterior.
Instala el SDK de Vertex AI con el complemento
cloud_profiler
. En tu contenedor Docker local, ejecuta lo siguiente:pip install google-cloud-aiplatform[cloud_profiler]
Debes tener una instancia de Vertex AI TensorBoard. Consulta las instrucciones en el artículo sobre cómo crear una instancia de Vertex AI TensorBoard.
Debes tener una cuenta de servicio con los roles
roles/storage.admin
yroles/aiplatform.user
. Para obtener instrucciones, consulta el artículo Crear una cuenta de servicio con los permisos necesarios.Debes tener un segmento de Cloud Storage para almacenar los registros de Vertex AI TensorBoard. Consulta las instrucciones en el artículo Crear un segmento de Cloud Storage para almacenar registros de Vertex AI TensorBoard.
Habilitar el generador de perfiles
Para habilitar Profiler en tu trabajo de entrenamiento, añade lo siguiente a tu script de entrenamiento:
Añade la importación
cloud_profiler
a tus importaciones de nivel superior:from google.cloud.aiplatform.training_utils import cloud_profiler
Inicializa el complemento
cloud_profiler
añadiendo lo siguiente:cloud_profiler.init()
Ejemplo
Aquí tienes un ejemplo de secuencia de comandos de entrenamiento:
#!/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)
Acceder al panel de control de Profiler
Una vez que hayas configurado tu script de entrenamiento para habilitar Profiler, ejecuta el script de entrenamiento con una instancia de Vertex AI TensorBoard.
En tu secuencia de comandos de entrenamiento, asegúrate de que se cumplan las siguientes configuraciones:
- Asigna
BASE_OUTPUT_DIR:
al segmento de Cloud Storage en el que quieras almacenar los registros de Vertex AI TensorBoard que genere tu secuencia de comandos de entrenamiento. - Asigna
'serviceAccount':
a la cuenta de servicio que has creado con los rolesroles/storage.admin
yroles/aiplatform.user
. Asigna a
'tensorboard':
el nombre completo de la instancia de Vertex AI TensorBoard que quieras usar con este trabajo de entrenamiento. El nombre completo tiene el siguiente formato:projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
Hay dos formas de acceder al panel de control de Profiler desde la consola de Google Cloud :
- En la página Tareas personalizadas.
- En la página Experimentos.
Acceder al panel de control de Profiler a través de la página Tareas personalizadas
Puedes usar este método para acceder al panel de control de Profiler aunque el trabajo de entrenamiento esté en el estado Finalizado.
En la Google Cloud consola, ve a la pestaña Trabajos personalizados de la página Entrenamiento.
Haga clic en el nombre del trabajo de entrenamiento que acaba de crear para ir a la página de detalles del trabajo.
Haz clic en Abrir TensorBoard.
Haga clic en la pestaña Perfil.
Acceder al panel de control del generador de perfiles a través de la página Experimentos
Solo puedes usar este método para acceder al panel de control de Profiler cuando el trabajo de entrenamiento esté en el estado Running.
En la Google Cloud consola, ve a la página Experimentos de Vertex AI.
Selecciona la región de la tarea de entrenamiento que acabas de crear.
Haz clic en Abrir TensorBoard junto al nombre del trabajo de entrenamiento.
Haga clic en la pestaña Perfil.
Capturar una sesión de creación de perfiles
Para capturar una sesión de creación de perfiles, tu trabajo de entrenamiento debe estar en el estado Running (En ejecución). En la pestaña Perfil de la instancia de Vertex AI TensorBoard, sigue estos pasos:
- Haz clic en Capturar perfil.
En el campo URL(s) del servicio de perfil o nombre de TPU, introduce lo siguiente:
workerpool0-0
En Tipo de dirección, selecciona Dirección IP.
Haz clic en Capturar.
Cuaderno
Siguientes pasos
- Consulta la documentación de Tensorflow Profiler para obtener información sobre las herramientas de creación de perfiles y cómo usarlas para optimizar el rendimiento de los modelos.