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 relativi alla formazione distribuita in Amazon SageMaker AI
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 assistenza, contatta il team di SageMaker intelligenza artificiale tramite AWS Support Center
Argomenti
- Utilizzo di dati distribuiti SageMaker AI in parallelo con Amazon SageMaker Debugger e checkpoint
- Un prefisso inaspettato allegato alle chiavi dei parametri del modello
- SageMaker Il processo di formazione distribuito dall'IA si blocca durante l'inizializzazione
- SageMaker L'IA distribuiva il lavoro di formazione si interrompe alla fine della formazione
- Osservazione del degrado dell'efficienza di scalabilità dovuto alle difficoltà di throughput di Amazon FSx
- SageMaker Lavoro di formazione distribuito basato sull'intelligenza artificiale con PyTorch restituisce avvisi di obsolescenza
Utilizzo di dati distribuiti SageMaker AI in parallelo con Amazon SageMaker Debugger e checkpoint
Per monitorare i colli di bottiglia del sistema, le operazioni del framework dei profili ed eseguire il debug dei tensori di output del modello per lavori di formazione con dati SageMaker distribuiti in parallelo all'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 al seguente esempio.
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 SageMaker abilita AI distributed data parallel.
-
Se abiliti tutte e tre le funzionalità, SageMaker Python disattiva SDK automaticamente Debugger passando
debugger_hook_config=False
, il che equivale al seguente esempio di framework.estimator
bucket=sagemaker.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) estimator = TensorFlow( ... 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 SageMaker AI distributed data parallel che SageMaker Debugger, una soluzione alternativa consiste nell'aggiungere manualmente le funzioni di checkpointing allo script di addestramento invece di specificare i parametri e dallo stimatore.
checkpoint_s3_uri
checkpoint_local_path
Per ulteriori informazioni sui checkpoint manuali in uno script di addestramento, consulta Salvataggio dei checkpoint.
Un prefisso inaspettato allegato alle chiavi dei parametri del modello
Per i lavori di formazione PyTorch distribuiti, è possibile aggiungere un prefisso imprevisto (ad model
esempio) alle state_dict
chiavi (parametri del modello). La libreria parallela di dati SageMaker AI non altera o precede direttamente i nomi dei parametri del modello quando i lavori di PyTorch addestramento salvano gli artefatti del modello. L' PyTorchaddestramento distribuito modifica i nomi in modo che vengano trasmessi state_dict
alla rete, anteponendo il prefisso. 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 checkpointing per l' PyTorch addestramento, adatta il seguente codice di esempio per rimuovere il prefisso nella fase in cui carichi i 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 il thread di discussione all'indirizzo Prefix parameters names in saved model if training by multi
Per ulteriori informazioni sui PyTorch metodi di salvataggio e caricamento dei modelli, vedere Saving & Loading Model Across Devices
SageMaker Il processo di formazione distribuito dall'IA si blocca durante l'inizializzazione
Se il processo di formazione parallela dei dati distribuiti dall' SageMaker intelligenza artificiale si blocca durante l'inizializzazione quando si utilizzano istanze EFA -enabled, ciò potrebbe essere dovuto a un'errata configurazione nel gruppo di sicurezza della VPC sottorete utilizzata per il processo di formazione. EFArichiede 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
Accedi a AWS Management Console e apri la VPC console Amazon all'indirizzo https://console.aws.amazon.com/vpc/
. -
Nel riquadro di navigazione a sinistra, scegli Gruppi di sicurezza.
-
Seleziona il gruppo di sicurezza collegato alla VPC sottorete che usi per la formazione.
-
Nella sezione Dettagli, copia l’ID del gruppo di sicurezza.
-
Nella scheda Inbound rules (Regole in entrata), seleziona Edit inbound rules (Modifica regole in entrata).
-
Nella pagina Edit inbound rules (Modifica regole in entrata), esegui queste operazioni:
-
Scegliere Add rule (Aggiungi regola).
-
In Type (Tipo), selezionare All traffic (Tutto il traffico).
-
Per Origine, scegli Personalizzato, incolla l'ID del gruppo di sicurezza nella casella di ricerca e seleziona il gruppo di sicurezza che viene visualizzato.
-
-
Scegli Salva regole per completare la configurazione della regola in entrata per il gruppo di sicurezza.
-
Dalla scheda Regole in uscita, seleziona Modifica regole in uscita.
-
Ripeti le fasi 6 e 7 per aggiungere la stessa regola di una regola in uscita.
Dopo aver completato i passaggi precedenti per configurare il gruppo di sicurezza con le regole in entrata e in uscita, esegui nuovamente il processo di formazione e verifica se il problema di stallo è stato risolto.
Per ulteriori informazioni sulla configurazione dei gruppi di sicurezza per VPC eEFA, consulta Gruppi di sicurezza per te ed Elastic Fabric Adapter. VPC
SageMaker L'IA distribuiva il lavoro di formazione si interrompe alla fine della formazione
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 (GPUs) sincronizzano i gradienti locali nel passaggio all'indietro 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 scalabilità dovuto alle difficoltà di throughput di Amazon FSx
Una potenziale causa della riduzione dell'efficienza di scalabilità è il limite di velocità effettiva. FSx Se notate un calo improvviso dell'efficienza di scalabilità quando passate a un cluster di formazione più grande, provate a utilizzare un file system FSx for Lustre più grande con un limite di throughput più elevato. Per ulteriori informazioni, consulta Aggregate file system Performance e Managing storage and throughput capacity nella Amazon FSx for Lustre User Guide.
SageMaker Lavoro di formazione distribuito basato sull'intelligenza artificiale con PyTorch restituisce avvisi di obsolescenza
Dalla versione 1.4.0, la libreria di parallelismo dei dati distribuiti SageMaker AI funziona come backend di sistemi distribuiti. PyTorch A causa dell'importante modifica apportata all'utilizzo della libreria con PyTorch, è possibile che venga visualizzato un messaggio di avviso indicante che i pacchetti smdistributed
APIs per il PyTorch pacchetto distribuito sono obsoleti. 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 formazione e impostata come backend durante l'inizializzazione distribuita. PyTorch Con la singola riga di specifiche del backend, è possibile mantenere invariato lo script di PyTorch formazione e utilizzare direttamente i moduli distribuiti. PyTorch Vedi Usa la SMDDP libreria nel tuo script di allenamento PyTorch per scoprire le ultime modifiche e il nuovo modo di usare la libreria con. PyTorch