Configurar para criação de perfil de framework - 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á.

Configurar para criação de perfil de framework

Atenção

Em favor do Amazon SageMaker Profiler, o SageMaker Debugger descontinua o recurso de criação de perfil da estrutura a partir da versão 2.11 e 2.0. TensorFlow PyTorch Você ainda pode usar o atributo nas versões anteriores das frameworks e dos SDKs da seguinte maneira.

  • SageMaker SDK para Python <= v2.130.0

  • PyTorch >= v1.6.0, < v2.0

  • TensorFlow >= v2.3.1, < v2.11

Consulte também 16 de março de 2023.

Para habilitar a criação de perfil da framework do Debugger, configure o parâmetro framework_profile_params ao criar um estimador. O perfil da framework do Debugger coleta métricas da framework, como dados do estágio de inicialização, processos do carregador de dados, operadores Python de frameworks de aprendizado profundo e scripts de treinamento, perfis detalhados dentro e entre as etapas, com as opções cProfile ou Pyinstrument. Usando a classe FrameworkProfile, você pode configurar opções de criação de perfil da framework personalizada.

nota

Antes de começar com a criação de perfil da framework do Debugger, verifique se a framework usada para criar seu modelo é compatível com o Debugger para a criação de perfil da framework. Para ter mais informações, consulte Algoritmos e frameworks com suporte.

O Debugger salva as métricas da framework no bucket do padrão do S3. O formato do URI padrão do bucket do S3 é s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/profiler-output/.

Iniciar um trabalho de treinamento com o perfil padrão da framework

O código de exemplo a seguir é a configuração de profiler_config parâmetros mais simples para iniciar o monitoramento padrão do sistema e a criação de perfil da framework padrão. A classe FrameworkProfile no código de exemplo a seguir inicia o perfil padrão da framework quando um trabalho de treinamento é iniciado. O perfil da framework do depurador inclui as seguintes opções: perfil detalhado, perfil do carregador de dados e perfil do Python.

from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile() )

Com essa configuração de profiler_config parâmetros, o Debugger chama as configurações padrão de monitoramento e criação de perfil. O Debugger monitora as métricas do sistema a cada 500 milissegundos; traça o perfil da quinta etapa com a opção de perfil detalhado; a sétima etapa com a opção de criação de perfil do carregador de dados; e a nona, décima e décima primeira etapas com a opção de criação de perfil do Python.

Para encontrar as opções de configuração de perfil disponíveis, as configurações de parâmetros padrão e exemplos de como configurá-las, consulte Inicie um trabalho de treinamento com o monitoramento padrão do sistema e a criação de perfil de framework personalizada com diferentes opções de criação de perfil as APIs do SageMaker Debugger — no SDK do FrameworkProfile Amazon Python. SageMaker

Se você quiser alterar o intervalo de monitoramento do sistema e ativar o perfil da framework padrão, você pode especificar o system_monitor_interval_millis parâmetro explicitamente com o framework_profile_params parâmetro. Por exemplo, para monitorar a cada 1000 milissegundos e ativar o perfil padrão da framework, use o código de exemplo a seguir.

from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile() )

Para obter mais informações sobre a FrameworkProfile classe, consulte SageMaker Debugger APIs — no FrameworkProfile Amazon Python SDK. SageMaker

Inicie um trabalho de treinamento com o monitoramento padrão do sistema e o perfil de framework personalizada para etapas específicas ou um intervalo de tempo alvo

Se você quiser especificar etapas ou intervalos de tempo desejados para traçar o perfil de seu trabalho de treinamento, precisará especificar parâmetros para a classe FrameworkProfile. Os exemplos de código a seguir mostram como especificar os intervalos de destino para a criação de perfil junto com o monitoramento do sistema.

  • Para um intervalo de etapas de destino

    Com o exemplo de configuração a seguir, o Debugger monitora todo o trabalho de treinamento a cada 500 milissegundos (o monitoramento padrão) e traça o perfil de um intervalo de etapas de destino da etapa 5 à etapa 15 (para 10 etapas).

    from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile(start_step=5, num_steps=10) )

    Com o exemplo de configuração a seguir, o Debugger monitora todo o trabalho de treinamento a cada 1.000 milissegundos e traça o perfil de um intervalo de etapas de destino da etapa 5 à etapa 15 (para 10 etapas).

    from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile(start_step=5, num_steps=10) )
  • Para um intervalo de tempo de destino

    Com o exemplo de configuração a seguir, o Debugger monitora todo o trabalho de treinamento a cada 500 milissegundos (o monitoramento padrão) e cria perfis de um intervalo de tempo alvo do horário Unix atual por 600 segundos.

    import time from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( framework_profile_params=FrameworkProfile(start_unix_time=int(time.time()), duration=600) )

    Com o exemplo de configuração a seguir, o Debugger monitora todo o trabalho de treinamento a cada 1.000 milissegundos e traça o perfil de um intervalo de tempo alvo do horário Unix atual por 600 segundos.

    import time from sagemaker.debugger import ProfilerConfig, FrameworkProfile profiler_config=ProfilerConfig( system_monitor_interval_millis=1000, framework_profile_params=FrameworkProfile(start_unix_time=int(time.time()), duration=600) )

    A criação de perfil da framework é executada para todas as opções de criação de perfil na etapa ou intervalo de tempo de destino.

    Para encontrar mais informações sobre as opções de criação de perfil disponíveis, consulte SageMaker Debugger APIs — no SDK do FrameworkProfile Amazon Python. SageMaker

    A próxima seção mostra como criar um script para as opções de criação de perfil disponíveis.

