Utilizzo del TFF per la ricerca sull'apprendimento federato

Panoramica

TFF è un framework estensibile e potente per condurre ricerche sull'apprendimento federato (FL) simulando calcoli federati su set di dati proxy realistici. Questa pagina descrive i principali concetti e componenti rilevanti per le simulazioni di ricerca, nonché una guida dettagliata per condurre diversi tipi di ricerca in TFF.

La struttura tipica del codice di ricerca nel TFF

Una simulazione FL di ricerca implementata in TFF consiste tipicamente di tre tipi principali di logica.

  1. Singoli pezzi di codice TensorFlow, in genere tf.function s, che incapsulano la logica eseguita in un'unica posizione (ad esempio, su client o su un server). Questo codice viene in genere scritto e testato senza riferimenti tff.* e può essere riutilizzato al di fuori di TFF. Ad esempio, il ciclo di formazione del cliente nella media federata viene implementato a questo livello.

  2. Logica di orchestrazione federata di TensorFlow, che lega insieme le singole tf.function s da 1. avvolgendole come tff.tensorflow.computation se quindi orchestrandole utilizzando astrazioni come tff.federated_broadcast e tff.federated_mean all'interno di un tff.federated_computation . Vedi, ad esempio, questa orchestrazione per la media federata .

  3. Uno script del driver esterno che simula la logica di controllo di un sistema FL di produzione, selezionando i client simulati da un set di dati e quindi eseguendo i calcoli federati definiti in 2. su tali client. Ad esempio, un driver di esperimento EMNIST federato .

Set di dati di apprendimento federati

TensorFlow federato ospita più set di dati rappresentativi delle caratteristiche dei problemi del mondo reale che potrebbero essere risolti con l'apprendimento federato.

I set di dati includono:

  • StackOverflow . Un set di dati di testo realistico per la modellazione linguistica o attività di apprendimento supervisionato, con 342.477 utenti unici con 135.818.730 esempi (frasi) nel set di formazione.

  • EMNISTA Federato . Una pre-elaborazione federata del set di dati di caratteri e cifre EMNIST, in cui ciascun client corrisponde a uno scrittore diverso. Il set completo di treni contiene 3400 utenti con 671.585 esempi di 62 etichette.

  • Shakespeare . Un set di dati di testo più piccolo a livello di carattere basato sulle opere complete di William Shakespeare. Il set di dati è composto da 715 utenti (personaggi delle opere di Shakespeare), dove ciascun esempio corrisponde a un insieme contiguo di versi pronunciati dal personaggio in una determinata opera.

  • CIFAR-100 . Un partizionamento federato del set di dati CIFAR-100 su 500 client di formazione e 100 client di test. Ogni cliente ha 100 esempi unici. Il partizionamento viene eseguito in modo da creare un'eterogeneità più realistica tra i client. Per ulteriori dettagli, consultare l' API .

  • Set di dati Google Landmark v2 Il set di dati è costituito da foto di vari punti di riferimento del mondo, con immagini raggruppate per fotografo per ottenere una partizione federata dei dati. Sono disponibili due tipi di set di dati: un set di dati più piccolo con 233 client e 23080 immagini e un set di dati più grande con 1262 client e 164172 immagini.

  • CelebA Un set di dati di esempi (immagini e attributi facciali) di volti di celebrità. Il set di dati federato contiene gli esempi di ciascuna celebrità raggruppati insieme per formare un cliente. Sono presenti 9343 client, ciascuno con almeno 5 esempi. Il set di dati può essere suddiviso in gruppi di formazione e test in base ai clienti o agli esempi.

  • iNaturalist Un set di dati è costituito da foto di varie specie. Il set di dati contiene 120.300 immagini per 1.203 specie. Sono disponibili sette versioni del set di dati. Uno di questi è raggruppato per fotografo ed è composto da 9257 clienti. Il resto dei set di dati sono raggruppati in base alla posizione geografica in cui è stata scattata la foto. Queste sei versioni del set di dati sono costituite da 11 - 3.606 client.

Simulazioni ad alte prestazioni

Sebbene il tempo reale di una simulazione FL non sia una metrica rilevante per la valutazione degli algoritmi (poiché l'hardware di simulazione non è rappresentativo degli ambienti di distribuzione FL reali), essere in grado di eseguire simulazioni FL rapidamente è fondamentale per la produttività della ricerca. Pertanto, TFF ha investito molto nella fornitura di tempi di esecuzione per macchine singole e multi-macchina ad alte prestazioni. La documentazione è in fase di sviluppo, ma per ora consulta le istruzioni sulle simulazioni TFF con acceleratori e le istruzioni sulla configurazione delle simulazioni con TFF su GCP . Il runtime TFF ad alte prestazioni è abilitato per impostazione predefinita.

TFF per diverse aree di ricerca

Algoritmi di ottimizzazione federata

La ricerca sugli algoritmi di ottimizzazione federata può essere effettuata in diversi modi in TFF, a seconda del livello di personalizzazione desiderato.

Qui viene fornita un'implementazione minima e autonoma dell'algoritmo della media federata . Il codice include funzioni TF per il calcolo locale, calcoli TFF per l'orchestrazione e uno script del driver sul set di dati EMNIST come esempio. Questi file possono essere facilmente adattati per applicazioni personalizzate e modifiche algoritmiche seguendo le istruzioni dettagliate nel README .

Un'implementazione più generale della media federata può essere trovata qui . Questa implementazione consente tecniche di ottimizzazione più sofisticate, compreso l'uso di diversi ottimizzatori sia sul server che sul client. Altri algoritmi di apprendimento federato, incluso il clustering k-means federato, possono essere trovati qui .

Compressione dell'aggiornamento del modello

La compressione con perdite degli aggiornamenti del modello può portare a costi di comunicazione ridotti, che a loro volta possono portare a una riduzione dei tempi di formazione complessivi.

Per riprodurre un articolo recente, vedere questo progetto di ricerca . Per implementare un algoritmo di compressione personalizzato, vedere confronti_methods nel progetto per le linee di base come esempio e il tutorial sugli aggregatori TFF se non si ha già familiarità con.

Privacy differenziale

TFF è interoperabile con la libreria TensorFlow Privacy per consentire la ricerca di nuovi algoritmi per l'addestramento federato di modelli con privacy differenziale. Per un esempio di addestramento con DP utilizzando l'algoritmo e le estensioni DP-FedAvg di base , consulta questo driver dell'esperimento .

Se desideri implementare un algoritmo DP personalizzato e applicarlo agli aggiornamenti aggregati della media federata, puoi implementare un nuovo algoritmo della media DP come sottoclasse di tensorflow_privacy.DPQuery e creare un tff.aggregators.DifferentiallyPrivateFactory con un'istanza della query. Un esempio di implementazione dell'algoritmo DP-FTRL può essere trovato qui

I GAN federati (descritti di seguito ) sono un altro esempio di progetto TFF che implementa la privacy differenziale a livello di utente (ad esempio, qui nel codice ).

Robustezza e attacchi

TFF può essere utilizzato anche per simulare gli attacchi mirati ai sistemi di apprendimento federato e le difese differenziali basate sulla privacy considerati in Can You Really Backdoor Federated Learning? . Questo viene fatto costruendo un processo iterativo con client potenzialmente dannosi (vedi build_federated_averaging_process_attacked ). La directory targeting_attack contiene maggiori dettagli.

  • È possibile implementare nuovi algoritmi di attacco scrivendo una funzione di aggiornamento del client che è una funzione Tensorflow, vedere ClientProjectBoost per un esempio.
  • È possibile implementare nuove difese personalizzando "tff.utils.StatefulAggregateFn" che aggrega gli output del client per ottenere un aggiornamento globale.

Per uno script di esempio per la simulazione, vedere emnist_with_targeted_attack.py .

Reti avversarie generative

I GAN costituiscono un interessante modello di orchestrazione federata che sembra leggermente diverso dalla media federata standard. Coinvolgono due reti distinte (il generatore e il discriminatore) ciascuna addestrata con la propria fase di ottimizzazione.

Il TFF può essere utilizzato per la ricerca sulla formazione federata dei GAN. Ad esempio, l'algoritmo DP-FedAvg-GAN presentato in un lavoro recente è implementato in TFF . Questo lavoro dimostra l’efficacia della combinazione di apprendimento federato, modelli generativi e privacy differenziale .

Personalizzazione

La personalizzazione nel contesto dell’apprendimento federato è un’area di ricerca attiva. L'obiettivo della personalizzazione è fornire modelli di inferenza diversi a utenti diversi. Esistono approcci potenzialmente diversi a questo problema.

Un approccio consiste nel consentire a ciascun cliente di mettere a punto un singolo modello globale (addestrato utilizzando l'apprendimento federato) con i propri dati locali. Questo approccio ha collegamenti con il meta-apprendimento, vedere, ad esempio, questo articolo . Un esempio di questo approccio è fornito in emnist_p13n_main.py . Per esplorare e confrontare diverse strategie di personalizzazione, puoi:

  • Definire una strategia di personalizzazione implementando una tf.function che parte da un modello iniziale, addestra e valuta un modello personalizzato utilizzando i set di dati locali di ciascun cliente. Un esempio è dato da build_personalize_fn .

  • Definire un OrderedDict che associ i nomi delle strategie alle strategie di personalizzazione corrispondenti e utilizzarlo come argomento personalize_fn_dict in tff.learning.build_personalization_eval_computation .

Un altro approccio consiste nell'evitare di addestrare un modello completamente globale addestrando parte di un modello interamente a livello locale. Un esempio di questo approccio è descritto in questo post del blog . Questo approccio è collegato anche al meta-apprendimento, vedere questo articolo . Per esplorare l'apprendimento federato parzialmente locale, puoi: