

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usa la libreria SMDDP nel tuo PyTorch script di formazione Lightning
<a name="data-parallel-modify-sdp-pt-lightning"></a>

Se desideri utilizzare il tuo script di [ formazione ](https://pytorch-lightning.readthedocs.io/en/latest/starter/introduction.html) PyTorch Lightning ed eseguire un job di training parallelo con dati distribuiti in SageMaker AI, puoi eseguire il processo di formazione apportando modifiche minime allo script di training. Le modifiche necessarie includono quanto segue: importazione dei PyTorch moduli della `smdistributed.dataparallel` libreria, impostazione delle variabili di ambiente in modo che PyTorch Lightning accetti le variabili di ambiente SageMaker AI preimpostate dal toolkit di SageMaker formazione e attivazione della libreria SMDDP impostando il backend del gruppo di processi su. `"smddp"` Per ulteriori informazioni, segui le seguenti istruzioni che descrivono le fasi con esempi di codice.

**Nota**  
Il supporto PyTorch Lightning è disponibile nella libreria parallela di dati SageMaker AI v1.5.0 e successive.

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

1. Importa la libreria `pytorch_lightning` e i moduli `smdistributed.dataparallel.torch`.

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

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

   ```
   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. **Per PyTorch DDP**: crea un oggetto della classe [ DDPStrategy con `"smddp"` for `process_group_backend` e `"gpu"` for `accelerator` e passalo alla ](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.DDPStrategy.html) classe Trainer. [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
   )
   ```

   **Per PyTorch FSDP**: create un oggetto della [ classe ](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.FSDPStrategy.html) FSDPStrategy (con policy di [ wrapping a scelta) con `"smddp"` for `process_group_backend` e for e ](https://pytorch.org/docs/stable/fsdp.html) `"gpu"` passatelo alla classe Trainer. `accelerator` [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
   )
   ```

Dopo aver completato l’adattamento dello script di addestramento, procedi con [Avvio di processi di formazione distribuiti con SMDDP utilizzando Python SDK SageMaker](data-parallel-use-api.md). 

**Nota**  
Quando costruisci un' SageMaker intelligenza artificiale PyTorch ModelTrainer e invii una richiesta di lavoro di formazione in[Avvio di processi di formazione distribuiti con SMDDP utilizzando Python SDK SageMaker](data-parallel-use-api.md), devi provvedere `requirements.txt` all'installazione e all'interno del contenitore di formazione per l'intelligenza artificiale. `pytorch-lightning` `lightning-bolts` SageMaker PyTorch   

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
Per ulteriori informazioni su come specificare la directory di origine in cui inserire il `requirements.txt` file insieme allo script di formazione e all'invio del lavoro, consulta [ Utilizzo di librerie di terze parti ](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) nella documentazione di * Amazon SageMaker AI Python SDK. *