I modelli linguistici sono metodi statistici che prevedono la successione di token in sequenze, utilizzando il testo naturale. I modelli di linguaggio di grandi dimensioni (LLM) sono modelli di linguaggio basati su reti neurali con centinaia di milioni (BERTA) a oltre un trilione di parametri (MiCS) e le cui dimensioni rendono impraticabile l'addestramento con GPU singola. Le capacità generative degli LLM li rendono popolari per la sintesi del testo, il riepilogo, la traduzione automatica e altro ancora.
La dimensione di un LLM e dei suoi dati di addestramento è un'arma a doppio taglio: porta la qualità della modellazione, ma comporta sfide infrastrutturali. Il modello stesso è spesso troppo grande per entrare nella memoria di un singolo dispositivo GPU o su più dispositivi di un'istanza multi-GPU. Questi fattori richiedono l'addestramento di un LLM su grandi cluster di istanze di machine learning (ML) accelerato. Negli ultimi anni, numerosi clienti hanno utilizzato AWS Cloud per la formazione LLM.
In questo post, ci immergiamo in suggerimenti e best practice per una formazione LLM di successo Formazione su Amazon SageMaker. SageMaker Training è un servizio di elaborazione batch ML gestito che riduce i tempi e i costi per addestrare e mettere a punto i modelli su larga scala senza la necessità di gestire l'infrastruttura. All'interno di un comando di avvio, Amazon Sage Maker lancia un cluster di calcolo temporaneo completamente funzionante che esegue l'attività di tua scelta e con funzionalità ML avanzate come metastore, I/O gestito e distribuzione. Il post copre tutte le fasi di un carico di lavoro di formazione LLM e descrive le funzionalità e le best practice dell'infrastruttura associata. Alcune delle best practice in questo post si riferiscono specificamente alle istanze ml.p4d.24xlarge, ma la maggior parte è applicabile a qualsiasi tipo di istanza. Queste best practice ti consentono di addestrare LLM su SageMaker in una scala che va da dozzine a centinaia di milioni di parametri.
Per quanto riguarda lo scopo di questo post, si noti quanto segue:
- Non trattiamo la progettazione scientifica della rete neurale e le relative ottimizzazioni. Amazon.Scienza presenta numerose pubblicazioni scientifiche, incluse e non limitate a LLM.
- Sebbene questo post si concentri sugli LLM, la maggior parte delle sue best practice sono rilevanti per qualsiasi tipo di formazione su modelli di grandi dimensioni, inclusi la visione artificiale e i modelli multimodali, come Stable Diffusion.
Buone pratiche
Discutiamo le seguenti best practice in questo post:
- Calcolare – SageMaker Training è un'ottima API per avviare lavori di preparazione di set di dati CPU e lavori GPU su scala mille.
- Archiviazione – Vediamo il caricamento dei dati e il checkpoint fatto in due modi, a seconda delle abilità e delle preferenze: con un Lustro di Amazon FSx file system, o Servizio di archiviazione semplice Amazon (solo Amazon S3).
- Parallelismo – La scelta della libreria di training distribuita è cruciale per un uso appropriato delle GPU. Ti consigliamo di utilizzare una libreria ottimizzata per il cloud, come il parallelismo dei dati sharded di SageMaker, ma possono funzionare anche le librerie autogestite e open source.
- Networking – Assicurati che EFA e NVIDIA GPUDirectRDMA siano abilitati, per una rapida comunicazione tra macchine.
- Elasticità – Su larga scala, possono verificarsi guasti hardware. Raccomandiamo di controllare regolarmente. Ogni poche ore è comune.
Selezione della regione
Il tipo di istanza e la capacità desiderata sono un fattore determinante per la selezione della regione. Per le regioni supportate da SageMaker e dal Cloud di calcolo elastico di Amazon (Amazon EC2) disponibili in ogni regione, vedi Prezzi di Amazon SageMaker. In questo post, presumiamo che il tipo di istanza di addestramento sia ml.p4d.24xlarge gestito da SageMaker.
Ti consigliamo di lavorare con il team dell'account AWS o di contattare Vendite AWS per determinare la regione appropriata per il tuo carico di lavoro LLM.
Preparazione dei dati
Gli sviluppatori LLM addestrano i loro modelli su grandi set di dati di testo naturale. Esempi popolari di tali fonti di dati includono Scansione comune ed Il mucchio. Il testo presente in natura può contenere pregiudizi, imprecisioni, errori grammaticali e variazioni di sintassi. La qualità finale di un LLM dipende in modo significativo dalla selezione e cura dei dati di formazione. La preparazione dei dati di formazione LLM è un'area attiva di ricerca e innovazione nel settore LLM. La preparazione di un set di dati di elaborazione del linguaggio naturale (NLP) abbonda di opportunità di parallelismo senza condivisione. In altre parole, ci sono passaggi che possono essere applicati a unità di lavoro (file sorgente, paragrafi, frasi, parole) senza richiedere la sincronizzazione tra lavoratori.
Le API per i lavori di SageMaker, vale a dire SageMaker Training e SageMaker Processing, eccellono per questo tipo di attività. Consentono agli sviluppatori di eseguire un container Docker arbitrario su una flotta di più macchine. Nel caso dell'API SageMaker Training, il parco computer può essere eterogeneo. Numerosi framework di calcolo distribuito sono stati utilizzati su SageMaker, tra cui dask, raggio, e anche PySpark, che hanno un file dedicato Contenitore gestito da AWS ed SDK nell'elaborazione SageMaker.
Quando avvii un lavoro con più macchine, SageMaker Training and Processing esegue il tuo codice una volta per macchina. Non è necessario utilizzare un particolare framework di calcolo distribuito per scrivere un'applicazione distribuita: è possibile scrivere il codice di propria scelta, che verrà eseguito una volta per macchina, per realizzare il parallelismo senza condivisione. Puoi anche scrivere o installare la logica di comunicazione tra i nodi che preferisci.
Caricamento dei dati
Esistono diversi modi per archiviare i dati di addestramento e spostarli dalla relativa archiviazione ai nodi di calcolo accelerati. In questa sezione, discutiamo le opzioni e le best practice per il caricamento dei dati.
Opzioni di archiviazione e caricamento di SageMaker
Una tipica dimensione del set di dati LLM è di centinaia di milioni di token di testo, che rappresentano alcune centinaia di gigabyte. I cluster gestiti da SageMaker di istanze ml.p4d.24xlarge propongono diverse opzioni per l'archiviazione e il caricamento dei set di dati:
- SSD NVMe su nodo – Le istanze ml.P4d.24xlarge sono dotate di NVMe da 8 TB, disponibile sotto
/opt/ml/input/data/<channel>
se usi Modalità File di SageMaker, E in/tmp
. Se stai cercando la semplicità e le prestazioni di una lettura locale, puoi copiare i tuoi dati sull'SSD NVMe. La copia può essere eseguita dalla modalità File di SageMaker o dal tuo codice, ad esempio utilizzando multi-processing Boto3 or S5cmd. - FSx per Lustro – Gli SSD NVMe su nodo hanno dimensioni limitate e richiedono l'acquisizione da Amazon S3 a ogni lavoro o creazione di cluster a caldo. Se stai cercando di ridimensionare set di dati più grandi mantenendo un accesso casuale a bassa latenza, puoi utilizzare FSx for Lustre. Amazon FSx è un file system parallelo open source, popolare nel calcolo ad alte prestazioni (HPC). Usi di FSx per Lustre archiviazione di file distribuiti (stripping) e separa fisicamente i metadati del file dal contenuto del file per ottenere letture/scritture ad alte prestazioni.
- Modalità SageMaker FastFile – Modalità FastFile (FFM) è una funzionalità esclusiva di SageMaker che presenta oggetti S3 remoti in istanze di calcolo gestite da SageMaker in un'interfaccia conforme a POSIX e li trasmette in streaming solo dopo la lettura, utilizzando FUSE. FFM legge i risultati nelle chiamate S3 che eseguono lo streaming di file remoti blocco per blocco. Come best practice per evitare errori relativi al traffico Amazon S3, gli sviluppatori FFM dovrebbero mirare a mantenere ragionevole il numero sottostante di chiamate S3, ad esempio leggendo i file in sequenza e con una quantità controllata di parallelismo.
- Caricamento dati autogestito – Naturalmente, puoi anche decidere di implementare la tua logica di caricamento dei dati completamente personalizzata, utilizzando codice proprietario o open-source. Alcuni motivi per utilizzare il caricamento dei dati autogestito sono facilitare una migrazione riutilizzando il codice già sviluppato, implementare la logica di gestione degli errori personalizzata o avere un maggiore controllo sulle prestazioni sottostanti e sullo sharding. Esempi di librerie che puoi utilizzare per il caricamento dei dati autogestito includono torchdata.datapipes (in precedenza Plug-in AWS PyTorch S3) e Set di dati Web. L'SDK AWS Python Boto3 può anche essere combinato con Set di dati della torcia classi per creare codice di caricamento dati personalizzato. Le classi di caricamento dei dati personalizzate consentono inoltre l'uso creativo dei cluster eterogenei di SageMaker Training, per adattare con precisione il bilanciamento di CPU e GPU a un determinato carico di lavoro.
Per ulteriori informazioni su queste opzioni e su come sceglierle, fare riferimento a Scegli la migliore fonte di dati per il tuo lavoro di formazione su Amazon SageMaker.
Best practice per l'interazione su larga scala con Amazon S3
Amazon S3 è in grado di gestire i carichi di lavoro LLM, sia per la lettura dei dati che per il checkpoint. Supporta un tasso di richiesta di 3,500 richieste PUT/COPY/POST/DELETE o 5,500 GET/HEAD al secondo per prefisso in un bucket. Tuttavia, questa tariffa non è necessariamente disponibile per impostazione predefinita. Al contrario, con l'aumentare del tasso di richiesta di un prefisso, Amazon S3 si ridimensiona automaticamente per gestire l'aumento del tasso. Per ulteriori informazioni, fare riferimento a Perché ricevo errori di rallentamento 503 da Amazon S3 quando le richieste rientrano nella frequenza di richiesta supportata per prefisso.
Se prevedi un'interazione Amazon S3 ad alta frequenza, ti consigliamo le seguenti best practice:
- Prova a leggere e scrivere da più bucket S3 e prefissi. Ad esempio, puoi suddividere i dati di training e i checkpoint tra diversi prefissi.
- Controlla i parametri di Amazon S3 Amazon Cloud Watch per tenere traccia dei tassi di richiesta.
- Cerca di ridurre al minimo la quantità di PUT/GET simultanei:
- Avere meno processi che utilizzano Amazon S3 contemporaneamente. Ad esempio, se otto processi per nodo devono eseguire il checkpoint su Amazon S3, puoi ridurre il traffico PUT di un fattore 8 effettuando il checkpoint in modo gerarchico: prima all'interno del nodo, quindi dal nodo ad Amazon S3.
- Leggi più record di training da un singolo file o S3 GET, invece di utilizzare un S3 GET per ogni record di training.
- Se utilizzi Amazon S3 tramite SageMaker FFM, SageMaker FFM effettua chiamate S3 per recuperare i file blocco per blocco. Per limitare il traffico Amazon S3 generato da FFM, ti invitiamo a leggere i file in sequenza e a limitare il numero di file aperti in parallelo.
Se si dispone di un Piano di supporto per sviluppatori, aziende o aziende, è possibile aprire una richiesta di supporto tecnico relativa agli errori S3 503 Slow Down. Ma prima assicurati di aver seguito le migliori pratiche e ottenere gli ID della richiesta per le richieste fallite.
Parallelismo di allenamento
Gli LLM hanno comunemente da dozzine a centinaia di miliardi di parametri, il che li rende troppo grandi per essere inseriti in una singola scheda GPU NVIDIA. I professionisti LLM hanno sviluppato diverse librerie open source che facilitano il calcolo distribuito della formazione LLM, incluso PFSDP, deepspeed ed Megatron. Puoi eseguire queste librerie in SageMaker Training, ma puoi anche utilizzare le librerie di formazione distribuite SageMaker, che sono state ottimizzate per il cloud AWS e forniscono un'esperienza di sviluppo più semplice. Gli sviluppatori hanno due scelte per la formazione distribuita del loro LLM su SageMaker: librerie distribuite o autogestite.
Librerie distribuite SageMaker
Per offrirti migliori prestazioni e usabilità della formazione distribuita, SageMaker Training propone diverse estensioni proprietarie per ridimensionare il codice di formazione TensorFlow e PyTorch. La formazione LLM è spesso condotta in modo parallelo 3D:
- Parallelismo dei dati divide e invia i mini-batch di addestramento a più repliche identiche del modello, per aumentare la velocità di elaborazione
- Parallelismo della pipeline attribuisce vari livelli del modello a diverse GPU o persino istanze, al fine di ridimensionare le dimensioni del modello oltre una singola GPU e un singolo server
- Parallelismo tensoriale divide un singolo livello in più GPU, solitamente all'interno dello stesso server, per ridimensionare i singoli livelli a dimensioni superiori a una singola GPU
Nell'esempio seguente, un modello a 6 livelli viene addestrato su un cluster di k*3 server con 8*k*3 GPU (8 GPU per server). Il grado di parallelismo dei dati è k, il parallelismo della pipeline 6 e il parallelismo del tensore 4. Ogni GPU nel cluster contiene un quarto di un livello del modello e un modello completo è partizionato su tre server (24 GPU in totale).
Quanto segue è particolarmente rilevante per i LLM:
- Modello distribuito SageMaker parallelo – Questa libreria utilizza il partizionamento grafico per produrre un partizionamento intelligente del modello ottimizzato per la velocità o la memoria. Il parallelo del modello distribuito di SageMaker espone l'ultima e più grande ottimizzazione dell'addestramento di modelli di grandi dimensioni, inclusi parallelismo dei dati, parallelismo della pipeline, parallelismo del tensore, sharding dello stato dell'ottimizzatore, checkpoint di attivazione e offload. Con la libreria parallela di modelli distribuiti SageMaker, abbiamo documentato un addestramento di modelli di 175 miliardi di parametri su 920 GPU NVIDIA A100. Per ulteriori informazioni, fare riferimento a Addestra oltre 175 miliardi di modelli NLP di parametri con aggiunte di modelli paralleli e Hugging Face su Amazon SageMaker.
- SageMaker ha suddiviso i dati in parallelo - Nel MiCS: ridimensionamento quasi lineare per l'addestramento di modelli giganteschi su cloud pubblico, Zhang et al. introdurre una strategia parallela del modello a bassa comunicazione che suddivide i modelli solo su un gruppo parallelo di dati, anziché sull'intero cluster. Con MiCS, gli scienziati AWS sono stati in grado di raggiungere 176 teraflop per GPU (56.4% del picco teorico) per l'addestramento di un modello a 210 livelli da 1.06 trilioni di parametri su istanze EC2 P4de. MiCS è ora disponibile per i clienti SageMaker Training come SageMaker ha suddiviso i dati in parallelo.
Le librerie di formazione distribuite di SageMaker offrono prestazioni elevate e un'esperienza di sviluppo più semplice. In particolare, gli sviluppatori non devono scrivere e gestire un programma di avvio del processo parallelo personalizzato o utilizzare uno strumento di avvio specifico del framework, poiché il programma di avvio parallelo è integrato nell'SDK di avvio del processo.
Autogestito
Con SageMaker Training, hai la libertà di utilizzare la struttura e il paradigma scientifico di tua scelta. In particolare, se vuoi gestire tu stesso la formazione distribuita, hai due opzioni per scrivere il tuo codice personalizzato:
- Utilizza un AWS Deep Learning Container (DLC) – AWS sviluppa e mantiene DLC, fornendo ambienti basati su Docker ottimizzati per AWS per i migliori framework ML open source. SageMaker Training ha un'integrazione unica che ti consente di eseguire il pull e l'esecuzione di DLC AWS con un punto di ingresso esterno definito dall'utente. Per la formazione LLM in particolare, i DLC AWS per TensorFlow, PyTorch, Hugging Face e MXNet sono particolarmente rilevanti. L'utilizzo di un framework DLC ti consente di utilizzare il parallelismo nativo del framework, come PyTorch Distributed, senza dover sviluppare e gestire le tue immagini Docker. Inoltre, i nostri DLC presentano un Integrazione MPI, che consente di avviare facilmente il codice parallelo.
- Scrivi un'immagine Docker personalizzata compatibile con SageMaker – Puoi portare la tua immagine (BYO) (vedi Usa i tuoi algoritmi di allenamento ed Contenitori di formazione personalizzati di Amazon SageMaker), partendo da zero o estendendo un'immagine DLC esistente. Quando si utilizza un'immagine personalizzata per la formazione LLM su SageMaker, è particolarmente importante verificare quanto segue:
- La tua immagine contiene EFA con impostazioni appropriate (discusse più avanti in questo post)
- La tua immagine contiene una libreria di comunicazione NVIDIA NCCL, abilitata con GPUDirectRDMA
I clienti sono stati in grado di utilizzare una serie di librerie di training distribuite autogestite, tra cui DeepSpeed.
Comunicazioni
Data la natura distribuita di un lavoro di formazione LLM, la comunicazione tra macchine è fondamentale per la fattibilità, le prestazioni e i costi del carico di lavoro. In questa sezione, presentiamo le caratteristiche chiave per la comunicazione tra macchine e concludiamo con suggerimenti per l'installazione e la messa a punto.
Adattatore in tessuto elastico
Per accelerare le applicazioni ML e migliorare le prestazioni ottenendo flessibilità, scalabilità ed elasticità fornite dal cloud, puoi sfruttare Adattatore in tessuto elastico (EFA) con SageMaker. Nella nostra esperienza, l'utilizzo di EFA è un requisito per ottenere prestazioni di formazione LLM multinodo soddisfacenti.
Un dispositivo EFA è un'interfaccia di rete collegata alle istanze EC2 gestite da SageMaker durante l'esecuzione dei processi di addestramento. EFA è disponibile su specifiche famiglie di istanze, incluso il P4d. Le reti EFA sono in grado di raggiungere diverse centinaia di Gbps di throughput.
Associato a EFA, AWS ha introdotto il Datagramma affidabile scalabile (SRD), un trasporto basato su Ethernet ispirato al Datagramma affidabile InfiniBand, si è evoluto con un vincolo di ordinamento dei pacchetti rilassato. Per ulteriori informazioni su EFA e SRD, fare riferimento a Nella ricerca della performance, c'è più di un modo per costruire una rete, il video Come funziona EFA e perché non usiamo infiniband nel cloud, e il documento di ricerca Un protocollo di trasporto ottimizzato per il cloud per HPC elastico e scalabile da Shalev et al.
Puoi aggiungere l'integrazione EFA su istanze compatibili ai container Docker esistenti di SageMaker o ai container personalizzati che possono essere utilizzati per addestrare i modelli ML utilizzando i job SageMaker. Per ulteriori informazioni, fare riferimento a Eseguire la formazione con EFA. EFA è esposto tramite l'open-source Libfabric pacchetto di comunicazione Tuttavia, gli sviluppatori LLM raramente lo programmano direttamente con Libfabric e di solito si affidano invece a NVIDIA Collective Communications Library (NCCL).
Plug-in AWS-OFI-NCCL
Nel machine learning distribuito, EFA viene spesso utilizzato con NVIDIA Collective Communications Library (NCCL). NCCL è una libreria open source sviluppata da NVIDIA che implementa algoritmi di comunicazione tra GPU. La comunicazione tra GPU è una pietra angolare della formazione LLM che catalizza scalabilità e prestazioni. È così fondamentale per la formazione DL che l'NCCL è spesso integrato direttamente come back-end di comunicazione nelle librerie di formazione per l'apprendimento profondo, in modo che gli sviluppatori LLM lo utilizzino, a volte senza accorgersene, dal loro framework di sviluppo Python DL preferito. Per utilizzare l'NCCL su EFA, gli sviluppatori LLM utilizzano il formato sviluppato da AWS Plug-in AWS OFI NCCL, che mappa le chiamate NCCL all'interfaccia Libfabric utilizzata da EFA. Ti consigliamo di utilizzare l'ultima versione di AWS OFI NCCL per beneficiare dei recenti miglioramenti.
Per verificare che NCCL utilizzi EFA, è necessario impostare la variabile di ambiente NCCL_DEBUG
a INFO
e verifica nei log che l'EFA è caricato dall'NCCL:
Per ulteriori informazioni sulla configurazione NCCL e EFA, fare riferimento a Testa la tua configurazione EFA e NCCL. Puoi personalizzare ulteriormente l'NCCL con diversi variabili ambientali. Tieni presente che in NCCL 2.12 e versioni successive, AWS ha fornito una logica di selezione dell'algoritmo di comunicazione automatizzata per le reti EFA (NCCL_ALGO
può essere lasciato non impostato).
NVIDIA GPUDirect RDMA su EFA
Con il tipo di istanza P4d, we introdotto GPUDirect RDMA (GDR) su fabric EFA. Consente alle schede di interfaccia di rete (NIC) di accedere direttamente alla memoria della GPU, velocizzando la comunicazione remota da GPU a GPU tra le istanze EC2 basate su GPU NVIDIA e riducendo l'overhead di orchestrazione su CPU e applicazioni utente. GDR è utilizzato sotto il cofano dall'NCCL, quando possibile.
L'utilizzo di GDR viene visualizzato nella comunicazione tra GPU quando il livello di registro è impostato su INFO, come nel codice seguente:
Utilizzo di EFA in AWS Deep Learning Containers
AWS mantiene Deep Learning Containers (DLC), molti dei quali vengono forniti con Dockerfile gestiti da AWS e creati contenenti EFA, AWS OFI NCCL e NCCL. I seguenti repository GitHub offrono esempi con PyTorch ed TensorFlow. Non è necessario installare queste librerie da soli.
Utilizzo di EFA nel tuo contenitore SageMaker Training
Se crei il tuo container SageMaker Training e desideri utilizzare NCCL su EFA per la comunicazione accelerata tra i nodi, devi installare EFA, NCCL e AWS OFI NCCL. Per ulteriori informazioni, fare riferimento a Eseguire la formazione con EFA. Inoltre, dovresti impostare le seguenti variabili di ambiente nel contenitore o nel codice del punto di ingresso:
FI_PROVIDER="efa"
specifica il provider dell'interfaccia fabricNCCL_PROTO=simple
indica all'NCCL di utilizzare un protocollo semplice per la comunicazione (attualmente, il provider EFA non supporta i protocolli LL; abilitarli potrebbe portare al danneggiamento dei dati)FI_EFA_USE_DEVICE_RDMA=1
utilizza la funzionalità RDMA del dispositivo per il trasferimento unilaterale e bilateraleNCCL_LAUNCH_MODE="PARALLEL"
NCCL_NET_SHARED_COMMS="0"
Orchestrazione
La gestione del ciclo di vita e del carico di lavoro da dozzine a centinaia di istanze di calcolo richiede un software di orchestrazione. In questa sezione, offriamo le migliori pratiche per l'orchestrazione LLM
Orchestrazione all'interno del lavoro
Gli sviluppatori devono scrivere sia il codice di training lato server che il codice di avvio lato client nella maggior parte dei framework distribuiti. Il codice di addestramento viene eseguito sui computer di addestramento, mentre il codice di avvio lato client avvia il carico di lavoro distribuito da un computer client. C'è poca standardizzazione oggi, per esempio:
- In PyTorch, gli sviluppatori possono avviare attività su più macchine utilizzando
torchrun
,torchx
,torch.distributed.launch
(percorso di deprecazione), otorch.multiprocessing.spawn
- DeepSpeed propone il proprio launcher CLI deepspeed e supporta anche il lancio MPI
- MPI è un popolare framework di calcolo parallelo che ha il vantaggio di essere indipendente dal ML e ragionevolmente di ruolo, e quindi stabile e documentato, ed è sempre più visto nei carichi di lavoro ML distribuiti
In un cluster di formazione SageMaker, il contenitore di formazione viene avviato una volta su ciascuna macchina. Di conseguenza, hai tre opzioni:
- Avvio nativo – È possibile utilizzare come punto di ingresso il launcher nativo di un particolare framework DL, ad esempio a
torchrun
call, che a sua volta genererà più processi locali e stabilirà comunicazioni tra le istanze. - Integrazione SageMaker MPI – Puoi utilizzare l'integrazione SageMaker MPI, disponibile nel nostro DLC AWS o autoinstallabile tramite kit di strumenti per la formazione di sagemaker, per eseguire direttamente il codice del punto di ingresso N volte per macchina. Ciò ha il vantaggio di evitare l'uso di script di avvio intermedi e specifici del framework nel proprio codice.
- Librerie distribuite SageMaker – Se utilizzi le librerie distribuite di SageMaker, puoi concentrarti sul codice di addestramento e non devi scrivere affatto il codice di avvio! Il codice di avvio distribuito di SageMaker è integrato nell'SDK di SageMaker.
Orchestrazione inter-job
I progetti LLM sono spesso costituiti da più lavori: ricerca di parametri, esperimenti di ridimensionamento, ripristino da errori e altro ancora. Per avviare, arrestare e parallelizzare le attività di formazione, è importante usare un job orchestrator. SageMaker Training è un orchestratore di processi ML serverless che esegue il provisioning di istanze di calcolo transitorie immediatamente su richiesta. Paghi solo per ciò che usi e i cluster vengono disattivati non appena il tuo codice termina. Con SageMaker Training Piscine calde, hai la possibilità di definire un time-to-live sui cluster di formazione, al fine di riutilizzare la stessa infrastruttura tra i lavori. Ciò riduce il tempo di iterazione e la variabilità del collocamento inter-lavoro. I lavori SageMaker possono essere avviati da una varietà di linguaggi di programmazione, tra cui Python ed CLI.
Esiste un SDK Python specifico per SageMaker chiamato the SDK Python di SageMaker e implementato tramite il sagemaker Libreria Python, ma il suo utilizzo è facoltativo.
Aumento delle quote per i lavori di formazione con un cluster di formazione ampio e lungo
SageMaker ha quote predefinite sulle risorse, progettate per prevenire l'utilizzo e i costi non intenzionali. Per addestrare un LLM utilizzando un grande cluster di istanze di fascia alta in esecuzione per lungo tempo, probabilmente dovrai aumentare le quote nella tabella seguente.
Nome della quota | Valore di default |
Tempo di esecuzione più lungo per un processo di formazione | 432,000 secondi |
Numero di istanze in tutti i processi di formazione | 4 |
Numero massimo di istanze per processo di addestramento | 20 |
ml.p4d.24xlarge per l'utilizzo del lavoro di formazione | 0 |
ml.p4d.24xlarge per l'addestramento all'uso della piscina calda | 0 |
See Quote di servizio AWS come visualizzare i valori della quota e richiedere un aumento della quota. Le quote on demand, istanze Spot e warm pool di addestramento vengono monitorate e modificate separatamente.
Se decidi di mantenere attivato SageMaker Profiler, tieni presente che ogni processo di addestramento avvia un processo di elaborazione SageMaker, ciascuno dei quali utilizza un'istanza ml.m5.2xlarge. Verifica che le tue quote di SageMaker Processing siano sufficientemente elevate da soddisfare la concorrenza dei lavori di formazione prevista. Ad esempio, se desideri avviare 50 processi di addestramento abilitati per Profiler in esecuzione contemporaneamente, dovrai aumentare il limite di utilizzo del processo ml.m5.2xlarge per l'elaborazione a 50.
Inoltre, per avviare un processo a esecuzione prolungata, dovrai impostare in modo esplicito il file Estimator max_run
parametro alla durata massima desiderata per il processo di addestramento in secondi, fino al valore della quota del tempo di esecuzione più lungo per un processo di addestramento.
Monitoraggio e resilienza
I guasti hardware sono estremamente rari su scala di una singola istanza e diventano sempre più frequenti con l'aumentare del numero di istanze utilizzate contemporaneamente. Su scala LLM tipica, da centinaia a migliaia di GPU utilizzate 24 ore su 7, XNUMX giorni su XNUMX per settimane o mesi, è quasi certo che si verifichino guasti hardware. Pertanto, un carico di lavoro LLM deve implementare meccanismi di monitoraggio e resilienza appropriati. In primo luogo, è importante monitorare attentamente l'infrastruttura LLM, per limitare l'impatto dei guasti e ottimizzare l'utilizzo delle risorse di calcolo. SageMaker Training propone diverse funzionalità per questo scopo:
- I log vengono inviati automaticamente a CloudWatch Logs. I registri includono il tuo script di allenamento
stdout
edstderr
. Nella formazione distribuita basata su MPI, tutti i lavoratori MPI inviano i propri registri al processo leader. - Le metriche sull'utilizzo delle risorse di sistema come memoria, utilizzo della CPU e utilizzo della GPU vengono inviate automaticamente a CloudWatch.
- Puoi definire metriche di allenamento personalizzate che verrà inviato a CloudWatch. Le metriche vengono acquisite dai log in base alle espressioni regolari impostate. Pacchetti di esperimenti di terze parti come il Partner dell'AWS L'offerta Weights & Biases può essere utilizzata con SageMaker Training (per un esempio, vedere Ottimizzazione degli iperparametri CIFAR-10 con W&B e SageMaker).
- Profilo SageMaker consente di ispezionare l'utilizzo dell'infrastruttura e ottenere consigli sull'ottimizzazione.
- Amazon EventBridge ed AWS Lambda ti consentono di creare una logica client automatizzata che reagisce a eventi come errori di lavoro, successi, caricamenti di file S3 e altro ancora.
- Assistente SSH di SageMaker è una libreria open source gestita dalla comunità che ti consente di connetterti agli host di lavoro di formazione tramite SSH. Può essere utile ispezionare e risolvere i problemi di esecuzione del codice su nodi specifici.
Oltre al monitoraggio, SageMaker offre anche attrezzature per la resilienza del lavoro:
- Controlli dello stato del cluster – Prima dell'inizio del lavoro, SageMaker esegue i controlli dello stato della GPU e verifica la comunicazione NCCL sulle istanze GPU, sostituendo eventuali istanze difettose se necessario per garantire che lo script di addestramento inizi a essere eseguito su un cluster di istanze integro. I controlli di integrità sono attualmente abilitati per i tipi di istanza basati su GPU P e G.
- Tentativi integrati e aggiornamento del cluster – È possibile configurare SageMaker automaticamente riprovare lavori di addestramento che falliscono con un errore interno del server SageMaker (ISE). Come parte del nuovo tentativo di un lavoro, SageMaker sostituirà tutte le istanze che hanno riscontrato errori irreversibili della GPU con nuove istanze, riavvierà tutte le istanze integre e riavvierà il lavoro. Ciò si traduce in riavvii più rapidi e completamento del carico di lavoro. L'aggiornamento del cluster è attualmente abilitato per i tipi di istanza basati su GPU P e G. Puoi aggiungere il tuo meccanismo di ripetizione dell'applicazione attorno al codice client che invia il lavoro, per gestire altri tipi di errori di avvio, ad esempio il superamento della quota dell'account.
- Automatizzata checkpoint su Amazon S3 – Questo ti aiuta posto di controllo i tuoi progressi e ricaricare uno stato passato su nuovi lavori.
Per beneficiare della sostituzione a livello di nodo, il codice deve presentare un errore. I collettivi possono bloccarsi, invece di generare errori, quando un nodo fallisce. Pertanto, per avere una pronta correzione, imposta correttamente un timeout sui tuoi collettivi e fai in modo che il codice generi un errore quando viene raggiunto.
Alcuni clienti configurano un client di monitoraggio per monitorare e agire in caso di blocco del lavoro o interruzione della convergenza dell'applicazione, monitorando i log e i parametri di CloudWatch per modelli anomali come nessun registro scritto o 0% di utilizzo della GPU per suggerire un blocco, l'arresto della convergenza e l'auto interrompere/riprovare il lavoro.
Approfondimento sul checkpoint
I Punto di controllo di SageMaker funzione copia tutto ciò su cui scrivi /opt/ml/checkpoints
torna ad Amazon S3 come l'URI specificato nel file checkpoint_s3_uri
Parametro SDK. Quando un lavoro viene avviato o riavviato, tutto ciò che è scritto in quell'URI viene rispedito a tutte le macchine, a /opt/ml/checkpoints
. Questo è utile se vuoi che tutti i nodi abbiano accesso a tutti i checkpoint, ma su larga scala: quando hai molte macchine o molti checkpoint storici, può portare a lunghi tempi di download e traffico troppo elevato su Amazon S3. Inoltre, nel parallelismo tensore e pipeline, i lavoratori hanno bisogno solo di una frazione del modello checkpoint, non tutto. Se ti trovi di fronte a queste limitazioni, ti consigliamo le seguenti opzioni:
- Checkpoint su FSx per Lustre – Grazie all'I/O casuale ad alte prestazioni, puoi definire lo schema di sharding e di attribuzione dei file che preferisci
- Checkpoint Amazon S3 autogestito – Per esempi di funzioni Python che possono essere utilizzate per salvare e leggere checkpoint in modo non bloccante, fare riferimento a Salvataggio dei punti di controllo
Ti consigliamo vivamente di eseguire il checkpoint del tuo modello ogni poche ore, ad esempio 1–3 ore, a seconda delle spese generali e dei costi associati.
Front end e gestione degli utenti
La gestione degli utenti è un punto di forza chiave dell'usabilità di SageMaker rispetto all'infrastruttura HPC condivisa legacy. Le autorizzazioni di SageMaker Training sono regolate da diversi Gestione dell'identità e dell'accesso di AWS (IAM) astrazioni:
- Le entità (utenti e sistemi) hanno il permesso di avviare le risorse
- I lavori di formazione comportano ruoli stessi, che consentono loro di disporre di autorizzazioni proprie, ad esempio per quanto riguarda l'accesso ai dati e l'invocazione del servizio
Inoltre, nel 2022 abbiamo aggiunto Gestore ruolo SageMaker per facilitare la creazione di autorizzazioni guidate dall'utente.
Conclusione
Con SageMaker Training, puoi ridurre i costi e aumentare la velocità di iterazione del tuo carico di lavoro di formazione su modelli di grandi dimensioni. Abbiamo documentato storie di successo in numerosi post e case study, tra cui:
Se stai cercando di migliorare il time-to-market del tuo LLM riducendo i costi, dai un'occhiata all'API di formazione SageMaker e facci sapere cosa costruisci!
Un ringraziamento speciale ad Amr Ragab, Rashika Kheria, Zmnako Awrahman, Arun Nagarajan, Gal Oshri per le loro utili recensioni e insegnamenti.
Informazioni sugli autori
Anastasia Zeveleka è un Machine Learning and AI Specialist Solutions Architect presso AWS. Lavora con i clienti in EMEA e li aiuta a progettare soluzioni di machine learning su larga scala utilizzando i servizi AWS. Ha lavorato a progetti in diversi domini tra cui Natural Language Processing (NLP), MLOps e strumenti Low Code No Code.
Gili Nahum è un Senior AI/ML Specialist Solutions Architect che lavora come parte del team EMEA Amazon Machine Learning. Gili è appassionato delle sfide della formazione di modelli di deep learning e di come l'apprendimento automatico sta cambiando il mondo come lo conosciamo. Nel tempo libero, Gili si diverte a giocare a ping pong.
Olivier Cruchant è Principal Machine Learning Specialist Solutions Architect presso AWS, con sede in Francia. Olivier aiuta i clienti AWS, dalle piccole startup alle grandi aziende, a sviluppare e distribuire applicazioni di machine learning di livello produttivo. Nel suo tempo libero, ama leggere articoli di ricerca ed esplorare la natura selvaggia con amici e familiari.
Bruno Pistone è un AI/ML Specialist Solutions Architect per AWS con sede a Milano. Lavora con clienti di qualsiasi dimensione per aiutarli a comprendere a fondo le loro esigenze tecniche e progettare soluzioni di intelligenza artificiale e machine learning che sfruttino al meglio il cloud AWS e lo stack Amazon Machine Learning. I suoi campi di competenza sono Machine Learning end to end, Machine Learning Industrialization e MLOps. Gli piace passare il tempo con i suoi amici ed esplorare nuovi posti, oltre a viaggiare verso nuove destinazioni.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/training-large-language-models-on-amazon-sagemaker-best-practices/
- :È
- ][P
- $ SU
- 000
- 1
- 100
- 2022
- 7
- 8
- a
- abilità
- capace
- Chi siamo
- sopra
- accelerare
- accelerata
- accesso
- ospitare
- Il mio account
- Raggiungere
- il raggiungimento
- operanti in
- Legge
- Attivazione
- attivo
- adattare
- aggiunto
- aggiunta
- Inoltre
- integrazioni
- Vantaggio
- AI
- AI / ML
- AL
- algoritmo
- Algoritmi
- Tutti
- Consentire
- consente
- Amazon
- Amazon EC2
- AmazonFSx
- Apprendimento automatico di Amazon
- Amazon Sage Maker
- quantità
- ed
- api
- API
- applicabile
- Applicazioni
- applicazioni
- applicato
- opportuno
- SONO
- RISERVATA
- in giro
- AS
- associato
- At
- gli attributi
- auto
- Automatizzata
- automaticamente
- disponibile
- evitando
- AWS
- precedente
- BACKEND
- Equilibrio
- basato
- BE
- perché
- diventa
- prima
- essendo
- beneficio
- MIGLIORE
- best practice
- Al di là di
- Big
- Miliardo
- miliardi
- Bloccare
- portare
- Porta
- costruire
- costruito
- affari
- by
- chiamata
- detto
- Bandi
- Materiale
- capace
- Ultra-Grande
- carta
- Carte
- trasportare
- Custodie
- Casi Studio
- catalizza
- sfide
- cambiando
- canale
- dai un'occhiata
- Controlli
- scegliere
- scelte
- Scegli
- classi
- cliente
- strettamente
- Cloud
- Cluster
- codice
- Collective
- combinato
- Venire
- Uncommon
- comunemente
- Comunicazione
- Comunicazioni
- rispetto
- compatibile
- completamento
- calcolo
- Calcolare
- computer
- Visione computerizzata
- informatica
- concludere
- condotto
- Configurazione
- Confermare
- Connettiti
- conseguentemente
- contenere
- Contenitore
- Tecnologie Container
- contiene
- contenuto
- contribuito
- di controllo
- controllata
- Comodo
- Convergenza
- Corruzione
- Costo
- Costi
- potuto
- Portata
- coprire
- Copertine
- creare
- creazione
- Creative
- critico
- cruciale
- curation
- Attualmente
- costume
- Clienti
- personalizzare
- dati
- l'accesso ai dati
- Preparazione dei dati
- dataset
- decide
- dedicato
- deep
- apprendimento profondo
- Predefinito
- Laurea
- Dipendente
- dipende
- schierare
- Design
- progettato
- desiderato
- Destinazioni
- Determinare
- determinazione
- sviluppare
- sviluppato
- Costruttori
- sviluppatori
- Mercato
- sviluppa
- dispositivo
- dispositivi
- diverso
- Emittente
- direttamente
- discutere
- discusso
- distribuito
- calcolo distribuito
- formazione distribuita
- distribuzione
- docker
- non
- domini
- Dont
- giù
- scaricare
- decine
- durante
- ogni
- facilmente
- Efficace
- o
- enable
- abilitato
- Abilita
- consentendo
- incoraggiare
- finisce
- migliorata
- godere
- abbastanza
- garantire
- Impresa
- aziende
- iscrizione
- Ambiente
- ambienti
- usate
- attrezzato
- errore
- errori
- stabilire
- Anche
- eventi
- eventuale
- Ogni
- qualunque cosa
- si è evoluta
- esempio
- Esempi
- Excel
- esistente
- attenderti
- previsto
- esperienza
- esperimento
- Esplorare
- esposto
- espressioni
- estendendo
- estensioni
- esterno
- estremamente
- tessuto
- Faccia
- facilitare
- facilitando
- Fattori
- fallito
- fallisce
- Fallimento
- famiglie
- famiglia
- Moda
- FAST
- più veloce
- difettoso
- fattibile
- caratteristica
- Caratteristiche
- pochi
- campo
- Compila il
- File
- Nome
- in forma
- FLOTTA
- Flessibilità
- Focus
- si concentra
- seguito
- i seguenti
- Nel
- frazione
- Contesto
- quadri
- Francia
- La libertà
- frequente
- fresco
- amici
- da
- pieno
- completamente
- funzionale
- funzionalità
- funzioni
- ulteriormente
- GAL
- generato
- generativo
- ottenere
- ottenere
- GitHub
- dato
- GPU
- GPU
- grafico
- grande
- maggiore
- Gruppo
- cresce
- maniglia
- Manovrabilità
- Appendere
- accadere
- Hardware
- Avere
- avendo
- Salute e benessere
- sano
- utile
- aiutare
- aiuta
- Alta
- Alta frequenza
- Alte prestazioni
- storico
- cappuccio
- padroni di casa
- ORE
- Come
- Tutorial
- Tuttavia
- hpc
- HTML
- http
- HTTPS
- centinaia
- centinaia di milioni
- i
- identico
- Identità
- Immagine
- immagini
- subito
- Impact
- realizzare
- implementato
- Implementazione
- importante
- competenze
- migliorata
- miglioramenti
- in
- In altre
- includere
- Compreso
- Aumento
- è aumentato
- Aumenta
- sempre più
- individuale
- industria
- info
- informazioni
- Infrastruttura
- Innovazione
- fonte di ispirazione
- install
- esempio
- invece
- integrato
- integrazione
- Intelligente
- interazione
- Interfaccia
- procacciatore d'affari
- interno
- introdurre
- introdotto
- IT
- iterazione
- SUO
- stessa
- Lavoro
- Offerte di lavoro
- jpg
- mantenere
- Le
- Genere
- Sapere
- Lingua
- Le Lingue
- grandi
- larga scala
- superiore, se assunto singolarmente.
- con i più recenti
- lanciare
- lanciato
- lancia
- strato
- galline ovaiole
- portare
- leader
- apprendimento
- Eredità
- Livello
- biblioteche
- Biblioteca
- ciclo di vita
- piace
- probabile
- LIMITE
- limiti
- Limitato
- piccolo
- LLM
- Caricamento in corso
- locale
- Lunghi
- a lungo
- Guarda
- cerca
- Basso
- macchina
- machine learning
- macchine
- mantenere
- Mantenere
- mantiene
- make
- FA
- Fare
- gestire
- gestito
- gestione
- molti
- Maps
- massimo
- Memorie
- Metadati
- metodi
- Metrica
- migrazione
- MILANO
- milioni
- ML
- MLOp
- Moda
- modello
- modelli
- modificato
- Monitorare
- monitoraggio
- Scopri di più
- maggior parte
- cambiano
- multiplo
- cioè
- nativo
- Naturale
- Elaborazione del linguaggio naturale
- Natura
- necessariamente
- necessaria
- Bisogno
- esigenze
- Rete
- basato sulla rete
- reti
- rete neurale
- New
- nlp
- nodo
- nodi
- numero
- numerose
- Nvidia
- oggetti
- of
- offrire
- offerta
- Oliva
- on
- On-Demand
- ONE
- aprire
- open source
- codice open source
- ha aperto
- Opportunità
- ottimizzazione
- OTTIMIZZA
- ottimizzati
- Opzione
- Opzioni
- orchestrazione
- minimo
- Altro
- proprio
- pacchetto
- Packages
- Carta
- documenti
- paradigma
- Parallel
- parametro
- parametri
- parte
- particolare
- particolarmente
- appassionato
- passato
- sentiero
- modelli
- Paga le
- Corrente di
- performance
- prestazioni
- autorizzazione
- permessi
- Fisicamente
- conduttura
- Partner
- Platone
- Platone Data Intelligence
- PlatoneDati
- gioco
- punto
- pool
- Piscine
- Popolare
- Post
- Post
- pratica
- pratiche
- previsione
- preferenze
- preferito
- presenti
- regali
- prevenire
- in precedenza
- Direttore
- processi
- i processi
- lavorazione
- produrre
- Programma
- Programmazione
- linguaggi di programmazione
- Progressi
- progetti
- propriamente
- offre
- propone
- proprio
- protocollo
- protocolli
- fornire
- purché
- fornitore
- fornitura
- la percezione
- pubblicazioni
- scopo
- metti
- Python
- pytorch
- qualità
- aumentare
- casuale
- RARO
- tasso
- a raggiunto
- Leggi
- Lettura
- rendersi conto
- ragionevole
- motivi
- ricevere
- recente
- raccomandare
- raccomandazioni
- record
- record
- recupero
- ridurre
- riduce
- riducendo
- per quanto riguarda
- regione
- regioni
- Basic
- regolarmente
- relazionato
- pertinente
- affidabile
- a distanza
- sostituire
- che rappresenta
- richiesta
- richieste
- richiedere
- requisito
- richiede
- riparazioni
- ricerca e innovazione
- risorsa
- Risorse
- Risultati
- Recensioni
- Ruolo
- ruoli
- Correre
- running
- sagemaker
- stesso
- Risparmi
- Scalabilità
- scalabile
- Scala
- bilancia
- scala
- schema
- scientifico
- scienziati
- portata
- script
- sdk
- Cerca
- Secondo
- secondo
- Sezione
- cerca
- selezionato
- prodotti
- anziano
- serverless
- Server
- servizio
- Servizi
- set
- impostazioni
- alcuni
- scheggiato
- sharding
- condiviso
- dovrebbero
- significativamente
- Un'espansione
- semplicità
- contemporaneamente
- singolo
- Taglia
- Dimensioni
- abilità
- rallentare
- piccole
- So
- Software
- Soluzioni
- alcuni
- Fonte
- fonti
- specialista
- specifico
- in particolare
- specificato
- velocità
- Spendere
- Si divide
- Spot
- stabile
- pila
- inizia a
- Di partenza
- inizio
- Startup
- Regione / Stato
- statistiche
- Passi
- Fermare
- sosta
- conservazione
- Tornare al suo account
- Storie
- Strategia
- ruscello
- flussi
- forza
- strippaggio
- fortemente
- studi
- il successo
- Storie di successo
- di successo
- tale
- supporto
- supportato
- supporti
- dati
- sintassi
- sistema
- tavolo
- Fai
- Task
- task
- team
- Consulenza
- tensorflow
- Grazie
- che
- I
- il mondo
- loro
- Li
- si
- teorico
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- di parti terze standard
- migliaia
- tre
- Attraverso
- portata
- tempo
- volte
- suggerimenti
- a
- oggi
- Tokens
- pure
- strumenti
- top
- Totale
- pista
- traffico
- Treni
- allenato
- Training
- Traduzione
- trasporto
- Trilione
- Tipi di
- tipico
- per
- sottostante
- capire
- unico
- unità
- Aggiornanento
- us
- usabilità
- Impiego
- uso
- Utente
- generalmente
- APPREZZIAMO
- Valori
- varietà
- vario
- verificare
- versione
- via
- Video
- Visualizza
- visione
- caldo
- Modo..
- modi
- Settimane
- WELL
- Che
- quale
- while
- OMS
- tutto
- volere
- con
- entro
- senza
- parole
- Lavora
- lavorato
- lavoratori
- lavoro
- lavori
- mondo
- scrivere
- scritto
- anni
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- youtube
- zefiro