Ativação e descarregamento - 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á.

Ativação e descarregamento

Quando o ponto de verificação de ativação e o paralelismo do pipeline estão ativados e o número de microlotes é maior que um, o descarregamento de ativação é um atributo adicional que pode reduzir ainda mais o uso de memória. O descarregamento de ativação move de forma assíncrona as ativações com pontos de verificação correspondentes aos microlotes que não estão sendo executados atualmente na CPU. Logo antes de a GPU precisar das ativações para o retrocesso do microlote, essa funcionalidade recupera previamente as ativações descarregadas da CPU.

nota

Esse recurso está disponível PyTorch na biblioteca de paralelismo de SageMaker modelos v1.6.0 e versões posteriores.

Como usar o descarregamento de ativação

Use o descarregamento de ativação para reduzir o uso de memória quando o número de microlotes for maior que 1 e o ponto de verificação de ativação estiver ativado (consulte Ponto de verificação de ativação). Quando o ponto de verificação de ativação não é usado, o descarregamento de ativação não tem efeito. Quando usado com apenas um microlote, ele não economiza memória.

Para usar o descarregamento de ativação, defina "offload_activations": True para a configuração modelparallel.

O descarregamento de ativação move as ativações pontuais nos módulos nn.Sequential para a CPU de forma assíncrona. A transferência de dados pelo PCIe link se sobrepõe à computação da GPU. O descarregamento acontece imediatamente, assim que a passagem para frente de uma determinada camada de ponto de verificação é calculada. As ativações são carregadas de volta na GPU pouco antes de serem necessárias para a reversão de um microlote específico. A transferência CPU-GPU também se sobrepõe à computação.

Para ajustar a antecedência com que as ativações são carregadas de volta na GPU, você pode usar o parâmetro de configuração "activation_loading_horizon" (o padrão é definido como 4, deve ser int maior que 0). Um horizonte de carregamento de ativação maior faria com que as ativações fossem carregadas de volta na GPU mais cedo. Se o horizonte for muito grande, o impacto do descarregamento de ativação na economia de memória pode ser diminuído. Se o horizonte for muito pequeno, as ativações podem não ser carregadas a tempo, reduzindo a quantidade de sobreposição e degradando o performance.

dica

O descarregamento de ativação pode ser útil para modelos grandes com mais de cem bilhões de parâmetros.

Configurar um SageMaker PyTorch estimador

mpi_options = { "enabled" : True, "processes_per_host" : 8, # 8 processes "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none " } smp_options = { "enabled":True, "parameters": { "microbatches": 4, "pipeline_parallel_degree": 2, # alias for "partitions" "placement_strategy": "cluster", "tensor_parallel_degree": 2, # tp over 2 devices "ddp": True, "offload_activations": True, "activation_loading_horizon": 4 # optional. default is 4. } }