Il server di calcolo federato (FC) fa parte dell'apprendimento federato offerto dalla personalizzazione on-device (ODP). Lo scopo di questo documento è presentare Federated Compute Server (FC Server), i suoi componenti e la tecnologia utilizzata. Il documento fornisce una panoramica generale dell'architettura e poi analizza in dettaglio ogni componente. Inoltre, illustra come i componenti interagiscono per fornire un ambiente di apprendimento federato e offre strategie per scalare e suddividere i carichi di lavoro.
Flusso di addestramento
L'addestramento consiste in flussi di dati tra il client FC e il server FC. FC Client è un modulo Android di base che addestra i modelli ML sul dispositivo e interagisce con FC Server. Il server FC elabora e aggrega in modo sicuro i risultati del client FC in un Trusted Execution Environment (TEE).
La formazione prevede i seguenti passaggi:
- Il client FC sul dispositivo scarica una chiave di crittografia pubblica dai servizi chiavi.
- Il client FC esegue il check-in con il server FC e riceve un'attività di addestramento.
- Il client FC scarica un piano di addestramento, oltre alla versione N, ovvero la versione più recente del modello.
- Il client FC esegue l'addestramento utilizzando i dati locali e il piano.
- Il client FC cripta i contributi di questo dispositivo con la chiave pubblica ottenuta nel passaggio 0 e li carica sul server FC.
- Il client FC comunica al server FC il completamento dell'addestramento.
- Il server FC attende che un numero sufficiente di client abbia inviato i propri contributi.
- Viene attivato un ciclo di aggregazione.
- I contributi criptati vengono caricati in un Trusted Execution Environment (TEE) dall'Aggregatore.
- L'aggregatore si attesta ai coordinatori, seguendo l'architettura delle procedure di attestazione remota (RATS) RFC 9334 del NIST. Al termine dell'attestazione, i servizi chiavi concedono le chiavi di decrittografia. Queste chiavi possono essere suddivise tra più fornitori di chiavi in uno schema di condivisione della chiave di Shamir.
- L'aggregatore esegue l'aggregazione tra dispositivi, i clip e i rumori in base a meccanismi di privacy differenziale (DP) appropriati e genera i risultati con rumore.
- L'aggregatore attiva l'aggiornamento dei modelli.
- L'aggiornamento del modello carica il contributo aggregato e lo applica alla versione del modello N per creare la versione N + 1. Il nuovo modello viene inviato allo spazio di archiviazione dei modelli.
Il server FC può essere implementato su qualsiasi servizio cloud che supporta i TEE e le funzionalità di sicurezza correlate. Stiamo valutando i provider di cloud pubblico e le tecnologie sottostanti, ma per il momento la sezione seguente presenta un'implementazione di esempio di Google Cloud che utilizza Spazio riservato.
Architettura di alto livello
Il server FC ha i seguenti componenti di cui è stato eseguito il deployment in Google Cloud:
Componente | Descrizione |
Servizio di gestione delle attività | Un servizio web per la gestione dell'attività di addestramento. I partner devono utilizzare l'API Task Management per creare un'attività di addestramento, elencare tutte le attività di addestramento esistenti, annullare un'attività e recuperare tutti gli stati di addestramento. |
Servizio di assegnazione delle attività | Un servizio web basato su HTTPS in cui i dispositivi client eseguono periodicamente il check-in per ottenere attività di addestramento e segnalare lo stato dell'addestramento. |
Aggregatore | Un servizio in background in esecuzione in Confidential Space. Esegue carichi di lavoro creati da ODP. Deve essere attestata ai coordinatori, che controllano l'accesso alle chiavi di decrittografia. Solo gli aggregatori che hanno superato la verifica possono decriptare i contributi inviati dai dispositivi client ed eseguire l'aggregazione su più dispositivi. |
Model Updater | Un servizio in background in esecuzione in Confidential Space che applica i gradienti aggregati al modello. |
Dettagli componente
Le sezioni seguenti estendono l'architettura di alto livello con ulteriori dettagli:
Servizio di gestione delle attività
Il servizio di gestione delle attività contiene due componenti secondari: il servizio web di gestione delle attività e il servizio di pianificazione delle attività, entrambi di cui è stato eseguito il deployment su GKE.
Gestione attività
Si tratta di un insieme di servizi web frontend che ricevono richieste HTTPS e creano o recuperano attività dal database delle attività.
Task Scheduler
Un servizio in background che esegue la scansione continua del database delle attività. Gestisce il flusso di addestramento, ad esempio creando nuovi round e iterazioni di addestramento.
Database delle attività
Un database conforme ad ANSI SQL che memorizza le informazioni su attività, iterazione e assegnazione. In questa implementazione, Google Cloud Spanner viene utilizzato come servizio di database sottostante.
Servizio di assegnazione delle attività
Il servizio di assegnazione delle attività è un servizio web frontend ospitato su GKE. Riceve le richieste dai client FC e distribuisce le attività di addestramento, se applicabili.
Il database delle attività qui è la stessa istanza di database del database delle attività in Task Management Service.
Servizio di aggregazione
Aggregatore e Updater dei modelli
L'aggregatore e l'aggiornamento del modello sono simili. Si tratta di servizi in background che elaborano i dati in modo sicuro in Confidential Space. La comunicazione tra i job offline avviene tramite PubSub.
Gradienti, gradienti aggregati, modello e piano
- Uno spazio di archiviazione per i gradienti caricati (criptati) del dispositivo client.
- Uno spazio di archiviazione dei gradienti aggregati per gradienti aggregati, troncati e con rumore.
- Uno spazio di archiviazione per i modelli e i piani di addestramento, i modelli e i pesi.
Raccoglitore
Collector è un servizio in background che conteggia periodicamente i dati inviati dai dispositivi client durante un ciclo di addestramento. Invia una notifica all'aggregatore per avviare l'aggregazione quando sono disponibili invii sufficienti.
Host di servizi
Tutti i servizi che non hanno accesso a informazioni sensibili sono ospitati su GKE.
Tutti i servizi che potrebbero trattare informazioni sensibili sono ospitati in Confidential Space.
Tutti i dati sensibili vengono criptati con chiavi di crittografia gestite da Key Service di proprietà di più parti. Solo il codice open source di ODP autenticato e in esecuzione in versioni legittime di Confidential Space con confidential computing abilitato può accedere alle chiavi di decrittografia.
In un'unità di servizio, la risorsa di calcolo ha il seguente aspetto:
Scalabilità
L'infrastruttura descritta in precedenza si concentra su un'unità di servizio.
Un'unità di servizio utilizza un Cloud Spanner. Per le limitazioni più importanti, consulta Quote e limiti di Spanner.
Ogni componente di questa architettura può essere scalato in modo indipendente. Ciò avviene ridimensionando la capacità all'interno di Confidential Space o del cluster GKE utilizzando i meccanismi di scalabilità standard. In pratica, la capacità di elaborazione può essere aumentata aggiungendo altre istanze di:
- Servizio web di assegnazione delle attività
- Web Service di gestione delle attività
- Istanze di aggregatore
- Istanze di Model Updater
Resilienza
La resilienza di un server FC viene gestita dal ripristino di emergenza utilizzando lo spazio di archiviazione replicato. Se ti interessa il ripristino di emergenza, devi attivare la replica dei dati tra regioni. In questo modo, in caso di disastro (ad esempio un evento meteorologico che interrompe un data center), il servizio riprenderà dall'ultimo ciclo di addestramento.
Spanner
L'implementazione predefinita di FC Server utilizza Google Cloud Spanner come database per archiviare lo stato delle attività utilizzato per controllare il flusso di addestramento. Prima di selezionare una configurazione in più regioni, valuta i compromessi tra coerenza e disponibilità in base alle esigenze della tua attività.
Nessun dato utente o i relativi derivati, non elaborati o criptati, vengono archiviati in nessuna istanza Spanner. Non esitare a utilizzare una delle funzionalità di disaster recovery offerte da Spanner.
Spanner registra la cronologia delle modifiche. L'aggregatore e l'aggiornamento del modello archiviano i dati per ogni ciclo di addestramento e il risultato di ogni ciclo viene archiviato separatamente senza sovrascrivere l'altro. Per questo motivo, il servizio può riprendere dall'ultimo ciclo di addestramento in caso di emergenza.
Google Cloud Storage
L'implementazione predefinita di FC Server utilizza Google Cloud Storage per archiviare i dati dei blob, come modelli, piani di addestramento e contributi dei dispositivi criptati.
Il design contiene tre istanze GCS:
- Contributi del dispositivo: contributi del dispositivo criptati caricati dai dispositivi.
- Modelli: piani di allenamento, modelli e relativi pesi.
- Gradienti aggregati: i gradienti aggregati prodotti dall'aggregatore.
I dati archiviati in GCS sono:
- Dati forniti dallo sviluppatore, ad esempio un piano di allenamento OPPURE
- Dati potenzialmente privati perché ricavati da indicatori utente (protetti da crittografia supportata da più coordinatori), come i gradienti caricati dal dispositivo e i gradienti aggregati OPPURE
- Dati non privati derivati dagli indicatori utente, ma dopo l'applicazione della privacy differenziale, come i pesi del modello.
Devi valutare i compromessi tra coerenza e disponibilità e selezionare le funzionalità di disponibilità e durabilità dei dati GCS appropriate. Devi specificare le tue norme di conservazione dei dati.
Replica e backup
Oltre ai meccanismi di replica dei dati forniti da Google Cloud, puoi anche scegliere di eseguire periodicamente il backup dei dati in Spanner e GCS. Ad esempio, puoi utilizzare servizi e offerte di replica tra cloud. ODP non fornisce un esempio perché queste configurazioni dipendono molto dalle esigenze aziendali. Il design attuale prende in considerazione le potenziali esigenze degli sviluppatori per queste repliche e questi backup. Di conseguenza, è compatibile con prodotti e servizi di replica e backup forniti da terze parti.