Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Meccanismo di classificazione quando si utilizza una combinazione di parallelismo di pipeline e parallelismo tensoriale
Questa sezione spiega come funziona il meccanismo di classificazione del parallelismo dei modelli con il parallelismo tensoriale. Si tratta di un'estensione di Ranking Basicssmp.tp_rank() per classificazione parallela dei tensori, smp.pp_rank() per classificazione parallela di pipeline e smp.rdp_rank() per classificazione parallela dei dati ridotti. I gruppi di processi di comunicazione corrispondenti sono gruppo parallelo dei tensori (TP_GROUP), gruppo parallelo di pipeline (PP_GROUP) e gruppo parallelo dei dati ridotti (RDP_GROUP). I gruppi sono definiti come segue:
-
Un gruppo parallelo dei tensori (
TP_GROUP) è un sottoinsieme divisibile in modo uniforme del gruppo parallelo dei dati, sul quale avviene la distribuzione parallela tensoriale dei moduli. Quando il grado di parallelismo della pipeline è 1,TP_GROUPè uguale al gruppo parallelo del modello (MP_GROUP). -
Un gruppo parallelo di pipeline (
PP_GROUP) è il gruppo di processi su cui avviene il parallelismo della pipeline. Quando il grado di parallelismo tensoriale è 1,PP_GROUPè uguale aMP_GROUP. -
Un gruppo parallelo dei dati ridotti (
RDP_GROUP) è un insieme di processi che contengono sia le stesse partizioni di parallelismo della pipeline che le stesse partizioni parallele tensoriali ed eseguono il parallelismo dei dati tra di loro. Questo è chiamato gruppo parallelo dei dati ridotti perché è un sottoinsieme dell'intero gruppo di parallelismo dei datiDP_GROUP. Per i parametri del modello distribuito all'interno diTP_GROUP, l'operazioneallreducedi gradiente viene eseguita solo per il gruppo parallelo dei dati ridotti, mentre per i parametri che non sono distribuiti, il gradienteallreduceavviene sull'interoDP_GROUP. -
Un gruppo parallelo del modello (
MP_GROUP) si riferisce a un gruppo di processi che memorizzano collettivamente l'intero modello. Consiste nell'unione degliPP_GROUPdi tutte le classificazioni che fanno parte del processo correnteTP_GROUP. Quando il grado di parallelismo tensoriale è 1,MP_GROUPè equivalente aPP_GROUPÈ inoltre coerente con la definizione esistente diMP_GROUPdelle versioni precedentismdistributed. Nota che ilTP_GROUPcorrente è un sottoinsieme sia dellaDP_GROUPcorrente che delMP_GROUPcorrente.
Per saperne di più sulle API del processo di comunicazione nella libreria di parallelismo dei modelli SageMaker, consulta le API comuni
Ad esempio, considera i gruppi di processi per un singolo nodo con 8 GPU, dove il grado di parallelismo tensoriale è 2, il grado di parallelismo della pipeline è 2 e il grado di parallelismo dei dati è 4. La parte centrale superiore della figura precedente mostra un esempio di modello con 4 livelli. Le parti in basso a sinistra e in basso a destra della figura illustrano il modello a 4 livelli distribuito su 4 GPU che utilizza sia il parallelismo della pipeline che il parallelismo tensoriale, dove il parallelismo tensoriale viene utilizzato per i due livelli intermedi. Queste due figure inferiori sono semplici copie che illustrano le diverse linee di confine dei gruppi. Il modello partizionato viene replicato per il parallelismo dei dati tra le GPU 0-3 e 4-7. La figura in basso a sinistra mostra le definizioni di MP_GROUP, PP_GROUP, e TP_GROUP. La figura in basso a destra mostra RDP_GROUP, DP_GROUP e WORLD sullo stesso set di GPU. I gradienti per i livelli e le porzioni di livello che hanno lo stesso colore vengono allreduce assieme per il parallelismo dei dati. Ad esempio, il primo livello (blu chiaro) riceve le operazioni allreduce attraverso DP_GROUP, mentre la sezione arancione scuro del secondo livello trasmette solo le operazioni allreduce all'interno del relativo processo RDP_GROUP. Le frecce in grassetto rosso scuro rappresentano i tensori con il batch del loro insieme 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
In questo esempio, il parallelismo di pipeline si verifica tra le coppie di GPU (0,1); (2,3); (4,5) e (6,7). Inoltre, il parallelismo dei dati (allreduce) avviene tra le GPU 0, 2, 4, 6 e indipendentemente dalle GPU 1, 3, 5, 7. Il parallelismo tensoriale avviene su sottoinsiemi di DP_GROUP, tra le coppie di GPU (0,2); (1,3); (4,6) e (5,7).