Questions fréquentes

TensorFlow Federated peut-il être utilisé dans un environnement de production, par exemple sur les téléphones mobiles ?

Pas actuellement. Bien que nous ayons conçu TFF en pensant au déploiement sur des appareils réels, à ce stade, nous ne fournissons actuellement aucun outil à cet effet. La version actuelle est destinée à des utilisations expérimentales, telles que l'expression de nouveaux algorithmes fédérés ou l'essai d'apprentissage fédéré avec vos propres ensembles de données, à l'aide du runtime de simulation inclus.

Nous prévoyons qu'au fil du temps, l'écosystème open source autour de TFF évoluera pour inclure des environnements d'exécution ciblant les plates-formes de déploiement physique.

Comment utiliser TFF pour expérimenter de grands ensembles de données ?

Le moteur d'exécution par défaut inclus dans la version initiale de TFF est destiné uniquement aux petites expériences telles que celles décrites dans nos didacticiels dans lesquelles toutes vos données (sur tous les clients simulés) tiennent simultanément en mémoire sur une seule machine et l'ensemble de l'expérience s'exécute localement. dans le notebook Colab.

Notre feuille de route à court terme comprend un environnement d'exécution hautes performances pour les expériences avec de très grands ensembles de données et un grand nombre de clients.

Comment puis-je m'assurer que le caractère aléatoire de TFF correspond à mes attentes ?

Étant donné que TFF a intégré l'informatique fédérée en son cœur, l'auteur de TFF ne doit pas assumer le contrôle de l'endroit et de la manière dont les TensorFlow Session sont saisies, ou run est appelée au sein de ces sessions. La sémantique du caractère aléatoire peut dépendre de l'entrée et de la sortie des Session TensorFlow si les valeurs de départ sont définies. Nous vous recommandons d'utiliser le radomness de style TensorFlow 2, en utilisant par exemple tf.random.experimental.Generator à partir de TF 1.14. Celui-ci utilise un tf.Variable pour gérer son état interne.

Pour aider à gérer les attentes, TFF permet au TensorFlow qu'il sérialise d'avoir des valeurs de départ au niveau opérationnel, mais pas de valeurs de départ au niveau du graphique. En effet, la sémantique des graines de niveau opérationnel devrait être plus claire dans le paramètre TFF : une séquence déterministe sera générée à chaque invocation d'une fonction enveloppée dans un tf_computation , et ce n'est que dans le cadre de cette invocation que les garanties faites par le générateur de nombres pseudo-aléatoires seront valables. . Notez que ce n'est pas tout à fait la même chose que la sémantique de l'appel d'une tf.function en mode impatient ; TFF entre et sort effectivement d'une tf.Session unique à chaque fois que tf_computation est invoquée, tandis qu'appeler à plusieurs reprises une fonction en mode impatient est analogue à appeler sess.run sur le tenseur de sortie à plusieurs reprises au cours de la même session.

Comment puis-je contribuer ?

Consultez le README , les directives de contribution et les collaborations .

Quelle est la relation entre FedJAX et TensorFlow Federated ?

TensorFlow Federated (TFF) est un framework complet pour l'apprentissage et l'analyse fédérés, conçu pour faciliter la composition de différents algorithmes et fonctionnalités, et pour permettre le portage du code dans différents scénarios de simulation et de déploiement. TFF fournit un environnement d'exécution évolutif et prend en charge de nombreux algorithmes de confidentialité, de compression et d'optimisation via ses API standard. TFF prend également en charge de nombreux types de recherche FL , avec une collection d'exemples tirés d'articles Google publiés apparaissant dans le dépôt google-research .

En revanche, FedJAX est une bibliothèque de simulation légère basée sur Python et JAX qui se concentre sur la facilité d'utilisation et le prototypage rapide d'algorithmes d'apprentissage fédéré à des fins de recherche. TensorFlow Federated et FedJAX sont développés en tant que projets distincts, sans attente de portabilité du code.