Rangfolgemechanismus bei Verwendung einer Kombination aus Pipeline-Parallelität und Tensor-Parallelität - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Rangfolgemechanismus bei Verwendung einer Kombination aus Pipeline-Parallelität und Tensor-Parallelität

In diesem Abschnitt wird erklärt, wie der Rangfolgemechanismus der Modellparallelität mit der Tensor-Parallelität funktioniert. Dies ist die erweiterte Form der Grundlagen der Rangfolge für Kernfunktionen der SageMaker Model Parallelism Library. Bei der Tensor-Parallelität führt die Bibliothek drei Rangfolgetypen und Prozessgruppen-APIs ein: smp.tp_rank() für den Tensor-Parallelrang, smp.pp_rank() für den Pipeline-Parallelrang und smp.rdp_rank() für den Parallelrang mit reduzierten Daten. Die entsprechenden Kommunikationsprozessgruppen sind die Tensor-Parallelgruppe (TP_GROUP), die Pipeline-Parallelgruppe (PP_GROUP) und die Parallelgruppe für reduzierte Daten (RDP_GROUP). Diese Gruppen sind wie folgt definiert:

  • Eine Tensor-Parallelgruppe (TP_GROUP) ist eine gleichmäßig teilbare Teilmenge der Daten-Parallelgruppe, über die die tensorparallele Verteilung von Modulen erfolgt. Wenn der Grad der Pipeline-Parallelität 1 ist, entspricht TP_GROUP der Modell-Parallelgruppe (MP_GROUP).

  • Eine Pipeline-Parallelgruppe (PP_GROUP) ist die Gruppe von Prozessen, über die die Pipeline-Parallelität erfolgt. Wenn der Grad der Tensor-Parallelität 1 ist, so ist PP_GROUP das Gleiche wie MP_GROUP.

  • Eine Parallelgruppe für reduzierte Daten (RDP_GROUP) ist eine Menge von Prozessen, die sowohl dieselben Pipeline-Parallelitätspartitionen als auch dieselben Tensor-Parallelitätspartitionen enthalten und untereinander Datenparallelität durchführen. Eine solche Gruppe wird als Parallelgruppe für reduzierte Daten bezeichnet, da es sich dabei um eine Teilmenge der gesamten Datenparallelitätsgruppe DP_GROUP handelt. Für die Modellparameter, die innerhalb der TP_GROUP verteilt sind, erfolgt die allreduce Steigungsoperation nur für die Parallelgruppe mit reduzierten Daten, während für die Parameter, die nicht verteilt sind, die Steigung allreduce über die gesamte DP_GROUP erfolgt.

  • Eine Modell-Parallelgruppe (MP_GROUP) bezieht sich auf eine Gruppe von Prozessen, die gemeinsam das gesamte Modell speichern. Sie besteht aus der Vereinigung der PP_GROUPs aller Ränge, die sich im TP_GROUP der aktuellen Prozess befinden. Wenn der Grad der Tensor-Parallelität 1 ist, entspricht MP_GROUP PP_GROUP. Sie entspricht auch der bestehenden Definition von MP_GROUP aus früheren smdistributed Versionen. Beachten Sie, dass die aktuelle TP_GROUP eine Teilmenge sowohl des aktuellen DP_GROUP als auch des aktuellen MP_GROUP ist.

Weitere Informationen zu den Kommunikationsprozess-APIs in der SageMaker Modellparallelitätsbibliothek finden Sie unter Gemeinsame API und die PyTorch-spezifischen APIs in der SageMaker Python-SDK-Dokumentation.

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

Stellen Sie sich z.B. Prozessgruppen für einen Einzelnknoten mit 8 GPUs vor. Dabei ist der Grad der Tensor-Parallelität 2, der Grad der Pipeline-Parallelität 2 und der Daten-Parallelitätsgrad 4. Der obere mittlere Teil der Abbildung weiter oben zeigt ein Beispiel für ein Modell mit 4 Layers. Die unteren linken und unteren rechten Teile der Abbildung veranschaulichen das 4-Layer-Modell, das auf 4 GPUs verteilt ist, die sowohl Pipeline-Parallelität als auch Tensor-Parallelität verwenden, wobei für die beiden mittleren Layers die Tensor-Parallelität verwendet wird. Diese beiden unteren Abbildungen sind einfache Kopien zur Veranschaulichung der Grenzlinien zwischen den verschiedenen Gruppen. Das partitionierte Modell wird aus Gründen der Datenparallelität zwischen den GPUs 0-3 und 4-7 repliziert. Die Abbildung unten links zeigt die Definitionen von MP_GROUP, PP_GROUP und TP_GROUP. Die Abbildung unten rechts zeigt RDP_GROUP,DP_GROUP und WORLD über dieselbe Menge GPUs. Die Steigungen für die Ebenen und Layer-Slices, die dieselbe Farbe haben, werden aus Gründen der Datenparallelität zusammengefasstallreduce. z.B. erhält die erste Layer (hellblau) die allreduce Operationen über DP_GROUP. Dagegen erhält die dunkelorangefarbene Layer in der zweiten Layer nur die allreduce Operationen innerhalb der RDP_GROUP ihres Prozesses. Die fetten dunkelroten Pfeile stehen für Tensoren mit dem Batch aus ihren gesamten 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 diesem Beispiel tritt Pipeline-Parallelität zwischen den GPU-Paaren (0,1); (2,3); (4,5) und (6,7) auf. Darüber hinaus findet Datenparallelität (allreduce) zwischen den GPUs 0, 2, 4, 6 und unabhängig davon über die den GPUs 1, 3, 5, 7 statt. Tensor-Parallelität tritt über Teilmengen von DP_GROUPs auf, über die GPU-Paare (0,2); (1,3); (4,6) und (5,7).