Acesse os dados de estatísticas de perfil do Python - 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á.

Acesse os dados de estatísticas de perfil do Python

O perfil do Python fornece métricas de estrutura relacionadas às funções e operadores do Python em seus scripts de treinamento e nas estruturas de aprendizado profundo. SageMaker

Modos e fases de treinamento para criação de perfil em Python

Para traçar o perfil de intervalos específicos durante o treinamento para particionar estatísticas para cada um desses intervalos, o Debugger fornece ferramentas para definir modos e fases.

Para modos de treinamento, use a seguinte classe PythonProfileModes:

from smdebug.profiler.python_profile_utils import PythonProfileModes

Essa classe fornece as seguintes opções:

  • PythonProfileModes.TRAIN – Use se quiser traçar o perfil das etapas desejadas na fase de treinamento. Esta opção de modo está disponível somente para TensorFlow.

  • PythonProfileModes.EVAL – Use se quiser traçar o perfil das etapas desejadas na fase de avaliação. Esta opção de modo está disponível somente para TensorFlow.

  • PythonProfileModes.PREDICT – Use se quiser traçar o perfil das etapas desejadas na fase de previsão. Esta opção de modo está disponível somente para TensorFlow.

  • PythonProfileModes.GLOBAL – Use se quiser traçar o perfil das etapas de destino na fase global, que inclui as três fases anteriores. Esta opção de modo está disponível somente para PyTorch.

  • PythonProfileModes.PRE_STEP_ZERO – Use se quiser traçar o perfil das etapas de destino no estágio de inicialização antes do início da primeira etapa de treinamento da primeira época. Essa fase inclui o envio inicial do trabalho, o upload dos scripts de treinamento para as instâncias do EC2, a preparação das instâncias do EC2 e o download dos dados de entrada. Esta opção de modo está disponível para TensorFlow PyTorch e.

  • PythonProfileModes.POST_HOOK_CLOSE – Use se quiser traçar o perfil das etapas de destino no estágio de finalização após a conclusão do trabalho de treinamento e o gancho do Debugger estiver fechado. Essa fase inclui dados de criação de perfil enquanto os trabalhos de treinamento são finalizados e concluídos. Esta opção de modo está disponível para TensorFlow PyTorch e.

Para fases de treinamento, use a classe StepPhase a seguir:

from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase

Essa classe fornece as seguintes opções:

  • StepPhase.START – Use para especificar o ponto inicial da fase de inicialização.

  • StepPhase.STEP_START – Use para especificar o ponto inicial da fase de treinamento.

  • StepPhase.FORWARD_PASS_END – Use para especificar as etapas em que a passagem para frente termina. Essa opção está disponível somente para PyTorch.

  • StepPhase.STEP_END – Use para especificar o ponto final da fase de treinamento. Essa opção está disponível somente para TensorFlow.

  • StepPhase.END – Use para especificar o ponto final da fase de finalização (pós-fechamento do gancho). Se o gancho de retorno de chamada não estiver fechado, a criação do perfil da fase de finalização não ocorrerá.

Ferramentas de análise de perfil do Python

O Debugger suporta a criação de perfil do Python com duas ferramentas de criação de perfil:

  • cProfile — O criador de perfil padrão do Python. O cProfile coleta métricas da estrutura sobre o tempo de CPU para cada função chamada quando a criação de perfil foi ativada.

  • Pyinstrument — Este é um criador de perfil Python de baixa sobrecarga que amostra eventos de criação de perfil a cada milissegundo.

Para saber mais sobre as opções de criação de perfil do Python e o que é coletado, consulte Monitoramento padrão do sistema e criação de perfil de estrutura personalizada com diferentes opções de criação de perfil.

Os seguintes métodos das classesPythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis são fornecidos para buscar e analisar os dados de criação de perfil do Python. Cada função carrega os dados mais recentes do URI padrão do S3.

from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis

Para definir objetos de criação de perfil do Python para análise, use as PyinstrumentAnalysis classes cProfileAnalysis ou conforme mostrado no código de exemplo a seguir. Ele mostra como definir um objeto cProfileAnalysis e, se você quiser usar PyinstrumentAnalysis, tem que substituir o nome da classe.

python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )

Os métodos a seguir estão disponíveis para as PyinstrumentAnalysis classes cProfileAnalysis e buscarem os dados estatísticos de perfil do Python:

  • python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs) – Assume a hora de início e a hora de término e retorna as estatísticas de função das estatísticas da etapa cujos horários de início ou término se sobrepõem ao intervalo fornecido.

  • python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase) – Assume uma etapa inicial e uma etapa final e retorna as estatísticas da função de todas as estatísticas da etapa em que o perfil step satisfaz start_step <= step < end_step.

    • start_step e end_step (str) – Especifique a etapa inicial e a etapa final para buscar os dados de estatísticas de perfil do Python.

    • mode (str) – Especifique o modo de trabalho de treinamento usando a classe do PythonProfileModes enumerador. O padrão é PythonProfileModes.TRAIN. As opções disponíveis são fornecidas na seção Modos e fases de treinamento para criação de perfil em Python.

    • start_phase(str) – Especifique a fase inicial nas etapas de destino usando a classe StepPhase do enumerador. Esse parâmetro permite a criação de perfis entre as diferentes fases do treinamento. O padrão é StepPhase.STEP_START. As opções disponíveis são fornecidas na seção Modos e fases de treinamento para criação de perfil em Python.

    • end_phase(str) – Especifique a fase final nas etapas de destino usando a classe StepPhase do enumerador. Esse parâmetro configura a fase final do treinamento. As opções disponíveis são as mesmas do parâmetro start_phase. O padrão é StepPhase.STEP_END. As opções disponíveis são fornecidas na seção Modos e fases de treinamento para criação de perfil em Python.

  • python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode) – Busca estatísticas do perfil do Python entre os modos inicial e final.

  • python_analysis.fetch_pre_step_zero_profile_stats() – Busca as estatísticas da criação de perfil do Python até a etapa 0.

  • python_analysis.fetch_post_hook_close_profile_stats() – Busca estatísticas do perfil do Python depois que o gancho é fechado.

  • python_analysis.list_profile_stats()— Retorna uma DataFrame das estatísticas de criação de perfil do Python. Cada linha contém os metadados de cada instância de criação de perfil e o arquivo de estatísticas correspondente (um por etapa).

  • python_analysis.list_available_node_ids() – Retorna uma lista dos IDs de nós disponíveis para as estatísticas de criação de perfil do Python.

Os métodos específicos da classe cProfileAnalysis:

  • fetch_profile_stats_by_training_phase() – Busca e agrega as estatísticas de criação de perfil do Python para todas as combinações possíveis dos modos inicial e final. Por exemplo, se as fases de treinamento e validação forem concluídas enquanto a criação de perfil detalhada estiver ativada, as combinações serão (PRE_STEP_ZERO, TRAIN), (TRAIN, TRAIN), (TRAIN, EVAL), (EVAL, EVAL) e (EVAL, POST_HOOK_CLOSE), Todos os arquivos de estatísticas em cada uma dessas combinações são agregados.

  • fetch_profile_stats_by_job_phase() – Busca e agrega as estatísticas de criação de perfil do Python por fase do trabalho. As fases do trabalho são initialization (criação de perfil até a etapa 0), training_loop (treinamento e validação) e finalization (criação de perfil após o fechamento do gancho).