

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.

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

Wenn Sie Ihr [ PyTorch ](https://pytorch-lightning.readthedocs.io/en/latest/starter/introduction.html) Lightning-Trainingsskript mitbringen und einen parallelen Trainingsauftrag für verteilte Daten in SageMaker KI ausführen möchten, können Sie den Trainingsjob mit minimalen Änderungen in 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 ein, damit PyTorch Lightning die vom SageMaker Schulungs-Toolkit voreingestellten SageMaker KI-Umgebungsvariablen akzeptiert, 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 [https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.DDPStrategy.html](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.DDPStrategy.html) DDPStrategy-Klasse 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](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 [https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.FSDPStrategy.html](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.FSDPStrategy.html) FSDPStrategy-Klasse (mit einer gewünschten [ Wrapping-Richtlinie](https://pytorch.org/docs/stable/fsdp.html)) mit `"smddp"` für `process_group_backend` und `"gpu"` für und übergeben Sie es an die `accelerator` Trainer-Klasse. [https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html](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 [Starten verteilter Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK](data-parallel-use-api.md) fort. 

**Anmerkung**  
Wenn Sie eine SageMaker KI konstruieren PyTorch ModelTrainer und eine Anfrage für einen Schulungsauftrag einreichen, müssen Sie angeben [Starten verteilter Trainingsjobs mit SMDDP mithilfe des SageMaker Python-SDK](data-parallel-use-api.md)`requirements.txt`, ob `pytorch-lightning` und `lightning-bolts` in dem SageMaker PyTorch AI-Trainingscontainer installiert sind.  

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