Ative o Cloud Profiler para depurar a preparação de modelos

Esta página mostra como ativar o Cloud Profiler para poder depurar o desempenho do treino de modelos para as suas tarefas de treino personalizadas.

A preparação de modelos pode ser computacionalmente dispendiosa. O criador de perfis permite-lhe monitorizar e otimizar o desempenho da preparação do modelo, ajudando a compreender o consumo de recursos das operações de preparação. Com estas informações, pode identificar e corrigir gargalos de desempenho para formar modelos mais rapidamente e a um custo inferior.

Antes de começar

Ative o gerador de perfis

Para ativar o Profiler para a sua tarefa de preparação, adicione o seguinte ao script de preparação:

  1. Adicione a importação cloud_profiler às importações de nível superior:

    from google.cloud.aiplatform.training_utils import cloud_profiler
    
  2. Inicialize o plugin cloud_profiler adicionando:

    cloud_profiler.init()
    

Exemplo

Segue-se um exemplo de um script de preparação:

#!/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)

Aceda ao painel de controlo do Profiler

Depois de configurar o script de preparação para ativar o Profiler, execute o script de preparação com uma instância do Vertex AI TensorBoard.

No seu script de preparação, certifique-se de que tem as seguintes configurações:

  • Defina BASE_OUTPUT_DIR: para o contentor do Cloud Storage onde quer armazenar os registos do Vertex AI TensorBoard gerados pelo seu script de preparação.
  • Defina 'serviceAccount': para a conta de serviço que criou com as funções roles/storage.admin e roles/aiplatform.user.
  • Defina 'tensorboard': como o nome totalmente qualificado da instância do Vertex AI TensorBoard que quer usar com esta tarefa de preparação. O nome totalmente qualificado tem o seguinte formato:

    projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
    

Existem duas formas de aceder ao painel de controlo do Profiler a partir da Google Cloud consola:

  • Na página Tarefas personalizadas.
  • Na página Experiências.

Aceda ao painel de controlo do Profiler através da página Tarefas personalizadas

Pode usar este método para aceder ao painel de controlo do Profiler, mesmo que a tarefa de preparação esteja no estado Concluído.

  1. Na Google Cloud consola, aceda ao separador Tarefas personalizadas na página Preparação.

    Aceda a Tarefas personalizadas

  2. Clique no nome da tarefa de preparação que acabou de criar para aceder à página de detalhes da tarefa.

  3. Clique em Abrir TensorBoard.

  4. Clique no separador Perfil.

Aceda ao painel de controlo do Profiler através da página Experiências

Pode usar este método para aceder ao painel de controlo do Profiler apenas quando a tarefa de preparação está no estado Em execução.

  1. Na Google Cloud consola, aceda à página Vertex AI Experiments.

    Aceda ao Vertex AI Experiments

  2. Selecione a região da tarefa de preparação que acabou de criar.

  3. Clique em Abrir TensorBoard junto ao nome da tarefa de preparação.

  4. Clique no separador Perfil.

Capture uma sessão de criação de perfis

Para capturar uma sessão de criação de perfis, a tarefa de preparação tem de estar no estado Em execução. No separador Perfil da instância do Vertex AI TensorBoard, siga estes passos:

  1. Clique em Capturar perfil.
  2. No campo URL(s) do serviço de perfil ou nome da TPU, introduza:

    workerpool0-0
    
  3. Para Tipo de endereço, selecione Endereço IP.

  4. Clique em Capturar.

Bloco de notas

O que se segue?