Split Learning
Scopri come l'apprendimento diviso suddivide le reti neurali tra i dispositivi per supportare l'IA collaborativa esplorando al contempo rischi per la privacy, flussi di lavoro di addestramento, applicazioni e scelte di progettazione.
L'apprendimento diviso è un approccio di apprendimento automatico distribuito che divide una rete neurale tra due o più posizioni di calcolo. Un client elabora i dati di input privati attraverso i primi strati del modello, invia solo le attivazioni intermedie a un server e riceve i gradienti necessari per continuare l'addestramento dei suoi strati locali. Questo consente a organizzazioni o dispositivi di collaborare senza trasferire direttamente i dati di addestramento grezzi.
L'approccio è particolarmente rilevante quando l'apprendimento automatico deve operare attraverso confini di privacy, proprietà, larghezza di banda o hardware. Ad esempio, un ospedale può conservare le immagini mediche localmente mentre un server più potente esegue la porzione computazionalmente esigente di un modello. Tuttavia, mantenere i dati grezzi locali non garantisce automaticamente la privacy dei dati, poiché le rappresentazioni intermedie potrebbero comunque rivelare informazioni sensibili.
Come funziona l'apprendimento diviso#
Una rete neurale viene divisa in uno strato di taglio scelto. Gli strati precedenti al taglio vengono eseguiti sul client, mentre gli strati successivi vengono eseguiti sul server. L'output della rete lato client è spesso chiamato attivazione, rappresentazione intermedia o dati frantumati.
Una fase di addestramento segue questa sequenza:
- Il client esegue un passaggio in avanti dall'input grezzo allo strato di taglio.
- Invia l'attivazione risultante al server.
- Il server completa il passaggio in avanti e calcola la perdita.
- Durante la propagazione all'indietro, il server calcola un gradiente per l'attivazione dello strato di taglio e lo restituisce.
- Il client utilizza quel gradiente per aggiornare i suoi strati locali.
Questo processo si basa sulla stessa regola della catena implementata da sistemi come la differenziazione automatica PyTorch. La differenza è che attivazioni e gradienti attraversano un confine di rete durante l'addestramento.
Il seguente esempio a singolo processo simula quel confine:
import torch
from torch import nn
client_model = nn.Sequential(nn.Linear(8, 16), nn.ReLU())
server_model = nn.Sequential(nn.Linear(16, 2))
client_optimizer = torch.optim.SGD(client_model.parameters(), lr=0.01)
server_optimizer = torch.optim.SGD(server_model.parameters(), lr=0.01)
inputs = torch.randn(4, 8)
targets = torch.tensor([0, 1, 0, 1])
client_optimizer.zero_grad()
server_optimizer.zero_grad()
client_activations = client_model(inputs)
sent_activations = client_activations.detach().requires_grad_()
predictions = server_model(sent_activations)
loss = nn.CrossEntropyLoss()(predictions, targets)
loss.backward()
client_activations.backward(sent_activations.grad)
server_optimizer.step()
client_optimizer.step()
print(loss.item())Il distacco di client_activations rappresenta l'invio a un altro sistema. Il gradiente di attivazione restituito ricollega le due metà per l'ottimizzazione. Un'implementazione di produzione deve aggiungere networking, autenticazione, crittografia, gestione degli errori e controlli della privacy.
Apprendimento diviso rispetto ad approcci correlati#
L'apprendimento diviso appartiene al campo più ampio dell'addestramento distribuito, ma partiziona il calcolo in modo diverso.
- Apprendimento federato: Ciascun partecipante normalmente addestra un modello locale completo e invia gli aggiornamenti del modello per l'aggregazione. L'apprendimento diviso assegna a ciascun partecipante solo una parte del modello e scambia attivazioni intermedie e gradienti.
- Parallelismo di pipeline: Entrambi gli approcci collocano strati diversi su dispositivi diversi. Il parallelismo di pipeline migliora principalmente la scala o l'utilizzo dell'hardware in un ambiente affidabile, mentre l'apprendimento diviso separa comunemente i proprietari dei dati dai fornitori di calcolo.
- Addestramento parallelo ai dati: Framework come PyTorch DistributedDataParallel e addestramento distribuito TensorFlow replicano un modello e sincronizzano gli aggiornamenti. Di norma non mantengono i primi strati esclusivamente accanto ai dati originali.
L'apprendimento diviso può anche supportare dati partizionati verticalmente, in cui le organizzazioni detengono funzionalità diverse per record corrispondenti. Il flusso di lavoro di apprendimento diviso SecretFlow illustra questa disposizione.
Applicazioni nel mondo reale#
-
Imaging medico collaborativo: Gli ospedali possono addestrare un sistema di visione artificiale condiviso mantenendo radiografie o scansioni all'interno della propria infrastruttura. Ciascun ospedale esegue i primi strati localmente e un server centrale completa l'addestramento da funzionalità intermedie. La panoramica sull'apprendimento diviso del MIT utilizza centri di radiologia per spiegare questa architettura.
-
Telecamere industriali con risorse limitate: Le telecamere o i gateway di fabbrica possono eseguire un estrattore di caratteristiche compatto localmente mentre un server addestra i restanti strati per il rilevamento di oggetti. Questo può ridurre il trasferimento di video grezzi e il calcolo del client, rendendo l'approccio pertinente ai sistemi di IA edge operanti in più strutture.
Vantaggi, rischi e scelte di progettazione#
Lo strato di taglio determina l'equilibrio tra carico di lavoro del client, carico di lavoro del server, volume di comunicazione ed esposizione delle informazioni. Un taglio anticipato riduce il calcolo del client ma può produrre attivazioni grandi simili a input. Un taglio successivo può creare funzionalità più astratte ma richiede hardware client più forte.
Attivazioni intermedie e gradienti possono rimanere vulnerabili a ricostruzione, inferenza o manipolazione. I team dovrebbero pertanto valutare controlli di accesso, trasporto crittografato, protezione delle attivazioni, registrazione di audit e fiducia dei partecipanti anziché trattare l'apprendimento diviso come una soluzione di privacy completa. Il Framework per la privacy del NIST e il Framework di gestione del rischio IA del NIST forniscono processi più ampi per la valutazione di questi rischi.
Anche la larghezza di banda e la latenza contano perché ogni fase di addestramento può richiedere comunicazioni bidirezionali. Client lenti o inaffidabili possono ritardare l'intero sistema, mentre distribuzioni di dati incoerenti possono influire sulla convergenza.
Ultralytics YOLO non fornisce un'orchestrazione di apprendimento diviso chiavi in mano. Implementarla richiederebbe di partizionare attentamente l'architettura YOLO, coordinare passaggi in avanti e all'indietro remoti e potenzialmente estendere il flusso di lavoro del trainer personalizzato documentato. Per i progetti che richiedono solo che i dati rimangano su hardware di proprietà, l'addestramento di modelli della piattaforma Ultralytics supporta l'addestramento locale con metriche in streaming, ma l'addestramento locale non è apprendimento diviso perché il modello stesso non è diviso tra i partecipanti.






