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

Aperçu

TFF est un framework extensible et puissant permettant de mener des recherches sur l'apprentissage fédéré (FL) en simulant des calculs fédérés sur des jeux de données de substitution réalistes. Cette page décrit les principaux concepts et composants pertinents pour les simulations de recherche, ainsi que des instructions détaillées pour mener différents types de recherches dans 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. Des fragments de code TensorFlow, généralement des tf.function , encapsulent une logique s'exécutant à un emplacement unique (par exemple, côté client ou serveur). Ce code est généralement écrit et testé sans aucune tff.* `, et peut être réutilisé en dehors de TensorFlow. Par exemple, la boucle d'entraînement côté client dans le cadre de la moyenne fédérée est implémentée à ce niveau.

  2. La logique d'orchestration fédérée de TensorFlow consiste à lier les fonctions individuelles tf.function (voir point 1) en les encapsulant dans des objets ` tff.tensorflow.computation , puis à les orchestrer à l'aide d'abstractions telles que federated_language.federated_broadcast et federated_language.federated_mean au sein d'un objet federated_language.federated_computation . Voir, par exemple, cette orchestration pour le calcul de la moyenne fédérée .

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

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

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

Les ensembles de données comprennent :

  • 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'entraînement.

  • EMNIST fédéré . Prétraitement fédéré du jeu de données EMNIST (caractères et chiffres), où chaque client correspond à un utilisateur différent. L'ensemble d'entraînement complet comprend 3 400 utilisateurs et 671 585 exemples répartis en 62 étiquettes.

  • Shakespeare . Un ensemble de données textuelles plus restreint, au niveau des personnages, basé sur l'œuvre complète de William Shakespeare. Cet ensemble comprend 715 utilisateurs (personnages des pièces de Shakespeare), chaque exemple correspondant à une série de répliques prononcées par le personnage dans une pièce donnée.

  • CIFAR-100 : partitionnement fédéré du jeu de données CIFAR-100 en 500 clients d’entraînement et 100 clients de test. Chaque client dispose de 100 exemples uniques. Ce partitionnement vise à créer une hétérogénéité plus réaliste entre les clients. Pour plus de détails, consultez l’ API .

  • Le jeu de données Google Landmark v2 contient des photos de divers monuments du monde entier, regroupées par photographe afin d'obtenir un partitionnement fédéré des données. Deux versions sont disponibles : une version plus petite avec 233 clients et 23 080 images, et une version plus grande avec 1 262 clients et 164 172 images.

  • CelebA est un ensemble de données d'exemples (images et attributs faciaux) de visages de célébrités. Dans cet ensemble fédéré, les exemples de chaque célébrité sont regroupés pour former un client. Il existe 9 343 clients, chacun comprenant 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 propose un ensemble de données composé de photos de diverses espèces. Cet ensemble contient 120 300 images représentant 1 203 espèces. Il existe sept versions de cet ensemble. L'une d'elles regroupe les photos par photographe et comprend 9 257 utilisateurs. Les six autres versions sont regroupées selon la géolocalisation du lieu de prise de vue et comprennent entre 11 et 3 606 utilisateurs.

Simulations haute performance

Bien que le temps d'exécution d'une simulation FL ne soit pas un critère pertinent pour l'évaluation des algorithmes (le matériel de simulation n'étant pas représentatif des environnements de déploiement FL réels), la rapidité d'exécution des simulations FL est essentielle à la productivité de la recherche. C'est pourquoi TFF a investi massivement dans la mise à disposition d'environnements d'exécution haute performance, mono et multi-machines. La documentation est en cours d'élaboration ; en attendant, veuillez consulter les instructions relatives aux simulations TFF avec accélérateurs et celles concernant la configuration des simulations TFF sur GCP . L'environnement d'exécution TFF haute performance 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ée peut être menée de différentes manières dans TFF, en fonction du niveau de personnalisation souhaité.

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

Une implémentation plus générale de la moyenne fédérée est disponible ici . Cette implémentation permet des techniques d'optimisation plus sophistiquées, notamment l'utilisation d'optimiseurs différents côté serveur et côté client. D'autres algorithmes d'apprentissage fédéré, comme le clustering k-means fédéré, sont disponibles ici .

Compression de mise à jour du modèle

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

Pour reproduire un article récent, consultez ce projet de recherche . Pour implémenter un algorithme de compression personnalisé, consultez la section « comparaison des méthodes » du projet pour des exemples de référence, et le tutoriel sur les agrégateurs TFF si vous ne les connaissez pas déjà.

confidentialité différentielle

TFF est interopérable avec la bibliothèque TensorFlow Privacy afin de permettre la recherche sur de nouveaux algorithmes pour l'entraînement fédéré de modèles avec confidentialité différentielle. Pour un exemple d'entraînement avec DP utilisant l'algorithme DP-FedAvg de base et ses extensions , consultez ce pilote d'expérimentation .

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 une tff.aggregators.DifferentiallyPrivateFactory avec une instance de votre requête. Un exemple d'implémentation de l' algorithme DP-FTRL est disponible 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

TFF peut également servir à simuler les attaques ciblées sur les systèmes d'apprentissage fédéré et les défenses basées sur la confidentialité différentielle abordées dans l' article « Peut-on vraiment compromettre l'apprentissage fédéré ? » . Pour ce faire, on construit un processus itératif avec des clients potentiellement malveillants (voir build_federated_averaging_process_attacked ). Le répertoire targeted_attack contient plus de détails.

  • De nouveaux algorithmes d'attaque peuvent être implémentés en écrivant une fonction de mise à jour du client qui est une fonction Tensorflow, voir ClientProjectBoost pour un exemple.
  • De nouvelles défenses peuvent être mises en œuvre 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, légèrement différent de la moyenne fédérée standard. Ils impliquent deux réseaux distincts (le générateur et le discriminateur), chacun entraîné avec sa propre étape d'optimisation.

TFF peut être utilisé pour la recherche sur l'apprentissage fédéré des GAN. Par exemple, l'algorithme DP-FedAvg-GAN présenté dans un travail récent 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. Son objectif est de proposer différents modèles d'inférence à différents utilisateurs. Plusieurs approches sont envisageables pour résoudre ce problème.

Une approche consiste à permettre à chaque client d'affiner un modèle global unique (entraîné par apprentissage fédéré) avec ses données locales. Cette approche est liée au méta-apprentissage ; voir par exemple cet article . Un exemple de cette approche est fourni 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 implémentant une tf.function qui, à partir d'un modèle initial, entraîne et évalue un modèle personnalisé à l'aide des jeux de données locaux de chaque client. Un exemple est fourni par build_personalize_fn .

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

Une autre approche consiste à éviter l'entraînement d'un modèle entièrement global en entraînant une partie du modèle de manière totalement locale. Une application de cette approche est décrite dans cet article de blog . Cette approche est également liée au méta-apprentissage ; voir cet article .