Verwendung von TFF für Federated Learning Research

Überblick

TFF ist ein erweiterbares, leistungsstarkes Framework für die Durchführung von föderierten Lernforschungen (FL), indem föderierte Berechnungen auf realistischen Proxy-Datensätzen simuliert werden. Auf dieser Seite werden die wichtigsten Konzepte und Komponenten beschrieben, die für Forschungssimulationen relevant sind, sowie detaillierte Anleitungen für die Durchführung verschiedener Arten von Forschung in TFF.

Die typische Struktur des Forschungscodes in TFF

Eine in TFF implementierte Forschungs-FL-Simulation besteht typischerweise aus drei Haupttypen von Logik.

  1. Einzelne Stücke von TensorFlow Code, typischerweise tf.function s, dass encapsulate Logik , die ausgeführt wird in einem einzigen Ort (zB auf Kunden oder auf einem Server). Dieser Code wird in der Regel geschrieben und getestet , ohne tff.* Referenzen und kann wiederverwendet werden außerhalb von TFF sein. Zum Beispiel kann die Client - Trainingsschleife in Federated Averaging ist auf dieser Ebene umgesetzt.

  2. TensorFlow Federated Orchesterbearbeitung Logik, die miteinander verbindet die einzelnen tf.function s von 1 , indem sie als Umwickeln tff.tf_computation s und dann orchestriert sie Abstraktionen wie mit tff.federated_broadcast und tff.federated_mean innerhalb eines tff.federated_computation . Siehe zum Beispiel dieser Orchestrierung für Federated Averaging .

  3. Ein äußeres Treiberskript, das die Steuerlogik eines FL-Produktionssystems simuliert, simulierte Clients aus einem Datensatz auswählt und dann föderierte Berechnungen ausführt, die in 2. auf diesen Clients definiert sind. Zum Beispiel ein Federated EMNIST Experiment Treiber .

Föderierte Lerndatensätze

TensorFlow föderierten Hosts mehrere Datensätze , die von den Eigenschaften der realen Welt Probleme repräsentativ sind , die mit föderierten Lernen gelöst werden könnten.

Datensätze umfassen:

  • Stackoverflow. Ein realistischer Textdatensatz für Sprachmodellierung oder überwachte Lernaufgaben mit 342.477 Unique Usern mit 135.818.730 Beispielen (Sätzen) im Trainingsset.

  • Federated EMNIST. Eine föderierte Vorverarbeitung des EMNIST-Zeichen- und Zifferndatensatzes, bei der jeder Client einem anderen Schreiber entspricht. Das komplette Zugset enthält 3400 Benutzer mit 671.585 Exemplaren von 62 Labels.

  • Shakespeare. Ein kleinerer Textdatensatz auf Zeichenebene, der auf dem Gesamtwerk von William Shakespeare basiert. Der Datensatz besteht aus 715 Benutzern (Figuren von Shakespeare-Stücken), wobei jedes Beispiel einem zusammenhängenden Satz von Zeilen entspricht, die von der Figur in einem bestimmten Stück gesprochen werden.

  • CIFAR-100. Eine föderierte Partitionierung des CIFAR-100-Datensatzes über 500 Schulungs-Clients und 100 Test-Clients. Jeder Kunde hat 100 einzigartige Beispiele. Die Partitionierung erfolgt so, dass eine realistischere Heterogenität zwischen den Clients entsteht. Weitere Einzelheiten finden Sie in der API .

  • Google Zeichen v2 - Datensatz Der Datensatz besteht aus Fotos von verschiedenen Sehenswürdigkeiten in aller Welt, mit vom Fotografen gruppierten Bildern einer föderierte Partitionierung der Daten zu erreichen. Es stehen zwei Arten von Datensätzen zur Verfügung: ein kleinerer Datensatz mit 233 Clients und 23080 Bildern und ein größerer Datensatz mit 1262 Clients und 164172 Bildern.

  • CelebA ein Datensatz von Beispielen (Bild und Gesichtsattribut) von Prominenten Gesichter. Das föderierte Dataset enthält die Beispiele jedes Prominenten, die zu einem Kunden gruppiert sind. Es gibt 9343 Clients mit jeweils mindestens 5 Beispielen. Der Datensatz kann entweder nach Kunden oder nach Beispielen in Trainings- und Testgruppen aufgeteilt werden.

  • iNaturalist Ein Datensatz besteht aus Fotos von verschiedenen Arten. Der Datensatz enthält 120.300 Bilder für 1.203 Arten. Es stehen sieben Varianten des Datensatzes zur Verfügung. Einer von ihnen wird vom Fotografen gruppiert und besteht aus 9257 Kunden. Die restlichen Datensätze sind nach dem geografischen Standort gruppiert, an dem das Foto aufgenommen wurde. Diese sechs Varianten des Datensatzes bestehen aus 11 - 3.606 Clients.

