SageMaker melhores práticas de paralelismo de modelos distribuídos - 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á.

SageMaker melhores práticas de paralelismo de modelos distribuídos

Use as diretrizes a seguir ao executar um trabalho de treinamento distribuído com o SageMaker modelo parallel library v2 (SMP v2).

Definindo a configuração correta para treinamento distribuído

Para estimar e encontrar o melhor ponto de partida para aplicar as técnicas de treinamento distribuído fornecidas pelo SMP v2, consulte a lista a seguir. Cada item da lista discute a vantagem de usar o Principais características da biblioteca de paralelismo de SageMaker modelos v2 junto com possíveis compensações.

Dicas de configuração

Esta seção fornece diretrizes sobre como decidir sobre as melhores configurações de modelo para uma taxa de transferência ideal com os requisitos globais de tamanho de lote.

Primeiro, recomendamos as seguintes configurações, independentemente do tamanho do seu modelo.

  1. Use o tipo de instância mais poderoso que você pode usar.

  2. Ative a precisão mista o tempo todo, pois ela oferece benefícios substanciais para desempenho e redução de memória. Recomendamos que você use bfloat16 porque é mais preciso do quefloat16.

  3. Ative a biblioteca de paralelismo de dados SageMaker distribuídos (em vez de usar a NCCL) sempre que aplicável, conforme mostrado em. Compatibilidade com a SMDDP biblioteca otimizada para AWS infraestrutura Uma exceção é para casos de tensor-parallelism-only uso (hybrid_shard_degree = 1etensor_paralle_degree > 1).

  4. Se seu modelo tiver mais de 60 bilhões de parâmetros, recomendamos o usoInicialização atrasada de parâmetros. Você também pode usar a inicialização retardada de parâmetros para acelerar a inicialização de qualquer modelo.

  5. Recomendamos que você habilitePonto de verificação de ativação.

Dependendo do tamanho do seu modelo, recomendamos que você comece com as orientações a seguir.

  1. Use paralelismo de dados fragmentados.

    1. Dependendo do tamanho do lote que você pretende colocar na memória da GPU, escolha o grau de paralelo de dados fragmentados apropriado. Normalmente, você deve começar com o grau mais baixo para ajustar seu modelo na memória da GPU e, ao mesmo tempo, minimizar a sobrecarga da comunicação de rede. Se você receber um aviso de que vazamentos de cache estão ocorrendo, recomendamos que você aumente o grau de fragmentação.

    2. Determine world_size com base no tamanho máximo do lote local e no tamanho do lote global necessário, se houver.

    3. Você pode experimentar o descarregamento de ativação. Dependendo dos cenários, ele pode atender às suas necessidades de memória sem precisar aumentar o grau de fragmentação, o que significa menos comunicação.

  2. Use o paralelismo de dados fragmentados do PyTorch FSDP e o paralelismo tensorial do SMP v2 simultaneamente, conforme apresentado em. Paralelismo de tensores

    1. Ao treinar em grandes clusters, somente com o FSDP, o tamanho do lote global pode se tornar muito grande, causando problemas de convergência para o modelo. Normalmente, a maioria dos trabalhos de pesquisa mantém o tamanho do lote abaixo de 4 milhões de tokens. Nesse caso, você pode resolver o problema compondo o PyTorch FSDP com o paralelismo tensorial do SMP v2 para reduzir o tamanho do lote.

      Por exemplo, se você tiver 256 nós e comprimento de sequência 4096, até mesmo um tamanho de lote de 1 por GPU resultará em um tamanho de lote global de 8 milhões de tokens. No entanto, quando você usa paralelismo de tensores com grau 2 e tamanho de lote de 1 por grupo paralelo de tensores, isso se torna 1/2 tamanho de lote por GPU, o que se traduz em 4 milhões de tokens.

    2. Ao treinar com longos comprimentos de contexto, como 8k, 16k, a memória de ativação pode ficar muito alta. O FSDP não fragmenta as ativações, e as ativações podem fazer com que as GPUs fiquem sem memória. Nesses cenários, você pode treinar de forma eficiente compondo o PyTorch FSDP com o paralelismo tensorial do SMP v2.

Referência das configurações

A equipe de treinamento de paralelismo de SageMaker modelos fornece os seguintes pontos de referência com base em experimentos com o modelo Llama 2 transformado no modelo de transformador SMP usando torch.sagemaker.transform e treinado em ml.p4d.24xlarge instâncias com comprimento de sequência 4096 e precisão mista (FP16 ou BF16).

Modelo Tamanho do modelo (o número de parâmetros do modelo) O número de instâncias do Grau paralelo de dados fragmentados Tensor de grau paralelo Ponto de verificação de ativação Ativação e descarregamento Tamanho do lote
Lhama 2 7B 1 8 1 VERDADEIRO FALSE 4
70B 32 256 1 VERDADEIRO FALSE 2
175B 64 128 4 VERDADEIRO VERDADEIRO 6

Você pode extrapolar a partir das configurações anteriores para estimar o uso de memória da GPU para a configuração do modelo. Por exemplo, se você aumentar o comprimento da sequência de um modelo com parâmetro de 10 bilhões ou aumentar o tamanho do modelo para 20 bilhões, talvez você queira reduzir o tamanho do lote primeiro. Se o modelo ainda não couber, tente aumentar o grau de paralelismo de tensores.

Monitorando e registrando um trabalho de treinamento usando o SageMaker console e a Amazon CloudWatch

Para monitorar métricas em nível de sistema, como utilização da memória da CPU, utilização da memória da GPU e utilização da GPU, use a visualização fornecida pelo console. SageMaker

  1. No painel de navegação à esquerda, escolha Treinamento.

  2. Escolha Training jobs (Trabalhos de treinamento).

  3. No painel principal, escolha o nome da tarefa de treinamento do qual você deseja ver mais detalhes.

  4. Procure no painel principal e encontre a seção Monitoramento para ver a visualização automatizada.

  5. Para ver os logs de tarefa de treinamento, escolha Visualizar logs na seção Monitoramento. Você pode acessar os registros distribuídos do trabalho de treinamento em CloudWatch. Se você executou o treinamento distribuído de vários nós, você poderá ver vários streams de log com tags no formato algo-n-1234567890. O stream de log algo-1 rastreia os logs de treinamento do nó principal (0º).

Para ter mais informações, consulte Monitore e analise trabalhos de treinamento usando o Amazon CloudWatch Metrics.

Permissões

Para executar um trabalho de SageMaker treinamento com paralelismo de modelos, verifique se você tem as permissões corretas em sua função do IAM, como as seguintes: