

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.

# Führen Sie verteilte Schulungen mit der SageMaker KI-Bibliothek für verteilte Datenparallelität durch
<a name="data-parallel"></a>

Die SageMaker AI-Bibliothek für verteilte Datenparallelität (SMDDP) erweitert die SageMaker Trainingsmöglichkeiten für Deep-Learning-Modelle mit nahezu linearer Skalierungseffizienz, indem sie Implementierungen von kollektiven Kommunikationsoperationen bereitstellt, die für die Infrastruktur optimiert sind. AWS 

Beim Training großer Machine-Learning-Modelle (ML), wie z. B. große Sprachmodelle (LLM) und Diffusionsmodelle, auf einem riesigen Trainingsdatensatz verwenden ML-Praktiker Cluster von Beschleunigern und verteilte Trainingstechniken, um die Zeit für das Training zu reduzieren oder Speicherbeschränkungen für Modelle zu lösen, die nicht in jeden GPU-Speicher passen. ML-Praktiker beginnen häufig mit mehreren Beschleunigern auf einer einzigen Instance und skalieren dann auf Cluster von Instances, wenn ihre Workload-Anforderungen steigen. Mit zunehmender Clustergröße nimmt auch der Kommunikationsaufwand zwischen mehreren Knoten zu, was zu einem Rückgang der gesamten Rechenleistung führt.

Um solchen Aufwands- und Speicherproblemen zu begegnen, bietet die SMDDP-Bibliothek Folgendes.
+ Die SMDDP-Bibliothek optimiert Trainingsaufgaben für die AWS Netzwerkinfrastruktur und die Amazon SageMaker AI ML-Instance-Topologie.
+ Die SMDDP-Bibliothek verbessert die Kommunikation zwischen Knoten durch Implementierungen `AllReduce` und `AllGather` kollektive Kommunikationsoperationen, die für die Infrastruktur optimiert sind. AWS 

Weitere Informationen dazu, was die SMDDP-Bibliothek bietet, finden Sie unter [Einführung in die SageMaker KI-Bibliothek für verteilte Datenparallelität](data-parallel-intro.md).

Weitere Informationen zum Training mit der von SageMaker KI angebotenen modellparallelen Strategie finden Sie auch unter. [(Archiviert) SageMaker-Modellparallelitätsbibliothek v1.x](model-parallel.md)

**Topics**
+ [Einführung in die SageMaker KI-Bibliothek für verteilte Datenparallelität](data-parallel-intro.md)
+ [Unterstützte Frameworks AWS-Regionen und Instanztypen](distributed-data-parallel-support.md)
+ [Verteiltes Training mit der SageMaker KI-Bibliothek für verteilte Datenparallelität](data-parallel-modify-sdp.md)
+ [Beispiele für die Amazon SageMaker AI-Bibliothek zur Datenparallelität](distributed-data-parallel-v2-examples.md)
+ [Konfigurationstipps für die SageMaker KI-Bibliothek für verteilte Datenparallelität](data-parallel-config.md)
+ [Häufig gestellte Fragen zur Amazon-SMDDP-Bibliothek (SageMaker AI Distributed Data Parallelism)](data-parallel-faq.md)
+ [Fehlerbehebung für verteilte Schulungen in Amazon SageMaker AI](distributed-troubleshooting-data-parallel.md)
+ [SageMaker Versionshinweise zur Bibliothek für KI-Datenparallelität](data-parallel-release-notes.md)

# Einführung in die SageMaker KI-Bibliothek für verteilte Datenparallelität
<a name="data-parallel-intro"></a>

Die SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek ist eine kollektive Kommunikationsbibliothek, die die Rechenleistung des parallel Trainings mit verteilten Daten verbessert. Die SMDDP-Bibliothek trägt dem Kommunikationsaufwand der wichtigsten kollektiven Kommunikationsoperationen Rechnung, indem sie Folgendes bietet.

1. Die Bibliothek bietet optimierte Angebote für. `AllReduce` AWS`AllReduce`ist eine wichtige Operation, mit der Gradienten am Ende jeder Trainingsiteration GPUs beim Training mit verteilten Daten synchronisiert werden.

1. Die Bibliothek bietet optimierte Angebote `AllGather` für. AWS`AllGather`ist eine weitere wichtige Operation, die beim Sharded Data Parallel Training verwendet wird. Dabei handelt es sich um eine speichereffiziente Datenparallelitätstechnik, die von beliebten Bibliotheken wie der SageMaker AI Model Parallelism (SMP) -Bibliothek, dem DeepSpeed Zero Redundancy Optimizer (ZerO) und Fully Sharded Data Parallelism (FSDP) angeboten wird. PyTorch 

1. Die Bibliothek ermöglicht eine optimierte node-to-node Kommunikation, indem sie die AWS Netzwerkinfrastruktur und die Amazon EC2 EC2-Instance-Topologie vollständig nutzt. 

Die SMDDP-Bibliothek kann die Trainingsgeschwindigkeit erhöhen, indem sie bei der Skalierung Ihres Trainingsclusters eine Leistungsverbesserung mit nahezu linearer Skalierungseffizienz bietet.

**Anmerkung**  
Die über SageMaker KI verteilten Schulungsbibliotheken sind über die AWS Deep-Learning-Container für PyTorch und Hugging Face auf der SageMaker Trainingsplattform verfügbar. Um die Bibliotheken verwenden zu können, müssen Sie das SageMaker Python-SDK oder das SageMaker APIs Through-SDK für Python (Boto3) oder verwenden. AWS Command Line Interface In der gesamten Dokumentation konzentrieren sich Anweisungen und Beispiele auf die Verwendung der verteilten Trainingsbibliotheken mit dem SageMaker Python-SDK.

## Kollektive SMDDP-Kommunikationsoperationen, optimiert für AWS Rechenressourcen und Netzwerkinfrastruktur
<a name="data-parallel-collective-operations"></a>

Die SMDDP-Bibliothek bietet Implementierungen `AllReduce` und `AllGather` kollektive Operationen, die für AWS Rechenressourcen und Netzwerkinfrastruktur optimiert sind.

### Kollektive `AllReduce`-Operation mit SMDDP
<a name="data-parallel-allreduce"></a>

Die SMDDP-Bibliothek sorgt für eine optimale Überlappung der `AllReduce`-Operation mit dem Rückwärtsdurchlauf, wodurch die GPU-Auslastung erheblich verbessert wird. Durch die Optimierung der Kerneloperationen zwischen und wird eine nahezu lineare Skalierungseffizienz und eine schnellere Trainingsgeschwindigkeit erreicht. CPUs GPUs Die Bibliothek führt `AllReduce` parallel aus, während die GPU Gradienten berechnet, ohne zusätzliche GPU-Zyklen in Anspruch zu nehmen, wodurch die Bibliothek ein schnelleres Training erzielt.
+  *Vorteile CPUs*: Die Bibliothek verwendet zwei `AllReduce` Gradienten und CPUs entlastet diese Aufgabe von der. GPUs 
+ *Verbesserte GPU-Nutzung*: Der GPUs Schwerpunkt des Clusters liegt auf der Berechnung von Gradienten, wodurch deren Nutzung während des gesamten Trainings verbessert wird.

Im Folgenden wird der allgemeine Arbeitsablauf der SMDDP-`AllReduce`-Operation beschrieben.

1. Die Bibliothek weist GPUs (Arbeitern) Dienstgrade zu.

1. Bei jeder Iteration teilt die Bibliothek jeden globalen Stapel durch die Gesamtzahl der Arbeiter (Weltgröße) und weist den Arbeitern kleine Chargen (Batch-Shards) zu.
   + Die Größe des globalen Batches ist `(number of nodes in a cluster) * (number of GPUs per node) * (per batch shard)`. 
   + Ein Batch-Shard (kleiner Batch) ist eine Teilmenge von Datensätzen, die jeder GPU (Worker) pro Iteration zugewiesen wird. 

1. Die Bibliothek startet für jeden Worker ein Trainingsskript.

1. In der Bibliothek werden am Ende jeder Iteration Kopien der Modellgewichte und -verläufe von den Workern verwaltet.

1. Die Bibliothek synchronisiert die Gewichte und Farbverläufe der Modelle der einzelnen Worker, um ein einziges trainiertes Modell zu aggregieren.

Das folgende Architekturdiagramm zeigt ein Beispiel dafür, wie die Bibliothek Datenparallelität für einen Cluster von 3 Knoten einrichtet. 

 