Hochleistungssimulationen

Während die Wandtaktzeit einer FL - Simulation ist keine relevante metrische Algorithmen zur Auswertung (als Simulationshardware nicht repräsentativ für reale FL Deployment - Umgebungen ist), zu laufen in der Lage , FL schnell Simulationen für die Forschung Produktivität entscheidend ist. Daher hat TFF viel in die Bereitstellung hochperformanter Single- und Multi-Machine-Runtimes investiert. Die Dokumentation ist in der Entwicklung, aber jetzt die sehen High-Performance - Simulationen mit TFF - Tutorial, Anleitung auf TFF Simulationen mit Beschleunigern und Anweisungen auf Simulationen mit TFF auf GCP Einrichtung . Die Hochleistungs-TFF-Laufzeit ist standardmäßig aktiviert.

TFF für verschiedene Forschungsbereiche

Föderierte Optimierungsalgorithmen

Die Forschung zu föderierten Optimierungsalgorithmen kann in TFF je nach gewünschtem Anpassungsgrad auf unterschiedliche Weise durchgeführt werden.

Eine minimale Stand-alone - Implementierung des Federated Averaging Algorithmus vorgesehen ist hier . Der Code enthält TF Funktionen für lokale Berechnung, TFF - Berechnungen für die Abstimmung sowie einen Treiber - Skript auf dem EMNIST Datensatz als Beispiel. Diese Dateien können leicht für individuelle applciations und algorithmische Änderungen folgende detaillierte Anweisungen in der angepasst werden README .

Eine allgemeinere Implementierung von Federated Averaging kann gefunden werden hier . Diese Implementierung ermöglicht ausgefeiltere Optimierungstechniken, einschließlich der Lernratenplanung und der Verwendung verschiedener Optimierer sowohl auf dem Server als auch auf dem Client. Code, der diese verallgemeinerte Federated Averaging , um verschiedene Aufgaben und föderierte Datensätze gilt gefunden werden hier .

Modell- und Update-Komprimierung

TFF verwendet die tensor_encoding API verlustbehaftete Kompressionsalgorithmen zu ermöglichen communicatation Kosten zwischen dem Server und Clients zu reduzieren. Ein Beispiel für die Ausbildung mit Server-zu-Client und Client-Server - Komprimierung Federated Averaging - Algorithmus finden Sie dieses Experiment .

Um einen benutzerdefinierten Komprimierungsalgorithmus zu implementieren und auf die Trainingsschleife anzuwenden, können Sie:

  1. Implementieren Sie einen neuen Komprimierungsalgorithmus als eine Unterklasse von EncodingStageInterface oder seiner allgemeineren Variante AdaptiveEncodingStageInterface folgenden diesem Beispiel .
  2. Konstruieren Sie Ihren neuen Encoder und spezialisiert für Modell Broadcast oder Modellaktualisierung Lungs .
  3. Verwenden Sie diese Objekte die gesamte zu bauen Trainings Berechnung .

Unterschiedliche Privatsphäre

