Mecanismo de classificação ao usar uma combinação de paralelismo de pipeline e paralelismo de tensores - 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á.

Mecanismo de classificação ao usar uma combinação de paralelismo de pipeline e paralelismo de tensores

Esta seção explica como o mecanismo de classificação do paralelismo do modelo funciona com o paralelismo tensorial. Isso foi estendido do Ranking Basics for Principais características da biblioteca de SageMaker paralelismo de modelos. Com o paralelismo de tensores, a biblioteca introduz três tipos de APIs de classificação e grupo de processos: smp.tp_rank() para classificação paralela do tensor, smp.pp_rank() para classificação paralela de pipeline e smp.rdp_rank() para classificação paralela de dados reduzidos. Os grupos de processos de comunicação correspondentes são tensor parallel group (TP_GROUP), pipeline parallel group (PP_GROUP) e reduced-data parallel group (RDP_GROUP). Esses grupos são definidos da seguinte maneira:

  • Um grupo paralelo de tensores (TP_GROUP) é um subconjunto uniformemente divisível do grupo paralelo de dados, sobre o qual ocorre a distribuição paralela de módulos por tensores. Quando o grau de paralelismo do pipeline é 1, TP_GROUP é o mesmo que model parallel group (MP_GROUP).

  • Um grupo paralelo de pipeline (PP_GROUP) é o grupo de processos nos quais o paralelismo de pipeline ocorre. Quando o grau de paralelismo do tensor é 1, PP_GROUP é o mesmo que MP_GROUP.

  • Um grupo paralelo de dados reduzidos (RDP_GROUP) é um conjunto de processos que mantêm as mesmas partições de paralelismo de pipeline e as mesmas partições paralelas de tensor e realizam paralelismo de dados entre si. Isso é chamado de grupo paralelo de dados reduzido porque é um subconjunto de todo o grupo de paralelismo de dados, DP_GROUP. Para os parâmetros do modelo que são distribuídos dentro do TP_GROUP, a operação de gradiente allreduce é executada somente para grupos paralelos de dados reduzidos, enquanto para os parâmetros que não são distribuídos, o gradiente allreduce ocorre em todo o grupo DP_GROUP.

  • Um grupo paralelo de modelo (MP_GROUP) se refere a um grupo de processos que armazenam coletivamente o modelo inteiro. Consiste na união dos PP_GROUPs de todas as classificações que estão no processo atual TP_GROUP. Quando o grau de paralelismo do tensor é 1, MP_GROUP é equivalente a PP_GROUP. Também é consistente com a definição existente MP_GROUP de versões anteriores de smdistributed. Observe que a corrente TP_GROUP é um subconjunto da corrente DP_GROUP e da atual MP_GROUP.

Para saber mais sobre as APIs do processo de comunicação na biblioteca de paralelismo de SageMaker modelos, consulte a API comum e as PyTorchAPIs específicas na documentação do SDK do Python. SageMaker

This figure shows ranking mechanism, parameter distribution, and associated AllReduce operations of tensor parallelism.

Por exemplo, considere grupos de processos para um único nó com 8 GPUs, em que o grau de paralelismo do tensor é 2, o grau de paralelismo do pipeline é 2 e o grau de paralelismo dos dados é 4. A parte central superior da figura anterior mostra um exemplo de modelo com 4 camadas. As partes inferior esquerda e inferior direita da figura ilustram o modelo de 4 camadas distribuído em 4 GPUs usando paralelismo de pipeline e paralelismo de tensor, onde o paralelismo de tensor é usado para as duas camadas intermediárias. Essas duas figuras inferiores são cópias simples para ilustrar diferentes linhas de limite de grupos. O modelo particionado é replicado para paralelismo de dados nas GPUs 0-3 e 4-7. A figura inferior esquerda mostra as definições de MP_GROUP, PP_GROUP e TP_GROUP. A figura inferior direita mostra RDP_GROUP, DP_GROUP, e WORLD sobre o mesmo conjunto de GPUs. Os gradientes das camadas e das fatias da camada que têm a mesma cor são allreduce unidos para paralelismo de dados. Por exemplo, a primeira camada (azul claro) transmite as operações allreduce em DP_GROUP, enquanto a fatia laranja escura na segunda camada só obtém as operações allreduce dentro do processo RDP_GROUP. As setas vermelhas escuras em negrito representam tensores com o lote inteiro TP_GROUP.

GPU0: pp_rank 0, tp_rank 0, rdp_rank 0, dp_rank 0, mp_rank 0 GPU1: pp_rank 1, tp_rank 0, rdp_rank 0, dp_rank 0, mp_rank 1 GPU2: pp_rank 0, tp_rank 1, rdp_rank 0, dp_rank 1, mp_rank 2 GPU3: pp_rank 1, tp_rank 1, rdp_rank 0, dp_rank 1, mp_rank 3 GPU4: pp_rank 0, tp_rank 0, rdp_rank 1, dp_rank 2, mp_rank 0 GPU5: pp_rank 1, tp_rank 0, rdp_rank 1, dp_rank 2, mp_rank 1 GPU6: pp_rank 0, tp_rank 1, rdp_rank 1, dp_rank 3, mp_rank 2 GPU7: pp_rank 1, tp_rank 1, rdp_rank 1, dp_rank 3, mp_rank 3

Neste exemplo, o paralelismo do pipeline ocorre entre os pares de GPU (0,1), (2,3), (4,5) e (6,7). Além disso, o paralelismo de dados (allreduce) ocorre nas GPUs 0, 2, 4, 6 e de forma independente nas GPUs 1, 3, 5, 7. O paralelismo do tensor ocorre em subconjuntos de DP_GROUPs, nos pares de GPU (0,2); (1,3); (4,6) e (5,7).