O servidor de computação federada (FC) faz parte do aprendizado federado oferecido pela personalização no dispositivo (ODP, na sigla em inglês). O objetivo deste documento é apresentar o servidor de computação federado (FC Server), os componentes e a tecnologia usados. O documento fornece uma visão geral de alto nível da arquitetura e se aprofunda em cada componente em detalhes. Também discute como os componentes trabalham juntos para fornecer um ambiente de aprendizado federado e oferece estratégias para escalonar e dividir cargas de trabalho.
Fluxo de treinamento
O treinamento consiste em fluxos de dados entre o cliente e o servidor da FC. O FC Client é um módulo principal do Android que treina modelos de ML no dispositivo e interage com o FC Server. O FC Server processa e agrega os resultados do FC Client de forma segura em um ambiente de execução confiável (TEE).
O treinamento consiste nas seguintes etapas:
- O cliente FC no dispositivo faz o download de uma chave de criptografia pública dos serviços de chaves.
- O cliente FC faz check-in com o servidor FC e recebe uma tarefa de treinamento.
- O cliente FC faz o download de um plano de treinamento e da versão N, a versão mais recente do modelo.
- O cliente FC treina usando os dados locais e o plano.
- O cliente FC criptografa as contribuições do dispositivo com a chave pública obtida na etapa 0 e faz o upload delas para o servidor FC.
- O cliente FC notifica o servidor FC de que o treinamento foi concluído.
- O FC Server espera até que um número suficiente de clientes envie as contribuições.
- Uma rodada de agregação é acionada.
- As contribuições criptografadas são carregadas em um ambiente de execução confiável (TEE) pelo agregador.
- O agregador atesta a si mesmo, seguindo a RFC 9334 Architecture of Remote ATtestation procedureS (RATS) do NIST, para os coordenadores. Após a confirmação, os serviços de chaves concedem as chaves de descriptografia. Essas chaves podem ser divididas entre vários provedores de chaves em um esquema de compartilhamento secreto de Shamir.
- O agregador faz a agregação entre dispositivos, clipes e ruídos de acordo com os mecanismos de privacidade diferencial (DP, na sigla em inglês) adequados e gera os resultados com ruído.
- O Aggregator aciona o Model Updater.
- O atualizador de modelos carrega a contribuição agregada e a aplica à versão N do modelo para criar a versão N + 1. O novo modelo é enviado para o armazenamento de modelos.
O FC Server pode ser implantado em qualquer serviço de nuvem compatível com TEEs e recursos de segurança relacionados. Estamos avaliando provedores de nuvem pública e tecnologias subjacentes, mas, por enquanto, a seção a seguir apresenta um exemplo de implementação do Google Cloud usando o Espaço confidencial.
Arquitetura de alto nível
O FC Server tem os seguintes componentes implantados no Google Cloud:
Componente | Descrição |
Serviço de gerenciamento de tarefas | um serviço da Web para gerenciar a tarefa de treinamento Os parceiros precisam usar a API Task Management para criar uma tarefa de treinamento, listar todas as tarefas de treinamento, cancelar uma tarefa e recuperar todos os status de treinamento. |
Serviço de atribuição de tarefas | Um serviço da Web baseado em HTTPS em que os dispositivos clientes fazem check-in periodicamente para receber tarefas de treinamento e informar o status do treinamento. |
Agregador | Um serviço em segundo plano em execução no Confidential Space. Ele executa cargas de trabalho criadas pela ODP. Ela precisa atestar aos coordenadores, que protegem o acesso às chaves de descriptografia. Somente agregadores certificados podem descriptografar as contribuições enviadas por dispositivos clientes e realizar a agregação entre dispositivos. |
Atualizador de modelo | Um serviço em segundo plano executado no Confidential Space que aplica os gradientes agregados ao modelo. |
Detalhes do componente
As seções a seguir expandem a arquitetura de alto nível com mais detalhes:
Serviço de gerenciamento de tarefas
Ele contém dois subcomponentes: o serviço da Web de gerenciamento de tarefas e o serviço de agendamento de tarefas, ambos implantados no GKE.
Gerenciamento de tarefas
É um conjunto de serviços da Web de front-end que recebem solicitações HTTPS e criam ou recebem tarefas do banco de dados de tarefas.
Agendador de tarefas
Um serviço em segundo plano que verifica continuamente o banco de dados de tarefas. Gerencia o fluxo de treinamento, por exemplo, criando novas rodadas de treinamento e iterações.
Banco de dados de tarefas
Um banco de dados compatível com ANSI SQL que armazena informações sobre tarefas, iterações e atribuições. Nesta implementação, o Google Cloud Spanner é usado como o serviço de banco de dados.
Serviço de atribuição de tarefas
O serviço de atribuição de tarefas é um serviço da Web de front-end hospedado no GKE. Ele recebe solicitações dos clientes da FC e distribui tarefas de treinamento quando aplicável.
O banco de dados de tarefas é a mesma instância do banco de dados que o banco de dados de tarefas no serviço de gerenciamento de tarefas.
Serviço de agregador
Agregador e atualizador de modelos
O agregador e o atualizador de modelo são semelhantes. Eles são serviços em segundo plano que processam dados com segurança no Espaço confidencial. A comunicação entre os jobs off-line é feita pelo PubSub.
Gradientes, gradientes agregados, modelo e plano
- Um armazenamento de gradiente para gradientes enviados por upload de dispositivo cliente (criptografados).
- Um armazenamento de gradiente agregado para gradientes agregados, cortados e com ruído.
- Um armazenamento de modelos e planos para os planos de treinamento, modelos e pesos.
Coletor
O Collector é um serviço em segundo plano que conta periodicamente os envios do dispositivo cliente durante uma rodada de treinamento. Ele notifica o agregador para iniciar a agregação quando houver envios suficientes disponíveis.
Hosts de serviço
Todos os serviços que não têm acesso a informações sensíveis são hospedados no GKE.
Todos os serviços que podem tocar em informações sensíveis são hospedados no Confidencial Space.
Todos os dados sensíveis são criptografados com chaves de criptografia gerenciadas por serviços de chaves de várias partes. Só é possível acessar as chaves de descriptografia com código-fonte aberto, atestado e criado pela ODP em execução em versões legítimas do Confidential Space ativado para computação confidencial.
Em uma unidade de serviço, o recurso de computação tem esta aparência:
Escalonabilidade
A infraestrutura descrita anteriormente se concentra em uma unidade de serviço.
Uma unidade de serviço usa um Cloud Spanner. Consulte Cotas e limites do Spanner para ver as limitações importantes.
Cada componente dessa arquitetura pode ser escalonado de forma independente. Isso é feito escalonando a capacidade no Confidential Space ou no cluster do GKE usando mecanismos de escalonamento padrão. Efetivamente, a capacidade de processamento pode ser aumentada adicionando mais instâncias de:
- Serviço da Web de atribuição de tarefas
- Serviço da Web de gerenciamento de tarefas
- Instâncias do agregador
- Instâncias do atualizador de modelos
Resiliência
A resiliência de um servidor do FC é tratada pela recuperação de desastres com o armazenamento replicado. Se você tiver interesse na recuperação de desastres, ative a replicação de dados entre regiões. Isso garante que, caso ocorra um desastre (como um evento climático que interrompa um data center), o serviço será retomado da última rodada de treinamento.
Spanner
A implementação padrão do FC Server usa o Google Cloud Spanner como o banco de dados para armazenar o status da tarefa que é usado para controlar o fluxo de treinamento. Avalie as vantagens e desvantagens entre consistência e disponibilidade de acordo com as necessidades do seu negócio antes de selecionar uma configuração para várias regiões.
Não há dados do usuário ou derivados, brutos ou criptografados, armazenados em nenhuma instância do Spanner. Use qualquer um dos recursos de recuperação de desastres oferecidos pelo Spanner.
O Spanner registra o histórico de alterações. O agregador e o atualizador de modelos armazenam os dados por rodada de treinamento, e o resultado de cada rodada é armazenado separadamente sem sobrescrever um ao outro. Por isso, o serviço pode ser retomado a partir da última rodada de treinamento em caso de desastre.
Google Cloud Storage
A implementação padrão do servidor do FC usa o Google Cloud Storage para armazenar dados de blob, como modelos, planos de treinamento e contribuições de dispositivos criptografados.
Há três instâncias do GCS no design:
- Contribuições de dispositivos: contribuições criptografadas de dispositivos enviadas por upload.
- Modelos: planos de treinamento, modelos e pesos deles.
- Gradientes agregados: são os gradientes agregados produzidos pelo agregador.
Os dados armazenados no GCS são:
- Dados fornecidos pelo desenvolvedor, como um plano de treinamento OU
- Dados potencialmente confidenciais porque são derivados de indicadores do usuário (protegidos por criptografia com suporte de vários coordenadores), como gradientes enviados pelo dispositivo e gradientes agregados.
- Dados não particulares derivados de indicadores do usuário, mas que postam aplicação de privacidade diferencial, como pesos de modelos.
Avalie as compensações entre consistência e disponibilidade e selecione recursos de durabilidade e disponibilidade de dados do GCS adequados. Especifique suas próprias políticas de retenção de dados.
Replicação e backups
Além dos mecanismos de replicação de dados fornecidos pelo Google Cloud, você também pode fazer backup periódico dos dados no Spanner e no GCS. Por exemplo, é possível usar serviços e ofertas de replicação entre nuvens. A ODP não oferece uma amostra porque essas configurações dependem muito das necessidades da empresa. O design atual considera as possíveis necessidades dos desenvolvedores para essas replicações e backups. Por isso, ele é compatível com serviços e produtos de replicação e backup fornecidos por terceiros.