Utilizzo del TFF per la ricerca sull'apprendimento federato

Panoramica

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

La struttura tipica del codice di ricerca in TFF

Una simulazione FL di ricerca implementata in TFF è in genere costituita da tre tipi principali di logica.

  1. Singole parti di codice TensorFlow, in genere tf.function , che incapsulano la logica eseguita in un'unica posizione (ad esempio, sui 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 training del client in Federated Averaging è implementato a questo livello.

  2. Logica di orchestrazione federata di TensorFlow, che collega le singole tf.function da 1. racchiudendole come tff.tensorflow.computation e quindi orchestrandole utilizzando astrazioni come federated_language.federated_broadcast e federated_language.federated_mean all'interno di federated_language.federated_computation . Vedere, ad esempio, questa orchestrazione per la media federata .

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

Set di dati di apprendimento federato

TensorFlow federated 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 addestramento.

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

  • Shakespeare . Un dataset di testo a livello di carattere più piccolo basato sulle opere complete di William Shakespeare. Il dataset è composto da 715 utenti (personaggi di opere di Shakespeare), dove ogni esempio corrisponde a un insieme contiguo di battute pronunciate dal personaggio in una determinata opera.

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

  • Dataset Google Landmark v2 Il dataset è composto da foto di vari monumenti mondiali, con immagini raggruppate per fotografo per ottenere una suddivisione federata dei dati. Sono disponibili due tipi di dataset: un dataset più piccolo con 233 client e 23.080 immagini e un dataset più grande con 1.262 client e 164.172 immagini.

  • CelebA Un dataset di esempi (immagine e attributi facciali) di volti di celebrità. Il dataset federato raggruppa gli esempi di ogni celebrità per formare un client. Ci sono 9343 client, ognuno con almeno 5 esempi. Il dataset può essere suddiviso in gruppi di training e test in base ai client o agli esempi.

  • Il dataset di iNaturalist A è composto da foto di diverse specie. Il dataset contiene 120.300 immagini per 1.203 specie. Sono disponibili sette tipologie di dataset. Una di queste è raggruppata per fotografo e comprende 9.257 client. Gli altri dataset sono raggruppati in base alla posizione geografica in cui è stata scattata la foto. Queste sei tipologie di dataset comprendono 11 - 3.606 client.

Simulazioni ad alte prestazioni

Sebbene il tempo di esecuzione di una simulazione FL non sia una metrica rilevante per la valutazione degli algoritmi (poiché l'hardware di simulazione non è rappresentativo degli ambienti di deployment FL reali), essere in grado di eseguire simulazioni FL rapidamente è fondamentale per la produttività della ricerca. Pertanto, TFF ha investito molto nella fornitura di runtime ad alte prestazioni per macchine singole e multiple. La documentazione è in fase di sviluppo, ma per ora consultare 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 di default.

TFF per diverse aree di ricerca

Algoritmi di ottimizzazione federati

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

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

Un'implementazione più generale della media federata è disponibile qui . Questa implementazione consente tecniche di ottimizzazione più sofisticate, incluso l'utilizzo di ottimizzatori diversi sia sul server che sul client. Altri algoritmi di apprendimento federato, incluso il clustering federato k-means, sono disponibili qui .

Compressione dell'aggiornamento del modello

La compressione con perdita di dati degli aggiornamenti del modello può comportare 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, consultare questo progetto di ricerca . Per implementare un algoritmo di compressione personalizzato, consultare comparison_methods nel progetto per le linee di base come esempio e il tutorial sugli Aggregatori TFF se non si ha familiarità con questi.

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 di base DP-FedAvg e le relative estensioni , vedere questo driver sperimentale .

Se si desidera implementare un algoritmo DP personalizzato e applicarlo agli aggiornamenti aggregati della media federata, è possibile implementare un nuovo algoritmo DP-mean come sottoclasse di tensorflow_privacy.DPQuery e creare un file tff.aggregators.DifferentiallyPrivateFactory con un'istanza della query. Un esempio di implementazione dell'algoritmo DP-FTRL è disponibile qui.

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

Robustezza e attacchi

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

  • È possibile implementare nuovi algoritmi di attacco scrivendo una funzione di aggiornamento client, che è una funzione Tensorflow; per un esempio, vedere ClientProjectBoost .
  • È 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 generative avversarie

Le GAN costituiscono un interessante modello di orchestrazione federata , leggermente diverso dal Federated Averaging standard. Coinvolgono due reti distinte (il generatore e il discriminatore), ciascuna addestrata con una propria fase di ottimizzazione.

Il TFF può essere utilizzato per la ricerca sull'addestramento federato delle reti 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 nell'ambito dell'apprendimento federato è un'area di ricerca molto attiva. L'obiettivo della personalizzazione è fornire modelli di inferenza diversi a utenti diversi. Esistono potenzialmente diversi approcci a questo problema.

Un approccio consiste nel consentire a ciascun client di perfezionare un singolo modello globale (addestrato tramite apprendimento federato) con i propri dati locali. Questo approccio è correlato al meta-apprendimento, si veda, ad esempio, questo articolo . Un esempio di questo approccio è fornito in emnist_p13n_main.py . Per esplorare e confrontare diverse strategie di personalizzazione, è possibile:

  • Definire una strategia di personalizzazione implementando una tf.function che, partendo 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 mappa i nomi delle strategie alle strategie di personalizzazione corrispondenti e utilizzalo 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 una parte di un modello interamente localmente. Un'istanza di questo approccio è descritta in questo post del blog . Questo approccio è anche collegato al meta-apprendimento, si veda questo articolo .