Utilizzo di TFF per la ricerca sull'apprendimento federato

Panoramica

TFF è un framework estensibile e potente per condurre la ricerca sull'apprendimento federato (FL) simulando calcoli federati su set di dati proxy realistici. Questa pagina descrive i concetti e le componenti principali che sono 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 in TFF

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

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

  2. Logica di orchestrazione di TensorFlow Federated, che lega insieme le singole tf.function s da 1. avvolgendole come tff.tf_computation s e 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 Federated Averaging .

  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 quei client. Ad esempio, un driver dell'esperimento EMNIST federato .

Set di dati di apprendimento federati

TensorFlow federated ospita più set di dati che sono 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.

  • EMNIST federato . Una pre-elaborazione federata del set di dati di caratteri e cifre EMNIST, in cui ogni client corrisponde a un writer diverso. Il set completo del treno contiene 3400 utenti con 671.585 esempi da 62 etichette.

  • Shakespeare . Un set di dati di testo a livello di caratteri più piccolo basato sulle opere complete di William Shakespeare. Il set di dati è composto da 715 utenti (personaggi di opere di Shakespeare), in cui ogni esempio corrisponde a un insieme contiguo di versi pronunciati dal personaggio in una data commedia.

  • 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 maggiori dettagli, vedere l' API .

  • Set di dati di Google Landmark v2 Il set di dati è costituito da foto di vari punti di riferimento mondiali, con immagini raggruppate per fotografo per ottenere un partizionamento federato 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 (immagine e attributi facciali) di volti di celebrità. Il set di dati federato ha gli esempi di ogni celebrità raggruppati per formare un cliente. Ci sono 9343 client, ciascuno con almeno 5 esempi. Il set di dati può essere suddiviso in gruppi di training e test in base ai client 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 dal fotografo ed è composto da 9257 clienti. Il resto dei set di dati è raggruppato in base alla posizione geografica in cui è stata scattata la foto. Queste sei versioni del set di dati sono composte da 11 - 3.606 client.

Simulazioni ad alte prestazioni

Sebbene il tempo 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 rapidamente simulazioni FL è fondamentale per la produttività della ricerca. Pertanto, TFF ha investito molto nella fornitura di runtime per macchine singole e multiple ad alte prestazioni. La documentazione è in fase di sviluppo, ma per ora vedere il tutorial Simulazioni ad alte prestazioni con Kubernetes , istruzioni sulle simulazioni TFF con acceleratori e istruzioni sull'impostazione di simulazioni con TFF su GCP . Il runtime TFF ad alte prestazioni è abilitato per impostazione predefinita.

TFF per diverse aree di ricerca

Algoritmi di ottimizzazione federati

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

Qui viene fornita un'implementazione autonoma minima dell'algoritmo Federated Averaging . 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 di Federated Averaging può essere trovata qui . Questa implementazione consente tecniche di ottimizzazione più sofisticate, incluso l'uso di diversi ottimizzatori sia sul server che sul client. Altri algoritmi di apprendimento federati, incluso il clustering k-means federato, possono essere trovati qui .

Compressione dell'aggiornamento del modello

La compressione con perdita di aggiornamenti del modello può portare a una riduzione dei costi di comunicazione, che a sua volta può portare a una riduzione del tempo di formazione complessivo.

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

Privacy differenziale

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

Se desideri implementare un algoritmo DP personalizzato e applicarlo agli aggiornamenti aggregati della media federata, puoi implementare un nuovo algoritmo DP mean come sottoclasse di tensorflow_privacy.DPQuery e creare un tff.aggregators.DifferentiallyPrivateFactory con un'istanza della tua 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ò anche essere utilizzato per simulare gli attacchi mirati ai sistemi di apprendimento federati e le difese differenziali basate sulla privacy considerate in Can You Really Backdoor Federated Learning? . Questo viene fatto creando un processo iterativo con client potenzialmente dannosi (vedi build_federated_averaging_process_attacked ). La directory target_attack contiene maggiori dettagli.

  • Nuovi algoritmi di attacco possono essere implementati 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 dei client per ottenere un aggiornamento globale.

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

Reti generative contraddittorie

I GAN creano 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 il proprio passaggio di ottimizzazione.

TFF può essere utilizzato per la ricerca sulla formazione federata dei GAN. Ad esempio, l'algoritmo DP-FedAvg-GAN presentato in un recente lavoro è 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 diversi modelli di inferenza a diversi utenti. Ci sono 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, vedi, ad esempio, questo documento . 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 dataset locali di ciascun cliente. Un esempio è fornito da build_personalize_fn .

  • Definisci un OrderedDict che associa i nomi delle strategie alle strategie di personalizzazione corrispondenti e utilizzalo come argomento personalize_fn_dict in tff.learning.build_personalization_eval .

Un altro approccio consiste nell'evitare di addestrare un modello completamente globale addestrando parte di un modello interamente a livello locale. Un'istanza di questo approccio è descritta in questo post del blog . Questo approccio è anche connesso al meta learning, vedi questo documento . Per esplorare l'apprendimento federato parzialmente locale, puoi: