Introdução ao paralelismo de modelos - 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á.

Introdução ao paralelismo de modelos

O paralelismo de modelos é um método de treinamento distribuído no qual o modelo de aprendizado profundo (DL) é particionado em várias GPUs e instâncias. O SageMaker modelo parallel library v2 (SMP v2) é compatível com as PyTorch APIs e os recursos nativos. Isso torna conveniente adaptar seu script de treinamento PyTorch Fully Sharded Data Parallel (FSDP) à plataforma de SageMaker treinamento e aproveitar a melhoria de desempenho que o SMP v2 oferece.

Esta página de introdução fornece uma visão geral de alto nível sobre o paralelismo de modelos e uma descrição de como ele pode ajudar a superar os problemas que surgem ao treinar modelos de aprendizado profundo (DL) que normalmente são muito grandes. Ele também fornece exemplos do que a biblioteca paralela de SageMaker modelos oferece para ajudar a gerenciar estratégias paralelas de modelos e o consumo de memória.

O que é paralelismo de modelos?

Aumentar o tamanho dos modelos de aprendizado profundo (camadas e parâmetros) gera maior precisão para tarefas complexas, como visão computacional e processamento de linguagem natural. No entanto, há um limite para o tamanho máximo do modelo que você pode colocar na memória de uma única GPU. Ao treinar modelos de DL, as limitações de memória da GPU podem ser gargalos das seguintes maneiras:

  • Eles limitam o tamanho do modelo que você pode treinar, porque a área ocupada pela memória de um modelo é dimensionada proporcionalmente ao número de parâmetros.

  • Limitam o tamanho do lote por GPU durante o treinamento, reduzindo a utilização da GPU e a eficiência do treinamento.

Para superar as limitações associadas ao treinamento de um modelo em uma única GPU, SageMaker fornece a biblioteca paralela de modelos para ajudar a distribuir e treinar modelos de DL de forma eficiente em vários nós de computação. Além disso, com a biblioteca, você pode obter um treinamento distribuído otimizado usando dispositivos compatíveis com a EFA, que aprimoram o desempenho da comunicação entre nós com baixa latência, alto rendimento e desvio do sistema operacional.

Estime os requisitos de memória antes de usar o paralelismo do modelo

Antes de usar a biblioteca paralela de SageMaker modelos, considere o seguinte para ter uma ideia dos requisitos de memória para treinar grandes modelos de DL.

Para um trabalho de treinamento que usa precisão mista automática, como float16 (FP16) ou bfloat16 (BF16) e otimizadores Adam, a memória de GPU necessária por parâmetro é de cerca de 20 bytes, que podemos dividir da seguinte forma:

  • Um parâmetro FP16 ou BF16 ~ 2 bytes

  • Um gradiente FP16 ou BF16 ~ 2 bytes

  • Um estado de otimizador FP32 de ~ 8 bytes com base nos otimizadores Adam

  • Uma cópia FP32 do parâmetro ~ 4 bytes [necessária para a operação optimizer apply (OA)]

  • Uma cópia FP32 do gradiente ~ 4 bytes [necessária para a operação (OA)]

Mesmo para um modelo DL relativamente pequeno com 10 bilhões de parâmetros, ele pode exigir pelo menos 200 GB de memória, o que é muito maior do que a memória de GPU típica (por exemplo, NVIDIA A100 com memória de 40 GB/80 GB) disponível em uma única GPU. Além dos requisitos de memória para os estados do modelo e do otimizador, há outros consumidores de memória, como ativações geradas na passagem direta. A memória necessária pode ser muito superior a 200 GB.

Para treinamento distribuído, recomendamos que você use instâncias P4 e P5 do Amazon EC2 que tenham GPUs NVIDIA A100 e H100 Tensor Core, respectivamente. Para obter mais detalhes sobre especificações como núcleos de CPU, RAM, volume de armazenamento anexado e largura de banda de rede, consulte a seção Computação acelerada na página Tipos de instância do Amazon EC2. Para tipos de exemplo compatíveis com o SMP v2, consulte. Tipos de instâncias compatíveis

Mesmo com as instâncias de computação acelerada, modelos com cerca de 10 bilhões de parâmetros, como Megatron-LM e T5, e modelos ainda maiores com centenas de bilhões de parâmetros, como GPT-3, não cabem réplicas de modelos em cada dispositivo de GPU.

