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
- Certifique-se de que está a usar o TensorFlow 2.4 ou uma versão posterior.
Instale o SDK do Vertex AI com o plugin
cloud_profiler
. A partir do contentor Docker local, execute:pip install google-cloud-aiplatform[cloud_profiler]
Tem de ter uma instância do Vertex AI TensorBoard. Consulte o artigo Crie uma instância do Vertex AI TensorBoard para ver instruções.
Tem de ter uma conta de serviço com as funções
roles/storage.admin
eroles/aiplatform.user
. Consulte o artigo Crie uma conta de serviço com as autorizações necessárias para ver instruções.Tem de ter um contentor do Cloud Storage para armazenar os registos do Vertex AI TensorBoard. Consulte o artigo Crie um contentor do Cloud Storage para armazenar registos do Vertex AI TensorBoard para obter instruções.
Ative o gerador de perfis
Para ativar o Profiler para a sua tarefa de preparação, adicione o seguinte ao script de preparação:
Adicione a importação
cloud_profiler
às importações de nível superior:from google.cloud.aiplatform.training_utils import cloud_profiler
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çõesroles/storage.admin
eroles/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.
Na Google Cloud consola, aceda ao separador Tarefas personalizadas na página Preparação.
Clique no nome da tarefa de preparação que acabou de criar para aceder à página de detalhes da tarefa.
Clique em Abrir TensorBoard.
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.
Na Google Cloud consola, aceda à página Vertex AI Experiments.
Selecione a região da tarefa de preparação que acabou de criar.
Clique em Abrir TensorBoard junto ao nome da tarefa de preparação.
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:
- Clique em Capturar perfil.
No campo URL(s) do serviço de perfil ou nome da TPU, introduza:
workerpool0-0
Para Tipo de endereço, selecione Endereço IP.
Clique em Capturar.
Bloco de notas
O que se segue?
- Consulte a documentação do Tensorflow Profiler para saber mais sobre as ferramentas do profiler e como as usar para otimizar o desempenho do modelo.