Mesclar cronogramas de vários arquivos de rastreamento de perfil - Amazon SageMaker

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á.

Mesclar cronogramas de vários arquivos de rastreamento de perfil

A biblioteca cliente SMDebug fornece ferramentas de análise e visualização de perfis para mesclar cronogramas de métricas do sistema, métricas de estrutura e dados de perfil do Python coletados pelo Debugger.

dica

Antes de continuar, você precisa definir um TrainingJob objeto que será utilizado nos exemplos desta página. Para obter mais informações sobre como configurar um TrainingJob objeto, consulteAcesse os dados do perfil.

A classe MergedTimeline fornece ferramentas para integrar e correlacionar diferentes informações de perfil em um único cronograma. Depois que o Debugger captura dados de perfil e anotações de diferentes fases de um trabalho de treinamento, os arquivos JSON de eventos de rastreamento são salvos em um diretório padrão. tracefolder

  • Para anotações nas camadas do Python, os arquivos de rastreamento são salvos em *pythontimeline.json.

  • Para anotações nas camadas de TensorFlow C++, os arquivos de rastreamento são salvos em. *model_timeline.json

  • O Tensorflow Profiler salva eventos em um arquivo. *trace.json.gz

dica

Se você quiser listar todos os arquivos de rastreamento JSON, use o comando AWS CLI a seguir:

! aws s3 ls {tj.profiler_s3_output_path} --recursive | grep '\.json$'

Conforme mostrado na captura de tela animada a seguir, colocar e alinhar os eventos de rastreamento capturados das diferentes fontes de perfil em um único gráfico pode propiciar uma visão geral de todos os eventos que ocorrem em diferentes fases do trabalho de treinamento.

Um exemplo de cronograma mesclado
dica

Para interagir com a linha do tempo mesclada no aplicativo de rastreamento usando um teclado, use a tecla W para ampliar, a tecla A para deslocar para a esquerda, a tecla S para diminuir o zoom e a tecla D para deslocar para a direita.

Os vários arquivos JSON de rastreamento de eventos podem ser mesclados em um arquivo JSON de eventos de rastreamento usando a seguinte operação de API MergedTimeline e o método de classe smdebug.profiler.analysis.utils.merge_timelines do módulo.

from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(path, file_suffix_filter, output_directory) combined_timeline.merge_timeline(start, end, unit)

A operação da API MergedTimeline passa os seguintes parâmetros:

  • path(str) – Especifique uma pasta raiz (/profiler-output) que contenha arquivos de rastreamento de perfil do sistema e da estrutura. Você pode localizar o profiler-output usando o método da classe SageMaker estimador ou o objeto. TrainingJob Por exemplo, o estimator.latest_job_profiler_artifacts_path() ou o tj.profiler_s3_output_path.

  • file_suffix_filter(lista) – Especifique uma lista de filtros de sufixo de arquivo para mesclar cronogramas. Os filtros de sufixo disponíveis são ["model_timeline.json", "pythontimeline.json", "trace.json.gz"]. Se esse parâmetro não for especificado manualmente, todos os arquivos de rastreamento serão mesclados por padrão.

  • output_directory(str) – Especifique um caminho para salvar o arquivo JSON da linha do tempo mesclada. O padrão é para o diretório especificado para o parâmetro path.

O classmethod merge_timeline() passa os seguintes parâmetros para executar o processo de mesclagem:

  • start(int) – Especifique a hora de início (em microssegundos e no formato de hora Unix) ou a etapa inicial para mesclar cronogramas.

  • end(int) – Especifique a hora do final (em microssegundos e no formato de hora Unix) ou a etapa inicial para mesclar cronogramas.

  • unit(str) — Escolha entre "time" e "step". O padrão é "time".

Usando os códigos de exemplo a seguir, execute o método merge_timeline() e baixe o arquivo JSON mesclado.

  • Mescle a linha do tempo com a opção de unidade "time". O código de exemplo a seguir mescla todos os arquivos de rastreamento disponíveis entre o horário de início do Unix (o horário Unix zero absoluto) e o horário Unix atual, o que significa que você pode mesclar os cronogramas ao longo de toda a duração do treinamento.

    import time from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline from smdebug.profiler.profiler_constants import CONVERT_TO_MICROSECS combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(0, int(time.time() * CONVERT_TO_MICROSECS))
  • Mescle a linha do tempo com a opção de unidade "step". O código de exemplo a seguir mescla todos os cronogramas disponíveis entre as etapas 3 e 9.

    from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(3, 9, unit="step")

Abra o aplicativo de rastreamento do Chrome chrome://tracing em um navegador Chrome e abra o arquivo JSON. Você pode explorar a saída para traçar a linha do tempo mesclada.