O servidor de computação federada (FC, na sigla em inglês) 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, em seguida, detalha cada componente. 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 FC e o servidor 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 é treinado 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 servidor FC aguarda 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 da NIST, arquitetura de procedimento de certificação remota (RATS, na sigla em inglês), para os coordenadores. Após o atestado, 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 de segredos de Shamir.
- O agregador faz a agregação entre dispositivos, clipes e ruídos de acordo com os mecanismos de privacidade diferencial (DP) 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 existentes, 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 pelo ODP. Ele precisa ser atestado para os 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
O serviço de gerenciamento de tarefas contém dois subcomponentes: o serviço da Web de gerenciamento de tarefas e o serviço do agendador 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 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 subjacente.
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 FC e distribui tarefas de treinamento quando aplicável.
O banco de dados de tarefas aqui é a mesma instância do 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 (criptografados) pelo dispositivo do cliente.
- Um armazenamento de gradiente agregado para gradientes agregados, cortados e com ruído.
- Um armazenamento de modelo e plano 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 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 escrito por ODP com atestado de sucesso e executado em versões legítimas do Espaço confidencial com computação confidencial podem acessar as chaves de descriptografia.
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 espaço confidencial ou no cluster do GKE usando mecanismos de escalonamento padrão. 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 de agregador
- Instâncias do atualizador de modelos
Resiliência
A resiliência de um FC Server é gerenciada pela recuperação de desastres usando o armazenamento replicado. Se você tiver interesse na 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 interrompe um data center), o serviço será retomado a partir do último 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 da sua empresa antes de selecionar uma configuração de 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 FC Server usa o Google Cloud Storage para armazenar dados 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 de dispositivos criptografadas enviadas de dispositivos.
- Modelos: planos de treinamento, modelos e 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 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 privados derivados de indicadores do usuário, mas após a aplicação da privacidade diferencial, como pesos do modelo.
Avalie as vantagens e desvantagens 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 um exemplo 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 serviços e produtos de replicação e backup fornecidos por terceiros.