Servidor de computação federada da personalização no dispositivo

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 Federated Compute Server (FC Server), os componentes dele e a tecnologia usada. O documento oferece uma visão geral de alto nível da arquitetura e, em seguida, detalha cada componente. Ele também aborda como os componentes trabalham juntos para oferecer um ambiente de aprendizado federado e apresenta estratégias para escalonar e fragmentar cargas de trabalho.

Fluxo de treinamento

O treinamento consiste em fluxos de dados entre o cliente e o servidor do FC. O cliente do FC é um módulo principal do Android que treina modelos de ML no dispositivo e interage com o servidor do FC. O servidor da FC processa e agrega os resultados do cliente da FC de forma segura em um ambiente de execução confiável (TEE).

O treinamento consiste nas seguintes etapas:

Fluxograma que mostra o fluxo de treinamento entre um cliente e um servidor de computação federada no Sandbox de privacidade para Android.
  1. O cliente do FC no dispositivo baixa uma chave de criptografia pública dos Serviços de chaves.
  2. O cliente do FC faz check-in com o servidor do FC e recebe uma tarefa de treinamento.
  3. O cliente do FC faz o download de um plano de treinamento e da versão mais recente do modelo, a versão N.
  4. O cliente da FC treina usando os dados locais e o plano.
  5. O cliente do FC criptografa as contribuições do dispositivo com a chave pública obtida na etapa 0 e faz upload para o servidor do FC.
  6. O cliente do FC notifica o servidor do FC de que o treinamento foi concluído.
  7. O servidor da FC espera até que clientes suficientes enviem as contribuições.
  8. Uma rodada de agregação é acionada.
  9. As contribuições criptografadas são carregadas em um ambiente de execução confiável (TEE) pelo agregador.
  10. O agregador faz a própria comprovação, seguindo a arquitetura de procedimentos de comprovação remota (RATS, na sigla em inglês) RFC 9334 do NIST, para os coordenadores. Após a declaração bem-sucedida, os Serviços de chaves concedem a ela as chaves de descriptografia. Essas chaves podem ser divididas entre vários provedores em um esquema de compartilhamento de segredos de Shamir.
  11. O agregador faz a agregação entre dispositivos, corta e adiciona ruído de acordo com os mecanismos de privacidade diferencial (DP) adequados e gera os resultados com ruído.
  12. O agregador aciona o atualizador de modelo.
  13. O Model Updater 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 servidor FC pode ser implantado em qualquer serviço de nuvem que ofereça suporte a 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 Confidential Space.

Arquitetura de alto nível

O servidor FC tem os seguintes componentes implantados no Google Cloud:

Diagrama que mostra a arquitetura do servidor de computação federada do Sandbox de privacidade para Android.
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 atuais, 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 com o ODP. Ele precisa atestar aos coordenadores, que protegem o acesso às chaves de descriptografia. Somente agregadores atestados com sucesso podem descriptografar as contribuições enviadas por dispositivos clientes e realizar a agregação entre dispositivos.
Atualizador de modelos 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 detalham a arquitetura de alto nível:

Diagrama que mostra os componentes do servidor de computação federada do Sandbox de privacidade para Android.

Serviço de gerenciamento de tarefas

Diagrama que mostra a topologia do serviço de gerenciamento de tarefas do Sandbox de privacidade para Android.

O serviço de gerenciamento de tarefas 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. Ele gerencia o fluxo de treinamento, por exemplo, criando novas rodadas e iterações de treinamento.

Banco de dados de tarefas

Um banco de dados compatível com ANSI SQL que armazena as informações de tarefa, iteração e atribuição. Nesta implementação, o Google Cloud Spanner é usado como o serviço de banco de dados subjacente.

Serviço de atribuição de tarefas

Diagrama que mostra a topologia do serviço de atribuição de tarefas do Sandbox de privacidade para Android.

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 do FC e distribui tarefas de treinamento quando aplicável.

O banco de dados de tarefas aqui é a mesma instância do banco de dados no serviço de gerenciamento de tarefas.

Serviço de agregação

Diagrama que mostra a topologia do serviço de agregação do Sandbox de privacidade para Android.
Agregador e atualizador de modelos

O agregador e o atualizador de modelos são semelhantes. 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 (criptografados) do dispositivo do cliente.
  • Um armazenamento de gradiente agregado para gradientes agregados, cortados e com ruído.
  • Um modelo e um armazenamento de planos para os planos de treinamento, modelos e pesos.
Coletor

O coletor é um serviço em segundo plano que conta periodicamente as transmissões do dispositivo cliente durante uma rodada de treinamento. Ele notifica o agregador para iniciar a agregação quando um número suficiente de envios estiver disponível.

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 acessar informações sensíveis são hospedados no Confidential Space.

Todos os dados sensíveis são criptografados com chaves de criptografia gerenciadas por serviços de chaves de várias partes. Somente o código de código aberto criado pelo ODP e atestado com sucesso em versões legítimas do Confidential Space com computação confidencial ativada pode acessar as chaves de descriptografia.

Em uma unidade de serviço, o recurso de computação tem esta aparência:

Diagrama que mostra a topologia da unidade de serviço do Sandbox de privacidade para Android.

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 conhecer 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. Na prática, 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 FC é processada pela recuperação de desastres usando armazenamento replicado. Se você tiver interesse em recuperação de desastres, ative a replicação de dados entre regiões. Isso garante que, se ocorrer 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 servidor FC usa o Google Cloud Spanner como 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 da sua empresa antes de selecionar uma configuração de várias regiões.

Não há dados de usuários ou derivados deles, brutos ou criptografados, armazenados em nenhuma instância do Spanner. Use qualquer um dos recursos de recuperação de desastres disponíveis 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 substituir um ao outro. Por isso, o serviço pode ser retomado da última rodada de treinamento em caso de desastre.

Google Cloud Storage

A implementação padrão do servidor FC usa o Google Cloud Storage para armazenar dados de blob, como modelos, planos de treinamento e contribuições criptografadas de dispositivos.

Há três instâncias do GCS no design:

  • Contribuições do dispositivo: contribuições criptografadas enviadas por upload de dispositivos.
  • Modelos: planos de treinamento, modelos e respectivos pesos.
  • Gradientes agregados: 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 particulares 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 OU
  • Dados não particulares derivados de indicadores do usuário, mas após a aplicação da privacidade diferencial, como ponderações de modelo.

Avalie as compensações entre consistência e disponibilidade e selecione os recursos de disponibilidade e durabilidade de dados do GCS adequados. Você precisa especificar 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. O ODP não fornece uma amostra porque essas configurações dependem muito das necessidades de negócios. O design atual considera as possíveis necessidades dos desenvolvedores para essas replicações e backups. Por isso, ele é compatível com produtos e serviços de backup e replicação fornecidos por terceiros.