![\[Architekturdiagramm für SMDDP AllReduce und Datenparallelität\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/distributed/data-parallel/sdp-architecture.png)


### Kollektive SMDDP-`AllGather`-Operation
<a name="data-parallel-allgather"></a>

`AllGather` ist eine kollektive Operation, bei der jeder Worker mit einem Eingabepuffer beginnt und dann die Eingabepuffer aller anderen Worker zu einem Ausgabepuffer verkettet oder *zusammenfasst*.

**Anmerkung**  
Der `AllGather` gemeinsame SMDDP-Vorgang ist in `smdistributed-dataparallel>=2.0.1` und AWS Deep Learning Containers (DLC) für Version 2.0.1 und höher verfügbar PyTorch .

`AllGather` wird häufig für verteilte Trainingstechniken wie die Parallelität fragmentierter Daten verwendet, bei der jeder einzelne Worker einen Bruchteil eines Modells oder eine fragmentierte Ebene besitzt. Die Worker rufen `AllGather` vor Vorwärts- und Rückwärtsdurchläufen auf, um die fragmentierten Ebenen zu rekonstruieren. Die Vorwärts- und Rückwärtsdurchläufe setzen sich fort, nachdem *alle Parameter erfasst* wurden. Während des Rückwärtsdurchlaufs ruft jeder Worker außerdem `ReduceScatter` auf, um Gradienten zu sammeln (zu reduzieren) und sie in Gradientenfragmente zu zerlegen (zu zerteilen), um die entsprechende fragmentierte Ebene zu aktualisieren. [Weitere Informationen zur Rolle dieser kollektiven Operationen beim Sharded Data Parallelism finden Sie in der Dokumentation zur [Implementierung von Sharded Data Parallelism in der SMP-Bibliothek, [ZerO](https://deepspeed.readthedocs.io/en/latest/zero3.html#), und im Blog über Fully Sharded Data Parallelism](https://docs.aws.amazon.com/sagemaker/latest/dg/model-parallel-extended-features-pytorch-sharded-data-parallelism.html). DeepSpeed PyTorch ](https://engineering.fb.com/2021/07/15/open-source/fsdp/)

Da kollektive Operationen wie in jeder Iteration aufgerufen AllGather werden, sind sie der Hauptverursacher des GPU-Kommunikationsaufwands. Eine schnellere Berechnung dieser kollektiven Operationen führt direkt zu einer kürzeren Trainingszeit ohne negative Auswirkungen auf die Konvergenz. [Um dies zu erreichen, bietet die SMDDP-Bibliothek `AllGather`, optimiert für P4-Instances an.](https://aws.amazon.com/ec2/instance-types/p4/)

SMDDP `AllGather` verwendet die folgenden Techniken, um die Rechenleistung auf P4d-Instances zu verbessern.

1. Es überträgt Daten zwischen Instances (zwischen Knoten) über das [Elastic Fabric Adapter (EFA)](https://aws.amazon.com/hpc/efa/)-Netzwerk mit einer Mesh-Topologie. EFA ist die Netzwerklösung AWS mit niedriger Latenz und hohem Durchsatz. Eine Mesh-Topologie für die Netzwerkkommunikation zwischen Knoten ist stärker auf die Eigenschaften von EFA und Netzwerkinfrastruktur zugeschnitten. AWS Im Vergleich zur NCCL-Ring- oder Baumtopologie, die mehrere Paket-Hops umfasst, vermeidet SMDDP die Akkumulation von Latenz aufgrund mehrerer Hops, da nur ein Hop benötigt wird. SMDDP implementiert einen Algorithmus zur Steuerung der Netzwerkrate, der die Workload auf jeden Kommunikationspartner in einer Mesh-Topologie verteilt und so einen höheren globalen Netzwerkdurchsatz erzielt.

1. Sie verwendet eine [GPU-Speicherkopierbibliothek mit niedriger Latenz, die auf der NVIDIA GPUDirect RDMA-Technologie (GDRCopy) basiert, um den lokalen und EFA-Netzwerkverkehr](https://github.com/NVIDIA/gdrcopy) zu koordinieren. NVLink GDRCopy, eine von NVIDIA angebotene Bibliothek für GPU-Speicherkopien mit niedriger Latenz, ermöglicht die Kommunikation mit niedriger Latenz zwischen CPU-Prozessen und GPU-CUDA-Kerneln. Mit dieser Technologie ist die SMDDP-Bibliothek in der Lage, die Datenbewegung innerhalb und zwischen den Knoten zu leiten.

1. Sie reduziert den Einsatz von GPU-Streaming-Multiprozessoren, um die Rechenleistung für die Ausführung von Modellkerneln zu erhöhen. P4d- und P4de-Instances sind mit NVIDIA GPUs A100 ausgestattet, die jeweils über 108 Streaming-Multiprozessoren verfügen. Während NCCL bis zu 24 Streaming-Multiprozessoren benötigt, um kollektive Operationen auszuführen, verwendet SMDDP weniger als 9 Streaming-Multiprozessoren. Modell-Compute-Kernel greifen für schnellere Berechnungen auf die gespeicherten Streaming-Multiprozessoren zurück.

# Unterstützte Frameworks AWS-Regionen und Instanztypen
<a name="distributed-data-parallel-support"></a>

Bevor Sie die SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek verwenden, überprüfen Sie, welche ML-Frameworks und Instanztypen unterstützt werden und ob in Ihrem Konto genügend Kontingente vorhanden sind und. AWS AWS-Region

## Unterstützte Frameworks
<a name="distributed-data-parallel-supported-frameworks"></a>

In den folgenden Tabellen sind die Deep-Learning-Frameworks und ihre Versionen aufgeführt, die von SageMaker KI und SMDDP unterstützt werden. Die SMDDP-Bibliothek ist in [SageMaker AI Framework-Containern verfügbar, in Docker-Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) [integriert, die über die SageMaker Model Parallelism (SMP) -Bibliothek v2 vertrieben](distributed-model-parallel-support-v2.md#distributed-model-parallel-supported-frameworks-v2) werden, oder als Binärdatei heruntergeladen werden.

**Anmerkung**  
Die neuesten Updates und Versionshinweise der SMDDP-Bibliothek finden Sie in den [SageMaker Versionshinweise zur Bibliothek für KI-Datenparallelität](data-parallel-release-notes.md).

**Topics**
+ [PyTorch](#distributed-data-parallel-supported-frameworks-pytorch)
+ [PyTorch Lightning](#distributed-data-parallel-supported-frameworks-lightning)
+ [Hugging Face Transformer](#distributed-data-parallel-supported-frameworks-transformers)
+ [TensorFlow (veraltet)](#distributed-data-parallel-supported-frameworks-tensorflow)

### PyTorch
<a name="distributed-data-parallel-supported-frameworks-pytorch"></a>


| PyTorch Version | Version der SMDDP-Bibliothek | SageMaker Mit SMDDP vorinstallierte AI Framework Container-Images | SMP-Docker-Images mit vorinstalliertem SMDDP | URL der Binärdatei\$1\$1 | 
| --- | --- | --- | --- | --- | 
| v2.3.1 | smdistributed-dataparallel==v2.5.0 | Nicht verfügbar | 658645717510.dkr.ecr.<us-west-2>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.4.1/cu121/2024-10-09/smdistributed\$1dataparallel-2.5.0-cp311-cp311-linux\$1x86\$164.whl | 
| v2.3.0 | smdistributed-dataparallel==v2.3.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker | Derzeit nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed\$1dataparallel-2.3.0-cp311-cp311-linux\$1x86\$164.whl | 
| v2.2.0 | smdistributed-dataparallel==v2.2.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed\$1dataparallel-2.2.0-cp310-cp310-linux\$1x86\$164.whl | 
| v2.1.0 | smdistributed-dataparallel==v2.1.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed\$1dataparallel-2.1.0-cp310-cp310-linux\$1x86\$164.whl | 
| v2.0.1 | smdistributed-dataparallel==v2.0.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed\$1dataparallel-2.0.2-cp310-cp310-linux\$1x86\$164.whl | 
| v2.0.0 | smdistributed-dataparallel==v1.8.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.0/cu118/2023-03-20/smdistributed\$1dataparallel-1.8.0-cp310-cp310-linux\$1x86\$164.whl | 
| v1.13.1 | smdistributed-dataparallel==v1.7.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.13.1/cu117/2023-01-09/smdistributed\$1dataparallel-1.7.0-cp39-cp39-linux\$1x86\$164.whl | 
| v1.12.1 | smdistributed-dataparallel==v1.6.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.1-gpu-py38-cu113-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.1/cu113/2022-12-05/smdistributed\$1dataparallel-1.6.0-cp38-cp38-linux\$1x86\$164.whl | 
| v1.12.0 | smdistributed-dataparallel==v1.5.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.0/cu113/2022-07-01/smdistributed\$1dataparallel-1.5.0-cp38-cp38-linux\$1x86\$164.whl | 
| v1.11.0 | smdistributed-dataparallel==v1.4.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.11.0-gpu-py38-cu113-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.11.0/cu113/2022-04-14/smdistributed\$1dataparallel-1.4.1-cp38-cp38-linux\$1x86\$164.whl | 

\$1\$1 Die URLs Binärdateien dienen zur Installation der SMDDP-Bibliothek in benutzerdefinierten Containern. Weitere Informationen finden Sie unter [Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker AI Distributed Data Parallel Library](data-parallel-bring-your-own-container.md).

**Anmerkung**  
Die SMDDP-Bibliothek ist dort verfügbar, AWS-Regionen wo die [SageMaker AI Framework-Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) und die [SMP-Docker-Images](distributed-model-parallel-support-v2.md) im Einsatz sind.

**Anmerkung**  
Die SMDDP-Bibliothek v1.4.0 und höher funktioniert als Backend für PyTorch verteilte (torch.distributed) Datenparallelität (torch.parallel). DistributedDataParallel). Entsprechend der Änderung sind die folgenden [smdistributed APIs](https://sagemaker.readthedocs.io/en/stable/api/training/sdp_versions/latest/smd_data_parallel_pytorch.html#pytorch-api) für das PyTorch verteilte Paket veraltet.  
`smdistributed.dataparallel.torch.distributed` ist veraltet. Verwenden Sie stattdessen das Paket [torch.distributed](https://pytorch.org/docs/stable/distributed.html).
`smdistributed.dataparallel.torch.parallel.DistributedDataParallel` ist veraltet. [Benutze die Datei torch.nn.parallel. DistributedDataParallel](https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html) Stattdessen API.
Wenn Sie die vorherigen Versionen der Bibliothek (v1.3.0 oder früher) verwenden müssen, finden Sie in der [archivierten Dokumentation zum SageMaker AI Distributed Data Parallelism in der *SageMaker AI Python* SDK-Dokumentation](https://sagemaker.readthedocs.io/en/stable/api/training/sdp_versions/latest.html#documentation-archive) weitere Informationen.

### PyTorch Lightning
<a name="distributed-data-parallel-supported-frameworks-lightning"></a>

Die SMDDP-Bibliothek ist für PyTorch Lightning in den folgenden SageMaker AI Framework-Containern für PyTorch und den SMP-Docker-Containern verfügbar.

**PyTorch Lightning v2**


| PyTorch Lightning-Version | PyTorch Version | Version der SMDDP-Bibliothek | SageMaker Mit SMDDP vorinstallierte AI Framework Container-Images | SMP-Docker-Images mit vorinstalliertem SMDDP | URL der Binärdatei\$1\$1 | 
| --- | --- | --- | --- | --- | --- | 
| 2.2.5 | 2.3.0 | smdistributed-dataparallel==v2.3.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker | Derzeit nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed\$1dataparallel-2.3.0-cp311-cp311-linux\$1x86\$164.whl | 
| 2.2.0 | 2.2.0 | smdistributed-dataparallel==v2.2.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed\$1dataparallel-2.2.0-cp310-cp310-linux\$1x86\$164.whl | 
| 2.1.2 | 2.1.0 | smdistributed-dataparallel==v2.1.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed\$1dataparallel-2.1.0-cp310-cp310-linux\$1x86\$164.whl | 
| 2.1.0 | 2.0.1 | smdistributed-dataparallel==v2.0.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | Nicht verfügbar | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed\$1dataparallel-2.0.2-cp310-cp310-linux\$1x86\$164.whl | 

**PyTorch Lightning v1**


| PyTorch Lightning-Version | PyTorch Version | Version der SMDDP-Bibliothek | SageMaker Mit SMDDP vorinstallierte AI Framework Container-Images | URL der Binärdatei\$1\$1 | 
| --- | --- | --- | --- | --- | 
|  1.7.2 1.7.0 1.6.4 1.6.3 1.5.10  | 1.12.0 | smdistributed-dataparallel==v1.5.0 | 763104351884.dkr.ecr. <region>.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.0/cu113/2022-07-01/smdistributed\$1dataparallel-1.5.0-cp38-cp38-linux\$1x86\$164.whl | 

\$1\$1 Die Binärdateien dienen zur Installation der SMDDP-Bibliothek in benutzerdefinierten Containern. URLs Weitere Informationen finden Sie unter [Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker AI Distributed Data Parallel Library](data-parallel-bring-your-own-container.md).

**Anmerkung**  
PyTorch Lightning und seine Hilfsbibliotheken wie Lightning Bolts sind in der nicht vorinstalliert. PyTorch DLCs Wenn Sie in [Schritt 2](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-use-api.html#data-parallel-framework-estimator) einen SageMaker PyTorch KI-Schätzer erstellen und eine Anfrage für eine Schulungsstelle einreichen, müssen Sie die Informationen `requirements.txt` zur Installation `pytorch-lightning` und `lightning-bolts` im SageMaker PyTorch KI-Schulungscontainer angeben.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
Weitere Informationen zur Angabe des Quellverzeichnisses, in dem die `requirements.txt` Datei zusammen mit Ihrem Schulungsskript und einer Jobübermittlung platziert werden soll, finden Sie unter [Verwenden von Bibliotheken von Drittanbietern](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) in der *Amazon SageMaker AI Python SDK-Dokumentation*.

### Hugging Face Transformer
<a name="distributed-data-parallel-supported-frameworks-transformers"></a>

Die AWS Deep Learning Containers für Hugging Face verwenden die SageMaker Training Container für PyTorch und TensorFlow als Basisimages. Die Versionen der Hugging Face Transformers-Bibliothek und die zugehörigen Versionen finden Sie in PyTorch den neuesten [Hugging Face Containers und den [vorherigen Hugging](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#prior-hugging-face-container-versions) Face TensorFlow Container-Versionen](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#huggingface-training-containers).

### TensorFlow (veraltet)
<a name="distributed-data-parallel-supported-frameworks-tensorflow"></a>

**Wichtig**  
Die SMDDP-Bibliothek hat die Unterstützung für Versionen ab Version 2.11.0 eingestellt TensorFlow und ist ab Version 2.11.0 nicht mehr verfügbar. DLCs TensorFlow In der folgenden Tabelle sind frühere Versionen von aufgeführt, bei denen DLCs die SMDDP-Bibliothek installiert TensorFlow war.


| TensorFlow Version | Version der SMDDP-Bibliothek | 
| --- | --- | 
| 2.9.1, 2.10.1, 2.11.0 |  smdistributed-dataparallel==v1.4.1  | 
| 2.8.3 |  smdistributed-dataparallel==v1.3.0  | 

## AWS-Regionen
<a name="distributed-data-parallel-availablity-zone"></a>

Die SMDDP-Bibliothek ist überall dort verfügbar, AWS-Regionen wo die [AWS Deep Learning Containers for SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) und die [SMP Docker-Images](distributed-model-parallel-support-v2.md) im Einsatz sind.

## Unterstützte Instance-Typen
<a name="distributed-data-parallel-supported-instance-types"></a>

Die SMDDP-Bibliothek erfordert einen der folgenden Instance-Typen.


| Instance-Typ | 
| --- | 
| ml.p3dn.24xlarge\$1 | 
| ml.p4d.24xlarge | 
| ml.p4de.24xlarge | 

**Tipp**  
Zum ordnungsgemäßen Ausführen von verteilten Trainings der EFA-fähigen Instance-Typen sollten Sie den Datenverkehr zwischen den Instances aktivieren, indem Sie die Sicherheitsgruppe Ihrer VPC einrichten, die allen eingehenden und ausgehenden Datenverkehr von und zu der Sicherheitsgruppe selbst zulässt. Informationen zum Einrichten der Sicherheitsgruppenregeln finden Sie unter [Schritt 1: Vorbereiten einer EFA-fähigen Sicherheitsgruppe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) im *Amazon-EC2-Benutzerhandbuch*.

**Wichtig**  
\$1 Die SMDDP-Bibliothek hat die Unterstützung für die Optimierung ihrer kollektiven Kommunikationsoperationen auf P3-Instances eingestellt. Sie können zwar weiterhin das SMDDP-optimierte `AllReduce`-Kollektiv auf `ml.p3dn.24xlarge`-Instances verwenden, aber es wird keinen weiteren Entwicklungssupport geben, um die Leistung auf diesem Instance-Typ zu verbessern. Beachten Sie, dass das SMDDP-optimierte `AllGather`-Kollektiv nur für P4-Instances verfügbar ist.

Die Spezifikationen der Instance-Typen finden Sie im Abschnitt **Beschleunigte Datenverarbeitung** auf der Seite [Amazon-EC2-Instance-Typen](https://aws.amazon.com/ec2/instance-types/). Informationen zu Instance-Preisen finden Sie unter [ SageMaker Amazon-Preise](https://aws.amazon.com/sagemaker/pricing/).

Wenn Sie auf eine Fehlermeldung gestoßen sind, die der folgenden ähnelt, folgen Sie den Anweisungen unter [Beantragen Sie eine Erhöhung des Servicekontingents für SageMaker KI-Ressourcen](https://docs.aws.amazon.com/sagemaker/latest/dg/regions-quotas.html#service-limit-increase-request-procedure).

```
ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling
the CreateTrainingJob operation: The account-level service limit 'ml.p3dn.24xlarge
for training job usage' is 0 Instances, with current utilization of 0 Instances
and a request delta of 1 Instances.
Please contact AWS support to request an increase for this limit.
```

# Verteiltes Training mit der SageMaker KI-Bibliothek für verteilte Datenparallelität
<a name="data-parallel-modify-sdp"></a>

Die SageMaker AI-Bibliothek für verteilte Datenparallelität (SMDDP) wurde so konzipiert, dass sie benutzerfreundlich ist und eine nahtlose Integration mit ermöglicht. PyTorch

Wenn Sie ein Deep-Learning-Modell mit der SMDDP-Bibliothek für SageMaker KI trainieren, können Sie sich darauf konzentrieren, Ihr Trainingsskript zu schreiben und das Training zu modellieren. 

Importieren Sie zunächst die SMDDP-Bibliothek, um ihre kollektiven Operationen zu verwenden, die für AWS optimiert sind. Die folgenden Themen enthalten Anweisungen dazu, was Sie Ihrem Trainingsskript hinzufügen müssen, je nachdem, welche kollektive Operation Sie optimieren möchten.

**Topics**
+ [Anpassung Ihres Trainingsskripts zur Nutzung der kollektiven SMDDP-Operationen](data-parallel-modify-sdp-select-framework.md)
+ [Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten](data-parallel-use-api.md)

# Anpassung Ihres Trainingsskripts zur Nutzung der kollektiven SMDDP-Operationen
<a name="data-parallel-modify-sdp-select-framework"></a>

Die in diesem Abschnitt bereitgestellten Beispiele für Trainingsskripte sind vereinfacht und heben nur die Änderungen hervor, die erforderlich sind, um die SMDDP-Bibliothek ( SageMaker AI Distributed Data Parallelism) in Ihrem Trainingsskript zu aktivieren. Beispiele für end-to-end Jupyter-Notebooks, die zeigen, wie ein verteilter Trainingsjob mit der SMDDP-Bibliothek ausgeführt wird, finden Sie unter. [Beispiele für die Amazon SageMaker AI-Bibliothek zur Datenparallelität](distributed-data-parallel-v2-examples.md)

**Topics**
+ [Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch](data-parallel-modify-sdp-pt.md)
+ [Verwenden Sie die SMDDP-Bibliothek in Ihrem PyTorch Lightning-Schulungsskript](data-parallel-modify-sdp-pt-lightning.md)
+ [Verwenden Sie die SMDDP-Bibliothek in Ihrem TensorFlow Schulungsskript (veraltet)](data-parallel-modify-sdp-tf2.md)

# Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch
<a name="data-parallel-modify-sdp-pt"></a>

[Ausgehend von der SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek v1.4.0 können Sie die Bibliothek als Backend-Option für das verteilte Paket verwenden. PyTorch ](https://pytorch.org/tutorials/beginner/dist_overview.html) Um SMDDP `AllReduce` und `AllGather` Collective Operations zu verwenden, müssen Sie die SMDDP-Bibliothek nur zu Beginn Ihres Trainingsskripts importieren und SMDDP bei der Initialisierung der Prozessgruppe als Backend für verteilte Module festlegen. PyTorch Mit der einzigen Zeile der Backend-Spezifikation können Sie alle nativen PyTorch verteilten Module und das gesamte Trainingsskript unverändert lassen. [Die folgenden Codefragmente zeigen, wie die SMDDP-Bibliothek als Backend für PyTorch basierte verteilte Trainingspakete verwendet wird: [PyTorch Distributed Data Parallel (DDP), [PyTorch Fully Sharded Data Parallelism](https://pytorch.org/docs/stable/fsdp.html) (FSDP)](https://pytorch.org/docs/stable/notes/ddp.html) und Megatron-. [DeepSpeed](https://github.com/microsoft/DeepSpeed)DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed)

## Für PyTorch DDP oder FSDP
<a name="data-parallel-enable-for-ptddp-ptfsdp"></a>

Initialisieren Sie die Prozessgruppe wie folgt.

```
import torch.distributed as dist
import smdistributed.dataparallel.torch.torch_smddp

dist.init_process_group(backend="smddp")
```

**Anmerkung**  
(Nur für PyTorch DDP-Jobs) Das `smddp` Backend unterstützt derzeit nicht die Erstellung von Unterprozessgruppen mit der API. `torch.distributed.new_group()` Sie können das `smddp`-Backend auch nicht gleichzeitig mit anderen Prozessgruppen-Backends wie `NCCL` und `Gloo` verwenden.

## Für DeepSpeed oder Megatron- DeepSpeed
<a name="data-parallel-enable-for-deepspeed"></a>

Initialisieren Sie die Prozessgruppe wie folgt.

```
import deepspeed
import smdistributed.dataparallel.torch.torch_smddp

deepspeed.init_distributed(dist_backend="smddp")
```

**Anmerkung**  
Um SMDDP `AllGather` mit den `mpirun`-basierten Launchern (`smdistributed` und `pytorchddp`) in [Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten](data-parallel-use-api.md) zu verwenden, müssen Sie außerdem die folgende Umgebungsvariable in Ihrem Trainingsskript festlegen.  

```
export SMDATAPARALLEL_OPTIMIZE_SDP=true
```

Allgemeine Hinweise zum Schreiben eines PyTorch FSDP-Trainingsskripts finden Sie in der [Dokumentation unter Advanced Model Training with Fully Sharded Data Parallel (FSDP](https://pytorch.org/tutorials/intermediate/FSDP_adavnced_tutorial.html)). PyTorch

Allgemeine Hinweise zum Schreiben eines PyTorch DDP-Trainingsskripts finden Sie in der PyTorch Dokumentation unter [Erste Schritte mit verteilten Daten parallel](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html).

Nachdem Sie die Anpassung Ihres Trainingsskripts abgeschlossen haben, fahren Sie mit [Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten](data-parallel-use-api.md) fort.

# Verwenden Sie die SMDDP-Bibliothek in Ihrem PyTorch Lightning-Schulungsskript
<a name="data-parallel-modify-sdp-pt-lightning"></a>

Wenn Sie Ihr [PyTorchLightning-Trainingsskript](https://pytorch-lightning.readthedocs.io/en/latest/starter/introduction.html) verwenden und einen parallel Trainingsjob mit verteilten Daten in SageMaker KI ausführen möchten, können Sie den Trainingsjob mit minimalen Änderungen an Ihrem Trainingsskript ausführen. Zu den erforderlichen Änderungen gehören die folgenden: Importieren Sie die PyTorch Module der `smdistributed.dataparallel` Bibliothek, richten Sie die Umgebungsvariablen für PyTorch Lightning so ein, dass sie die vom SageMaker Schulungs-Toolkit voreingestellten SageMaker KI-Umgebungsvariablen akzeptieren, und aktivieren Sie die SMDDP-Bibliothek, indem Sie das Prozessgruppen-Backend auf einstellen. `"smddp"` Um mehr zu erfahren, gehen Sie die folgenden Anweisungen durch, die die Schritte anhand von Codebeispielen aufschlüsseln.

**Anmerkung**  
Die PyTorch Lightning-Unterstützung ist in der SageMaker AI Data Parallel Library v1.5.0 und höher verfügbar.

## PyTorch Lightning == v2.1.0 und == 2.0.1 PyTorch
<a name="smddp-pt-201-lightning-210"></a>

1. Importieren Sie die `pytorch_lightning` Bibliothek und die `smdistributed.dataparallel.torch` Module.

   ```
   import lightning as pl
   import smdistributed.dataparallel.torch.torch_smddp
   ```

1. Instanziieren Sie die. [LightningEnvironment](https://pytorch-lightning.readthedocs.io/en/stable/api/pytorch_lightning.plugins.environments.LightningEnvironment.html)

   ```
   from lightning.fabric.plugins.environments.lightning import LightningEnvironment
   
   env = LightningEnvironment()
   env.world_size = lambda: int(os.environ["WORLD_SIZE"])
   env.global_rank = lambda: int(os.environ["RANK"])
   ```

1. **Für PyTorch DDP** [— Erstellen Sie ein Objekt der [DDPStrategy](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.DDPStrategy.html)Klasse mit `"smddp"` for `process_group_backend` und `"gpu"` for und übergeben Sie `accelerator` es an die Trainer-Klasse.](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html)

   ```
   import lightning as pl
   from lightning.pytorch.strategies import DDPStrategy
   
   ddp = DDPStrategy(
       cluster_environment=env, 
       process_group_backend="smddp", 
       accelerator="gpu"
   )
   
   trainer = pl.Trainer(
       max_epochs=200, 
       strategy=ddp, 
       devices=num_gpus, 
       num_nodes=num_nodes
   )
   ```

   **Für PyTorch FSDP** — Erstellen Sie ein Objekt der [FSDPStrategy](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.FSDPStrategy.html)Klasse (mit der gewünschten [Wrapping-Richtlinie](https://pytorch.org/docs/stable/fsdp.html)) mit `"smddp"` for `process_group_backend` und `"gpu"` for `accelerator` und übergeben Sie es an die [Trainer-Klasse](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html).

   ```
   import lightning as pl
   from lightning.pytorch.strategies import FSDPStrategy
   
   from functools import partial
   from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy
   
   policy = partial(
       size_based_auto_wrap_policy, 
       min_num_params=10000
   )
   
   fsdp = FSDPStrategy(
       auto_wrap_policy=policy,
       process_group_backend="smddp", 
       cluster_environment=env
   )
   
   trainer = pl.Trainer(
       max_epochs=200, 
       strategy=fsdp, 
       devices=num_gpus, 
       num_nodes=num_nodes
   )
   ```

Nachdem Sie die Anpassung Ihres Trainingsskripts abgeschlossen haben, fahren Sie mit [Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten](data-parallel-use-api.md) fort. 

**Anmerkung**  
Wenn Sie einen SageMaker PyTorch KI-Schätzer erstellen und eine Trainingsanfrage einreichen[Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten](data-parallel-use-api.md), müssen Sie Angaben `requirements.txt` zur Installation `pytorch-lightning` und `lightning-bolts` im SageMaker PyTorch KI-Trainingscontainer machen.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
Weitere Informationen zur Angabe des Quellverzeichnisses, in dem die `requirements.txt` Datei zusammen mit Ihrem Schulungsskript und einer Jobübermittlung platziert werden soll, finden Sie unter [Verwenden von Bibliotheken von Drittanbietern](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) in der *Amazon SageMaker AI Python SDK-Dokumentation*.

# Verwenden Sie die SMDDP-Bibliothek in Ihrem TensorFlow Schulungsskript (veraltet)
<a name="data-parallel-modify-sdp-tf2"></a>

**Wichtig**  
Die SMDDP-Bibliothek hat die Unterstützung für TensorFlow Versionen ab Version 2.11.0 eingestellt TensorFlow und ist ab Version DLCs 2.11.0 nicht mehr verfügbar. Frühere Versionen TensorFlow DLCs mit installierter SMDDP-Bibliothek finden Sie unter. [Unterstützte Frameworks](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks)

Die folgenden Schritte zeigen Ihnen, wie Sie ein TensorFlow Trainingsskript ändern, um die verteilte parallel Datenbibliothek von SageMaker AI zu nutzen.  

Die Bibliothek ist APIs so konzipiert, dass sie APIs Horovod ähnelt. Weitere Informationen zu den einzelnen APIs, für die die Bibliothek anbietet TensorFlow, finden Sie in der [Dokumentation zur SageMaker AI Distributed Data Parallel TensorFlow API](https://sagemaker.readthedocs.io/en/stable/api/training/smd_data_parallel.html#api-documentation).

**Anmerkung**  
SageMaker AI Distributed Data Parallel ist an TensorFlow Trainingsskripte anpassbar, die aus `tf` Kernmodulen mit Ausnahme `tf.keras` von Modulen bestehen. SageMaker AI Distributed Data Parallel unterstützt die TensorFlow Keras-Implementierung nicht.

**Anmerkung**  
Die SageMaker AI-Bibliothek für verteilte Datenparallelität unterstützt Automatic Mixed Precision (AMP) standardmäßig. Um AMP zu aktivieren, sind außer den Änderungen auf Framework-Ebene an Ihrem Trainingsskript keine weiteren Maßnahmen erforderlich. Wenn Gradienten aktiviert sind FP16, führt die SageMaker AI-Datenparallelitätsbibliothek ihren Betrieb in aus. `AllReduce` FP16 Weitere Informationen zur Implementierung von AMP APIs in Ihrem Trainingsskript finden Sie in den folgenden Ressourcen:  
[Frameworks — TensorFlow](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) in der *Dokumentation zu NVIDIA Deep Learning Performance*
[Automatic Mixed Precision for Deep Learning](https://developer.nvidia.com/automatic-mixed-precision) in den *NVIDIA-Entwicklerdokumenten*
[TensorFlow gemischte Präzision APIs](https://www.tensorflow.org/guide/mixed_precision) in der *TensorFlowDokumentation*

1. Importieren Sie den TensorFlow Client der Bibliothek und initialisieren Sie ihn.

   ```
   import smdistributed.dataparallel.tensorflow as sdp 
   sdp.init()
   ```

1. Ordnen Sie jede GPU einem einzelnen `smdistributed.dataparallel` Prozess zu mit `local_rank`–das bezieht sich auf den relativen Rang des Prozesses innerhalb eines bestimmten Knotens. Die `sdp.tensorflow.local_rank()`-API stellt Ihnen den lokalen Rang des Geräts zur Verfügung. Der Führungsnoten hat Rang 0, und die Worker-Knoten haben Rang 1, 2, 3, usw. Dies wird im folgenden Codeblock als aufgerufen. `sdp.local_rank()` `set_memory_growth`steht nicht in direktem Zusammenhang mit verteilter SageMaker KI, muss aber für verteiltes Training mit TensorFlow eingerichtet werden. 

   ```
   gpus = tf.config.experimental.list_physical_devices('GPU')
   for gpu in gpus:
       tf.config.experimental.set_memory_growth(gpu, True)
   if gpus:
       tf.config.experimental.set_visible_devices(gpus[sdp.local_rank()], 'GPU')
   ```

1. Skalieren Sie die Lernrate nach der Anzahl der Auftragnehmer. Die `sdp.tensorflow.size()` API stellt Ihnen die Anzahl der Auftragnehmer im Cluster zur Verfügung. Dies wird im folgenden Codeblock als `sdp.size()` aufgerufen. 

   ```
   learning_rate = learning_rate * sdp.size()
   ```

1. Verwenden Sie die `DistributedGradientTape` der Bibliothek, um den `AllReduce` Betrieb während des Trainings zu optimieren. `tf.GradientTape` ist damit abgeschlossen.  

   ```
   with tf.GradientTape() as tape:
         output = model(input)
         loss_value = loss(label, output)
       
   # SageMaker AI data parallel: Wrap tf.GradientTape with the library's DistributedGradientTape
   tape = sdp.DistributedGradientTape(tape)
   ```

1. Senden Sie die anfänglichen Modellvariablen vom Führungsknoten (Rang 0) an alle Worker-Knoten (Ränge 1 bis n). Dies ist erforderlich, um eine konsistente Initialisierung in allen Auftragnehmer-Rängen sicherzustellen. Verwenden Sie die `sdp.tensorflow.broadcast_variables` API, nachdem die Modell- und Optimizer-Variablen initialisiert wurden. Dies wird im folgenden Codeblock als `sdp.broadcast_variables()` aufgerufen. 

   ```
   sdp.broadcast_variables(model.variables, root_rank=0)
   sdp.broadcast_variables(opt.variables(), root_rank=0)
   ```

1. Ändern Sie abschließend Ihr Skript so, dass es Checkpoints nur auf dem Führungsknoten speichert. Der Führungsknoten hat ein synchronisiertes Modell. Dadurch wird auch vermieden, dass Worker-Knoten die Checkpoints überschreiben und die Checkpoints möglicherweise beschädigen. 

   ```
   if sdp.rank() == 0:
       checkpoint.save(checkpoint_dir)
   ```

Im Folgenden finden Sie ein Beispiel für ein TensorFlow Trainingsskript für verteiltes Training mit der Bibliothek.

```
import tensorflow as tf

# SageMaker AI data parallel: Import the library TF API
import smdistributed.dataparallel.tensorflow as sdp

# SageMaker AI data parallel: Initialize the library
sdp.init()

gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)
if gpus:
    # SageMaker AI data parallel: Pin GPUs to a single library process
    tf.config.experimental.set_visible_devices(gpus[sdp.local_rank()], 'GPU')

# Prepare Dataset
dataset = tf.data.Dataset.from_tensor_slices(...)

# Define Model
mnist_model = tf.keras.Sequential(...)
loss = tf.losses.SparseCategoricalCrossentropy()

# SageMaker AI data parallel: Scale Learning Rate
# LR for 8 node run : 0.000125
# LR for single node run : 0.001
opt = tf.optimizers.Adam(0.000125 * sdp.size())

@tf.function
def training_step(images, labels, first_batch):
    with tf.GradientTape() as tape:
        probs = mnist_model(images, training=True)
        loss_value = loss(labels, probs)

    # SageMaker AI data parallel: Wrap tf.GradientTape with the library's DistributedGradientTape
    tape = sdp.DistributedGradientTape(tape)

    grads = tape.gradient(loss_value, mnist_model.trainable_variables)
    opt.apply_gradients(zip(grads, mnist_model.trainable_variables))

    if first_batch:
       # SageMaker AI data parallel: Broadcast model and optimizer variables
       sdp.broadcast_variables(mnist_model.variables, root_rank=0)
       sdp.broadcast_variables(opt.variables(), root_rank=0)

    return loss_value

...

# SageMaker AI data parallel: Save checkpoints only from master node.
if sdp.rank() == 0:
    checkpoint.save(checkpoint_dir)
```

Nachdem Sie die Anpassung Ihres Trainingsskripts abgeschlossen haben, fahren Sie mit [Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten](data-parallel-use-api.md) fort. 

# Verteilte Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK starten
<a name="data-parallel-use-api"></a>

Um einen verteilten Trainingsjob mit Ihrem angepassten Skript von auszuführen[Anpassung Ihres Trainingsskripts zur Nutzung der kollektiven SMDDP-Operationen](data-parallel-modify-sdp-select-framework.md), verwenden Sie das Framework oder generische Schätzer des SageMaker Python SDK, indem Sie das vorbereitete Trainingsskript als Einstiegsskript und die verteilte Trainingskonfiguration angeben.

Auf dieser Seite erfahren Sie, wie Sie das [SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/api/training/index.html) auf zwei Arten verwenden können.
+ Wenn Sie eine schnelle Einführung in Ihren verteilten Schulungsberuf im Bereich SageMaker KI erreichen möchten, konfigurieren Sie eine SageMaker KI [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)- oder [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)Framework-Estimator-Klasse. Der Framework-Estimator nimmt Ihr Trainingsskript auf und gleicht anhand des für den Parameter angegebenen Werts automatisch die richtige Image-URI der [vorgefertigten Container PyTorch oder TensorFlow Deep Learning Container (DLC)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) ab. `framework_version`
+ Wenn Sie einen der vorgefertigten Container erweitern oder einen benutzerdefinierten Container erstellen möchten, um Ihre eigene ML-Umgebung mit SageMaker KI zu erstellen, verwenden Sie die generische `Estimator` AI-Klasse und geben Sie den SageMaker Image-URI des benutzerdefinierten Docker-Containers an, der in Ihrer Amazon Elastic Container Registry (Amazon ECR) gehostet wird.

Ihre Trainingsdatensätze sollten in Amazon S3 oder [Amazon FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) in dem Land gespeichert werden, AWS-Region in dem Sie Ihren Trainingsjob starten. Wenn Sie Jupyter-Notebooks verwenden, sollte auf derselben Instanz eine SageMaker Notebook-Instance oder eine SageMaker Studio Classic-App ausgeführt werden. AWS-Region Weitere Informationen zum Speichern Ihrer Trainingsdaten finden Sie in der Dokumentation zu den [SageMaker Python-SDK-Dateneingaben](https://sagemaker.readthedocs.io/en/stable/overview.html#use-file-systems-as-training-input). 

**Tipp**  
Wir empfehlen, Amazon FSx for Lustre anstelle von Amazon S3 zu verwenden, um die Trainingsleistung zu verbessern. Amazon FSx hat einen höheren Durchsatz und eine geringere Latenz als Amazon S3.

**Tipp**  
Zum ordnungsgemäßen Ausführen von verteilten Trainings der EFA-fähigen Instance-Typen sollten Sie den Datenverkehr zwischen den Instances aktivieren, indem Sie die Sicherheitsgruppe Ihrer VPC einrichten, die allen eingehenden und ausgehenden Datenverkehr von und zu der Sicherheitsgruppe selbst zulässt. Informationen zum Einrichten der Sicherheitsgruppenregeln finden Sie unter [Schritt 1: Vorbereiten einer EFA-fähigen Sicherheitsgruppe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) im *Amazon-EC2-Benutzerhandbuch*.

Wählen Sie eines der folgenden Themen mit Anweisungen zum Ausführen eines verteilten Trainingsjobs aus. Nachdem Sie einen Schulungsjob gestartet haben, können Sie die Systemauslastung und die Modellleistung mithilfe von [SageMaker Amazon-Debugger](train-debugger.md) Amazon überwachen CloudWatch.

Folgen Sie den Anweisungen in den folgenden Themen, um mehr über technische Details zu erfahren. Wir empfehlen Ihnen jedoch, zunächst [Beispiele für die Amazon SageMaker AI-Bibliothek zur Datenparallelität](distributed-data-parallel-v2-examples.md) das auszuprobieren.

**Topics**
+ [Verwenden Sie die PyTorch Framework-Schätzer im SageMaker Python-SDK](data-parallel-framework-estimator.md)
+ [Verwenden Sie den generischen SageMaker AI-Estimator, um vorgefertigte DLC-Container zu erweitern](data-parallel-use-python-skd-api.md)
+ [Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker AI Distributed Data Parallel Library](data-parallel-bring-your-own-container.md)

# Verwenden Sie die PyTorch Framework-Schätzer im SageMaker Python-SDK
<a name="data-parallel-framework-estimator"></a>

Sie können ein verteiltes Training starten, indem Sie das `distribution` Argument zu den SageMaker KI-Framework-Schätzern hinzufügen, [https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)oder [https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator). Für weitere Informationen wählen Sie aus den folgenden Optionen eines der Frameworks aus, die von der SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek unterstützt werden.

------
#### [ PyTorch ]

Die folgenden Launcher-Optionen sind für den Start von verteilten Schulungen verfügbar. PyTorch 
+ `pytorchddp`— Diese Option führt Umgebungsvariablen aus `mpirun` und richtet sie ein, die für die Durchführung PyTorch verteilter Schulungen auf SageMaker KI erforderlich sind. Um diese Option zu verwenden, übergeben Sie das folgende Wörterbuch an den Parameter `distribution`.

  ```
  { "pytorchddp": { "enabled": True } }
  ```
+ `torch_distributed`— Diese Option führt Umgebungsvariablen aus `torchrun` und richtet sie ein, die für die Durchführung PyTorch verteilter Schulungen auf SageMaker KI benötigt werden. Um diese Option zu verwenden, übergeben Sie das folgende Wörterbuch an den Parameter `distribution`.

  ```
  { "torch_distributed": { "enabled": True } }
  ```
+ `smdistributed`— Diese Option läuft ebenfalls`smddprun`, richtet `mpirun` aber damit Umgebungsvariablen ein, die für die Durchführung PyTorch verteilter Schulungen auf SageMaker KI benötigt werden.

  ```
  { "smdistributed": { "dataparallel": { "enabled": True } } }
  ```

Wenn Sie NCCL `AllGather` durch SMDDP `AllGather` ersetzen möchten, können Sie alle drei Optionen verwenden. Wählen Sie eine Option aus, die zu Ihrem Anwendungsfall passt.

Wenn Sie NCCL `AllReduce` durch SMDDP `AllReduce` ersetzen möchten, sollten Sie eine der `mpirun`-basierten Optionen wählen: `smdistributed` oder `pytorchddp`. Sie können auch zusätzliche MPI-Optionen hinzufügen.

```
{ 
    "pytorchddp": {
        "enabled": True, 
        "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
    }
}
```

```
{ 
    "smdistributed": { 
        "dataparallel": {
            "enabled": True, 
            "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
        }
    }
}
```

Das folgende Codebeispiel zeigt die grundlegende Struktur eines PyTorch Schätzers mit verteilten Trainingsoptionen.

```
from sagemaker.pytorch import PyTorch

pt_estimator = PyTorch(
    base_job_name="training_job_name_prefix",
    source_dir="subdirectory-to-your-code",
    entry_point="adapted-training-script.py",
    role="SageMakerRole",
    py_version="py310",
    framework_version="2.0.1",

    # For running a multi-node distributed training job, specify a value greater than 1
    # Example: 2,3,4,..8
    instance_count=2,

    # Instance types supported by the SageMaker AI data parallel library: 
    # ml.p4d.24xlarge, ml.p4de.24xlarge
    instance_type="ml.p4d.24xlarge",

    # Activate distributed training with SMDDP
    distribution={ "pytorchddp": { "enabled": True } }  # mpirun, activates SMDDP AllReduce OR AllGather
    # distribution={ "torch_distributed": { "enabled": True } }  # torchrun, activates SMDDP AllGather
    # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } }  # mpirun, activates SMDDP AllReduce OR AllGather
)

pt_estimator.fit("s3://bucket/path/to/training/data")
```

**Anmerkung**  
PyTorch Lightning und seine Utility-Bibliotheken wie Lightning Bolts sind in der SageMaker KI nicht vorinstalliert. PyTorch DLCs Erstellen Sie die folgende `requirements.txt` Datei und speichern Sie sie in dem Quellverzeichnis, in dem Sie das Trainingsskript speichern.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
Die Verzeichnisstruktur sollte wie folgt aussehen:  

```
├── pytorch_training_launcher_jupyter_notebook.ipynb
└── sub-folder-for-your-code
    ├──  adapted-training-script.py
    └──  requirements.txt
```
Weitere Informationen zur Angabe des Quellverzeichnisses, in dem die `requirements.txt` Datei zusammen mit Ihrem Schulungsskript und einer Jobübermittlung platziert werden soll, finden Sie unter [Verwenden von Bibliotheken von Drittanbietern](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) in der *Amazon SageMaker AI Python SDK-Dokumentation*.

**Überlegungen zur Aktivierung kollektiver SMDDP-Operationen und zur Verwendung der richtigen Launcher-Optionen für verteiltes Training**
+ SMDDP `AllReduce` und SMDDP `AllGather` sind derzeit nicht miteinander kompatibel.
+ SMDDP `AllReduce` ist standardmäßig aktiviert, wenn die `mpirun`-basierten Launcher `smdistributed` oder `pytorchddp` und NCCL `AllGather` verwendet werden.
+ SMDDP `AllGather` ist standardmäßig aktiviert, wenn der `torch_distributed`-Launcher verwendet wird und `AllReduce` auf NCCL zurückgreift.
+ SMDDP `AllGather` kann auch aktiviert werden, wenn die `mpirun`-basierten Launcher mit einer zusätzlichen Umgebungsvariablen wie folgt verwendet werden.

  ```
  export SMDATAPARALLEL_OPTIMIZE_SDP=true
  ```

------
#### [ TensorFlow ]

**Wichtig**  
Die SMDDP-Bibliothek hat die Unterstützung für TensorFlow Versionen ab Version 2.11.0 eingestellt TensorFlow und ist ab Version DLCs 2.11.0 nicht mehr verfügbar. Frühere Versionen TensorFlow DLCs mit installierter SMDDP-Bibliothek finden Sie unter. [TensorFlow (veraltet)](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks-tensorflow)

```
from sagemaker.tensorflow import TensorFlow

tf_estimator = TensorFlow(
    base_job_name = "training_job_name_prefix",
    entry_point="adapted-training-script.py",
    role="SageMakerRole",
    framework_version="2.11.0",
    py_version="py38",

    # For running a multi-node distributed training job, specify a value greater than 1
    # Example: 2,3,4,..8
    instance_count=2,

    # Instance types supported by the SageMaker AI data parallel library: 
    # ml.p4d.24xlarge, ml.p3dn.24xlarge, and ml.p3.16xlarge
    instance_type="ml.p3.16xlarge",

    # Training using the SageMaker AI data parallel distributed training strategy
    distribution={ "smdistributed": { "dataparallel": { "enabled": True } } }
)

tf_estimator.fit("s3://bucket/path/to/training/data")
```

------

# Verwenden Sie den generischen SageMaker AI-Estimator, um vorgefertigte DLC-Container zu erweitern
<a name="data-parallel-use-python-skd-api"></a>

Sie können vorgefertigte SageMaker KI-Container anpassen oder erweitern, um zusätzliche funktionale Anforderungen für Ihren Algorithmus oder Ihr Modell zu erfüllen, die das vorgefertigte SageMaker KI-Docker-Image nicht unterstützt. Ein Beispiel dafür, wie Sie einen vorgefertigten Container erweitern können, finden Sie unter [Erweitern eines vorgefertigten Containers](https://docs.aws.amazon.com/sagemaker/latest/dg/prebuilt-containers-extend.html).

Um einen vorgefertigten Container zu erweitern oder Ihren eigenen Container an die Verwendung der Bibliothek anzupassen, müssen Sie eines der unter [Unterstützte Frameworks](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks) aufgeführten Bilder verwenden.

**Anmerkung**  
Ab TensorFlow 2.4.1 und PyTorch 1.8.1 unterstützt das SageMaker KI-Framework DLCs EFA-fähige Instance-Typen. Wir empfehlen, die DLC-Images zu verwenden, die TensorFlow 2.4.1 oder höher und 1.8.1 oder höher enthalten. PyTorch 

Wenn Sie beispielsweise verwenden PyTorch, sollte Ihr Dockerfile eine `FROM` Anweisung enthalten, die der folgenden ähnelt:

```
# SageMaker AI PyTorch image
FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/pytorch-training:<image-tag>

ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker AI PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# /opt/ml and all subdirectories are utilized by SageMaker AI, use the /code subdirectory to store your user code.
COPY train.py /opt/ml/code/train.py

# Defines cifar10.py as script entrypoint
ENV SAGEMAKER_PROGRAM train.py
```

Mithilfe des [SageMaker Training Toolkits](https://github.com/aws/sagemaker-training-toolkit) und der Binärdatei der SageMaker AI Distributed Data Parallel Library können Sie Ihren eigenen Docker-Container weiter an die Arbeit mit SageMaker KI anpassen. Weitere Informationen hierzu finden Sie in den Anweisungen im folgenden Abschnitt.

# Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker AI Distributed Data Parallel Library
<a name="data-parallel-bring-your-own-container"></a>

Um Ihren eigenen Docker-Container für das Training zu erstellen und die SageMaker KI-Datenparallelbibliothek zu verwenden, müssen Sie die richtigen Abhängigkeiten und die Binärdateien der verteilten parallel SageMaker AI-Bibliotheken in Ihr Dockerfile aufnehmen. Dieser Abschnitt enthält Anweisungen zum Erstellen eines vollständigen Dockerfiles mit den minimalen Abhängigkeiten für verteiltes Training in SageMaker KI mithilfe der Data Parallel Library.

**Anmerkung**  
Diese benutzerdefinierte Docker-Option mit der SageMaker AI-Datenparallelbibliothek als Binärdatei ist nur für PyTorch verfügbar.

**Um ein Dockerfile mit dem SageMaker Training Toolkit und der Data Parallel Library zu erstellen**

1. Beginnen Sie mit einem Docker-Image von [NVIDIA CUDA](https://hub.docker.com/r/nvidia/cuda). [Verwenden Sie die cuDNN-Entwicklerversionen, die CUDA-Laufzeit- und Entwicklungstools (Header und Bibliotheken) enthalten, um aus dem Quellcode zu erstellen. PyTorch ](https://github.com/pytorch/pytorch#from-source)

   ```
   FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04
   ```
**Tipp**  
[Die offiziellen AWS Deep Learning Container (DLC) -Images werden aus den NVIDIA CUDA-Basisimages erstellt.](https://hub.docker.com/r/nvidia/cuda) Wenn Sie die vorgefertigten DLC-Images als Referenz verwenden und gleichzeitig die restlichen Anweisungen befolgen möchten, finden Sie weitere Informationen unter [AWS Deep Learning Containers for PyTorch ](https://github.com/aws/deep-learning-containers/tree/master/pytorch) Dockerfiles. 

1. Fügen Sie die folgenden Argumente hinzu, um Versionen von PyTorch und anderen Paketen anzugeben. Geben Sie außerdem die Amazon S3 S3-Bucket-Pfade zur SageMaker AI-Datenparallelbibliothek und zu anderer Software zur Nutzung von AWS Ressourcen an, z. B. das Amazon S3 S3-Plug-In. 

   Um andere Versionen der Bibliotheken von Drittanbietern als die im folgenden Codebeispiel bereitgestellten zu verwenden, empfehlen wir Ihnen, in den [offiziellen Dockerfiles von AWS Deep Learning Container nach Versionen PyTorch zu suchen](https://github.com/aws/deep-learning-containers/tree/master/pytorch/training/docker), die getestet, kompatibel und für Ihre Anwendung geeignet sind. 

   Informationen zur URLs Suche nach dem `SMDATAPARALLEL_BINARY` Argument finden Sie in den Nachschlagetabellen unter. [Unterstützte Frameworks](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks)

   ```
   ARG PYTORCH_VERSION=1.10.2
   ARG PYTHON_SHORT_VERSION=3.8
   ARG EFA_VERSION=1.14.1
   ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/${PYTORCH_VERSION}/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
   ARG PT_S3_WHL_GPU=https://aws-s3-plugin.s3.us-west-2.amazonaws.com/binaries/0.0.1/1c3e69e/awsio-0.0.1-cp38-cp38-manylinux1_x86_64.whl
   ARG CONDA_PREFIX="/opt/conda"
   ARG BRANCH_OFI=1.1.3-aws
   ```

1. Stellen Sie die folgenden Umgebungsvariablen ein, um die SageMaker Trainingskomponenten ordnungsgemäß zu erstellen und die Datenparallelbibliothek auszuführen. In den nachfolgenden Schritten verwenden Sie diese Variablen für die Komponenten.

   ```
   # Set ENV variables required to build PyTorch
   ENV TORCH_CUDA_ARCH_LIST="7.0+PTX 8.0"
   ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
   ENV NCCL_VERSION=2.10.3
   
   # Add OpenMPI to the path.
   ENV PATH /opt/amazon/openmpi/bin:$PATH
   
   # Add Conda to path
   ENV PATH $CONDA_PREFIX/bin:$PATH
   
   # Set this enviroment variable for SageMaker AI to launch SMDDP correctly.
   ENV SAGEMAKER_TRAINING_MODULE=sagemaker_pytorch_container.training:main
   
   # Add enviroment variable for processes to be able to call fork()
   ENV RDMAV_FORK_SAFE=1
   
   # Indicate the container type
   ENV DLC_CONTAINER_TYPE=training
   
   # Add EFA and SMDDP to LD library path
   ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH"
   ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH
   ```

1. Installieren oder aktualisieren `curl`, `wget`, und `git` in den nachfolgenden Schritten Pakete herunterladen und erstellen.

   ```
   RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
       apt-get update && apt-get install -y  --no-install-recommends \
           curl \
           wget \
           git \
       && rm -rf /var/lib/apt/lists/*
   ```

1. Installieren Sie die [Elastic Fabric Adapter (EFA)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)-Software für die Amazon EC2-Netzwerkkommunikation.

   ```
   RUN DEBIAN_FRONTEND=noninteractive apt-get update
   RUN mkdir /tmp/efa \
       && cd /tmp/efa \
       && curl --silent -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_VERSION}.tar.gz \
       && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \
       && cd aws-efa-installer \
       && ./efa_installer.sh -y --skip-kmod -g \
       && rm -rf /tmp/efa
   ```

1. Installieren Sie [Conda](https://docs.conda.io/en/latest/), um die Paketverwaltung zu übernehmen. 

   ```
   RUN curl -fsSL -v -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
       chmod +x ~/miniconda.sh && \
       ~/miniconda.sh -b -p $CONDA_PREFIX && \
       rm ~/miniconda.sh && \
       $CONDA_PREFIX/bin/conda install -y python=${PYTHON_SHORT_VERSION} conda-build pyyaml numpy ipython && \
       $CONDA_PREFIX/bin/conda clean -ya
   ```

1. Abrufen, Erstellen und Installieren PyTorch sowie die zugehörigen Abhängigkeiten. Wir bauen [PyTorch aus dem Quellcode](https://github.com/pytorch/pytorch#from-source), weil wir die Kontrolle über die NCCL-Version haben müssen, um die Kompatibilität mit dem [AWS OFI-NCCL-Plug-In](https://github.com/aws/aws-ofi-nccl) zu gewährleisten.

   1. [Folgen Sie den Schritten in der [PyTorch offiziellen Docker-Datei](https://github.com/pytorch/pytorch/blob/master/Dockerfile), installieren Sie die Build-Abhängigkeiten und richten Sie den Cache ein, um die Neukompilierung zu beschleunigen.](https://ccache.dev/)

      ```
      RUN DEBIAN_FRONTEND=noninteractive \
          apt-get install -y --no-install-recommends \
              build-essential \
              ca-certificates \
              ccache \
              cmake \
              git \
              libjpeg-dev \
              libpng-dev \
          && rm -rf /var/lib/apt/lists/*
        
      # Setup ccache
      RUN /usr/sbin/update-ccache-symlinks
      RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache
      ```

   1. [PyTorchDie allgemeinen und Linux-Abhängigkeiten von](https://github.com/pytorch/pytorch#install-dependencies) Install.

      ```
      # Common dependencies for PyTorch
      RUN conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses
      
      # Linux specific dependency for PyTorch
      RUN conda install -c pytorch magma-cuda113
      ```

   1. Klonen Sie das [PyTorch GitHubRepository](https://github.com/pytorch/pytorch).

      ```
      RUN --mount=type=cache,target=/opt/ccache \
          cd / \
          && git clone --recursive https://github.com/pytorch/pytorch -b v${PYTORCH_VERSION}
      ```

   1. Installieren und erstellen Sie eine bestimmte [NCCL](https://developer.nvidia.com/nccl)-Version. Ersetzen Sie dazu den Inhalt im Standard-NCCL-Ordner (`/pytorch/third_party/nccl`) durch die PyTorch spezifische NCCL-Version aus dem NVIDIA-Repository. Die NCCL-Version wurde in Schritt 3 dieses Handbuchs festgelegt.

      ```
      RUN cd /pytorch/third_party/nccl \
          && rm -rf nccl \
          && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \
          && cd nccl \
          && make -j64 src.build CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_80,code=sm_80" \
          && make pkg.txz.build \
          && tar -xvf build/pkg/txz/nccl_*.txz -C $CONDA_PREFIX --strip-components=1
      ```

   1. Erstellen und installieren. PyTorch Dieser Vorgang dauert in der Regel etwas mehr als 1 Stunde. Es wird mit der NCCL-Version erstellt, die in einem vorherigen Schritt heruntergeladen wurde.

      ```
      RUN cd /pytorch \
          && CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
          python setup.py install \
          && rm -rf /pytorch
      ```

1. Erstellen und installieren Sie das [AWS OFI NCCL-Plugin](https://github.com/aws/aws-ofi-nccl). Dies ermöglicht die [libfabric-Unterstützung](https://github.com/ofiwg/libfabric) für die SageMaker AI-Datenparallelbibliothek.

   ```
   RUN DEBIAN_FRONTEND=noninteractive apt-get update \
       && apt-get install -y --no-install-recommends \
           autoconf \
           automake \
           libtool
   RUN mkdir /tmp/efa-ofi-nccl \
       && cd /tmp/efa-ofi-nccl \
       && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \
       && cd aws-ofi-nccl \
       && ./autogen.sh \
       && ./configure --with-libfabric=/opt/amazon/efa \
       --with-mpi=/opt/amazon/openmpi \
       --with-cuda=/usr/local/cuda \
       --with-nccl=$CONDA_PREFIX \
       && make \
       && make install \
       && rm -rf /tmp/efa-ofi-nccl
   ```

1. Erstellen und installieren [TorchVision](https://github.com/pytorch/vision.git).

   ```
   RUN pip install --no-cache-dir -U \
       packaging \
       mpi4py==3.0.3
   RUN cd /tmp \
       && git clone https://github.com/pytorch/vision.git -b v0.9.1 \
       && cd vision \
       && BUILD_VERSION="0.9.1+cu111" python setup.py install \
       && cd /tmp \
       && rm -rf vision
   ```

1. Installieren und konfigurieren Sie OpenSSL. OpenSSH ist erforderlich, damit MPI zwischen Containern kommunizieren kann. Erlaube OpenSSH, mit Containern zu kommunizieren, ohne um Bestätigung zu bitten.

   ```
   RUN apt-get update \
       && apt-get install -y  --allow-downgrades --allow-change-held-packages --no-install-recommends \
       && apt-get install -y --no-install-recommends openssh-client openssh-server \
       && mkdir -p /var/run/sshd \
       && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
       && echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
       && mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
       && rm -rf /var/lib/apt/lists/*
   
   # Configure OpenSSH so that nodes can communicate with each other
   RUN mkdir -p /var/run/sshd && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
   RUN rm -rf /root/.ssh/ && \
    mkdir -p /root/.ssh/ && \
    ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa && \
    cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys \
    && printf "Host *\n StrictHostKeyChecking no\n" >> /root/.ssh/config
   ```

1. Installieren Sie das PT S3-Plug-In, um effizient auf Datensätze in Amazon S3 zuzugreifen.

   ```
   RUN pip install --no-cache-dir -U ${PT_S3_WHL_GPU}
   RUN mkdir -p /etc/pki/tls/certs && cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
   ```

1. Installieren Sie die Bibliothek [libboost](https://www.boost.org/). Dieses Paket wird für die Vernetzung der asynchronen IO-Funktionalität der SageMaker AI-Datenparallelbibliothek benötigt.

   ```
   WORKDIR /
   RUN wget https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.gz/download -O boost_1_73_0.tar.gz \
       && tar -xzf boost_1_73_0.tar.gz \
       && cd boost_1_73_0 \
       && ./bootstrap.sh \
       && ./b2 threading=multi --prefix=${CONDA_PREFIX} -j 64 cxxflags=-fPIC cflags=-fPIC install || true \
       && cd .. \
       && rm -rf boost_1_73_0.tar.gz \
       && rm -rf boost_1_73_0 \
       && cd ${CONDA_PREFIX}/include/boost
   ```

1. Installieren Sie die folgenden SageMaker KI-Tools für das PyTorch Training.

   ```
   WORKDIR /root
   RUN pip install --no-cache-dir -U \
       smclarify \
       "sagemaker>=2,<3" \
       sagemaker-experiments==0.* \
       sagemaker-pytorch-training
   ```

1. Installieren Sie abschließend die parallel SageMaker AI-Datenbinärdatei und die verbleibenden Abhängigkeiten.

   ```
   RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
     apt-get update && apt-get install -y  --no-install-recommends \
     jq \
     libhwloc-dev \
     libnuma1 \
     libnuma-dev \
     libssl1.1 \
     libtool \
     hwloc \
     && rm -rf /var/lib/apt/lists/*
   
   RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
   ```

1. Wenn Sie mit der Erstellung des Dockerfiles fertig sind, erfahren Sie unter [Adapting Your Own Training Container](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html), wie Sie den Docker-Container erstellen, in Amazon ECR hosten und einen Trainingsjob mit dem Python-SDK ausführen. SageMaker 

Der folgende Beispielcode zeigt ein vollständiges Dockerfile, nachdem alle vorherigen Codeblöcke kombiniert wurden.

```
# This file creates a docker image with minimum dependencies to run SageMaker AI data parallel training
FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04

# Set appropiate versions and location for components
ARG PYTORCH_VERSION=1.10.2
ARG PYTHON_SHORT_VERSION=3.8
ARG EFA_VERSION=1.14.1
ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/${PYTORCH_VERSION}/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
ARG PT_S3_WHL_GPU=https://aws-s3-plugin.s3.us-west-2.amazonaws.com/binaries/0.0.1/1c3e69e/awsio-0.0.1-cp38-cp38-manylinux1_x86_64.whl
ARG CONDA_PREFIX="/opt/conda"
ARG BRANCH_OFI=1.1.3-aws

# Set ENV variables required to build PyTorch
ENV TORCH_CUDA_ARCH_LIST="3.7 5.0 7.0+PTX 8.0"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV NCCL_VERSION=2.10.3

# Add OpenMPI to the path.
ENV PATH /opt/amazon/openmpi/bin:$PATH

# Add Conda to path
ENV PATH $CONDA_PREFIX/bin:$PATH

# Set this enviroment variable for SageMaker AI to launch SMDDP correctly.
ENV SAGEMAKER_TRAINING_MODULE=sagemaker_pytorch_container.training:main

# Add enviroment variable for processes to be able to call fork()
ENV RDMAV_FORK_SAFE=1

# Indicate the container type
ENV DLC_CONTAINER_TYPE=training

# Add EFA and SMDDP to LD library path
ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH"
ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH

# Install basic dependencies to download and build other dependencies
RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
  apt-get update && apt-get install -y  --no-install-recommends \
  curl \
  wget \
  git \
  && rm -rf /var/lib/apt/lists/*

# Install EFA.
# This is required for SMDDP backend communication
RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN mkdir /tmp/efa \
    && cd /tmp/efa \
    && curl --silent -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_VERSION}.tar.gz \
    && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \
    && cd aws-efa-installer \
    && ./efa_installer.sh -y --skip-kmod -g \
    && rm -rf /tmp/efa

# Install Conda
RUN curl -fsSL -v -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
    chmod +x ~/miniconda.sh && \
    ~/miniconda.sh -b -p $CONDA_PREFIX && \
    rm ~/miniconda.sh && \
    $CONDA_PREFIX/bin/conda install -y python=${PYTHON_SHORT_VERSION} conda-build pyyaml numpy ipython && \
    $CONDA_PREFIX/bin/conda clean -ya

# Install PyTorch.
# Start with dependencies listed in official PyTorch dockerfile
# https://github.com/pytorch/pytorch/blob/master/Dockerfile
RUN DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
        build-essential \
        ca-certificates \
        ccache \
        cmake \
        git \
        libjpeg-dev \
        libpng-dev && \
    rm -rf /var/lib/apt/lists/*

# Setup ccache
RUN /usr/sbin/update-ccache-symlinks
RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache

# Common dependencies for PyTorch
RUN conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses

# Linux specific dependency for PyTorch
RUN conda install -c pytorch magma-cuda113

# Clone PyTorch
RUN --mount=type=cache,target=/opt/ccache \
    cd / \
    && git clone --recursive https://github.com/pytorch/pytorch -b v${PYTORCH_VERSION}
# Note that we need to use the same NCCL version for PyTorch and OFI plugin.
# To enforce that, install NCCL from source before building PT and OFI plugin.

# Install NCCL.
# Required for building OFI plugin (OFI requires NCCL's header files and library)
RUN cd /pytorch/third_party/nccl \
    && rm -rf nccl \
    && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \
    && cd nccl \
    && make -j64 src.build CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_80,code=sm_80" \
    && make pkg.txz.build \
    && tar -xvf build/pkg/txz/nccl_*.txz -C $CONDA_PREFIX --strip-components=1

# Build and install PyTorch.
RUN cd /pytorch \
    && CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
    python setup.py install \
    && rm -rf /pytorch

RUN ccache -C

# Build and install OFI plugin. \
# It is required to use libfabric.
RUN DEBIAN_FRONTEND=noninteractive apt-get update \
    && apt-get install -y --no-install-recommends \
        autoconf \
        automake \
        libtool
RUN mkdir /tmp/efa-ofi-nccl \
    && cd /tmp/efa-ofi-nccl \
    && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \
    && cd aws-ofi-nccl \
    && ./autogen.sh \
    && ./configure --with-libfabric=/opt/amazon/efa \
        --with-mpi=/opt/amazon/openmpi \
        --with-cuda=/usr/local/cuda \
        --with-nccl=$CONDA_PREFIX \
    && make \
    && make install \
    && rm -rf /tmp/efa-ofi-nccl

# Build and install Torchvision
RUN pip install --no-cache-dir -U \
    packaging \
    mpi4py==3.0.3
RUN cd /tmp \
    && git clone https://github.com/pytorch/vision.git -b v0.9.1 \
    && cd vision \
    && BUILD_VERSION="0.9.1+cu111" python setup.py install \
    && cd /tmp \
    && rm -rf vision

# Install OpenSSH.
# Required for MPI to communicate between containers, allow OpenSSH to talk to containers without asking for confirmation
RUN apt-get update \
    && apt-get install -y  --allow-downgrades --allow-change-held-packages --no-install-recommends \
    && apt-get install -y --no-install-recommends openssh-client openssh-server \
    && mkdir -p /var/run/sshd \
    && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
    && echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
    && mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
    && rm -rf /var/lib/apt/lists/*
# Configure OpenSSH so that nodes can communicate with each other
RUN mkdir -p /var/run/sshd && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN rm -rf /root/.ssh/ && \
    mkdir -p /root/.ssh/ && \
    ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa && \
    cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys \
    && printf "Host *\n StrictHostKeyChecking no\n" >> /root/.ssh/config

# Install PT S3 plugin.
# Required to efficiently access datasets in Amazon S3
RUN pip install --no-cache-dir -U ${PT_S3_WHL_GPU}
RUN mkdir -p /etc/pki/tls/certs && cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

# Install libboost from source.
# This package is needed for smdataparallel functionality (for networking asynchronous IO).
WORKDIR /
RUN wget https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.gz/download -O boost_1_73_0.tar.gz \
    && tar -xzf boost_1_73_0.tar.gz \
    && cd boost_1_73_0 \
    && ./bootstrap.sh \
    && ./b2 threading=multi --prefix=${CONDA_PREFIX} -j 64 cxxflags=-fPIC cflags=-fPIC install || true \
    && cd .. \
    && rm -rf boost_1_73_0.tar.gz \
    && rm -rf boost_1_73_0 \
    && cd ${CONDA_PREFIX}/include/boost

# Install SageMaker AI PyTorch training.
WORKDIR /root
RUN pip install --no-cache-dir -U \
    smclarify \
    "sagemaker>=2,<3" \
    sagemaker-experiments==0.* \
    sagemaker-pytorch-training

# Install SageMaker AI data parallel binary (SMDDP)
# Start with dependencies
RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
    apt-get update && apt-get install -y  --no-install-recommends \
        jq \
        libhwloc-dev \
        libnuma1 \
        libnuma-dev \
        libssl1.1 \
        libtool \
        hwloc \
    && rm -rf /var/lib/apt/lists/*

# Install SMDDP
RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
```

**Tipp**  
[Weitere allgemeine Informationen zum Erstellen eines benutzerdefinierten Dockerfiles für das Training in SageMaker KI finden Sie unter Verwenden Sie Ihre eigenen Trainingsalgorhythmen.](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html)

**Tipp**  
Wenn Sie das benutzerdefinierte Dockerfile erweitern möchten, um die parallel SageMaker AI-Modellbibliothek zu integrieren, finden Sie weitere Informationen unter. [Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker Distributed Model Parallel Library](model-parallel-sm-sdk.md#model-parallel-bring-your-own-container)

# Beispiele für die Amazon SageMaker AI-Bibliothek zur Datenparallelität
<a name="distributed-data-parallel-v2-examples"></a>

Auf dieser Seite finden Sie Jupyter-Notebooks mit Beispielen für die Implementierung der SMDDP-Bibliothek ( SageMaker AI Distributed Data Parallelism) zur Ausführung verteilter Trainingsaufgaben auf KI. SageMaker 

## Blogs und Fallstudien
<a name="distributed-data-parallel-v2-examples-blog"></a>

In den folgenden Blogs werden Fallbeispiele zur Verwendung der SMDDP-Bibliothek behandelt.

**Blogs zu SMDDP v2**
+ [Ermöglichen Sie schnelleres Training mit der Amazon SageMaker AI-Datenparallelbibliothek](https://aws.amazon.com/blogs/machine-learning/enable-faster-training-with-amazon-sagemaker-data-parallel-library/), *AWS Machine Learning Blog* (5. Dezember 2023)

**Blogs zu SMDDP v1**
+ [Wie ich 10 TB für stabile Diffusion auf SageMaker KI in *Medium* trainiert habe](https://medium.com/@emilywebber/how-i-trained-10tb-for-stable-diffusion-on-sagemaker-39dcea49ce32) (29. November 2022)
+ [ PyTorch Lightning und natives PyTorch DDP auf Amazon SageMaker Training mit Amazon Search ausführen](https://aws.amazon.com/blogs/machine-learning/run-pytorch-lightning-and-native-pytorch-ddp-on-amazon-sagemaker-training-featuring-amazon-search/), *Blog für AWS Machine Learning* (18. August 2022)
+ [Schulung YOLOv5 zur parallel Bibliothek AWS mit PyTorch und mit SageMaker KI verteilter Daten](https://medium.com/@sitecao/training-yolov5-on-aws-with-pytorch-and-sagemaker-distributed-data-parallel-library-a196ab01409b), *Medium* (6. Mai 2022)
+ [Beschleunigen Sie EfficientNet das Modelltraining auf SageMaker KI mit PyTorch und der SageMaker AI-Parallelbibliothek für verteilte Daten](https://medium.com/@dangmz/speed-up-efficientnet-model-training-on-amazon-sagemaker-with-pytorch-and-sagemaker-distributed-dae4b048c01a), *Medium* (21. März 2022)
+ [Beschleunigen Sie das EfficientNet Training AWS mit der parallel SageMaker KI-Datenbibliothek](https://towardsdatascience.com/speed-up-efficientnet-training-on-aws-by-up-to-30-with-sagemaker-distributed-data-parallel-library-2dbf6d1e18e8) *Towards Data Science* (12. Januar 2022)
+ [Hyundai reduziert mithilfe von Amazon SageMaker AI die Trainingszeit für ML-Modelle für autonomes Fahren](https://aws.amazon.com/blogs/machine-learning/hyundai-reduces-training-time-for-autonomous-driving-models-using-amazon-sagemaker/), *AWS Machine Learning Blog* (25. Juni 2021)
+ [Verteiltes Training: BART/T5 mithilfe von Transformers und Amazon SageMaker AI auf die Zusammenfassung vorbereiten](https://huggingface.co/blog/sagemaker-distributed-training-seq2seq), die *Hugging Face Face-Website* (8. April 2021)

## Beispiel-Notebooks
<a name="distributed-data-parallel-v2-examples-pytorch"></a>

[Beispiel-Notebooks finden Sie im AI Examples Repository. SageMaker GitHub ](https://github.com/aws/amazon-sagemaker-examples/tree/master/training/distributed_training/) Führen Sie zum Herunterladen der Beispiele den folgenden Befehl aus, um das Repository zu klonen, und gehen Sie zu `training/distributed_training/pytorch/data_parallel`.

**Anmerkung**  
Klonen Sie die Beispiel-Notebooks und führen Sie sie in der folgenden SageMaker AI ML aus IDEs.  
[SageMaker KI JupyterLab](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl.html) (verfügbar in [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html), das nach Dezember 2023 erstellt wurde)
[SageMaker AI Code Editor](https://docs.aws.amazon.com/sagemaker/latest/dg/code-editor.html) (verfügbar in [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html), das nach Dezember 2023 erstellt wurde)
[Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) (verfügbar als Anwendung in [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html), das nach Dezember 2023 erstellt wurde)
[SageMaker Notebook-Instanzen](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html)

```
git clone https://github.com/aws/amazon-sagemaker-examples.git
cd amazon-sagemaker-examples/training/distributed_training/pytorch/data_parallel
```

**Beispiele für SMDDP v2**
+ [Trainiere Llama 2 mit der SageMaker AI Distributed Data Parallel Library (SMDDP) und DeepSpeed](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/deepspeed/llama2/smddp_deepspeed_example.ipynb)
+ [Trainiere Falcon mit der SageMaker AI Distributed Data Parallel Library (SMDDP) und PyTorch Fully Sharded Data Parallelism (FSDP)](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/fully_sharded_data_parallel/falcon/smddp_fsdp_example.ipynb)

**Beispiele für SMDDP v1**
+ [CNN mit und der KI-Datenparallelismus-Bibliothek PyTorch SageMaker ](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/mnist/pytorch_smdataparallel_mnist_demo.ipynb)
+ [BERT mit PyTorch und der SageMaker KI-Datenparallelitätsbibliothek](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/bert/pytorch_smdataparallel_bert_demo.ipynb)
+ [CNN mit TensorFlow 2.3.1 und der AI-Datenparallelitätsbibliothek SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/training/distributed_training/tensorflow/data_parallel/mnist/tensorflow2_smdataparallel_mnist_demo.html)
+ [BERT mit TensorFlow 2.3.1 und der AI-Datenparallelitätsbibliothek SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/training/distributed_training/tensorflow/data_parallel/bert/tensorflow2_smdataparallel_bert_demo.html)
+ [HuggingFace Paralleles Training mit verteilten Daten zum PyTorch Thema SageMaker KI — Verteilte Beantwortung von Fragen](https://github.com/huggingface/notebooks/blob/master/sagemaker/03_distributed_training_data_parallelism/sagemaker-notebook.ipynb)
+ [HuggingFace Paralleles Training mit verteilten Daten PyTorch zum Thema SageMaker KI — Zusammenfassung verteilter Texte](https://github.com/huggingface/notebooks/blob/master/sagemaker/08_distributed_summarization_bart_t5/sagemaker-notebook.ipynb)
+ [HuggingFace Paralleles Training mit verteilten Daten TensorFlow im Bereich KI SageMaker ](https://github.com/huggingface/notebooks/blob/master/sagemaker/07_tensorflow_distributed_training_data_parallelism/sagemaker-notebook.ipynb)

# Konfigurationstipps für die SageMaker KI-Bibliothek für verteilte Datenparallelität
<a name="data-parallel-config"></a>

Lesen Sie sich die folgenden Tipps durch, bevor Sie die SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek verwenden. Diese Liste enthält Tipps, die für alle Frameworks gelten.

**Topics**
+ [Datenvorverarbeitung](#data-parallel-config-dataprep)
+ [Einzelner oder mehrere Knoten](#data-parallel-config-multi-node)
+ [Skalierungseffizienz mit Debugger](#data-parallel-config-debug)
+ [Batch-Größe](#data-parallel-config-batch-size)
+ [Benutzerdefinierte MPI-Optionen](#data-parallel-config-mpi-custom)
+ [Nutzen Sie Amazon FSx und richten Sie eine optimale Lager- und Durchsatzkapazität ein](#data-parallel-config-fxs)

## Datenvorverarbeitung
<a name="data-parallel-config-dataprep"></a>

Wenn Sie Daten während des Trainings mithilfe einer externen Bibliothek, die die CPU nutzt, vorverarbeiten, kann es zu einem CPU-Engpass kommen, da SageMaker KI Distributed Data Parallel die CPU für Operationen verwendet. `AllReduce` Möglicherweise können Sie die Trainingszeit verkürzen, indem Sie die Vorverarbeitungsschritte in eine Bibliothek verschieben, die diese verwendet, GPUs oder indem Sie die gesamte Vorverarbeitung vor dem Training abschließen.

## Einzelner oder mehrere Knoten
<a name="data-parallel-config-multi-node"></a>

Wir empfehlen die Verwendung dieser Bibliothek mit mehreren Knoten. Die Bibliothek kann mit einem einzelnen Host und mehreren Geräten (z. B. einer einzelnen ML-Compute-Instanz mit mehreren GPUs) verwendet werden. Wenn Sie jedoch zwei oder mehr Knoten verwenden, führt der `AllReduce` Betrieb der Bibliothek zu einer deutlichen Leistungsverbesserung. Außerdem trägt dies auf einem einzelnen Host NVLink bereits zur Effizienz innerhalb `AllReduce` der Knoten bei.

## Skalierungseffizienz mit Debugger
<a name="data-parallel-config-debug"></a>

Sie können Amazon SageMaker Debugger verwenden, um die CPU- und GPU-Auslastung und andere interessante Messwerte während des Trainings zu überwachen und zu visualisieren. Sie können die [integrierten Debuger-Regeln](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-built-in-rules.html) verwenden, um Probleme mit der Rechenleistung zu überwachen, wie, `CPUBottleneck`, `LoadBalancing`, und `LowGPUUtilization`. Sie können diese Regeln mit [Debugger-Konfigurationen](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-configuration-for-debugging.html) angeben, wenn Sie einen Amazon SageMaker Python SDK-Schätzer definieren. Wenn Sie KI verwenden AWS CLI und AWS SDK für Python (Boto3) für Schulungen zu SageMaker KI verwenden, können Sie den Debugger aktivieren, wie unter [ SageMaker Debugger mithilfe der SageMaker Amazon-API konfigurieren](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html) beschrieben.

[Um ein Beispiel für die Verwendung von Debugger in einem SageMaker Schulungsjob zu sehen, können Sie auf eines der Notebook-Beispiele im Repository Notebook Examples SageMaker verweisen. GitHub ](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-debugger) Weitere Informationen über Debugger finden Sie unter [Amazon SageMaker Debugger](https://docs.aws.amazon.com/sagemaker/latest/dg/train-debugger.html).

## Batch-Größe
<a name="data-parallel-config-batch-size"></a>

Beim verteilten Training sollten die Batchgrößen proportional zunehmen, wenn mehr Knoten hinzugefügt werden. Um die Konvergenzgeschwindigkeit zu erhöhen, wenn Sie Ihrem Trainingsjob mehr Knoten hinzufügen und die globale Batchgröße erhöhen, erhöhen Sie die Lernrate.

Eine Möglichkeit, dies zu erreichen, besteht in der schrittweisen Aufwärmphase der Lernrate, bei der die Lernrate im Laufe der Trainingsaufgabe von einem kleinen auf einen großen Wert erhöht wird. Durch diese Erhöhung wird ein plötzlicher Anstieg der Lernrate vermieden und eine gesunde Konvergenz zu Beginn der Ausbildung ermöglicht. Sie können beispielsweise eine *lineare Skalierungsregel* verwenden, bei der jedes Mal, wenn die Größe eines Minibatches mit k multipliziert wird, auch die Lernrate mit k multipliziert wird. Weitere Informationen zu dieser Technik finden Sie in der Forschungsarbeit [Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour](https://arxiv.org/pdf/1706.02677.pdf), Abschnitte 2 und 3.

## Benutzerdefinierte MPI-Optionen
<a name="data-parallel-config-mpi-custom"></a>

Die SageMaker AI-Bibliothek für verteilte parallel Daten verwendet Message Passing Interface (MPI), einen beliebten Standard für die Verwaltung der Kommunikation zwischen Knoten in einem Hochleistungscluster, und verwendet die NCCL-Bibliothek von NVIDIA für die Kommunikation auf GPU-Ebene. Wenn Sie die Datenparallelbibliothek mit a TensorFlow oder Pytorch verwenden`Estimator`, richtet der jeweilige Container die MPI-Umgebung ein und führt den `mpirun` Befehl zum Starten von Jobs auf den Clusterknoten aus.

Sie können benutzerdefinierte MPI-Operationen mithilfe des `custom_mpi_options`-Parameters in der `Estimator` festlegen. Alle in diesem Feld übergebenen `mpirun` Flags werden dem `mpirun` Befehl hinzugefügt und von SageMaker KI zu Trainingszwecken ausgeführt. Sie können den `distribution` Parameter eines `Estimator` beispielsweise wie folgt definieren, um die [https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html#nccl-debug](https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html#nccl-debug) Variable zu verwenden, um die NCCL-Version zu Beginn des Programms zu drucken:

```
distribution = {'smdistributed':{'dataparallel':{'enabled': True, "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"}}}
```

## Nutzen Sie Amazon FSx und richten Sie eine optimale Lager- und Durchsatzkapazität ein
<a name="data-parallel-config-fxs"></a>

Wenn Sie ein Modell auf mehreren Knoten mit verteilter Datenparallelität trainieren, wird die Verwendung von [FSx for](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) Lustre dringend empfohlen. Amazon FSx ist ein skalierbarer und leistungsstarker Speicherservice, der gemeinsam genutzte Dateispeicherung mit schnellerem Durchsatz unterstützt. Wenn Sie Amazon FSx Storage in großem Maßstab verwenden, können Sie eine schnellere Datenladegeschwindigkeit über die Rechenknoten hinweg erreichen.

In der Regel würden Sie bei verteilter Datenparallelität erwarten, dass der gesamte Trainingsdurchsatz nahezu linear mit der Anzahl von skaliert. GPUs Wenn Sie jedoch suboptimalen FSx Amazon-Speicher verwenden, kann sich die Trainingsleistung aufgrund eines niedrigen FSx Amazon-Durchsatzes verlangsamen. 

Wenn Sie beispielsweise den [Bereitstellungstyp **SCRATCH\$12** des FSx Amazon-Dateisystems](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) mit einer Mindestspeicherkapazität von 1,2 TiB verwenden, beträgt die I/O Durchsatzkapazität 240. MB/s. Amazon FSx storage works in a way that you can assign physical storage devices, and the more devices assigned, the larger throughput you get. The smallest storage increment for the SRATCH\$12 type is 1.2 TiB, and the corresponding throughput gain is 240 MB/s

Gehen Sie davon aus, dass Sie über ein Modell verfügen, mit dem Sie auf einem 4-Node-Cluster über einen 100-GB-Datensatz trainieren können. Gehen Sie bei einer bestimmten Batchgröße, die für den Cluster optimiert ist, davon aus, dass das Modell eine Epoche in etwa 30 Sekunden abschließen kann. In diesem Fall beträgt die erforderliche I/O Mindestgeschwindigkeit ungefähr 3 GB/s (100 GB/30 s). Dies ist offenbar eine viel höhere Durchsatzanforderung als bei 240 MB/s. With such a limited Amazon FSx capacity, scaling your distributed training job up to larger clusters might aggravate I/O Engpassproblemen. Der Durchsatz beim Modelltraining könnte sich in späteren Epochen verbessern, wenn sich der Cache aufbaut, aber der FSx Amazon-Durchsatz kann immer noch ein Engpass sein.

Um solche I/O Engpässe zu vermeiden, sollten Sie die FSx Amazon-Speichergröße erhöhen, um eine höhere Durchsatzkapazität zu erzielen. Um einen optimalen I/O Durchsatz zu ermitteln, können Sie in der Regel mit verschiedenen FSx Amazon-Durchsatzkapazitäten experimentieren und einen Durchsatz zuweisen, der Ihrer Schätzung entspricht oder geringfügig darunter liegt, bis Sie feststellen, dass dieser ausreicht, um die I/O Engpassprobleme zu lösen. Im oben genannten Beispiel wäre FSx Amazon-Speicher mit 2,4 GB/s Durchsatz und 67 GB RAM-Cache ausreichend. Wenn das Dateisystem einen optimalen Durchsatz hat, sollte der Durchsatz beim Modelltraining entweder sofort oder nach der ersten Epoche, in der sich der Cache aufgebaut hat, seinen Höchstwert erreichen.

Weitere Informationen darüber, wie Sie die FSx Speicher- und Bereitstellungstypen von Amazon erhöhen können, finden Sie auf den folgenden Seiten in der *Amazon FSx for Lustre-Dokumentation*:
+  [Wie erhöht man die Speicherkapazität](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html#increase-storage-capacity) 
+  [Aggregierte Dateisystemleistung](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) 

# Häufig gestellte Fragen zur Amazon-SMDDP-Bibliothek (SageMaker AI Distributed Data Parallelism)
<a name="data-parallel-faq"></a>

Im Folgenden finden Sie Antworten auf häufig gestellte Fragen zur SMDDP-Bibliothek.

**F: Wie werden bei der Nutzung der Bibliothek die `allreduce` CPU-Instances verwaltet, die diese unterstützen? Muss ich heterogene CPU-GPU-Cluster erstellen, oder erstellt der SageMaker-AI-Dienst zusätzliche C5s für Jobs, die die SMDDP-Bibliothek verwenden?**

Die SMDDP-Bibliothek unterstützt nur GPU-Instances, genauer gesagt, P4d- und P4de-Instances mit NVIDIA A100-GPUs und EFA. Es werden keine zusätzlichen C5- oder CPU-Instances gestartet. Wenn Ihr SageMaker-AI-Trainingsjob auf einem P4d-Cluster mit 8 Knoten ausgeführt wird, werden nur 8 `ml.p4d.24xlarge`-Instances verwendet. Es werden keine zusätzlichen Instances bereitgestellt.

**F: Ich habe einen Trainingsjob, der 5 Tage für eine einzelne `ml.p3.24xlarge` Instance mit einem Satz von Hyperparametern H1 (Lernrate, Batchgröße, Optimizer usw.) dauert. Reicht die Verwendung der Datenparallelitätsbibliothek von SageMaker AI und eines fünfmal größeren Clusters aus, um eine ungefähre fünffache Beschleunigung zu erreichen? Oder muss ich nach der Aktivierung der SMDDP-Bibliothek die Trainings-Hyperparameter erneut aufrufen?**

Die Bibliothek ändert die gesamte Batchgröße. Die neue Gesamtstapelgröße wird linear mit der Anzahl der verwendeten Trainings-Instances skaliert. Aus diesem Grund müssen Hyperparameter wie die Lernrate geändert werden, um die Konvergenz sicherzustellen. 

**F: Unterstützt die SMDDP-Bibliothek Spot? **

Ja. So verwenden Sie Managed Spot Training. Sie geben den Pfad zur Checkpoint-Datei im SageMaker-Trainingsjob an. Sie speichern und stellen Checkpoints in ihrem Trainingsskript wieder her, wie in den letzten Schritten von [Verwenden Sie die SMDDP-Bibliothek in Ihrem TensorFlow Schulungsskript (veraltet)](data-parallel-modify-sdp-tf2.md) und [Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch](data-parallel-modify-sdp-pt.md) beschrieben. 

**F: Ist die SMDDP-Bibliothek für eine Konfiguration mit einem Host und mehreren Geräten relevant?**

Die Bibliothek kann für Trainings mit einem Host und mehreren Geräten verwendet werden. Leistungsverbesserungen bietet die Bibliothek jedoch nur bei Trainings mit mehreren Hosts.

**F: Wo sollte der Trainingsdatensatz gespeichert werden?**

Der Trainingsdatensatz kann in einem Amazon-S3-Bucket oder auf einem Amazon FSx-Laufwerk gespeichert werden. In diesem [Dokument finden Sie verschiedene unterstützte Eingabedateisysteme für einen Trainingsjob](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html#sagemaker.inputs.FileSystemInput). 

**F: Ist es bei der Nutzung der SMDDP-Bibliothek zwingend erforderlich, Trainingsdaten in FSx für Lustre zu haben? Können Amazon EFS und Amazon S3 verwendet werden?**

Wir empfehlen generell, Amazon FSx zu verwenden, da es eine geringere Latenz und einen höheren Durchsatz bietet. Wenn Sie möchten, können Sie auch Amazon EFS oder Amazon S3 verwenden.

**F: Kann die Bibliothek mit CPU-Knoten verwendet werden?** 

Nein. Informationen zu Instance-Typen, die von der SMDDP-Bibliothek unterstützt werden, finden Sie unter [Unterstützte Instance-Typen](distributed-data-parallel-support.md#distributed-data-parallel-supported-instance-types).

**F: Welche Frameworks und Framework-Versionen werden derzeit von der SMDDP-Bibliothek beim Start unterstützt?** 

Die SMDDP-Bibliothek unterstützt derzeit PyTorch v1.6.0 oder höher und TensorFlow v2.3.0 oder höher. TensorFlow 1.x. wird nicht unterstützt. Weitere Informationen darüber, welche Version der SMDDP-Bibliothek in AWS Deep Learning Containers verpackt ist, finden Sie unter [Versionshinweise für Deep-Learning-Container](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/dlc-release-notes.html).

**F: Unterstützt die Bibliothek AMP?**

Ja, die SMDDP-Bibliothek unterstützt Automatic Mixed Precision (AMP) von Haus aus. Für die Verwendung von AMP sind außer den Änderungen an Ihrem Trainingsskript auf Framework-Ebene keine weiteren Maßnahmen erforderlich. Wenn Gradienten in FP16 sind, führt die SageMaker-AI-Datenparallelitätsbibliothek ihren Betrieb in FP16 aus. `AllReduce` Weitere Informationen zum Implementieren von AMP-APIs in Ihrem Trainingsskript finden Sie in den folgenden Ressourcen:
+ [Frameworks – PyTorch](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#pytorch) in der *NVIDIA Deep Learning Performance-Dokumentation*
+ [Frameworks – TensorFlow](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) in der *NVIDIA Deep Learning Performance-Dokumentation*
+ [Automatische gemischte Präzision für Deep Learning](https://developer.nvidia.com/automatic-mixed-precision) in den *NVIDIA-Entwicklerdokumenten*
+ [Einführung der systemeigenen automatischen gemischten Präzision von PyTorch für schnelleres Training auf NVIDIA-GPUs](https://pytorch.org/blog/accelerating-training-on-nvidia-gpus-with-pytorch-automatic-mixed-precision/) im *PyTorch-Blog*
+ [TensorFlow-APIs mit gemischter Präzision](https://www.tensorflow.org/guide/mixed_precision) in der *TensorFlow-Dokumentation*

**F: Wie stelle ich fest, ob mein verteilter Trainingsjob aufgrund von I/O-Engpässen verlangsamt wird?**

Bei einem größeren Cluster erfordert der Trainingsjob einen höheren I/O-Durchsatz. Daher kann es länger dauern (mehr Epochen), bis der Trainingsdurchsatz die maximale Leistung erreicht. Dies deutet darauf hin, dass I/O-Engpässe auftreten und der Cache schwieriger aufzubauen ist, wenn Sie die Knoten vergrößern (höhere Durchsatzanforderungen und komplexere Netzwerktopologie). Weitere Informationen zur Überwachung des Amazon FSx-Durchsatzes auf CloudWatch finden Sie unter [Monitoring FSx für Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring_overview.html) im FSx for *Lustre-Benutzerhandbuch*. 

**F: Wie behebe ich I/O-Engpässe, wenn ich einen verteilten Trainingsjob mit Datenparallelität ausführe?**

Wir empfehlen Ihnen dringend, Amazon FSx als Ihren Datenkanal zu verwenden, wenn Sie Amazon S3 verwenden. Wenn Sie Amazon FSx bereits verwenden, aber immer noch I/O-Engpassprobleme haben, haben Sie Ihr Amazon FSx-Dateisystem möglicherweise mit einem niedrigen I/O-Durchsatz und einer geringen Speicherkapazität eingerichtet. Weitere Informationen zur Schätzung und Auswahl der richtigen Größe der I/O-Durchsatzkapazität finden Sie unter [Nutzen Sie Amazon FSx und richten Sie eine optimale Lager- und Durchsatzkapazität ein](data-parallel-config.md#data-parallel-config-fxs).

**F: (Für die Bibliothek v1.4.0 oder höher) Wie behebe ich den `Invalid backend` Fehler beim Initialisieren der Prozessgruppe.**

Wenn Sie beim Aufrufen von `init_process_group` auf die Fehlermeldung `ValueError: Invalid backend: 'smddp'` stoßen, liegt das an der grundlegenden Änderung in der SMDDP-Bibliothek v1.4.0 und höher. Sie müssen den PyTorch-Client der Bibliothek, `smdistributed.dataparallel.torch.torch_smddp`, importieren, der `smddp` als Backend für PyTorch registriert. Weitere Informationen hierzu finden Sie unter [Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch](data-parallel-modify-sdp-pt.md).

**F: (Für die SMDDP-Bibliothek v1.4.0 oder höher) möchte ich die kollektiven Primitiven der [https://pytorch.org/docs/stable/distributed.html](https://pytorch.org/docs/stable/distributed.html)-Schnittstelle aufrufen. Welche Primitive unterstützt das `smddp` Backend?**

In Version 1.4.0 unterstützt die SMDDP-Bibliothek`all_reduce`, `broadcast`, `reduce`, `all_gather` und `barrier` aus der `torch.distributed`-Schnittstelle.

**F: (Für die SMDDP-Bibliothek v1.4.0 oder höher) Funktioniert diese neue API mit anderen benutzerdefinierten DDP-Klassen oder -Bibliotheken wie Apex DDP?**

Die SMDDP-Bibliothek wurde mit anderen verteilten datenparallelen Bibliotheken und Framework-Implementierungen von Drittanbietern getestet, die die Module `torch.distribtued` verwenden. Die Verwendung der SMDDP-Bibliothek mit benutzerdefinierten DDP-Klassen funktioniert, solange die von den benutzerdefinierten DDP-Klassen verwendeten kollektiven Operationen von der SMDDP-Bibliothek unterstützt werden. In der vorherigen Frage finden Sie eine Liste der unterstützten Kollektive. Wenn Sie diese Anwendungsfälle haben und weitere Unterstützung benötigen, wenden Sie sich über das [AWSSupport Center](https://console.aws.amazon.com/support/) oder die [AWSEntwicklerforen für Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285) an das SageMaker-AI-Team.

**F: Unterstützt die SMDDP-Bibliothek die BYOC-Option (Bring-Your-Own-Container)? Falls ja, wie installiere ich die Bibliothek und führe einen verteilten Trainingsjob aus, indem ich ein benutzerdefiniertes Dockerfile schreibe?**

Wenn Sie die SMDDP-Bibliothek und ihre minimalen Abhängigkeiten in Ihren eigenen Docker-Container integrieren möchten, ist BYOC der richtige Ansatz. Sie können Ihren eigenen Container mithilfe der Binärdatei der Bibliothek erstellen. Der empfohlene Prozess besteht darin, ein benutzerdefiniertes Dockerfile mit der Bibliothek und ihren Abhängigkeiten zu schreiben, den Docker-Container zu erstellen, ihn in Amazon ECR zu hosten und den ECR-Image-URI zu verwenden, um einen Trainingsjob mit der generischen Schätzerklasse SageMaker AI zu starten. Weitere Anweisungen zur Vorbereitung eines benutzerdefinierten Dockerfiles für verteiltes Training in SageMaker AI mit der SMDDP-Bibliothek finden Sie unter [Erstellen Sie Ihren eigenen Docker-Container mit der SageMaker AI Distributed Data Parallel Library](data-parallel-bring-your-own-container.md).

# Fehlerbehebung für verteilte Schulungen in Amazon SageMaker AI
<a name="distributed-troubleshooting-data-parallel"></a>

Wenn Sie Probleme bei der Ausführung eines Trainingsjobs haben, während Sie die Bibliothek verwenden, verwenden Sie die folgende Liste, um zu versuchen, diese zu beheben. Wenn Sie weitere Unterstützung benötigen, wenden Sie sich über das SageMaker [AWS Support Center](https://console.aws.amazon.com/support/) oder die [AWS Entwicklerforen für Amazon Amazon SageMaker AI an das KI-Team](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**Topics**
+ [Verwendung von verteilten SageMaker KI-Daten parallel zu Amazon SageMaker Debugger und Checkpoints](#distributed-ts-data-parallel-debugger)
+ [Modellparameterschlüsseln wurde ein unerwartetes Präfix zugewiesen](#distributed-ts-data-parallel-pytorch-prefix)
+ [SageMaker KI verteilte Trainingsaufgaben, die während der Initialisierung ins Stocken geraten](#distributed-ts-data-parallel-efa-sg)
+ [SageMaker KI verteilte Schulungen, Jobs, die am Ende der Schulung ins Stocken gerieten](#distributed-ts-data-parallel-stall-at-the-end)
+ [Beobachtung der Verschlechterung der Skalierungseffizienz aufgrund von FSx Durchsatzengpässen bei Amazon](#distributed-ts-data-parallel-fxs-bottleneck)
+ [SageMaker Von KI verteilter Schulungsjob mit Hinweisen auf PyTorch veraltete Inhalte](#distributed-ts-data-parallel-deprecation-warnings)

## Verwendung von verteilten SageMaker KI-Daten parallel zu Amazon SageMaker Debugger und Checkpoints
<a name="distributed-ts-data-parallel-debugger"></a>

Verwenden Sie Amazon Debugger, um Systemengpässe zu überwachen, Framework-Operationen zu profilieren und Modellausgabetensoren für Trainingsjobs mit parallel verteilten SageMaker KI-Daten zu debuggen. SageMaker 

Wenn Sie jedoch SageMaker Debugger, SageMaker AI Distributed Data Parallel und SageMaker AI-Checkpoints verwenden, wird möglicherweise ein Fehler angezeigt, der dem folgenden Beispiel ähnelt. 

```
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
```

Dies ist auf einen internen Fehler zwischen Debugger und Checkpoints zurückzuführen, der auftritt, wenn Sie SageMaker AI Distributed Data parallel aktivieren. 
+ Wenn Sie alle drei Funktionen aktivieren, schaltet das SageMaker Python-SDK den Debugger automatisch durch Übergabe aus`debugger_hook_config=False`, was dem folgenden `estimator` Framework-Beispiel entspricht.

  ```
  bucket=sagemaker.Session().default_bucket()
  base_job_name="sagemaker-checkpoint-test"
  checkpoint_in_bucket="checkpoints"
  
  # The S3 URI to store the checkpoints
  checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket)
  
  estimator = TensorFlow(
      ...
  
      distribution={"smdistributed": {"dataparallel": { "enabled": True }}},
      checkpoint_s3_uri=checkpoint_s3_bucket,
      checkpoint_local_path="/opt/ml/checkpoints",
      debugger_hook_config=False
  )
  ```
+ Wenn Sie weiterhin sowohl SageMaker AI Distributed Data parallel als auch SageMaker Debugger verwenden möchten, besteht eine Problemumgehung darin, Ihrem Trainingsskript manuell Checkpoint-Funktionen hinzuzufügen, anstatt die `checkpoint_local_path` Parameter `checkpoint_s3_uri` und aus dem Schätzer anzugeben. Weitere Informationen zum Einrichten von manuellem Checkpointing in einem Trainingsskript finden Sie unter [Speichern von Prüfpunkten](distributed-troubleshooting-model-parallel.md#distributed-ts-model-parallel-checkpoints).

## Modellparameterschlüsseln wurde ein unerwartetes Präfix zugewiesen
<a name="distributed-ts-data-parallel-pytorch-prefix"></a>

Bei PyTorch verteilten Trainingsaufgaben kann ein unerwartetes Präfix (z. `model` B.) an `state_dict` Schlüssel (Modellparameter) angehängt werden. Die SageMaker KI-Datenparallelbibliothek ändert oder stellt Modellparameternamen nicht direkt voran, wenn PyTorch Trainingsjobs Modellartefakte speichern. PyTorchDas verteilte Training ändert die Namen in der, um über das Netzwerk `state_dict` zu gehen, wobei das Präfix vorangestellt wird. Wenn Sie bei der Verwendung der SageMaker AI-Datenparallelbibliothek und des Checkpoints für das PyTorch Training auf ein Modellfehlerproblem stoßen, das auf unterschiedliche Parameternamen zurückzuführen ist, passen Sie den folgenden Beispielcode an, um das Präfix zu entfernen, wenn Sie Checkpoints in Ihr Trainingsskript laden.

```
state_dict = {k.partition('model.')[2]:state_dict[k] for k in state_dict.keys()}
```

Dabei wird jeder `state_dict` Schlüssel als Zeichenkettenwert verwendet, die Zeichenfolge beim ersten Vorkommen von `'model.'` getrennt und das dritte Listenelement (mit Index 2) der partitionierten Zeichenfolge verwendet.

Weitere Informationen zum Problem mit dem Präfix finden Sie in einem Diskussionsthread unter [Präfixparameternamen im gespeicherten Modell, wenn es von mehreren Grafikprozessoren trainiert wurde?](https://discuss.pytorch.org/t/prefix-parameter-names-in-saved-model-if-trained-by-multi-gpu/494) im *PyTorch Diskussionsforum*.

Weitere Informationen zu den PyTorch Methoden zum Speichern und Laden von Modellen finden Sie in der *PyTorchDokumentation* unter [Modell geräteübergreifend speichern und laden](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-across-devices).

## SageMaker KI verteilte Trainingsaufgaben, die während der Initialisierung ins Stocken geraten
<a name="distributed-ts-data-parallel-efa-sg"></a>

Wenn Ihr parallel SageMaker AI-Trainingsjob für verteilte Daten während der Initialisierung bei Verwendung von EFA-fähigen Instances zum Stillstand kommt, kann dies an einer Fehlkonfiguration in der Sicherheitsgruppe des VPC-Subnetzes liegen, das für den Trainingsjob verwendet wird. EFA benötigt eine korrekte Sicherheitsgruppenkonfiguration, um den Verkehr zwischen den Knoten zu ermöglichen.

**So konfigurieren Sie eingehende und ausgehende Regeln für die Sicherheitsgruppe**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Klicken Sie im linken Navigationsbereich auf **Sichewrheitsgruppen**.

1. Wählen Sie die Sicherheitsgruppe aus, die mit dem VPC-Subnetz verknüpft ist, das Sie für das Training verwenden. 

1. Kopieren Sie im Abschnitt **Details** die **Sicherheitsgruppen-ID**.

1. Wählen Sie auf der Registerkarte **Inbound rules (Regeln für eingehenden Datenverkehr) ** die Option **Edt inbound rules (Regeln für eingehenden Datenverkehr bearbeiten)** aus.

1. Führen Sie im Dialogfeld **Edt inbound rules (Regeln für eingehenden Datenverkehr bearbeiten)** die folgenden Schritte aus: 

   1. Wählen Sie **Add rule**.

   1. Wählen Sie für **Type (Typ)** die Option **All traffic (Gesamter Datenverkehr)** aus.

   1. Wählen Sie für **Quelle** die Option **Benutzerdefiniert** aus, fügen Sie die Sicherheitsgruppen-ID in das Suchfeld ein und wählen Sie die Sicherheitsgruppe aus, die angezeigt wird.

1. Wählen Sie **Regeln speichern**, um die Konfiguration der eingehenden Regel für die Sicherheitsgruppe abzuschließen.

1. Wählen Sie auf der Registerkarte **Regeln für ausgehenden Datenverkehr** die Option **Regeln für ausgehenden Datenverkehr bearbeiten** aus.

1. Wiederholen Sie die Schritte 6 und 7, um dieselbe Regel als ausgehende Regel hinzuzufügen.

Nachdem Sie die vorherigen Schritte zur Konfiguration der Sicherheitsgruppe mit den Regeln für eingehenden und ausgehenden Datenverkehr abgeschlossen haben, führen Sie den Trainingsjob erneut aus und überprüfen Sie, ob das Blockierungsproblem behoben ist.

Weitere Informationen über das Konfigurieren von Sicherheitsgruppen für VPC und EFA finden Sie unter [Sicherheitsgruppen für Ihre VPC und](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) Ihren [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html).

## SageMaker KI verteilte Schulungen, Jobs, die am Ende der Schulung ins Stocken gerieten
<a name="distributed-ts-data-parallel-stall-at-the-end"></a>

Eine der Hauptursachen für Verzögerungen am Ende des Trainings ist eine Diskrepanz bei der Anzahl der Batches, die pro Epoche auf verschiedenen Rängen verarbeitet werden. Alle Worker (GPUs) synchronisieren ihre lokalen Farbverläufe im Rückwärtsgang, um sicherzustellen, dass am Ende der Batch-Iteration alle dieselbe Kopie des Modells haben. Wenn die Chargengrößen in der letzten Phase der Ausbildung ungleichmäßig verschiedenen Arbeitergruppen zugewiesen werden, gerät die Ausbildung ins Stocken. Während beispielsweise eine Gruppe von Arbeitern (Gruppe A) die Bearbeitung aller Chargen beendet und die Trainingsschleife beendet, beginnt eine andere Gruppe von Arbeitern (Gruppe B) mit der Verarbeitung eines weiteren Stapels und erwartet weiterhin, dass die Kommunikation von Gruppe A die Gradienten synchronisiert. Dies veranlasst Gruppe B, auf Gruppe A zu warten, die das Training bereits abgeschlossen hat und über keine zu synchronisierenden Farbverläufe verfügt. 

Daher ist es bei der Einrichtung Ihres Trainingsdatensatzes wichtig, dass jeder Mitarbeiter dieselbe Anzahl von Datenproben erhält, damit jeder Mitarbeiter während des Trainings dieselbe Anzahl von Batches durchläuft. Stellen Sie sicher, dass jeder Rang die gleiche Anzahl von Chargen erhält, um dieses Problem zu vermeiden, dass es zu Verzögerungen kommt.

## Beobachtung der Verschlechterung der Skalierungseffizienz aufgrund von FSx Durchsatzengpässen bei Amazon
<a name="distributed-ts-data-parallel-fxs-bottleneck"></a>

Eine mögliche Ursache für eine verringerte Skalierungseffizienz ist die FSx Durchsatzbegrenzung. Wenn Sie beim Wechsel zu einem größeren Trainingscluster einen plötzlichen Rückgang der Skalierungseffizienz feststellen, versuchen Sie, ein FSx für Lustre größeres Dateisystem mit einer höheren Durchsatzgrenze zu verwenden. Weitere Informationen finden Sie unter [Aggregierte Dateisystemleistung](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) und [Verwaltung der Speicher- und Durchsatzkapazität](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html) im *Amazon FSx for Lustre-Benutzerhandbuch*.

## SageMaker Von KI verteilter Schulungsjob mit Hinweisen auf PyTorch veraltete Inhalte
<a name="distributed-ts-data-parallel-deprecation-warnings"></a>

Seit Version 1.4.0 funktioniert die SageMaker AI-Bibliothek für verteilte Datenparallelität als Backend von Distributed. PyTorch Aufgrund der bahnbrechenden Änderung bei der Verwendung der Bibliothek mit wird möglicherweise eine Warnmeldung angezeigt PyTorch, dass die `smdistributed` APIs für das PyTorch verteilte Paket veraltet sind. Die Warnmeldung sollte in etwa wie folgt aussehen:

```
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+.
Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows:
torch.distributed.init_process_group(backend='smddp')
For more information, see the library's API documentation at
https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
```

In Version 1.4.0 und höher muss die Bibliothek nur einmal am Anfang Ihres Trainingsskripts importiert und während der verteilten Initialisierung als Backend eingerichtet werden. PyTorch Mit der einzigen Zeile der Backend-Spezifikation können Sie Ihr PyTorch Trainingsskript unverändert lassen und die verteilten Module direkt verwenden. PyTorch Weitere [Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch](data-parallel-modify-sdp-pt.md) Informationen über die wichtigsten Änderungen und die neue Art der Verwendung der Bibliothek finden Sie unter PyTorch.

# SageMaker Versionshinweise zur Bibliothek für KI-Datenparallelität
<a name="data-parallel-release-notes"></a>

In den folgenden Versionshinweisen finden Sie die neuesten Updates für die SageMaker AI Distributed Data Parallelism (SMDDP) -Bibliothek.

## Die SageMaker AI-Bibliothek für verteilte Datenparallelität v2.5.0
<a name="data-parallel-release-notes-20241017"></a>

*Datum: 17. Oktober 2024*

**Neue Features**
+ Unterstützung für PyTorch v2.4.1 mit CUDA v12.1 hinzugefügt.

**Integration in Docker-Container, die über die SageMaker AI Model Parallelism (SMP) -Bibliothek vertrieben werden**

Diese Version der SMDDP-Bibliothek ist zu [Die SageMaker Modellparallelismus-Bibliothek v2.6.0](model-parallel-release-notes.md#model-parallel-release-notes-20241017) migriert.

```
658645717510.dkr.ecr.<us-west-2>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121
```

Informationen zu Regionen, in denen die SMP-Docker-Images verfügbar sind, finden Sie unter [AWS-Regionen](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2).

**Binärdatei dieser Version**

Sie können die Bibliothek über die folgende URL herunterladen oder installieren.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.4.1/cu121/2024-10-09/smdistributed_dataparallel-2.5.0-cp311-cp311-linux_x86_64.whl
```

## Die SageMaker KI-Bibliothek für verteilte Datenparallelität v2.3.0
<a name="data-parallel-release-notes-20240611"></a>

*Datum: 11. Juni 2024*

**Neue Features**
+ Unterstützung für PyTorch v2.3.0 mit CUDA v12.1 und Python v3.11 hinzugefügt.
+ Unterstützung für PyTorch Lightning v2.2.5 hinzugefügt. Dies ist in den SageMaker AI-Framework-Container für PyTorch v2.3.0 integriert.
+ Es wurde eine Überprüfung des Instance-Typs während des Imports hinzugefügt, um das Laden der SMDDP-Bibliothek bei nicht unterstützten Instance-Typen zu verhindern. Eine Liste der Instance-Typen, die mit der SMDDP-Bibliothek kompatibel sind, finden Sie unter [Unterstützte Frameworks AWS-Regionen und Instanztypen](distributed-data-parallel-support.md).

**Integration in SageMaker AI Framework-Container**

Diese Version der SMDDP-Bibliothek wurde in den folgenden [SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) Framework-Container migriert.
+ PyTorch v2.3.0

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker
  ```

Eine vollständige Liste der Versionen der SMDDP-Bibliothek und der vorgefertigten Container finden Sie unter [Unterstützte Frameworks AWS-Regionen und Instanztypen](distributed-data-parallel-support.md).

**Binärdatei dieser Version**

Sie können die Bibliothek über die folgende URL herunterladen oder installieren.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed_dataparallel-2.3.0-cp311-cp311-linux_x86_64.whl
```

Weitere Änderungen
+ Die SMDDP-Bibliothek v2.2.0 ist in den AI-Framework-Container für v2.2.0 integriert. SageMaker PyTorch 

## Die SageMaker AI-Bibliothek für verteilte Datenparallelität v2.2.0
<a name="data-parallel-release-notes-20240304"></a>

*Datum: 4. März 2024*

**Neue Features**
+ Unterstützung für PyTorch v2.2.0 mit CUDA v12.1 hinzugefügt.

**Integration in Docker-Container, die über die SageMaker AI Model Parallelism (SMP) -Bibliothek vertrieben werden**

Diese Version der SMDDP-Bibliothek ist zu [Die SageMaker Modellparallelitätsbibliothek v2.2.0](model-parallel-release-notes.md#model-parallel-release-notes-20240307) migriert.

```
658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121
```

Informationen zu Regionen, in denen die SMP-Docker-Images verfügbar sind, finden Sie unter [AWS-Regionen](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2).

**Binärdatei dieser Version**

Sie können die Bibliothek über die folgende URL herunterladen oder installieren.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed_dataparallel-2.2.0-cp310-cp310-linux_x86_64.whl
```

## Die SageMaker KI-Bibliothek für verteilte Datenparallelität v2.1.0
<a name="data-parallel-release-notes-20240301"></a>

*Datum: 1. März 2024*

**Neue Features**
+ Unterstützung für PyTorch v2.1.0 mit CUDA v12.1 hinzugefügt.

**Fehlerbehebungen**
+ Das Problem mit dem CPU-Speicherleck in [SMDDP v2.0.1](#data-parallel-release-notes-20231207) wurde behoben.

**Integration in AI Framework-Container SageMaker **

Diese Version der SMDDP-Bibliothek hat die Benchmark-Tests bestanden und wurde in den folgenden [SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) Framework-Container migriert.
+ PyTorch v2.1.0

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker
  ```

**Integration in Docker-Container, die über die SageMaker AI Model Parallelism (SMP) -Bibliothek vertrieben werden**

Diese Version der SMDDP-Bibliothek ist zu [Die SageMaker Modellparallelitätsbibliothek v2.1.0](model-parallel-release-notes.md#model-parallel-release-notes-20240206) migriert.

```
658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121
```

Informationen zu Regionen, in denen die SMP-Docker-Images verfügbar sind, finden Sie unter [AWS-Regionen](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2).

**Binärdatei dieser Version**

Sie können die Bibliothek über die folgende URL herunterladen oder installieren.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed_dataparallel-2.1.0-cp310-cp310-linux_x86_64.whl
```

## Die SageMaker KI-Bibliothek für verteilte Datenparallelität v2.0.1
<a name="data-parallel-release-notes-20231207"></a>

*Datum: 7. Dezember 2023*

**Neue Features**
+ Es wurde eine neue SMDDP-Implementierung für `AllGather` kollektiven Betrieb hinzugefügt, die für Rechenressourcen und Netzwerkinfrastruktur optimiert ist. AWS Weitere Informationen hierzu finden Sie unter [Kollektive SMDDP-`AllGather`-Operation](data-parallel-intro.md#data-parallel-allgather).
+ Der `AllGather` kollektive SMDDP-Betrieb ist kompatibel mit FSDP und. PyTorch DeepSpeed Weitere Informationen hierzu finden Sie unter [Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch](data-parallel-modify-sdp-pt.md).
+ Unterstützung für v2.0.1 hinzugefügt PyTorch 

**Bekannte Probleme**
+ Es gibt ein CPU-Speicherleck, das durch eine allmähliche Erhöhung des CPU-Speichers beim Training mit SMDDP `AllReduce` im DDP-Modus entsteht.

**Integration in SageMaker AI Framework-Container**

Diese Version der SMDDP-Bibliothek hat die Benchmark-Tests bestanden und wurde in den folgenden [SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) Framework-Container migriert.
+ PyTorch v2.0.1

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker
  ```

**Binärdatei dieser Version**

Sie können die Bibliothek über die folgende URL herunterladen oder installieren.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed_dataparallel-2.0.2-cp310-cp310-linux_x86_64.whl
```

Weitere Änderungen
+ Ab dieser Version ist die Dokumentation für die SMDDP-Bibliothek vollständig in diesem *Amazon SageMaker AI Developer* Guide verfügbar. Für das vollständige Entwicklerhandbuch für SMDDP v2, das im *Amazon SageMaker AI Developer Guide* enthalten ist, wird die Dokumentation für die [zusätzliche Referenz für SMDDP v1.x](https://sagemaker.readthedocs.io/en/stable/api/training/smd_data_parallel.html) in der *SageMaker AI Python SDK-Dokumentation* nicht mehr unterstützt. Wenn Sie weiterhin die SMP v1.x-Dokumentation benötigen, sehen Sie sich den folgenden Snapshot der Dokumentation in der [SageMaker Python SDK v2.212.0-Dokumentation](https://sagemaker.readthedocs.io/en/v2.212.0/api/training/distributed.html#the-sagemaker-distributed-data-parallel-library) an.