Domande frequenti sulla libreria Amazon SageMaker AI Distributed Data Parallelism - Amazon SageMaker AI

Domande frequenti sulla libreria Amazon SageMaker AI Distributed Data Parallelism

Utilizza il seguente contenuto per trovare le risposte alle domande più frequenti sulla libreria SMDDP.

D: Quando si utilizza la libreria, come vengono gestite le istanze CPU che supportano allreduce? Devo creare cluster CPU-GPU eterogenei o il servizio SageMaker AI crea C5 aggiuntivi per i processi che utilizzano la libreria SMDDP?

La libreria SMDDP supporta solo le istanze della GPU, in particolare le istanze P4d e P4de con GPU NVIDIA A100 ed EFA. Non viene avviata alcuna istanza C5 o CPU aggiuntiva; se il job di addestramento di SageMaker AI riguarda un cluster P4d a 8 nodi, vengono utilizzate solo 8 istanze ml.p4d.24xlarge. Non viene fornita alcuna istanza aggiuntiva.

D: Ho un processo di addestramento che richiede 5 giorni su una singola istanza ml.p3.24xlarge con una serie di iperparametri H1 (tasso di apprendimento, dimensione del batch, ottimizzatore, ecc.). L’utilizzo della libreria SageMaker AI Distributed Data Parallelism e di un cluster cinque volte più grande è sufficiente per raggiungere una velocità di circa cinque volte maggiore? Oppure devo riesaminare i relativi iperparametri di addestramento dopo aver attivato la libreria SMDDP?

La libreria modifica la dimensione complessiva del batch. La nuova dimensione complessiva del batch viene ridimensionata linearmente in base al numero di istanze di addestramento utilizzate. Di conseguenza, gli iperparametri, come il tasso di apprendimento, devono essere modificati per garantire la convergenza.

D: La libreria SMDDP supporta Spot?

Sì. Puoi utilizzare Managed Spot Training. Devi specificare il percorso del file di checkpoint nel processo di addestramento SageMaker. I checkpoint vengono salvati e ripristinati nel relativo script di addestramento, come indicato nelle ultime fasi di Utilizzare la libreria SMDDP in uno script di addestramento TensorFlow (obsoleto) e Utilizzare la libreria SMDDP in uno script di addestramento PyTorch.

D: La libreria SMDDP è importante in una configurazione a host singolo e multidispositivo?

La libreria può essere utilizzata per l’addestramento su più dispositivi con host singolo, ma offre miglioramenti delle prestazioni solo nell’addestramento su più host.

D: Dove deve essere archiviato il set di dati di addestramento?

Il set di dati di addestramento può essere archiviato in un bucket Amazon S3 o su un'unità Amazon FSx. Consulta questo documento per conoscere i vari file system di input supportati per un processo di addestramento.

D: Quando si utilizza la libreria SMDDP, è obbligatorio disporre dei dati di addestramento in FSx per Lustre? È possibile utilizzare Amazon EFS e Amazon S3?

In genere consigliamo di utilizzare Amazon FSx a causa della sua latenza inferiore e della velocità di trasmissione effettiva maggiore. Se si preferisce, è possibile utilizzare Amazon EFS o Amazon S3.

D: La libreria può essere utilizzata con nodi CPU?

No. Per trovare i tipi di istanza supportati dalla libreria SMDDP, consulta Tipi di istanze supportati.

D: Quali framework e versioni di framework sono attualmente supportati dalla libreria SMDDP al momento dell’avvio?

La libreria SMDDP attualmente supporta PyTorch v1.6.0 o versioni successive e TensorFlow v2.3.0 o versioni successive. Non supporta TensorFlow 1.x. Per ulteriori informazioni su quale versione della libreria SMDDP è inclusa nei Container AWS per il Deep Learning, consulta le note di rilascio per i Container per il Deep learning.

D: La libreria supporta AMP?

Sì. La libreria SMDDP supporta Automatic Mixed Precision (AMP) per impostazione predefinita. Non è necessaria alcuna azione aggiuntiva per usare l'AMP oltre alle modifiche a livello di framework allo script di addestramento. Se i gradienti sono in FP16, la libreria SageMaker AI Distributed Data Parallelism esegue l’operazione AllReduce in FP16. Per ulteriori informazioni sull'implementazione delle API AMP nello script di addestramento, consulta le seguenti risorse:

