

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à.

# Parallelizzazione dei dati sottoposti a sharding
<a name="model-parallel-core-features-v2-sharded-data-parallelism"></a>

La *parallelizzazione dei dati sottoposti a sharding* è una tecnica di addestramento distribuito a risparmio di memoria che suddivide lo stato di un modello (parametri del modello, gradienti e stati dell’ottimizzatore) tra i dispositivi. Ciò consente di adattare un modello più grande o di aumentare la dimensione del batch utilizzando la memoria GPU liberata. La libreria SMP offre la capacità di eseguire il parallelismo dei dati condivisi con Fully Sharded Data Parallel (FSDP). PyTorch PyTorch Per impostazione predefinita, FSDP copre l'intero set di frammenti in uso. GPUs [In SMP v2, la libreria offre questo parallelismo di dati frammentati oltre a PyTorch FSDP estendendo lo sharding PyTorch ibrido (`HYBRID_SHARD`), che è una delle strategie di sharding fornite da FSDP:,,,. PyTorch ](https://pytorch.org/docs/stable/fsdp.html#torch.distributed.fsdp.ShardingStrategy) `FULL_SHARD` `SHARD_GRAD_OP` `HYBRID_SHARD` `_HYBRID_SHARD_ZERO2` [Estendere lo sharding ibrido in questo modo aiuta a implementare scale-aware-sharding, come descritto nel blog, la scalabilità quasi lineare della formazione su modelli gigantici su FSDP. AWS](https://www.amazon.science/blog/near-linear-scaling-of-gigantic-model-training-on-aws) PyTorch

La libreria SMP lo rende facile da usare `HYBRID_SHARD` e `_HYBRID_SHARD_ZERO2` su qualsiasi numero configurabile di GPUs, estendendo il PyTorch FSDP nativo che supporta lo sharding su un singolo nodo () o su tutti (). `HYBRID_SHARD` GPUs `FULL_SHARD` PyTorch Le chiamate FSDP possono rimanere invariate ed è sufficiente aggiungere l'`hybrid_shard_degree`argomento alla configurazione SMP, come mostrato nel seguente esempio di codice. Non è necessario modificare il valore dell'`sharding_strategy`argomento nel wrapper PyTorch FSDP del modello. PyTorch Puoi passare `ShardingStrategy.HYBRID_SHARD` come valore. In alternativa, la libreria SMP sovrascrive la strategia dello script e la imposta su `ShardingStrategy.HYBRID_SHARD` se si specifica un valore uguale o maggiore di 2 per il parametro `hybrid_shard_degree`.

I seguenti frammenti di codice mostrano come aggiungere il modulo di inizializzazione SMP `torch.sagemaker.init()` allo script di addestramento e impostare il dizionario di configurazione di SMP in formato JSON per il programma di avvio del job di addestramento seguendo il processo in due fasi introdotto in [Usa la libreria di parallelismo dei SageMaker modelli v2](model-parallel-use-api-v2.md). [Non è necessario apportare modifiche al PyTorch modello o alla configurazione FSDP. PyTorch ](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) Per ulteriori informazioni sul parametro `hybrid_shard_degree`, vedi [Parametri di configurazione delle funzionalità principali di SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

**Dizionario di configurazione di SMP**

```
{ "hybrid_shard_degree": 16 }
```

**Nello script di addestramento**

```
import torch.sagemaker as tsm
tsm.init()

# Set up a PyTorch model
model = ...

# Wrap the PyTorch model using the PyTorch FSDP module
model = FSDP(
    model,
    ...
)

# Optimizer needs to be created after FSDP wrapper
optimizer = ...
```