En esta página, se muestra cómo habilitar Cloud Profiler para que puedas depurar el rendimiento del entrenamiento de modelos en los trabajos de entrenamiento personalizados.
Los modelos de entrenamiento pueden ser costosos en términos de procesamiento. Profiler te permite supervisar y optimizar el rendimiento del entrenamiento de modelos porque te ayuda a comprender el consumo de recursos de las operaciones de entrenamiento. Con esta información, puedes detectar y corregir los cuellos de botella de rendimiento a fin de entrenar los modelos más rápido y más económico.
Antes de comenzar
- Asegúrate de usar TensorFlow 2.4 o una versión posterior.
Instala el SDK de Vertex AI con el complemento
cloud_profiler
. Desde tu contenedor de Docker local, ejecuta lo siguiente:pip install google-cloud-aiplatform[cloud_profiler]
Debes tener una instancia de Vertex AI TensorBoard. Consulta Crea una instancia de Vertex AI TensorBoard para obtener instrucciones.
Debes tener una cuenta de servicio con los
roles/storage.admin
yroles/aiplatform.user
. Consulta Crea una cuenta de servicio con los permisos necesarios para obtener instrucciones.Debes tener un bucket de Cloud Storage para almacenar los registros de Vertex AI TensorBoard. Consulta Crea un bucket de Cloud Storage para almacenar registros de Vertex AI TensorBoard para obtener instrucciones.
Habilita Profiler
Para habilitar el generador de perfiles para tu trabajo de entrenamiento, agrega lo siguiente a la secuencia de comandos de entrenamiento:
Agrega la importación
cloud_profiler
en tus importaciones de nivel superior:from google.cloud.aiplatform.training_utils import cloud_profiler
Agrega el siguiente comando para inicializar el complemento
cloud_profiler
:cloud_profiler.init()
Ejemplo
Aquí hay una secuencia de comandos de entrenamiento de muestra:
#!/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)
Accede al panel de Profiler
Una vez que hayas configurado tu secuencia de comandos de entrenamiento para habilitar Profiler, ejecuta la secuencia de comandos de entrenamiento con una instancia de Vertex AI TensorBoard.
En tu secuencia de comandos de entrenamiento, asegúrate de que tengas las siguientes configuraciones:
- Establece
BASE_OUTPUT_DIR:
en el bucket de Cloud Storage en el que deseas almacenar los registros de TensorBoard de Vertex AI que genera tu secuencia de comandos de entrenamiento. - Configura
'serviceAccount':
como la cuenta de servicio que creaste con los rolesroles/storage.admin
yroles/aiplatform.user
. Establece
'tensorboard':
en el nombre completamente calificado de la instancia de Vertex AI TensorBoard que deseas usar con este trabajo de entrenamiento. El nombre completamente calificado tiene el siguiente formato:projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
Hay dos formas de acceder al panel de Profiler desde la consola de Google Cloud:
- En la página Trabajos personalizados, haz lo siguiente:
- En la página Experimentos.
Accede al panel de Profiler a través de la página Trabajos personalizados
Puedes usar este método para acceder al panel de Profiler, incluso si el trabajo de entrenamiento está en el estado Finalizado.
En la consola de Google Cloud, ve a la pestaña Trabajos personalizados en la página Entrenamiento.
Haz clic en el nombre del trabajo de entrenamiento que acabas de crear para ir a la página de detalles del trabajo.
Haz clic en Abrir TensorBoard.
Haz clic en la pestaña Perfil.
Accede al panel de Profiler a través de la página Experimentos
Puedes usar este método para acceder al panel de Profiler solo cuando el trabajo de entrenamiento está en el estado En ejecución.
En la consola de Google Cloud, ve a la página Experimentos de Vertex AI.
Selecciona la región del trabajo de entrenamiento que acabas de crear.
Haz clic en Abrir TensorBoard junto al nombre del trabajo de entrenamiento.
Haz clic en la pestaña Perfil.
Captura una sesión de perfilado
Para capturar una sesión de perfilado, el trabajo de entrenamiento debe estar en el estado En ejecución. Desde la pestaña Perfil en la instancia de TensorBoard de Vertex AI, sigue estos pasos:
- Haz clic en Capturar perfil.
En el campo URL del servicio de perfil o nombre de TPU, ingresa:
workerpool0-0
En Tipo de dirección, selecciona Dirección IP.
Haz clic en Capturar.
Notebook
¿Qué sigue?
- Consulta la documentación de TensorFlow Profiler para obtener información sobre las herramientas de Profiler y cómo usarlas para optimizar el rendimiento del modelo.