Le serveur de calcul fédéré (FC) fait partie de l'apprentissage fédéré proposé par la personnalisation sur l'appareil (ODP). L'objectif de ce document est de présenter le serveur de calcul fédéré (FC Server), ses composants et la technologie utilisée. Le document fournit une vue d'ensemble de l'architecture, puis approfondit chaque composant. Elle explique également comment les composants fonctionnent ensemble pour fournir un environnement d'apprentissage fédéré, et propose des stratégies de scaling et de partitionnement des charges de travail.
Flux d'entraînement
L'entraînement consiste en des flux de données entre le client FC et le serveur FC. Le client FC est un module Android de base qui entraîne des modèles de ML sur l'appareil et interagit avec le serveur FC. Le serveur FC traite et regroupe les résultats du client FC de manière sécurisée dans un environnement d'exécution sécurisé (TEE).
L'entraînement comprend les étapes suivantes:
- Le client FC sur l'appareil télécharge une clé de chiffrement publique à partir des services de clés.
- Le client FC se connecte au serveur FC et reçoit une tâche d'entraînement.
- Le client FC télécharge un plan d'entraînement, ainsi que la dernière version du modèle, la version N.
- Le client FC s'entraîne à l'aide des données locales et du plan.
- Le client FC chiffre les contributions de cet appareil avec la clé publique obtenue à l'étape 0 et les importe sur le serveur FC.
- Le client FC informe le serveur FC que son entraînement est terminé.
- Le serveur FC attend que suffisamment de clients aient envoyé leurs contributions.
- Un cycle d'agrégation est déclenché.
- Les contributions chiffrées sont chargées dans un environnement d'exécution sécurisé (TEE) par l'agrégateur.
- L'agrégateur s'atteste auprès des coordinateurs, conformément à l'architecture de la RFC 9334 sur les procédures d'attestation à distance (RATS) du NIST. Une fois l'attestation réussie, les services de clés lui accordent les clés de déchiffrement. Ces clés peuvent être réparties entre plusieurs fournisseurs de clés dans un schéma de partage de secrets Shamir.
- L'agrégateur effectue une agrégation inter-appareil, des extraits et des bruits selon les mécanismes de confidentialité différentielle appropriés, et génère les résultats avec bruit.
- L'agrégateur déclenche l'outil de mise à jour du modèle.
- L'outil de mise à jour du modèle charge la contribution agrégée et l'applique à la version N du modèle pour créer la version N+1. Le nouveau modèle est transféré vers l'espace de stockage du modèle.
Le serveur FC peut être déployé sur n'importe quel service cloud compatible avec les TEE et les fonctionnalités de sécurité associées. Nous évaluons actuellement les fournisseurs de cloud public et les technologies sous-jacentes. Pour l'instant, la section suivante présente un exemple d'implémentation Google Cloud à l'aide de Confidential Space.
Architecture de haut niveau
Les composants suivants sont déployés dans Google Cloud pour le serveur FC:
Composant | Description |
Service de gestion des tâches | Service Web permettant de gérer la tâche d'entraînement. Les partenaires doivent utiliser l'API Task Management pour créer une tâche d'entraînement, répertorier toutes les tâches d'entraînement existantes, annuler une tâche et récupérer tous les états d'entraînement. |
Service d'attribution de tâches | Service Web basé sur HTTPS dans lequel les appareils clients se connectent régulièrement pour obtenir des tâches d'entraînement et signaler l'état de l'entraînement. |
Agrégateur | Service d'arrière-plan s'exécutant dans un espace confidentiel Il exécute les charges de travail créées par l'ODP. Il doit attester aux coordinateurs, qui contrôlent l'accès aux clés de déchiffrement. Seuls les agrégateurs certifiés peuvent déchiffrer les contributions envoyées par les appareils clients et effectuer une agrégation inter-appareil. |
Gestionnaire de mise à jour du modèle | Un service d'arrière-plan s'exécutant dans un espace confidentiel qui applique les gradients agrégés au modèle |
Détails du composant
Les sections suivantes fournissent des détails supplémentaires sur l'architecture de haut niveau:
Service de gestion des tâches
Le service de gestion des tâches contient deux sous-composants : le service Web de gestion des tâches et le service de planification des tâches, tous deux déployés sur GKE.
Gestion de tâches
Il s'agit d'un ensemble de services Web frontend qui reçoivent des requêtes HTTPS, et qui créent ou récupèrent des tâches à partir de la base de données de tâches.
Planificateur de tâches
Service d'arrière-plan qui analyse en continu la base de données de tâches. Elle gère le flux d'entraînement, par exemple en créant des séries et des itérations d'entraînement.
Base de données des tâches
Base de données conforme à la norme ANSI SQL qui stocke les informations sur les tâches, les itérations et les attributions. Dans cette mise en œuvre, Google Cloud Spanner est utilisé comme service de base de données sous-jacent.
Service d'attribution de tâches
Le service d'attribution de tâches est un service Web frontend hébergé sur GKE. Il reçoit les requêtes des clients FC et répartit les tâches d'entraînement le cas échéant.
La base de données des tâches est ici la même instance de base de données que la base de données des tâches du service de gestion des tâches.
Service d'agrégation
Agrégateur et outil de mise à jour du modèle
L'agrégateur et l'outil de mise à jour du modèle sont similaires. Il s'agit de services en arrière-plan qui traitent les données de manière sécurisée dans Confidential Space. La communication entre les jobs hors connexion s'effectue via PubSub.
Gradients, gradients agrégés, modèle et plan
- Stockage de gradients pour les gradients importés (chiffrés) par l'appareil client.
- Stockage de gradients agrégés pour les gradients agrégés, rognés et avec bruit.
- Un espace de stockage pour les modèles et les plans d'entraînement, les modèles et les poids.
Collecteur
Le collecteur est un service en arrière-plan qui compte régulièrement les envois de l'appareil client pendant un cycle d'entraînement. Il avertit l'agrégateur de lancer l'agrégation une fois que suffisamment d'envois sont disponibles.
Hôtes de service
Tous les services qui n'ont pas accès à des informations sensibles sont hébergés sur GKE.
Tous les services susceptibles de traiter des informations sensibles sont hébergés dans Confidential Space.
Toutes les données sensibles sont chiffrées à l'aide de clés de chiffrement gérées par des services de clés appartenant à plusieurs parties. Seul le code Open Source écrit par l'ODP et attesté, exécuté dans des versions légitimes de l'Espace confidentiel compatibles avec le calcul confidentiel, peut accéder aux clés de déchiffrement.
Dans une unité de service, la ressource de calcul se présente comme suit :
Évolutivité
L'infrastructure décrite précédemment se concentre sur une seule unité de service.
Une unité de service utilise un Cloud Spanner. Consultez la page Quotas et limites de Spanner pour connaître les limitations notables.
Chaque composant de cette architecture peut être mis à l'échelle indépendamment. Pour ce faire, la capacité est mise à l'échelle dans l'espace confidentiel ou dans le cluster GKE à l'aide de mécanismes de scaling standards. En effet, vous pouvez augmenter la capacité de traitement en ajoutant davantage d'instances de:
- Service Web d'attribution de tâches
- Service Web de gestion des tâches
- Instances de l'agrégateur
- Instances de l'outil de mise à jour du modèle
Résilience
La résilience d'un serveur FC est gérée par la reprise après sinistre à l'aide d'un stockage répliqué. Si vous souhaitez mettre en place une reprise après sinistre, vous devez activer la réplication des données interrégionale. Ainsi, en cas de sinistre (par exemple, un événement météo qui perturbe un centre de données), le service reprendra à partir de la dernière série d'entraînement.
Spanner
L'implémentation par défaut du serveur FC utilise Google Cloud Spanner comme base de données pour stocker l'état des tâches utilisé pour contrôler le flux d'entraînement. Vous devez évaluer les compromis entre cohérence et disponibilité en fonction de vos besoins métier avant de sélectionner une configuration multirégionale.
Aucune donnée utilisateur ni ses dérivées, brutes ou chiffrées, ne sont stockées dans une instance Spanner. N'hésitez pas à utiliser l'une des fonctionnalités de reprise après sinistre proposées par Spanner.
Spanner enregistre l'historique des modifications. L'agrégateur et l'outil de mise à jour de modèle stockent les données par cycle d'entraînement. Le résultat de chaque cycle est stocké séparément sans être écrasés. Par conséquent, le service peut reprendre à partir de la dernière série d'entraînement en cas de sinistre.
Google Cloud Storage
L'implémentation par défaut du serveur FC utilise Google Cloud Storage pour stocker des données blob telles que des modèles, des plans d'entraînement et des contributions d'appareils chiffrées.
La conception comprend trois instances GCS:
- Contributions sur l'appareil: contributions chiffrées importées depuis des appareils.
- Modèles : plans d'entraînement, modèles et pondérations.
- Gradients agrégés: les gradients agrégés produits par l'agrégateur.
Les données stockées dans GCS sont :
- Données fournies par le développeur, telles qu'un plan de formation OU
- Données potentiellement privées, car elles sont dérivées de signaux utilisateur (protégés par un chiffrement reposant sur plusieurs coordinateurs), comme les gradients importés par l'appareil et les gradients agrégés OU
- Données non privées dérivées des signaux utilisateur, mais après l'application de la confidentialité différentielle, comme les poids du modèle.
Vous devez évaluer les compromis entre la cohérence et la disponibilité, et sélectionner les fonctionnalités de disponibilité et de durabilité des données GCS appropriées. Vous devez spécifier vos propres règles de conservation des données.
Réplication et sauvegardes
En plus des mécanismes de réplication de données fournis par Google Cloud, vous pouvez également choisir de sauvegarder périodiquement les données dans Spanner et GCS. Par exemple, vous pouvez utiliser des services et des offres de réplication multicloud. L'ODP ne fournit pas d'échantillon, car ces configurations dépendent fortement des besoins de l'entreprise. La conception actuelle tient compte des besoins potentiels des développeurs en termes de réplications et de sauvegardes. Il est donc compatible avec les services et produits de réplication et de sauvegarde fournis par des tiers.