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 Rangfolgesmp.tp_rank() für den parallelen Tensorrang, für den parallel Pipeline-Rang und smp.pp_rank() smp.rdp_rank() für den parallel Rang 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, entsprichtTP_GROUPder 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 istPP_GROUPdas Gleiche wieMP_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ätsgruppeDP_GROUPhandelt. Für die Modellparameter, die innerhalb derTP_GROUPverteilt sind, erfolgt dieallreduceSteigungsoperation nur für die Parallelgruppe mit reduzierten Daten, während für die Parameter, die nicht verteilt sind, die Steigungallreduceüber die gesamteDP_GROUPerfolgt. -
Eine Modell-Parallelgruppe (
MP_GROUP) bezieht sich auf eine Gruppe von Prozessen, die gemeinsam das gesamte Modell speichern. Sie besteht aus der Vereinigung derPP_GROUPs aller Ränge, die sich imTP_GROUPder aktuellen Prozess befinden. Wenn der Grad der Tensor-Parallelität 1 ist, entsprichtMP_GROUPPP_GROUP. Sie entspricht auch der bestehenden Definition vonMP_GROUPaus früherensmdistributedVersionen. Beachten Sie, dass die aktuelleTP_GROUPeine Teilmenge sowohl des aktuellenDP_GROUPals auch des aktuellenMP_GROUPist.
Weitere Informationen zum Kommunikationsprozess APIs in der SageMaker Modellparallelismus-Bibliothek finden Sie unter Common API
Stellen Sie sich beispielsweise Prozessgruppen für einen einzelnen Knoten mit 8 vor GPUs, wobei der Grad der Tensorparallelität 2, der Grad der Pipeline-Parallelität 2 und der Grad der Datenparallelität 4 ist. 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-Schichten-Modell, das auf 4 verteilt ist und sowohl Pipeline-Parallelität als auch Tensorparallelität GPUs verwendet, wobei Tensorparallelität für die beiden mittleren Schichten 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 0-3 und 4-7 repliziert. GPUs Die Abbildung unten links zeigt die Definitionen von MP_GROUP, PP_GROUP und TP_GROUP. Die Abbildung unten rechts zeigt RDP_GROUPDP_GROUP, und WORLD über demselben Satz von. 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) über GPUs 0, 2, 4, 6 und unabhängig über 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).