D: Come posso stabilire se il mio processo di addestramento distribuito è rallentato a causa di un collo di bottiglia di I/O?

Con un cluster più grande, il processo di addestramento richiede una maggiore velocità di I/O e pertanto la velocità di addestramento potrebbe impiegare più tempo (più epoche) per raggiungere le massime prestazioni. Ciò indica che l'I/O è bloccato e che la cache è più difficile da sviluppare man mano che si scalano i nodi (requisiti di velocità di trasmissione effettiva maggiore e topologia di rete più complessa). Per ulteriori informazioni sul monitoraggio del throughput di Amazon FSx su CloudWatch, consulta Monitoraggio di FSx for Lustre nella Guida per l’utente di FSx for Lustre.

D: Come posso risolvere i problemi di I/O durante l'esecuzione di un processo di addestramento distribuito con parallelismo dei dati?

Ti consigliamo vivamente di utilizzare Amazon FSx come canale dati se utilizzi Amazon S3. Se utilizzi già Amazon FSx ma hai ancora problemi di collo di bottiglia di I/O, potresti aver configurato il tuo file system Amazon FSx con un throughput di I/O basso e una capacità di storage ridotta. Per ulteriori informazioni su come stimare e scegliere la giusta dimensione della capacità di throughput di I/O, consulta Usa Amazon FSx e configura una capacità di storage e throughput ottimale.

D: (Per la libreria v1.4.0 o successiva) Come posso risolvere l'errore Invalid backend durante l'inizializzazione del gruppo di processi.

Se viene visualizzato il messaggio di errore ValueError: Invalid backend: 'smddp' durante la chiamata a init_process_group, ciò è dovuto alla modifica sostanziale nella libreria SMDDP v1.4.0 e versioni successive. È necessario importare il client PyTorch della libreria smdistributed.dataparallel.torch.torch_smddp, che registra smddp come back-end per PyTorch. Per ulteriori informazioni, consulta Utilizzare la libreria SMDDP in uno script di addestramento PyTorch.

D: (Per la libreria SMDDP v1.4.0 o versione successiva) Vorrei chiamare le primitive collettive dell’interfaccia torch.distributed. Quali primitive supporta il backend smddp?

Nella versione 1.4.0, la libreria SMDDP supporta all_reduce, broadcast, reduce, all_gather e barrier dell’interfaccia torch.distributed.

D: (Per la libreria SMDDP v1.4.0 o versione successiva) Questa nuova API funziona con altre classi o librerie DDP personalizzate, come Apex DDP?

La libreria parallela SMDDP è testata con altre librerie Distributed Data Parallel di terze parti e implementazioni di framework che utilizzano i moduli torch.distribtued. L’utilizzo della libreria SMDDP con classi DDP personalizzate funziona purché le operazioni collettive utilizzate dalle classi DDP personalizzate siano supportate dalla libreria SMDDP. Vedi la domanda precedente per un elenco dei collettivi supportati. Se hai questi casi d’uso e hai bisogno di ulteriore supporto, contatta il team di SageMaker AI tramite il Centro di supporto AWS o AWS Developer Forums for Amazon SageMaker AI.

D: La libreria SMDDP supporta l’opzione Bring Your Own Container (BYOC)? In tal caso, come posso installare la libreria ed eseguire un processo di addestramento distribuito scrivendo un Dockerfile personalizzato?

Se desideri integrare la libreria SMDDP e le sue dipendenze minime nel tuo container Docker, BYOC è l’approccio giusto. Puoi creare il tuo container utilizzando il file binario della libreria. Il processo consigliato consiste nello scrivere un Dockerfile personalizzato con la libreria e le sue dipendenze, creare il container Docker, ospitarlo in Amazon ECR e utilizzare l’URI dell’immagine ECR per avviare un job di addestramento utilizzando la classe dello strumento di stima generico di SageMaker AI. Per ulteriori istruzioni su come preparare un Dockerfile personalizzato per l’addestramento distribuito in SageMaker AI con la libreria SMDDP, consulta Creare un container Docker con la libreria SageMaker AI Distributed Data Parallelism.