Training distribuito
Accelera l'addestramento dell'AI con l'addestramento distribuito! Scopri come ridurre i tempi di addestramento, scalare i modelli e ottimizzare le risorse per progetti di ML complessi.
L'addestramento distribuito è una potente tecnica di
apprendimento automatico (ML) che accelera il processo di
processo di creazione del modello suddividendo il carico di lavoro computazionale tra più processori, come le
Unità di elaborazione grafica (GPU) o
unità di elaborazione Tensor (TPU). Sfruttando la potenza combinata di dispositivi simultanei, sia che si trovino su una singola
workstation o in rete su un vasto cluster, gli sviluppatori possono ridurre drasticamente il tempo necessario per addestrare complesse architetture di deep learning (DL).
architetture di deep learning (DL) complesse. Questo approccio è
è essenziale per la gestione di enormi insiemi di dati e per lo sviluppo di sistemi di intelligenza
sistemi di intelligenza artificiale (AI) di ultima generazione,
consentendo cicli di iterazione più rapidi e una sperimentazione più estesa.
Strategie fondamentali per la parallelizzazione
Per distribuire efficacemente il carico di lavoro, gli ingegneri impiegano di solito una delle due strategie principali, o un approccio ibrido
progettato per massimizzare l'efficienza:
-
Parallelismo dei dati: Questo è il metodo più comune per compiti come
il rilevamento degli oggetti. In questa configurazione, una copia completa del modello
del modello risiede su ogni dispositivo. I dati di addestramento
dati di addestramento sono divisi in parti più piccole e ogni dispositivo
ogni dispositivo elabora simultaneamente un sottoinsieme diverso. Durante la fase di
fase di retropropagazione, i gradienti sono calcolati in maniera
indipendentemente e poi sincronizzati tra tutti i dispositivi utilizzando protocolli di comunicazione come l'MPI (Message Passing Interface).
MPI (Message Passing Interface) per aggiornare i pesi del modello in modo
pesi del modello in modo coerente.
-
Parallelismo del modello: Quando una
rete neurale (NN) è troppo grande per rientrare nella
memoria di una singola GPU, è necessario il parallelismo del modello. I livelli o i componenti del modello sono partizionati
su diversi dispositivi. I dati scorrono in modo sequenziale o simultaneo tra i dispositivi mentre passano attraverso la rete.
Questa tecnica è fondamentale per l'addestramento di modelli
modelli di base e
modelli linguistici di grandi dimensioni (LLM), in cui i
il conteggio dei parametri può raggiungere i trilioni, richiedendo strumenti specializzati come
Microsoft DeepSpeed per gestire la memoria.
Applicazioni nel mondo reale
La formazione distribuita consente alle industrie di risolvere problemi che in precedenza erano computazionalmente inapplicabili a causa di vincoli di tempo o di memoria.
o di memoria.
-
Guida autonoma: Lo sviluppo di auto a guida autonoma affidabili richiede l'elaborazione di petabyte di dati video e sensori.
e di dati dei sensori. Le aziende automobilistiche utilizzano cluster distribuiti su larga scala per addestrare i modelli di visione per la segmentazione semantica e il tracciamento degli oggetti in tempo reale.
segmentazione semantica e tracciamento degli oggetti in tempo reale.
Utilizzando l'intelligenza artificiale nei flussi di lavoro del settore automobilistico,
gli ingegneri possono iterare rapidamente sui modelli critici per la sicurezza per migliorare le prestazioni.
-
Imaging medico: In
AI in ambito sanitario, l'analisi di scansioni 3D ad alta risoluzione come
scansioni 3D ad alta risoluzione, come risonanze magnetiche o tomografie, richiede notevoli risorse computazionali. La formazione distribuita consente ai ricercatori di
di addestrare modelli diagnostici di alta precisione su
su insiemi di dati diversi e rispettosi della privacy. Framework come
NVIDIA CLARA si affidano spesso a tecniche distribuite
per elaborare in modo efficiente queste complesse immagini mediche.
Implementare la formazione distribuita con YOLO
Il ultralytics semplifica l'implementazione della formazione Distributed Data Parallel (DDP). È possibile
è possibile scalare facilmente l'addestramento di YOLO11 modelli su più
GPU multiple specificando semplicemente gli indici dei dispositivi.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles DDP setup for parallel processing
results = model.train(data="coco8.yaml", epochs=5, device=[0, 1])
Training distribuito vs. Concetti correlati
È importante distinguere la formazione distribuita da altri termini correlati nell'ecosistema dell'IA:
-
contro l'apprendimento federato: Sebbene entrambi coinvolgano più dispositivi, i loro obiettivi principali differiscono.
L'addestramento distribuito in genere centralizza i dati in un cluster ad alte prestazioni per massimizzare la velocità e il throughput. Al contrario, l'apprendimento
apprendimento federato, invece, mantiene i dati
decentralizzati sui dispositivi degli utenti (come gli smartphone) per dare priorità alla privacy dei dati.
privacy dei dati, aggregando gli aggiornamenti del modello senza che i
dati grezzi senza che questi lascino mai il dispositivo di origine.
-
rispetto al calcolo ad alte prestazioni (HPC): L'HPC è un campo ampio che comprende il supercalcolo per le
simulazioni scientifiche, come le previsioni meteorologiche. L'addestramento distribuito è un'applicazione specifica dell'HPC applicata agli algoritmi di ottimizzazione
agli algoritmi di ottimizzazione delle reti neurali
neurali, spesso utilizzando librerie di comunicazione specializzate come
NVIDIA NCCL per ridurre la latenza tra le GPU.
Strumenti ed Ecosistema
Un solido ecosistema di strumenti e piattaforme open-source supporta l'implementazione della formazione distribuita:
-
Quadri: PyTorch offre un supporto nativo
attraverso il suo pacchetto distribuito, mentre
TensorFlow fornisce strategie come
MirroredStrategy per una scalatura senza soluzione di continuità.
-
Orchestrazione: La gestione delle risorse in un cluster di grandi dimensioni spesso comporta l'orchestrazione di container
strumenti come Kubernetes o
Kubeflow, che automatizzano la distribuzione e la scalatura dei lavori di formazione.
-
Infrastruttura cloud: I principali fornitori offrono servizi gestiti come
AWS SageMaker e
Google Cloud TPUs, che forniscono un'infrastruttura ottimizzata per i carichi di lavoro
carichi di lavoro distribuiti, eliminando l'onere della manutenzione dell'hardware.
-
Scalabilità universale: Librerie come Horovod e
Ray forniscono approcci alla scalabilità indipendenti dal framework, consentendo agli sviluppatori di adattare il loro codice ad ambienti
adattano il loro codice agli ambienti distribuiti con modifiche minime.