Glossario

Formazione distribuita

Accelera la formazione dell'intelligenza artificiale con la formazione distribuita! Scopri come ridurre i tempi di formazione, scalare i modelli e ottimizzare le risorse per i progetti di ML complessi.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

L'addestramento distribuito è una tecnica utilizzata nell'apprendimento automatico (ML) per accelerare in modo significativo il processo di addestramento dei modelli, in particolare quelli grandi e complessi comuni nel deep learning (DL). Poiché i dataset diventano enormi e i modelli come i trasformatori o le reti convoluzionali di grandi dimensioni crescono di dimensioni, l'addestramento su un singolo processore, come ad esempio una CPU o anche una potente GPUpuò richiedere tempi troppo lunghi, giorni, settimane o addirittura mesi. L'addestramento distribuito supera questo collo di bottiglia dividendo il carico di lavoro su più unità di elaborazione. Queste unità (spesso GPU) possono risiedere all'interno di una singola macchina potente o essere distribuite su più macchine collegate in rete, spesso utilizzando risorse di cloud computing.

Come funziona la formazione distribuita

Il principio fondamentale della formazione distribuita è il parallelismo, ovvero la suddivisione del compito di formazione in modo che più parti possano essere eseguite simultaneamente. Invece di un processore che gestisce tutti i dati e i calcoli in modo sequenziale, il lavoro viene condiviso tra più processori, spesso chiamati "lavoratori". Esistono due strategie principali per raggiungere questo obiettivo:

  • Parallelismo dei dati: Questo è l'approccio più comune. Ogni worker dispone di una copia completa del modello. Il set di dati di addestramento viene suddiviso in porzioni più piccole e ogni worker elabora la porzione assegnatagli utilizzando la propria copia locale del modello. I worker calcolano gli aggiornamenti dei pesi del modello in base al loro sottoinsieme di dati. Questi aggiornamenti (gradienti) vengono poi aggregati tra tutti i worker (spesso mediati) e utilizzati per aggiornare il modello master o sincronizzare tutte le copie del modello. In questo modo è possibile elaborare in modo efficace lotti di dimensioni maggiori. Framework come PyTorch offrono il Distributed Data Parallel (DDP) e TensorFlow offre diverse strategie di formazione distribuita che implementano il parallelismo dei dati. Una comunicazione efficiente tra i lavoratori è fondamentale, spesso gestita da librerie come la NVIDIA Collective Communications Library (NCCL).
  • Parallelismo del modello: Questa strategia viene tipicamente impiegata quando un modello è così grande da non poter essere inserito nella memoria di una singola GPU. Invece di replicare l'intero modello, diverse parti (ad esempio, i livelli) del modello sono collocate su diversi worker. I dati scorrono in sequenza attraverso queste parti tra i worker durante i passaggi in avanti e indietro. Questo approccio è più complesso da implementare rispetto al parallelismo dei dati, ma è necessario per formare modelli davvero enormi. Alcuni framework offrono strumenti di assistenza, come gli approcci diTensorFlow al parallelismo dei modelli, e spesso vengono utilizzate tecniche come il parallelismo delle pipeline.

Applicazioni del mondo reale

La formazione distribuita è indispensabile per molte applicazioni di intelligenza artificiale (AI) all'avanguardia:

  • Formazione di modelli linguistici di grandi dimensioni (LLM): Modelli come GPT-4 di OpenAI o Gemini di Google hanno miliardi o trilioni di parametri. Per addestrarli è necessario distribuire i calcoli su migliaia di GPU per periodi prolungati. Questo è essenziale per attività come l'elaborazione del linguaggio naturale (NLP), la traduzione automatica e la creazione di chatbot avanzati.
  • Modelli avanzati di visione artificiale: Addestramento di modelli di visione computerizzata all'avanguardia, come ad esempio Ultralytics YOLO per il rilevamento degli oggetti o modelli complessi per la segmentazione delle immagini, su dataset di grandi dimensioni come ImageNet o COCO, trae immensi vantaggi dall'addestramento distribuito. Ad esempio, l'addestramento di un modello di rilevamento di oggetti per veicoli autonomi coinvolge grandi quantità di dati di immagine e richiede un'elevata precisione, rendendo l'addestramento distribuito su più GPU una necessità per ottenere risultati in tempi ragionevoli. Questo vale anche per campi specializzati come l'analisi delle immagini mediche.
  • Sistemi di raccomandazione: Aziende come Netflix o Amazon addestrano modelli complessi sui dati di interazione degli utenti per generare raccomandazioni personalizzate. La scala di questi dati spesso richiede approcci distribuiti.
  • Informatica scientifica: Le simulazioni su larga scala in campi come la modellazione climatica, la fisica e la scoperta di farmaci sfruttano spesso principi di calcolo distribuito simili a quelli utilizzati nella formazione distribuita di ML.

Formazione distribuita vs. altri metodi di formazione

È importante distinguere la formazione distribuita dai concetti correlati:

  • Apprendimento federato: Sebbene entrambi coinvolgano più dispositivi, l'apprendimento federato è pensato per gli scenari in cui i dati sono decentralizzati e non possono (o non dovrebbero) essere spostati in una posizione centrale a causa di problemi di privacy (ad esempio, l'addestramento di modelli sui dati degli utenti contenuti nei telefoni cellulari). Nell'apprendimento federato, gli aggiornamenti del modello vengono calcolati localmente sui dispositivi e inviati a un server centrale per l'aggregazione, ma i dati grezzi non lasciano mai il dispositivo. La formazione distribuita di solito presuppone che i dati possano essere spostati e distribuiti all'interno del cluster di calcolo (ad esempio, in un data center o in un cloud). Dai un'occhiata a TensorFlow Federated per un esempio di struttura.
  • Formazione su un singolo dispositivo: Questo è il metodo tradizionale in cui l'intero processo di formazione viene eseguito su una singola CPU o GPU. È più semplice da configurare(vedi Ultralytics Quickstart) ma diventa impraticabile per modelli o dataset di grandi dimensioni a causa dei vincoli di tempo e memoria.

Strumenti e implementazione

L'implementazione della formazione distribuita è facilitata da diversi strumenti e piattaforme:

  • Framework ML: Framework principali come PyTorch e TensorFlow offrono un supporto integrato per le API di formazione distribuita.
  • Librerie specializzate: Librerie come Horovod, sviluppata da Uber, offrono un approccio indipendente dal framework al deep learning distribuito.
  • Piattaforme cloud: I principali fornitori di cloud come AWS, Google Cloud e Microsoft Azure offrono servizi di ML gestiti e infrastrutture ottimizzate per la formazione distribuita su larga scala.
  • Piattaforme MLOps: Piattaforme come Ultralytics HUB semplificano il processo fornendo interfacce per la gestione dei dataset, la selezione dei modelli e l'avvio dei lavori di formazione, comprese le opzioni di formazione in cloud che gestiscono l'infrastruttura distribuita sottostante. Le buone pratiche MLOps sono fondamentali per gestire in modo efficace la formazione distribuita.

L'addestramento distribuito è una tecnica fondamentale che consente lo sviluppo dei più potenti modelli di IA di oggi, rendendo l'addestramento su larga scala fattibile ed efficiente.

Leggi tutto