Distributed Training
Scopri come il distributed training permette di scalare i carichi di lavoro AI su più GPU. Impara ad accelerare l’addestramento di Ultralytics YOLO26 con DDP per ottenere risultati più rapidi e accurati.
L'addestramento distribuito è un metodo di machine learning in cui il carico di lavoro per addestrare un modello viene suddiviso tra più processori o macchine. Questo approccio è essenziale per gestire dataset di grandi dimensioni e architetture di reti neurali complesse, il cui addestramento su un singolo dispositivo richiederebbe altrimenti un tempo impraticabile. Sfruttando la potenza di calcolo combinata di più unità di elaborazione grafica (GPUs) o unità di elaborazione tensoriale (TPUs), l'addestramento distribuito accelera notevolmente il ciclo di sviluppo, consentendo a ricercatori e ingegneri di iterare più rapidamente e ottenere una maggiore accuratezza nei loro modelli.
Come funziona l'addestramento distribuito#
L'idea alla base dell'addestramento distribuito è la parallelizzazione. Invece di elaborare i dati in sequenza su un singolo chip, l'attività viene suddivisa in blocchi più piccoli che vengono elaborati simultaneamente. Esistono due strategie principali per raggiungere questo obiettivo:
- Parallelismo dei dati: è l'approccio più comune per attività come il rilevamento degli oggetti. In questa configurazione, una copia del modello completo viene collocata su ogni dispositivo. I dati di addestramento globali vengono suddivisi in batch più piccoli e ogni dispositivo elabora contemporaneamente un batch diverso. Dopo ogni passaggio, i gradienti (aggiornamenti del modello) vengono sincronizzati tra tutti i dispositivi per garantire che i pesi del modello rimangano coerenti.
- Parallelismo del modello: quando una rete neurale (NN) è troppo grande per entrare nella memoria di una singola GPU, il modello stesso viene suddiviso tra più dispositivi. Livelli o componenti diversi del modello risiedono su chip differenti e i dati fluiscono tra loro. Questo è spesso necessario per addestrare enormi modelli fondazionali e grandi modelli linguistici (LLMs).
Applicazioni nel mondo reale#
L'addestramento distribuito ha trasformato interi settori, rendendo possibile risolvere problemi che in precedenza erano computazionalmente irrealizzabili.
- Guida autonoma: lo sviluppo di veicoli autonomi sicuri richiede l'analisi di petabyte di dati video e dei sensori. Gli ingegneri del settore automobilistico utilizzano grandi cluster distribuiti per addestrare modelli di visione destinati alla segmentazione semantica in tempo reale e al rilevamento delle corsie. Questa enorme scala garantisce che i sistemi di IA nel settore automobilistico possano reagire in modo affidabile a condizioni stradali diverse.
- Imaging medico: nel settore sanitario, l'analisi di scansioni 3D ad alta risoluzione, come le risonanze magnetiche, richiede una notevole quantità di memoria e potenza di elaborazione. L'addestramento distribuito consente ai ricercatori di creare strumenti diagnostici ad alte prestazioni per il rilevamento dei tumori e altre attività critiche. Utilizzando framework come NVIDIA MONAI, gli ospedali possono addestrare modelli su dataset diversificati senza incorrere in colli di bottiglia della memoria, migliorando i risultati dell'IA nel settore sanitario.
Utilizzare l'addestramento distribuito con Ultralytics#
La libreria ultralytics semplifica l'implementazione dell'addestramento con Parallelismo dei dati distribuito (DDP). Puoi scalare l'addestramento dei modelli YOLO26 all'avanguardia su più GPU specificando semplicemente gli indici dei dispositivi negli argomenti di addestramento.
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles the DDP communication backend
results = model.train(data="coco8.yaml", epochs=100, device=[0, 1])Concetti correlati e confronti#
Per comprenderne i ruoli specifici, è utile distinguere l'addestramento distribuito da termini simili nell'ecosistema del machine learning:
- Rispetto al Federated Learning: sebbene entrambi coinvolgano più dispositivi, i loro obiettivi sono diversi. L'addestramento distribuito centralizza generalmente i dati in un cluster ad alte prestazioni per massimizzare la velocità. Al contrario, il federated learning mantiene i dati decentralizzati sui dispositivi degli utenti (come gli smartphone) per dare priorità alla privacy dei dati, aggiornando il modello globale senza che i dati grezzi lascino mai la fonte.
- Rispetto all'High-Performance Computing (HPC): il calcolo ad alte prestazioni è un campo ampio che include il supercalcolo per simulazioni scientifiche, come le previsioni meteorologiche. L'addestramento distribuito è un'applicazione specifica del calcolo ad alte prestazioni applicata agli algoritmi di ottimizzazione nel deep learning. Spesso si basa su librerie di comunicazione specializzate come NVIDIA NCCL per ridurre al minimo la latenza tra le GPU.
Scalabilità con le piattaforme cloud#
La gestione dell'infrastruttura per l'addestramento distribuito può essere complessa. Le piattaforme moderne la semplificano offrendo ambienti gestiti. Ad esempio, la Ultralytics Platform consente agli utenti di gestire i dataset e avviare esecuzioni di addestramento che possono essere distribuite in ambienti cloud o cluster locali. Questa integrazione semplifica il flusso di lavoro dall'annotazione dei dati alla distribuzione finale del modello, garantendo che il passaggio a più GPU sia il più semplice possibile. Analogamente, provider cloud come Google Cloud Vertex AI e Amazon SageMaker forniscono un'infrastruttura solida per eseguire job di addestramento distribuito su scala enterprise.









