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à.
Formazione distribuita in Amazon SageMaker AI
SageMaker L'intelligenza artificiale fornisce librerie di formazione distribuite e supporta varie opzioni di formazione distribuite per attività di deep learning come la visione artificiale (CV) e l'elaborazione del linguaggio naturale (NLP). Con le librerie di formazione distribuite di SageMaker AI, puoi eseguire in parallelo dati personalizzati altamente scalabili ed economici e modellare lavori di formazione paralleli di deep learning. Puoi anche utilizzare altri framework e pacchetti di formazione distribuiti come PyTorch DistributedDataParallel (DDP),torchrun
, MPI (mpirun
) e parameter server. La sezione seguente fornisce informazioni sui concetti fondamentali della formazione distribuita. In tutta la documentazione, le istruzioni e gli esempi si concentrano su come configurare le opzioni di formazione distribuite per le attività di deep learning utilizzando SageMaker PythonSDK.
Suggerimento
Per conoscere le migliori pratiche per il calcolo dei processi di addestramento distribuito ed elaborazione del machine learning (ML) in generale, consulta Elaborazione distribuita con best practice di SageMaker intelligenza artificiale.
Concetti di formazione distribuiti
SageMaker Le librerie di formazione distribuite di AI utilizzano i seguenti termini e funzionalità di formazione distribuita.
Set di dati e batch
-
Set di dati di addestramento: tutti i dati utilizzati per addestrare il modello.
-
Dimensione globale del batch: il numero di record selezionati dal set di dati di addestramento in ogni iterazione da inviare al GPUs cluster. Questo è il numero di record su cui viene calcolato il gradiente a ogni iterazione. Se viene utilizzato il parallelismo dei dati, esso è uguale al numero totale di repliche del modello moltiplicato per la dimensione del batch per replica:
global batch size = (the number of model replicas) * (per-replica batch size)
. Un singolo batch di dimensioni globali viene spesso definito mini-batch nella letteratura sul machine learning. -
Dimensione del batch per replica: quando si utilizza il parallelismo dei dati, si tratta del numero di record inviati a ciascuna replica del modello. Ogni replica del modello esegue un passaggio avanti e indietro con questo batch per calcolare gli aggiornamenti del peso. Gli aggiornamenti di peso risultanti vengono sincronizzati (ne viene calcolata la media) su tutte le repliche prima dell'elaborazione del set successivo di batch per replica.
-
Microbatch: un sottoinsieme del mini-batch o, se si utilizza un modello ibrido e il parallelismo dei dati, si tratta di un sottoinsieme del batch delle dimensioni di una singola replica. Quando si utilizza la libreria di parallelismo di modelli distribuiti di SageMaker AI, ogni microbatch viene inserito nella pipeline di addestramento one-by-one e segue un programma di esecuzione definito dal runtime della libreria.
Addestramento
-
Epoca: un ciclo di addestramento sull'intero set di dati. È comune avere più iterazioni per epoca. Il numero di epoche utilizzate durante l'addestramento dipende dal modello e dal caso d'uso.
-
Iterazione: un singolo passaggio in avanti e all'indietro eseguito utilizzando un batch globale di dati di addestramento delle dimensioni di un batch (un mini-batch). Il numero di iterazioni eseguite durante l'addestramento è determinato dalla dimensione globale del batch e dal numero di epoche utilizzate per l'addestramento. Ad esempio, se un set di dati include 5.000 campioni e si utilizza un batch globale di 500, saranno necessarie 10 iterazioni per completare una singola epoca.
-
Tasso di apprendimento: variabile che influenza la quantità di pesi modificati in risposta all'errore calcolato del modello. Il tasso di apprendimento svolge un ruolo importante nella capacità del modello di convergere, nonché nella velocità e nell'ottimalità della convergenza.
Istanze e GPUs
-
Istanze: un'istanza di calcolo AWS per l'apprendimento automatico
. Vengono anche chiamate nodi. -
Dimensione del cluster: quando si utilizza la libreria di formazione distribuita di SageMaker AI, si tratta del numero di istanze moltiplicato per il numero di istanze presenti in ciascuna istanza. GPUs Ad esempio, se si utilizzano due istanze ml.p3.8xlarge in un processo di formazione, da 4 istanze ciascuna, la dimensione del cluster è 8. GPUs Sebbene l'aumento delle dimensioni del cluster possa portare a tempi di addestramento più rapidi, la comunicazione tra le istanze deve essere ottimizzata; in caso contrario, la comunicazione tra i nodi può aumentare il sovraccarico di lavoro e comportare tempi di addestramento più lunghi. La libreria di formazione distribuita SageMaker AI è progettata per ottimizzare la comunicazione tra le istanze di calcolo di Amazon EC2 ML, portando a un maggiore utilizzo dei dispositivi e tempi di formazione più rapidi.
Soluzioni di addestramento distribuito
-
Parallelismo dei dati: una strategia di formazione distribuita in cui un set di dati di addestramento è suddiviso GPUs in più parti in un cluster di elaborazione, composto da più istanze Amazon ML. EC2 Ciascuno GPU contiene una replica del modello, riceve diversi batch di dati di addestramento, esegue un passaggio avanti e indietro e condivide gli aggiornamenti del peso con gli altri nodi per la sincronizzazione prima di passare al batch successivo e, infine, a un'altra epoca.
-
Parallelismo dei modelli: una strategia di formazione distribuita in cui il modello è partizionato su più unità GPUs in un cluster di elaborazione, composto da più istanze Amazon ML. EC2 Il modello potrebbe essere complesso e avere un gran numero di livelli e pesi nascosti, il che lo rende incapace di adattarsi alla memoria di una singola istanza. Ciascuna GPU contiene un sottoinsieme del modello, attraverso il quale i flussi di dati e le trasformazioni vengono condivisi e compilati. L'efficienza del parallelismo dei modelli, in termini di GPU utilizzo e tempi di addestramento, dipende in larga misura dal modo in cui il modello è partizionato e dal programma di esecuzione utilizzato per eseguire i passaggi avanti e indietro.
-
Pianificazione dell'esecuzione della pipeline (pipelining): la pianificazione di esecuzione della pipeline determina l'ordine in cui vengono eseguiti i calcoli (microbatch) e i dati vengono elaborati tra i dispositivi durante l'addestramento del modello. Il pipelining è una tecnica per ottenere una vera parallelizzazione nel parallelismo dei modelli e superare la perdita di prestazioni dovuta al calcolo sequenziale grazie all'elaborazione simultanea su diversi campioni di dati. GPUs Per ulteriori informazioni, consulta Pipeline Execution Schedule.
Concetti avanzati
I professionisti del Machine Learning (ML) di solito devono affrontare due sfide di scalabilità quando addestrano i modelli: scalare le dimensioni del modello e scalare i dati di addestramento. Sebbene le dimensioni e la complessità del modello possano portare a una maggiore precisione, esiste un limite alle dimensioni del modello che è possibile inserire in un unico modello. CPU GPU Inoltre, la scalabilità delle dimensioni del modello può comportare un numero maggiore di calcoli e tempi di addestramento più lunghi.
Non tutti i modelli gestiscono la scalabilità dei dati di addestramento allo stesso modo, poiché per l'addestramento devono inserire tutti i dati di addestramento in memoria. Si scalano solo verticalmente e per tipi di istanze sempre più grandi. Nella maggior parte dei casi, la scalabilità dei dati di addestramento comporta tempi di addestramento più lunghi.
Deep Learning (DL) è una famiglia specifica di algoritmi ML composta da diversi livelli di reti neurali artificiali. Il metodo di allenamento più comune è il mini-batch Stochastic Gradient Descent (). SGD Nel mini-batchSGD, il modello viene addestrato effettuando piccole modifiche iterative dei suoi coefficienti nella direzione che ne riduce l'errore. Tali iterazioni vengono condotte su sottocampioni di uguali dimensioni del set di dati di addestramento chiamati mini-batch. Per ogni mini-batch, il modello viene eseguito in ogni record del mini-batch, ne viene misurato l'errore e viene stimato il gradiente dell'errore. Quindi, il gradiente medio viene misurato su tutti i record del mini-batch e fornisce una direzione di aggiornamento per ogni coefficiente del modello. Un passaggio completo sul set di dati di addestramento viene chiamato epoca. Gli addestramenti del modello consistono in genere in dozzine o centinaia di epoche. Il mini-batch SGD presenta diversi vantaggi: in primo luogo, il suo design iterativo rende il tempo di addestramento teoricamente lineare rispetto alla dimensione del set di dati. In secondo luogo, in un determinato mini-batch ogni record viene elaborato individualmente dal modello senza ricorrere a comunicazioni tra record diversi dalla media del gradiente finale. L'elaborazione di un mini-batch è quindi particolarmente adatta per la parallelizzazione e la distribuzione.
La parallelizzazione della SGD formazione mediante la distribuzione dei record di un mini-batch su diversi dispositivi di elaborazione è chiamata formazione distribuita parallela dei dati ed è il paradigma di distribuzione DL più comunemente usato. L'addestramento parallelo dei dati è una strategia di distribuzione pertinente per scalare le dimensioni dei mini-batch ed elaborare ogni mini-batch più velocemente. Tuttavia, l'addestramento parallelo dei dati comporta l'ulteriore complessità di dover calcolare la media del gradiente in mini-batch con i gradienti provenienti da tutti i worker e comunicarla a tutti i worker, una fase chiamata allreduce che può rappresentare un sovraccarico crescente, poiché il cluster di addestramento viene ridimensionato, e che può anche penalizzare drasticamente i tempi di addestramento se implementata in modo improprio o con sottrazioni hardware improprie.
Il data parallel richiede SGD comunque che gli sviluppatori siano in grado di inserire almeno il modello e un singolo record in un dispositivo informatico, ad esempio un singolo CPU oGPU. Quando si addestrano modelli molto grandi, come trasformatori di grandi dimensioni in Natural Language Processing (NLP) o modelli di segmentazione su immagini ad alta risoluzione, potrebbero verificarsi situazioni in cui ciò non è possibile. Un modo alternativo per suddividere il carico di lavoro consiste nel partizionare il modello su più dispositivi di elaborazione, un approccio chiamato addestramento distribuito parallelo al modello.