TFF ist vollständig kompatibel mit der TensorFlow Privacy Bibliothek Forschung in neuen Algorithmen für Verbundausbildung von Modellen mit unterschiedlicher Privatsphäre zu ermöglichen. Ein Beispiel für die Ausbildung mit DP des Grund DP-FedAvg Algorithmus und Erweiterungen finden Sie dieses Experiment Treiber .

Wenn Sie einen benutzerdefinierten DP - Algorithmus implementieren möchten und es den aggregierten Updates von föderierten Lungs anwenden, können Sie einen neuen DP Mittelwert - Algorithmus als eine Unterklasse von implementieren tensorflow_privacy.DPQuery und schaffen tff.aggregators.DifferentiallyPrivateFactory mit einer Instanz der Anfrage. Ein Beispiel für die Umsetzung der DP-FTRL Algorithmus gefunden werden kann hier

Federated GANS (beschrieben unten ) ist ein weiteres Beispiel für eine TFF Projektdurchführung auf Benutzerebene Differential Privatsphäre (zB hier im Code ).

Robustheit und Angriffe

TFF kann auch in Betracht gezogen , die gezielten Angriffe auf föderierte Lernsysteme und Differential Privatsphäre Basis Abwehr simuliert werden können Sie wirklich Hintertür Federated Learning? . Dies wird durch den Aufbau eines iterativen Prozesses mit potenziell böswilligen Clients getan (siehe build_federated_averaging_process_attacked ). Das targeted_attack Verzeichnis enthält weitere Details.

  • Neuer Angriff Algorithmen kann durch das Schreiben eine Client - Update - Funktion implementiert werden , die eine Tensorflow Funktion, siehe ClientProjectBoost für ein Beispiel.
  • Neue Verteidigung kann durch Customizing umgesetzt werden ‚tff.utils.StatefulAggregateFn‘ , die Client - Ausgänge aggregiert ein globales Update zu erhalten.

Ein Beispiel - Script für die Simulation finden emnist_with_targeted_attack.py .

Generative gegnerische Netzwerke

GANS sorgt für ein interessanten föderierten Orchestrierung Muster , das ein wenig anders als Standard Federated Averaging aussieht. Sie umfassen zwei verschiedene Netzwerke (den Generator und den Diskriminator), die jeweils mit einem eigenen Optimierungsschritt trainiert werden.

TFF kann für die Forschung zum föderierten Training von GANs verwendet werden. Zum Beispiel kann der DP-FedAvg-GAN - Algorithmus dargestellt in neueren Arbeiten wird in TFF umgesetzt . Diese Arbeit zeigt die Wirksamkeit von föderierten Lernen, generative Modelle kombinieren und Differential Privatsphäre .

Personalisierung

Die Personalisierung im Rahmen des föderierten Lernens ist ein aktives Forschungsgebiet. Das Ziel der Personalisierung besteht darin, verschiedenen Benutzern unterschiedliche Inferenzmodelle zur Verfügung zu stellen. Es gibt potenziell unterschiedliche Ansätze für dieses Problem.

Ein Ansatz besteht darin, jedem Client die Feinabstimmung eines einzelnen globalen Modells (mit föderiertem Lernen trainiert) mit seinen lokalen Daten zu ermöglichen. Dieser Ansatz hat Verbindungen zu Meta-Learning, siehe zB dieses Papier . Ein Beispiel für diesen Ansatz ist in der gegebenen emnist_p13n_main.py . Um verschiedene Personalisierungsstrategien zu erkunden und zu vergleichen, können Sie:

  • Definieren Sie eine Personalisierungsstrategie durch eine Umsetzung tf.function , die von einem Ausgangsmodell beginnt, Zügen und werten ein personalisiertes Modell für jeden Kunden des lokalen Datensätze verwenden. Ein Beispiel ist gegeben durch build_personalize_fn .

  • Definieren Sie eine OrderedDict die Strategie Namen auf die entsprechenden Personalisierungsstrategien abbildet, und es als verwenden personalize_fn_dict Argument in tff.learning.build_personalization_eval .