Utilisation de la TFF pour la recherche sur l'apprentissage fédéré

Aperçu

TFF est un cadre extensible et puissant pour mener des recherches sur l'apprentissage fédéré (FL) en simulant des calculs fédérés sur des ensembles de données proxy réalistes. Cette page décrit les principaux concepts et composants pertinents pour les simulations de recherche, ainsi que des conseils détaillés pour mener différents types de recherche dans la TFF.

La structure typique du code de recherche dans TFF

Une simulation FL de recherche implémentée dans TFF se compose généralement de trois principaux types de logique.

  1. Morceaux individuels de code TensorFlow, généralement tf.function s, qui encapsulent la logique qui s'exécute à un emplacement unique (par exemple, sur des clients ou sur un serveur). Ce code est généralement écrit et testé sans aucune référence tff.* et peut être réutilisé en dehors de TFF. Par exemple, la boucle de formation client dans Federated A Average est implémentée à ce niveau.

  2. TensorFlow Logique d'orchestration fédérée, qui lie les tf.function s individuels de 1. en les enveloppant sous tff.tf_computation s, puis en les orchestrant à l'aide d'abstractions telles que tff.federated_broadcast et tff.federated_mean dans un tff.federated_computation . Voir, par exemple, cette orchestration pour Moyenne fédérée .

  3. Un script de pilote externe qui simule la logique de contrôle d'un système FL de production, en sélectionnant des clients simulés à partir d'un ensemble de données, puis en exécutant des calculs fédérés définis en 2. sur ces clients. Par exemple, un pilote d'expérience Federated EMNIST .

Ensembles de données d'apprentissage fédéré

TensorFlow fédéré héberge plusieurs ensembles de données qui sont représentatifs des caractéristiques des problèmes du monde réel qui pourraient être résolus avec l'apprentissage fédéré.

Les ensembles de données incluent :

  • StackOverflow . Un ensemble de données textuelles réalistes pour la modélisation du langage ou les tâches d'apprentissage supervisé, avec 342 477 utilisateurs uniques et 135 818 730 exemples (phrases) dans l'ensemble d'apprentissage.

  • EMNIST fédéré . Un prétraitement fédéré de l'ensemble de données de caractères et de chiffres EMNIST, où chaque client correspond à un rédacteur différent. Le train complet contient 3400 utilisateurs avec 671 585 exemples de 62 étiquettes.

  • Shakespeare . Un jeu de données texte plus petit au niveau des caractères basé sur les œuvres complètes de William Shakespeare. L'ensemble de données se compose de 715 utilisateurs (personnages de pièces de Shakespeare), où chaque exemple correspond à un ensemble contigu de lignes prononcées par le personnage dans une pièce donnée.

  • CIFAR-100 . Un partitionnement fédéré de l'ensemble de données CIFAR-100 sur 500 clients de formation et 100 clients de test. Chaque client a 100 exemples uniques. Le partitionnement est fait de manière à créer une hétérogénéité plus réaliste entre les clients. Pour plus de détails, consultez l' API .

  • Ensemble de données Google Landmark v2 L'ensemble de données se compose de photos de divers monuments du monde, avec des images regroupées par photographe pour obtenir un partitionnement fédéré des données. Deux types de jeux de données sont disponibles : un jeu de données plus petit avec 233 clients et 23 080 images, et un jeu de données plus grand avec 1 262 clients et 164 172 images.

  • CelebA Un ensemble de données d'exemples (attributs d'image et de visage) de visages de célébrités. L'ensemble de données fédéré regroupe les exemples de chaque célébrité pour former un client. Il y a 9343 clients, chacun avec au moins 5 exemples. L'ensemble de données peut être divisé en groupes d'entraînement et de test, soit par clients, soit par exemples.

  • iNaturalist Un ensemble de données se compose de photos de diverses espèces. L'ensemble de données contient 120 300 images pour 1 203 espèces. Sept variantes de l'ensemble de données sont disponibles. L'un d'eux est regroupé par le photographe et il se compose de 9257 clients. Le reste des ensembles de données sont regroupés par l'emplacement géographique où la photo a été prise. Ces six versions de l'ensemble de données se composent de 11 à 3 606 clients.

Simulateurs hautes performances

