As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Preparar um trabalho de treinamento para coletar dados de saída do TensorBoard
Uma tarefa de treinamento típica para machine learning no SageMaker AI consiste em duas etapas principais: preparar um script de treinamento e configurar um objeto estimador do SageMaker AI no SageMaker AI Python SDK. Nesta seção, você aprenderá sobre as alterações necessárias para coletar dados compatíveis com o TensorBoard de trabalhos de treinamento do SageMaker.
Pré-requisitos
A lista a seguir mostra os pré-requisitos para começar a usar o SageMaker AI com o TensorBoard.
-
Um domínio do SageMaker AI configurado com a Amazon VPC na sua conta da AWS.
Para obter instruções sobre como configurar um domínio, consulte Usar a configuração rápida para o Amazon SageMaker AI. Você também precisa adicionar perfis de usuário de domínio para que usuários individuais acessem o TensorBoard no SageMaker AI. Para ter mais informações, consulte Adicionar perfis de usuário.
-
A lista a seguir representa o conjunto mínimo de permissões para usar o TensorBoard no SageMaker AI.
-
sagemaker:CreateApp -
sagemaker:DeleteApp -
sagemaker:DescribeTrainingJob -
sagemaker:Search -
s3:GetObject -
s3:ListBucket
-
Etapa 1: modificar o script de treinamento com as ferramentas auxiliares do TensorBoard de código aberto
Certifique-se de determinar quais tensores e escalares de saída coletar e modificar as linhas de código no script de treinamento usando qualquer uma das seguintes ferramentas: TensorBoardX, Gravador de resumo do TensorFlow, Gravador de resumo do PyTorch ou SageMaker Debugger.
Além disso, certifique-se de especificar o caminho de saída de dados do TensorBoard como o diretório de log (log_dir) para retorno de chamada no contêiner de treinamento.
Para obter mais informações sobre retornos de chamada por estrutura, consulte os recursos a seguir.
-
Para o PyTorch, use torch.utils.Tensorboard.SummaryWriter
. Consulte também as seções Uso do TensorBoard no PyTorch e Escalares de registro nos tutoriais do PyTorch. Como alternativa, é possível usar o Gravador de resumo do TensorBoardX . LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=torch.utils.tensorboard.writer.SummaryWriter(log_dir=LOG_DIR) -
Para o TensorFlow, use o retorno de chamada nativo do TensorBoard, tf.keras.callbacks.TensorBoard
. LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1) -
Para o Transformers com PyTorch, você pode usar transformers.integrations.TensorboardCallback
. Para o Transformers com TensorFlow, use o
tf.keras.tensorboard.callbacko e passe isso para o retorno de chamada do Keras no Transformers.dica
Também é possível usar um caminho de saída local de contêiner diferente. No entanto, em Etapa 2: criar um objeto estimador de treinamento do SageMaker com a configuração de saída do TensorBoard, você deve associar os caminhos corretamente para que o SageMaker AI pesquise com êxito o caminho local e salve os dados do TensorBoard no bucket de saída do S3.
-
Para obter orientação sobre como modificar scripts de treinamento usando a biblioteca Python do SageMaker Debugger, consulte Adaptação do seu script de treinamento para registrar um hook.
Etapa 2: criar um objeto estimador de treinamento do SageMaker com a configuração de saída do TensorBoard
Use sagemaker.debugger.TensorBoardOutputConfig ao configurar um estimador de framework do SageMaker AI. Essa API de configuração mapeia o bucket do S3 que você especifica para salvar os dados do TensorBoard com o caminho local no contêiner de treinamento (/opt/ml/output/tensorboard). Passe o objeto do módulo para o parâmetro tensorboard_output_config da classe do estimador. O trecho de código a seguir mostra um exemplo de preparação de um estimador do TensorFlow com o parâmetro de configuração de saída do TensorBoard.
nota
Este exemplo pressupõe que você use o SageMaker Python SDK. Se você usa a API do SageMaker de baixo nível, deve incluir o seguinte na sintaxe de solicitação da API CreateTrainingJob:
"TensorBoardOutputConfig": { "LocalPath": "/opt/ml/output/tensorboard", "S3OutputPath": "s3_output_bucket" }
from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import TensorBoardOutputConfig # Set variables for training job information, # such as s3_out_bucket and other unique tags. ... LOG_DIR="/opt/ml/output/tensorboard" output_path = os.path.join( "s3_output_bucket", "sagemaker-output", "date_str", "your-training_job_name" ) tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output_path, 'tensorboard'), container_local_output_path=LOG_DIR ) estimator = TensorFlow( entry_point="train.py", source_dir="src", role=role, image_uri=image_uri, instance_count=1, instance_type="ml.c5.xlarge", base_job_name="your-training_job_name", tensorboard_output_config=tensorboard_output_config, hyperparameters=hyperparameters)
nota
A aplicação TensorBoard não oferece compatibilidade imediata para trabalhos de ajuste de hiperparâmetros do SageMaker AI, pois a API CreateHyperParameterTuningJob não está integrada à configuração de saída do TensorBoard para o mapeamento. Para usar a aplicação TensorBoard para trabalhos de ajuste de hiperparâmetros, você precisa escrever código para enviar métricas para o Amazon S3 em seu script de treinamento. Depois que as métricas são carregadas em um bucket do Amazon S3, você pode carregar o bucket na aplicação TensorBoard no SageMaker AI.