Como a biblioteca emprega técnicas de paralelismo de modelos e economia de memória

A biblioteca consiste em vários tipos de atributos de paralelismo de modelos e atributos de economia de memória, como fragmentação de estado do otimizador, ponto de verificação de ativação e descarregamento de ativação. Todas essas técnicas podem ser combinadas para treinar com eficiência modelos grandes que consistem em centenas de bilhões de parâmetros.

Paralelismo de dados fragmentados

O paralelismo de dados fragmentados é uma técnica de treinamento distribuído que economiza memória e divide o estado de um modelo (parâmetros do modelo, gradientes e estados do otimizador) em GPUs dentro de um grupo paralelo de dados.

O SMP v2 implementa o paralelismo de dados fragmentados por meio do FSDP e o estende para implementar a estratégia de fragmentação híbrida com reconhecimento de escala discutida na postagem do blog Escalonamento quase linear do treinamento de modelos gigantes em. AWS

Você pode aplicar paralelismo de dados fragmentados ao seu modelo como uma estratégia independente. Além disso, se você estiver usando as instâncias de GPU de melhor desempenho equipadas com GPUs NVIDIA A100 Tensor Coreml.p4de.24xlarge, ml.p4d.24xlarge você pode aproveitar as vantagens da maior velocidade de treinamento da AllGather operação oferecida pela biblioteca de paralelismo de SageMaker dados (SMDDP).

Para se aprofundar no paralelismo de dados fragmentados e aprender como configurá-lo ou usar uma combinação de paralelismo de dados fragmentados com outras técnicas, como paralelismo de tensores e treinamento misto de precisão, consulte. Paralelismo híbrido de dados fragmentados

Paralelismo especializado

O SMP v2 se integra ao NVIDIA Megatron para implementar paralelismo especializado, além de seu suporte às APIs nativas do FSDP. PyTorch Você pode manter seu código de treinamento do PyTorch FSDP como está e aplicar o paralelismo do SMP expert para treinar modelos do Mixture of Experts (MoE). SageMaker

Um modelo MoE é um tipo de modelo de transformador que consiste em vários especialistas, cada um consistindo em uma rede neural, normalmente uma rede de feedback (FFN). Uma rede de portas chamada roteador determina quais tokens são enviados para qual especialista. Esses especialistas são especializados no processamento de aspectos específicos dos dados de entrada, permitindo que o modelo seja treinado mais rapidamente, reduza o custo de computação e, ao mesmo tempo, alcance a mesma qualidade de desempenho do modelo denso equivalente. E o paralelismo especializado é uma técnica de paralelismo que divide especialistas de um modelo MoE em dispositivos de GPU.

Para saber como treinar modelos MoE com o SMP v2, consulte. Paralelismo especializado

Paralelismo de tensores

O paralelismo tensorial divide camadas individuais ou nn.Modules entre dispositivos para funcionar em paralelo. A figura a seguir mostra o exemplo mais simples de como a biblioteca SMP divide um modelo com quatro camadas para obter paralelismo de tensores bidirecionais (). "tensor_parallel_degree": 2 Na figura a seguir, as notações para model parallel group, tensor parallel group e data parallel group são MP_GROUPTP_GROUP, e DP_GROUP respectivamente. As camadas de cada réplica do modelo são divididas ao meio e distribuídas em duas GPUs. A biblioteca gerencia a comunicação entre as réplicas do modelo distribuído por tensor.

Para se aprofundar no paralelismo de tensores e em outros recursos de economia de memória e aprender como definir uma combinação dos principais recursos PyTorch, consulte. Paralelismo de tensores

Ativação, ponto de verificação e descarga

Para economizar memória da GPU, a biblioteca oferece suporte ao ponto de verificação de ativação para evitar o armazenamento de ativações internas na memória da GPU para módulos especificados pelo usuário durante a passagem direta. A biblioteca recalcula essas ativações durante a retropassagem. Além disso, com o descarregamento de ativação, ele descarrega as ativações armazenadas na memória da CPU e as retorna à GPU durante a passagem para trás para reduzir ainda mais o espaço ocupado pela memória de ativação. Para obter mais informações sobre como usar esses recursos, consulte Ponto de verificação de ativação Ativação e descarregamento e.

Escolhendo as técnicas certas para seu modelo

Para obter mais informações sobre como escolher as técnicas e configurações corretas, consulteSageMaker melhores práticas de paralelismo de modelos distribuídos.