Inicie um trabalho de treinamento com o monitoramento padrão do sistema e a criação de perfil de framework personalizada com diferentes opções de criação de perfil

Você pode usar as seguintes classes de configuração de criação de perfil para gerenciar as opções de criação de perfil da framework:

  • DetailedProfilingConfig — Especifique uma etapa ou intervalo de tempo de destino para criar o perfil das operações da estrutura usando os criadores de perfil nativos da estrutura (profiler e TensorFlow profiler). PyTorch Por exemplo, se estiver usando TensorFlow, os ganchos do Debugger permitem que o TensorFlow criador de perfil colete métricas de estrutura específicas. TensorFlow A criação de perfil detalhada permite traçar o perfil de todos os operadores da framework em uma etapa prévia (antes da primeira etapa), dentro das etapas e entre as etapas de um trabalho de treinamento.

    nota

    O perfil detalhado pode aumentar significativamente o consumo de memória da GPU. Não recomendamos ativar a criação de perfil detalhado por mais de algumas etapas.

  • DataloaderProfilingConfig — especifique uma etapa ou intervalo de tempo alvo para traçar o perfil dos processos do carregador de dados da estrutura de aprendizado profundo. O Debugger coleta todos os eventos do carregador de dados das frameworks.

    nota

    O perfil do carregador de dados pode diminuir o desempenho do treinamento ao coletar informações dos carregadores de dados. Não recomendamos ativar o perfil do carregador de dados para mais do que algumas etapas.

    O depurador é pré-configurado para anotar os processos do carregador de dados somente para os contêineres de aprendizado profundo AWS . O Debugger não pode criar o perfil dos processos do carregador de dados de nenhum outro contêiner de treinamento personalizado ou externo.

  • PythonProfilingConfig — Especifique uma etapa ou intervalo de tempo de destino para criar o perfil das funções do Python. Você também pode escolher entre dois criadores de perfil do Python: CProfile e Pyinstrument.

    • cProfile — O criador de perfil padrão do Python. O cProfile coleta informações para cada operador do Python chamado durante o treinamento. Com o CProfile, o Debugger economiza tempo cumulativo e anotações para cada chamada de função, fornecendo detalhes completos sobre as funções do Python. No aprendizado profundo, por exemplo, as funções mais frequentemente chamadas podem ser os filtros convolucionais e os operadores de passagem inversa, e o CProfile traça o perfil de cada um deles. Para a opção cProfile, você pode selecionar ainda mais uma opção de temporizador: tempo total, tempo de CPU e tempo fora da CPU. Embora você possa criar o perfil de cada chamada de função executada em processadores (CPU e GPU) no tempo de CPU, você também pode identificar gargalos de E/S ou de rede com a opção de tempo fora da CPU. O padrão é o tempo total, e o Debugger traça o perfil do tempo da CPU e do tempo fora da CPU. Com o cProfile, você pode detalhar todas as funções ao analisar os dados do perfil.

    • Pyinstrument — Pyinstrument é um criador de perfil Python de baixa sobrecarga que funciona com base em amostragem. Com a opção Pyinstrument, o Debugger coleta amostras de eventos de criação de perfil a cada milissegundo. Como o Pyinstrument mede o tempo decorrido do relógio em vez do tempo da CPU, a opção Pyinstrument pode ser uma escolha melhor em relação à opção cProfile para reduzir o ruído de criação de perfil (filtrando chamadas de função irrelevantes que são cumulativamente rápidas) e capturar operadores que realmente exigem muita computação (cumulativamente lento) para treinar seu modelo. Com o Pyinstrument, você pode ver uma árvore de chamadas de função e entender melhor a estrutura e a causa raiz da lentidão.

    nota

    A ativação da criação de perfil do Python pode diminuir o tempo geral de treinamento. O cProfile traça o perfil dos operadores do Python mais frequentemente chamados em cada chamada, portanto, o tempo de processamento na criação de perfil aumenta em relação ao número de chamadas. Para Pyinstrument, o tempo cumulativo de criação de perfil aumenta em relação ao tempo devido ao seu mecanismo de amostragem.

O exemplo de configuração a seguir mostra a estrutura completa quando você usa as diferentes opções de criação de perfil com valores especificados.

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

Para obter mais informações sobre as opções de criação de perfil disponíveis, consulte DetailedProfilingConfig, DataloaderProfilingConfig PythonProfiling e Config no SageMaker SDK do Amazon Python.