

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

# Risoluzione dei problemi per la formazione distribuita in Amazon SageMaker AI
<a name="distributed-troubleshooting-data-parallel"></a>

Se hai problemi nell'esecuzione di un processo di addestramento quando usi la libreria, usa il seguente elenco per provare a risolvere il problema. Se hai bisogno di ulteriore supporto, contatta il team di SageMaker intelligenza artificiale tramite il Centro [AWS assistenza ](https://console.aws.amazon.com/support/) o i forum per [AWS sviluppatori di Amazon Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**Topics**
+ [Utilizzo di dati distribuiti tramite SageMaker intelligenza artificiale in parallelo ad Amazon SageMaker Debugger e ai checkpoint](#distributed-ts-data-parallel-debugger)
+ [Prefisso inaspettato collegato alle chiavi dei parametri del modello](#distributed-ts-data-parallel-pytorch-prefix)
+ [SageMaker L'intelligenza artificiale ha distribuito lo stallo del processo di formazione durante l'inizializzazione](#distributed-ts-data-parallel-efa-sg)
+ [SageMaker Formazione distribuita tramite intelligenza artificiale: blocco del lavoro alla fine della formazione](#distributed-ts-data-parallel-stall-at-the-end)
+ [Osservazione del degrado dell’efficienza di dimensionamento dovuto ai colli di bottiglia del throughput di Amazon FSx](#distributed-ts-data-parallel-fxs-bottleneck)
+ [SageMaker Job di formazione distribuito tramite intelligenza artificiale con avvisi di PyTorch deprezzamento dei resi](#distributed-ts-data-parallel-deprecation-warnings)

## Utilizzo di dati distribuiti tramite SageMaker intelligenza artificiale in parallelo ad Amazon SageMaker Debugger e ai checkpoint
<a name="distributed-ts-data-parallel-debugger"></a>

Per monitorare i colli di bottiglia del sistema, profilare le operazioni del framework ed eseguire il debug dei tensori di output del modello per i lavori di formazione con dati distribuiti in parallelo con SageMaker intelligenza artificiale, usa Amazon Debugger. SageMaker 

Tuttavia, quando utilizzi SageMaker Debugger, SageMaker AI distributed data parallel e SageMaker AI checkpoint, potresti visualizzare un errore simile all'esempio seguente. 

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

Ciò è dovuto a un errore interno tra Debugger e checkpoint, che si verifica quando si abilita il parallelo dei dati distribuiti AI. SageMaker 
+ Se abiliti tutte e tre le funzionalità, SageMaker Python SDK disattiva automaticamente Debugger tramite passaggio`debugger_hook_config=False`, il che equivale al seguente esempio di framework. `ModelTrainer`

  ```
  bucket=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)
  
  model_trainer = ModelTrainer(
      ...
  
      distribution={"smdistributed": {"dataparallel": { "enabled": True }}},
      checkpoint_s3_uri=checkpoint_s3_bucket,
      checkpoint_local_path="/opt/ml/checkpoints",
      debugger_hook_config=False
  )
  ```
+ Se desideri continuare a utilizzare sia i dati distribuiti dall' SageMaker IA in parallelo che SageMaker Debugger, una soluzione alternativa consiste nell'aggiungere manualmente le funzioni di checkpointing allo script di addestramento invece di specificare i parametri e dal. `checkpoint_s3_uri` `checkpoint_local_path` ModelTrainer Per ulteriori informazioni sui checkpoint manuali in uno script di addestramento, consulta [Salvataggio dei checkpoint](distributed-troubleshooting-model-parallel.md#distributed-ts-model-parallel-checkpoints).

## Prefisso inaspettato collegato alle chiavi dei parametri del modello
<a name="distributed-ts-data-parallel-pytorch-prefix"></a>

Per i lavori di formazione PyTorch distribuiti, un prefisso inaspettato (ad `model` esempio) potrebbe essere associato alle chiavi (parametri del modello). `state_dict` La libreria parallela di dati SageMaker AI non altera o antepone direttamente i nomi dei parametri del modello quando i processi di PyTorch addestramento salvano gli artefatti del modello. L' PyTorchaddestramento distribuito modifica i nomi in modo che vengano trasmessi in rete, anteponendo il prefisso. `state_dict` Se riscontri problemi di errore del modello a causa di nomi di parametri diversi mentre utilizzi la libreria parallela di dati SageMaker AI e il checkpoint per l' PyTorch addestramento, adatta il seguente codice di esempio per rimuovere il prefisso nella fase di caricamento dei checkpoint nello script di addestramento.

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

Questo prende ogni chiave `state_dict` come valore di stringa, separa la stringa alla prima occorrenza di `'model.'` e prende il terzo elemento dell'elenco (con indice 2) della stringa partizionata.

Per ulteriori informazioni sul problema del prefisso, consultate un thread di discussione all'indirizzo [ Prefix parameters names in saved model if training by multi-GPU? ](https://discuss.pytorch.org/t/prefix-parameter-names-in-saved-model-if-trained-by-multi-gpu/494)nel forum di discussione. * PyTorch *

Per ulteriori informazioni sui PyTorch metodi per salvare e caricare i modelli, vedere [ Saving & Loading Model Across Devices ](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-across-devices) nella * PyTorch documentazione*.

## SageMaker L'intelligenza artificiale ha distribuito lo stallo del processo di formazione durante l'inizializzazione
<a name="distributed-ts-data-parallel-efa-sg"></a>

Se il processo di formazione parallela dei dati distribuiti con SageMaker intelligenza artificiale si blocca durante l'inizializzazione quando si utilizzano EFA-enabled le istanze, ciò potrebbe essere dovuto a un'errata configurazione nel gruppo di sicurezza della sottorete VPC utilizzata per il processo di formazione. EFA richiede una corretta configurazione del gruppo di sicurezza per abilitare il traffico tra i nodi.

**Per configurare regole in entrata e in uscita per il gruppo di sicurezza**

1. Accedi Console di gestione AWS e apri la console Amazon VPC all'indirizzo. [ https://console.aws.amazon.com/vpc/ ](https://console.aws.amazon.com/vpc/)

1. Nel riquadro di navigazione a sinistra, scegli **Gruppi di sicurezza**.

1. Seleziona il gruppo di sicurezza collegato alla sottorete VPC che usi per l’addestramento. 

1. Nella sezione **Dettagli**, copia l’**ID del gruppo di sicurezza**.

1. Nella scheda **Inbound rules (Regole in entrata)**, seleziona **Edit inbound rules (Modifica regole in entrata)**.

1. Nella pagina **Edit inbound rules (Modifica regole in entrata)**, esegui queste operazioni: 

   1. Scegliere **Add rule** (Aggiungi regola).

   1. In **Type (Tipo)**, selezionare **All traffic (Tutto il traffico)**.

   1. Per **Origine**, scegli **Personalizzato**, incolla l'ID del gruppo di sicurezza nella casella di ricerca e seleziona il gruppo di sicurezza che viene visualizzato.

1. Scegli **Salva regole** per completare la configurazione della regola in entrata per il gruppo di sicurezza.

1. Dalla scheda **Regole in uscita**, seleziona **Modifica regole in uscita**.

1. Ripeti le fasi 6 e 7 per aggiungere la stessa regola di una regola in uscita.

Dopo aver completato le fasi precedenti per configurare il gruppo di sicurezza con le regole in entrata e in uscita, esegui nuovamente il job di addestramento e verifica se il problema relativo al blocco è stato risolto.

Per ulteriori informazioni sui gruppi di sicurezza per VPC ed EFA, consulta [Gruppi di sicurezza per VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) ed [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html).

## SageMaker Formazione distribuita tramite intelligenza artificiale: blocco del lavoro alla fine della formazione
<a name="distributed-ts-data-parallel-stall-at-the-end"></a>

Una delle cause principali dei problemi di stallo al termine dell'addestramento è la mancata corrispondenza nel numero di batch elaborati per epoca nelle diverse classificazioni. Tutti i worker (GPU) sincronizzano i gradienti locali nel passaggio a ritroso per garantire che tutti abbiano la stessa copia del modello al termine dell'iterazione del batch. Se le dimensioni dei lotti vengono assegnate in modo non uniforme ai diversi gruppi di worker durante l'ultima fase dell’addestramento, il processo di addestramento si blocca. Ad esempio, mentre un gruppo di worker (gruppo A) termina l'elaborazione di tutti i batch ed esce dal ciclo di addestramento, un altro gruppo di worker (gruppo B) inizia a elaborare un altro batch e si aspetta comunque che la comunicazione dal gruppo A sincronizzi i gradienti. Ciò fa sì che il gruppo B attenda il gruppo A, che ha già completato l'addestramento e non ha gradienti da sincronizzare. 

Pertanto, quando si configura il set di dati di addestramento, è importante che ogni worker riceva lo stesso numero di campioni di dati in modo che ogni worker esegua lo stesso numero di batch durante l'addestramento. Assicurati che ogni livello riceva lo stesso numero di batch per evitare questo problema di blocco.

## Osservazione del degrado dell’efficienza di dimensionamento dovuto ai colli di bottiglia del throughput di Amazon FSx
<a name="distributed-ts-data-parallel-fxs-bottleneck"></a>

Una potenziale causa della riduzione dell'efficienza di scalabilità è il limite di throughput FSx. Se osservi un calo improvviso dell'efficienza di scalabilità quando passi a un cluster di addestramento più grande, prova a utilizzare un file system FSx for Lustre più grande con un limite di throughput più elevato. Per ulteriori informazioni, consulta [Aggregare le prestazioni del file system](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) e [Gestione della capacità di archiviazione e di throughput](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html) nella *Guida per l’utente di Amazon FSx for Lustre*.

## SageMaker Job di formazione distribuito tramite intelligenza artificiale con avvisi di PyTorch deprezzamento dei resi
<a name="distributed-ts-data-parallel-deprecation-warnings"></a>

A partire dalla v1.4.0, la libreria di parallelismo dei dati distribuiti con SageMaker intelligenza artificiale funziona come backend di distributed. PyTorch A causa della sostanziale modifica apportata all'utilizzo della libreria with PyTorch, è possibile che venga visualizzato un messaggio di avviso indicante che le `smdistributed` API per il pacchetto distribuito sono obsolete. PyTorch Il messaggio di avviso visualizzato dovrebbe essere simile al seguente:

```
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
```

Nella versione 1.4.0 e successive, la libreria deve essere importata solo una volta nella parte superiore dello script di training e impostata come backend durante l'inizializzazione distribuita. PyTorch Con una singola riga di specifica del backend, puoi mantenere invariato lo script di PyTorch training e utilizzare direttamente i moduli distribuiti. PyTorch Consulta [Usa la libreria SMDDP nel tuo script di training PyTorch](data-parallel-modify-sdp-pt.md) per scoprire le principali modifiche e il nuovo modo di usare la libreria con. PyTorch