Autres méthodes de compression pour Federated Learning

Aug 18 2020

J'ai remarqué que la méthode de compression Gradient Quantization est déjà implémentée dans le framework TFF. Qu'en est-il des méthodes de compression non traditionnelles où nous sélectionnons un sous-modèle en supprimant certaines parties du modèle global? Je rencontre la méthode de compression «Federated Dropout» dans l'article «Élargir la portée de l'apprentissage fédéré en réduisant les besoins en ressources des clients» (https://arxiv.org/abs/1812.07210). Toute idée si la méthode Federated Dropout est déjà prise en charge dans Tensorflow Federated. Sinon, des informations sur la façon de l'implémenter (l'idée principale de la méthode est de supprimer un pourcentage fixe des activations et des filtres dans le modèle global pour échanger et former un sous-modèle plus petit)?

Réponses

2 JakubKonecny Aug 18 2020 at 19:34

Actuellement, aucune implémentation de cette idée n'est disponible dans la base de code TFF.

Mais voici un aperçu de la façon dont vous pourriez le faire, je recommande de commencer par examples/simple_fedavg

  1. Modifiez le niveau supérieur build_federated_averaging_processpour accepter deux model_fns - un server_model_fnpour le modèle global, un client_model_fnpour la structure de sous-modèle plus petite réellement formée sur les clients.
  2. Modifiez build_server_broadcast_messagepour extraire uniquement le sous-modèle pertinent du server_state.model_weights. Ce serait le mappage du modèle de serveur au modèle de client.
  3. Le client_updatepeut en fait ne pas avoir besoin d'être changé (je ne suis pas sûr à 100%), tant que seul le client_model_fnest fourni à partir de client_update_fn.
  4. Modifier server_update- ce weights_deltasera la mise à jour du sous-modèle client, vous devrez donc le mapper à nouveau sur le modèle global plus large.

En général, les étapes 2 et 4 sont délicates, car elles dépendent non seulement des couches d'un modèle, mais aussi de la manière dont elles sont connectées. Il sera donc difficile de créer une solution générale facile à utiliser, mais il devrait être acceptable de les écrire pour une structure de modèle spécifique que vous connaissez à l'avance.