Criação de perfil de carregadores de dados - SageMaker IA da Amazon

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

Criação de perfil de carregadores de dados

No PyTorch, os iteradores do carregador de dados, SingleProcessingDataLoaderIter e MultiProcessingDataLoaderIter, são iniciados no começo de cada iteração em um conjunto de dados. Durante a fase de inicialização, o PyTorch ativa os processos de operador, dependendo do número configurado de operadores, estabelece uma fila de dados para buscar dados e threads pin_memory.

Para usar a ferramenta de análise de perfil do carregador de dados PyTorch, importe a classe PT_dataloader_analysis a seguir:

from smdebug.profiler.analysis.utils.pytorch_dataloader_analysis import PT_dataloader_analysis

Passe os dados de perfil recuperados como um objeto de dados do quadro Pandas na seção Acesse os dados de criação de perfil usando a ferramenta de análise de dados pandas:

pt_analysis = PT_dataloader_analysis(pf)

As seguintes funções estão disponíveis para o objeto pt_analysis:

A SMDebug classe S3SystemMetricsReader lê as métricas do sistema do bucket do S3 especificado para o parâmetro s3_trial_path.

  • pt_analysis.analyze_dataloaderIter_initialization()

    A análise gera a mediana e a duração máxima dessas inicializações. Se houver valores discrepantes (ou seja, a duração for maior que a mediana 2 *), a função imprime os horários de início e término dessas durações. Eles podem ser usados para inspecionar as métricas do sistema durante esses intervalos de tempo.

    A seguinte lista mostra quais análises estão disponíveis nesse método de classe:

    • Que tipo de iteradores do carregador de dados foram inicializados.

    • O número de operadores por iterador.

    • Inspecione se o iterador foi inicializado com ou sem pin_memory.

    • Número de vezes que os iteradores foram inicializados durante o treinamento.

  • pt_analysis.analyze_dataloaderWorkers()

    A seguinte lista mostra quais análises estão disponíveis nesse método de classe:

    • O número de processos de trabalho que foram desmembrados durante todo o treinamento.

    • Duração média e máxima dos processos de trabalho.

    • Horário de início e de término dos processos de trabalho que são atípicos.

  • pt_analysis.analyze_dataloader_getnext()

    A seguinte lista mostra quais análises estão disponíveis nesse método de classe:

    • Número de chamadas do GetNext feitas durante o treinamento.

    • Duração média e máxima em microssegundos das chamadas GetNext.

    • Hora de início, hora de término, duração e ID do operador para a duração atípica da chamada GetNext.

  • pt_analysis.analyze_batchtime(start_timestamp, end_timestamp, select_events=[".*"], select_dimensions=[".*"])

    O Debugger coleta os horários de início e de término de todas as chamadas do GetNext. Você pode encontrar a quantidade de tempo gasto pelo script de treinamento em um lote de dados. Dentro da janela de tempo especificada, você pode identificar as chamadas que não estão contribuindo diretamente para o treinamento. Essas chamadas podem ser provenientes das seguintes operações: calcular a precisão, adicionar as perdas para fins de depuração ou registro e imprimir as informações de depuração. Operações como essas podem ser demoradas ou intensivas em termos de computação. Podemos identificar essas operações correlacionando o perfil do Python, as métricas do sistema e as métricas da estrutura.

    A seguinte lista mostra quais análises estão disponíveis nesse método de classe:

    • Crie o perfil do tempo gasto em cada lote de dadosBatchTime_in_seconds, encontrando a diferença entre os horários de início das chamadas GetNext atuais e subsequentes.

    • Encontre os valores atípicos em BatchTime_in_seconds e os horários de início e término desses valores discrepantes.

    • Obtenha as métricas do sistema e da estrutura durante esses registros de data e hora BatchTime_in_seconds. Isso indica onde o tempo foi gasto.

  • pt_analysis.plot_the_window()

    Traça um gráfico de linha do tempo entre um carimbo de data e hora de início e fim.