

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
<a name="model-parallel-extended-features-pytorch-ranking-mechanism"></a>

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](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smd_model_parallel_general.html#ranking-basics) für [Kernfunktionen der SageMaker Model Parallelism Library](model-parallel-core-features.md). Mit der Tensorparallelität führt die Bibliothek drei Arten von Rangfolge und Prozessgruppe ein APIs: `smp.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, 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_GROUP`s 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 zum Kommunikationsprozess APIs in der SageMaker Modellparallelismus-Bibliothek finden Sie unter [Common API](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smp_versions/latest/smd_model_parallel_common_api.html#) und [PyTorch-specific APIs](https://sagemaker.readthedocs.io/en/v2.199.0/api/training/smp_versions/latest/smd_model_parallel_pytorch.html) in der *SageMaker Python* SDK-Dokumentation.

![\[Ranking-Mechanismus, Parameterverteilung und damit verbundene AllReduce Operationen der Tensorparallelität.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/distributed/model-parallel/tensor-parallel-ranking-mechanism.png)


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_GROUP``DP_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 zusammengefasst`allreduce`. 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_GROUP`s auf, über die GPU-Paare (0,2); (1,3); (4,6) und (5,7).

  Für eine hybride Pipeline- und Tensor-Parallelität dieser Art bleibt die mathematische Behandlung für `data_parallel_degree` wie bei `data_parallel_degree = number_of_GPUs / pipeline_parallel_degree`. Die Bibliothek berechnet außerdem den reduzierten Daten-Parallelitätsgrad anhand der folgenden Beziehung `reduced_data_parallel_degree * tensor_parallel_degree = data_parallel_degree`.  