Il server Federated Compute (FC) fa parte dell'apprendimento federato offerto da Personalizzazione on-device (ODP). Lo scopo di questo documento è presentare il server di calcolo federato (FC Server), i suoi componenti e la tecnologia utilizzata. Il documento fornisce una panoramica generale dell'architettura e poi analizza in dettaglio ogni componente. Viene inoltre illustrato come i componenti collaborano per fornire un ambiente di apprendimento federato e vengono offerte strategie per scalare e partizionare 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 i risultati del client FC in modo sicuro in un Trusted Execution Environment (TEE).
L'addestramento prevede i seguenti passaggi:
- Il client FC sul dispositivo scarica una chiave di crittografia pubblica dai servizi di gestione delle chiavi.
- Il client FC esegue il check-in con il server FC e riceve un'attività di addestramento.
- FC Client scarica un piano di addestramento, oltre all'ultima versione del modello, la versione N.
- Il client FC esegue il training 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 che l'addestramento è stato completato.
- 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, seguendo l'architettura RFC 9334 Remote ATtestation procedureS (RATS) del NIST, ai coordinatori. Una volta completata l'attestazione, Key Services concede le chiavi di decrittografia. Queste chiavi possono essere suddivise tra più fornitori di chiavi in uno schema di condivisione di segreti di Shamir.
- L'aggregatore esegue l'aggregazione cross-device, i tagli e i rumori per i meccanismi di privacy differenziale (DP) appropriati e restituisce i risultati con rumore.
- L'aggregatore attiva l'aggiornamento del modello.
- Model Updater carica il contributo aggregato e lo applica alla versione N del modello 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 o servizi cloud che supportano gli TEE e le funzionalità di sicurezza correlate. Stiamo valutando i provider di cloud pubblico e le tecnologie sottostanti, ma per ora la sezione seguente presenta un'implementazione di esempio di Google Cloud utilizzando Confidential Space.
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 i carichi di lavoro creati con ODP. Deve attestare i coordinatori, che proteggono l'accesso alle chiavi di decrittografia. Solo gli Aggregatori con attestazione riuscita possono decriptare i contributi inviati dai dispositivi client ed eseguire l'aggregazione cross-device. |
| Model Updater | Un servizio in background in esecuzione in Confidential Space che applica i gradienti aggregati al modello. |
Dettagli componente
Le sezioni seguenti espandono l'architettura di alto livello in 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 implementati su GKE.
Gestione attività
Si tratta di un insieme di servizi web frontend che accettano richieste HTTPS e creano o recuperano attività dal database delle attività.
Utilità di pianificazione
Un servizio in background che esegue la scansione continua del database delle attività. Gestisce il flusso di addestramento, ad esempio creando nuovi cicli e iterazioni di addestramento.
Database delle attività
Un database conforme a ANSI SQL che archivia 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 applicabile.
Il database delle attività qui è la stessa istanza di database del database delle attività nel servizio di gestione delle attività.
Servizio di aggregazione
Aggregatore e aggiornamento del modello
L'aggregatore e lo strumento di aggiornamento del modello sono simili. Sono servizi in background che elaborano i dati in modo sicuro in Confidential Space. La comunicazione tra i job offline avviene tramite PubSub.
Pendenze, pendenze aggregate, modello e piano
- Uno spazio di archiviazione dei gradienti per i gradienti caricati (criptati) sul dispositivo client.
- Uno spazio di archiviazione dei gradienti aggregati per i gradienti aggregati, ritagliati e con rumore.
- Uno spazio di archiviazione di modelli e piani per i piani di allenamento, i modelli e i pesi.
Raccoglitore
Il Collector è un servizio in background che conta periodicamente gli invii dei dispositivi client durante un ciclo di addestramento. Avvisa l'aggregatore di avviare l'aggregazione una volta disponibili invii sufficienti.
Service hosts
Tutti i servizi che non hanno accesso a informazioni sensibili sono ospitati su GKE.
Tutti i servizi che potrebbero entrare in contatto con informazioni sensibili sono ospitati in Confidential Space.
Tutti i dati sensibili sono criptati con chiavi di crittografia gestite da servizi di chiavi di proprietà di più parti. Solo il codice open source creato da ODP e attestato correttamente in esecuzione in versioni legittime di Confidential Space con Confidential Computing abilitato può accedere alle chiavi di decriptografia.
In un'unità di servizio, la risorsa di calcolo ha il seguente aspetto:
Scalabilità
L'infrastruttura descritta in precedenza si concentra su una singola 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. A questo scopo, la capacità viene scalata all'interno di Confidential Space o del cluster GKE utilizzando meccanismi di scalabilità standard. In pratica, la capacità di elaborazione può essere aumentata aggiungendo altre istanze di:
- Servizio web di assegnazione delle attività
- Servizio web di gestione delle attività
- Istanze dell'aggregatore
- Istanze di Model Updater
Resilienza
La resilienza di un server FC viene gestita dal disaster recovery utilizzando l'archiviazione replicata. Se ti interessa il ripristino di emergenza, devi abilitare la replica dei dati tra regioni. In questo modo, se si verifica un disastro (ad esempio un evento meteorologico che interrompe un data center), il servizio riprenderà dall'ultimo ciclo di addestramento.
Spanner
L'implementazione predefinita del server FC utilizza Google Cloud Spanner come database per archiviare lo stato delle attività utilizzato per controllare il flusso di addestramento. Prima di selezionare una configurazione multiregionale, valuta i compromessi tra coerenza e disponibilità in base alle esigenze della tua attività.
Nessun dato utente o i suoi derivati, grezzi o criptati, viene archiviato in alcuna istanza Spanner. Puoi utilizzare una qualsiasi delle funzionalità di disaster recovery offerte da Spanner.
Spanner registra la cronologia delle modifiche. Aggregatore e aggiornamento del modello archiviano i dati per round di addestramento e il risultato di ogni round viene archiviato separatamente senza sovrascriversi a vicenda. Per questo motivo, il servizio può riprendere dall'ultimo ciclo di addestramento in caso di emergenza.
Google Cloud Storage
L'implementazione predefinita del server FC utilizza Google Cloud Storage per archiviare i dati blob come modelli, piani di addestramento e contributi dei dispositivi criptati.
Nel progetto sono presenti 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é derivati da indicatori utente (protetti dalla crittografia supportata da più coordinatori), come gradienti caricati sul dispositivo e 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 cross-cloud. ODP non fornisce un esempio perché queste configurazioni dipendono molto dalle esigenze aziendali. Il design attuale tiene conto delle potenziali esigenze degli sviluppatori per queste repliche e backup. Di conseguenza, è compatibile con prodotti e servizi di backup e replica forniti da terze parti.