Bien que le temps d'horloge d'une simulation FL ne soit pas une mesure pertinente pour évaluer les algorithmes (car le matériel de simulation n'est pas représentatif des environnements de déploiement FL réels), il est essentiel de pouvoir exécuter rapidement des simulations FL pour la productivité de la recherche. Par conséquent, TFF a investi massivement dans la fourniture d'environnements d'exécution hautes performances pour une ou plusieurs machines. La documentation est en cours de développement, mais pour l'instant, consultez le didacticiel Simulations hautes performances avec Kubernetes , les instructions sur les simulations TFF avec des accélérateurs et les instructions sur la configuration des simulations avec TFF sur GCP . Le runtime TFF hautes performances est activé par défaut.

TFF pour différents domaines de recherche

Algorithmes d'optimisation fédérés

La recherche sur les algorithmes d'optimisation fédérés peut se faire de différentes manières dans TFF, selon le niveau de personnalisation souhaité.

Une implémentation autonome minimale de l'algorithme de moyennage fédéré est fournie ici . Le code inclut des fonctions TF pour le calcul local, des calculs TFF pour l'orchestration et un script de pilote sur l'ensemble de données EMNIST à titre d'exemple. Ces fichiers peuvent facilement être adaptés pour des applications personnalisées et des modifications algorithmiques en suivant les instructions détaillées du README .

Une implémentation plus générale de la moyenne fédérée peut être trouvée ici . Cette implémentation permet des techniques d'optimisation plus sophistiquées, y compris l'utilisation de différents optimiseurs à la fois sur le serveur et sur le client. D'autres algorithmes d'apprentissage fédéré, y compris le clustering k-means fédéré, peuvent être trouvés ici .

Compression de la mise à jour du modèle

La compression avec perte des mises à jour de modèles peut entraîner une réduction des coûts de communication, ce qui peut à son tour entraîner une réduction du temps de formation global.

Pour reproduire un article récent, voir ce projet de recherche . Pour implémenter un algorithme de compression personnalisé, consultez la comparaison_méthodes dans le projet pour les lignes de base à titre d'exemple, et le didacticiel TFF Aggregators si vous n'êtes pas déjà familiarisé avec.

Confidentialité différentielle

TFF est interopérable avec la bibliothèque TensorFlow Privacy pour permettre la recherche de nouveaux algorithmes pour la formation fédérée de modèles avec une confidentialité différentielle. Pour un exemple d'entraînement avec DP à l'aide de l'algorithme de base DP-FedAvg et des extensions , consultez ce pilote d'expérience .

Si vous souhaitez implémenter un algorithme DP personnalisé et l'appliquer aux mises à jour agrégées de la moyenne fédérée, vous pouvez implémenter un nouvel algorithme de moyenne DP en tant que sous-classe de tensorflow_privacy.DPQuery et créer un tff.aggregators.DifferentiallyPrivateFactory avec une instance de votre requête. Un exemple d'implémentation de l' algorithme DP-FTRL peut être trouvé ici

Les GAN fédérés (décrits ci- dessous ) sont un autre exemple de projet TFF mettant en œuvre la confidentialité différentielle au niveau de l'utilisateur (par exemple, ici dans le code ).

Robustesse et attaques

La TFF peut également être utilisée pour simuler les attaques ciblées sur les systèmes d'apprentissage fédéré et les défenses différentielles basées sur la confidentialité envisagées dans Can You Really Back door Federated Learning? . Cela se fait en créant un processus itératif avec des clients potentiellement malveillants (voir build_federated_averaging_process_attacked ). Le répertoire target_attack contient plus de détails.

  • De nouveaux algorithmes d'attaque peuvent être implémentés en écrivant une fonction de mise à jour client qui est une fonction Tensorflow, voir ClientProjectBoost pour un exemple.
  • De nouvelles défenses peuvent être implémentées en personnalisant 'tff.utils.StatefulAggregateFn' qui agrège les sorties client pour obtenir une mise à jour globale.

Pour un exemple de script de simulation, voir emnist_with_targeted_attack.py .

Réseaux antagonistes génératifs

Les GAN constituent un modèle d'orchestration fédérée intéressant qui semble un peu différent de la moyenne fédérée standard. Ils impliquent deux réseaux distincts (le générateur et le discriminateur) entraînés chacun avec leur propre étape d'optimisation.

La TFF peut être utilisée pour la recherche sur la formation fédérée des GAN. Par exemple, l'algorithme DP-FedAvg-GAN présenté dans des travaux récents est implémenté dans TFF . Ce travail démontre l'efficacité de la combinaison de l'apprentissage fédéré, des modèles génératifs et de la confidentialité différentielle .

Personnalisation

La personnalisation dans le cadre de l'apprentissage fédéré est un domaine de recherche actif. L'objectif de la personnalisation est de fournir différents modèles d'inférence à différents utilisateurs. Il existe potentiellement différentes approches à ce problème.

Une approche consiste à laisser chaque client affiner un modèle global unique (formé à l'aide de l'apprentissage fédéré) avec ses données locales. Cette approche a des liens avec le méta-apprentissage, voir, par exemple, cet article . Un exemple de cette approche est donné dans emnist_p13n_main.py . Pour explorer et comparer différentes stratégies de personnalisation, vous pouvez :

  • Définissez une stratégie de personnalisation en mettant en œuvre une tf.function qui part d'un modèle initial, entraîne et évalue un modèle personnalisé à l'aide des ensembles de données locaux de chaque client. Un exemple est donné par build_personalize_fn .

  • Définissez un OrderedDict qui mappe les noms de stratégie aux stratégies de personnalisation correspondantes et utilisez-le comme argument personalize_fn_dict dans tff.learning.build_personalization_eval .

Une autre approche consiste à éviter de former un modèle entièrement global en formant une partie d'un modèle entièrement localement. Une instanciation de cette approche est décrite dans cet article de blog . Cette approche est également liée au méta-apprentissage, voir cet article . Pour explorer l'apprentissage fédéré partiellement local, vous pouvez :