Usando TFF para Pesquisa de Aprendizagem Federada

Visão geral

O TFF é uma estrutura extensível e poderosa para conduzir pesquisas de aprendizado federado (FL) simulando cálculos federados em conjuntos de dados de proxy realistas. Esta página descreve os principais conceitos e componentes relevantes para simulações de pesquisa, bem como orientações detalhadas para a realização de diferentes tipos de pesquisa em TFF.

A estrutura típica de código de pesquisa em TFF

Uma simulação de FL de pesquisa implementada no TFF normalmente consiste em três tipos principais de lógica.

  1. Partes individuais de código do TensorFlow, normalmente tf.function s, que encapsulam a lógica que é executada em um único local (por exemplo, em clientes ou em um servidor). Esse código geralmente é escrito e testado sem nenhuma referência tff.* e pode ser reutilizado fora do TFF. Por exemplo, o loop de treinamento do cliente no Federated Averaging é implementado nesse nível.

  2. Lógica de orquestração federada do TensorFlow, que une os tf.function individuais de 1. envolvendo-os como tff.tf_computation se orquestrando-os usando abstrações como tff.federated_broadcast e tff.federated_mean dentro de um tff.federated_computation . Veja, por exemplo, esta orquestração para Federated Averaging .

  3. Um script de driver externo que simula a lógica de controle de um sistema FL de produção, selecionando clientes simulados de um conjunto de dados e, em seguida, executando cálculos federados definidos em 2. nesses clientes. Por exemplo, um driver de experimento EMNIST federado .

Conjuntos de dados de aprendizado federado

O TensorFlow federado hospeda vários conjuntos de dados que são representativos das características de problemas do mundo real que podem ser resolvidos com aprendizado federado.

Os conjuntos de dados incluem:

  • Stack Overflow . Um conjunto de dados de texto realista para modelagem de linguagem ou tarefas de aprendizado supervisionado, com 342.477 usuários únicos com 135.818.730 exemplos (frases) no conjunto de treinamento.

  • EMNIST Federado . Um pré-processamento federado do conjunto de dados de caracteres e dígitos EMNIST, onde cada cliente corresponde a um gravador diferente. O conjunto completo de trens contém 3.400 usuários com 671.585 exemplos de 62 rótulos.

  • Shakespeare . Um conjunto de dados de texto em nível de caractere menor baseado nas obras completas de William Shakespeare. O conjunto de dados é composto por 715 usuários (personagens de peças de Shakespeare), onde cada exemplo corresponde a um conjunto contíguo de falas ditas pelo personagem em uma determinada peça.

  • CIFAR-100 . Um particionamento federado do conjunto de dados CIFAR-100 em 500 clientes de treinamento e 100 clientes de teste. Cada cliente tem 100 exemplos únicos. O particionamento é feito de forma a criar uma heterogeneidade mais realista entre os clientes. Para obter mais detalhes, consulte a API .

  • Conjunto de dados do Google Landmark v2 O conjunto de dados consiste em fotos de vários pontos de referência mundiais, com imagens agrupadas por fotógrafo para obter um particionamento federado dos dados. Dois tipos de conjunto de dados estão disponíveis: um conjunto de dados menor com 233 clientes e 23.080 imagens e um conjunto de dados maior com 1.262 clientes e 164.172 imagens.

  • CelebA Um conjunto de dados de exemplos (imagem e atributos faciais) de rostos de celebridades. O conjunto de dados federado tem os exemplos de cada celebridade agrupados para formar um cliente. Existem 9343 clientes, cada um com pelo menos 5 exemplos. O conjunto de dados pode ser dividido em grupos de treinamento e teste por clientes ou por exemplos.

  • iNaturalist Um conjunto de dados consiste em fotos de várias espécies. O conjunto de dados contém 120.300 imagens para 1.203 espécies. Sete variações do conjunto de dados estão disponíveis. Um deles é agrupado pelo fotógrafo e é composto por 9257 clientes. O restante dos conjuntos de dados é agrupado pela localização geográfica onde a foto foi tirada. Esses seis tipos do conjunto de dados consistem em 11 a 3.606 clientes.

Simulações de alto desempenho

Embora o tempo de uma simulação de FL não seja uma métrica relevante para avaliar algoritmos (já que o hardware de simulação não é representativo de ambientes reais de implantação de FL), ser capaz de executar simulações de FL rapidamente é fundamental para a produtividade da pesquisa. Assim, a TFF investiu pesadamente no fornecimento de tempos de execução de máquina única e multi-máquina de alto desempenho. A documentação está em desenvolvimento, mas por enquanto veja o tutorial Simulações de alto desempenho com Kubernetes , instruções sobre simulações TFF com aceleradores e instruções sobre como configurar simulações com TFF no GCP . O tempo de execução TFF de alto desempenho é habilitado por padrão.

TFF para diferentes áreas de pesquisa

Algoritmos de otimização federados

A pesquisa sobre algoritmos de otimização federada pode ser feita de diferentes maneiras no TFF, dependendo do nível de customização desejado.

Uma implementação autônoma mínima do algoritmo Federated Averaging é fornecida aqui . O código inclui funções TF para computação local, cálculos TFF para orquestração e um script de driver no conjunto de dados EMNIST como exemplo. Esses arquivos podem ser facilmente adaptados para aplicações personalizadas e alterações algorítmicas seguindo instruções detalhadas no README .

Uma implementação mais geral da Média Federada pode ser encontrada aqui . Essa implementação permite técnicas de otimização mais sofisticadas, incluindo o uso de diferentes otimizadores tanto no servidor quanto no cliente. Outros algoritmos de aprendizado federado, incluindo agrupamento federado de k-means, podem ser encontrados aqui .

Compressão de atualização do modelo

A compactação com perdas de atualizações de modelo pode levar a custos de comunicação reduzidos, o que, por sua vez, pode levar à redução do tempo geral de treinamento.

Para reproduzir um artigo recente, veja este projeto de pesquisa . Para implementar um algoritmo de compactação personalizado, consulte métodos de comparação no projeto para obter linhas de base como exemplo e o tutorial de agregadores de TFF , se ainda não estiver familiarizado.

Privacidade diferencial

O TFF é interoperável com a biblioteca TensorFlow Privacy para permitir a pesquisa de novos algoritmos para treinamento federado de modelos com privacidade diferencial. Para obter um exemplo de treinamento com DP usando o algoritmo e as extensões básicos do DP-FedAvg, consulte este driver de experimento .

Se você deseja implementar um algoritmo de DP personalizado e aplicá-lo às atualizações agregadas de média federada, você pode implementar um novo algoritmo de média de DP como uma subclasse de tensorflow_privacy.DPQuery e criar um tff.aggregators.DifferentiallyPrivateFactory com uma instância de sua consulta. Um exemplo de implementação do algoritmo DP-FTRL pode ser encontrado aqui

GANs federados (descritos abaixo ) são outro exemplo de um projeto TFF que implementa privacidade diferencial em nível de usuário (por exemplo, aqui no código ).

Robustez e ataques

O TFF também pode ser usado para simular os ataques direcionados a sistemas de aprendizado federado e defesas diferenciadas baseadas em privacidade consideradas em Can You Really Back door Federated Learning? . Isso é feito construindo um processo iterativo com clientes potencialmente maliciosos (consulte build_federated_averaging_process_attacked ). O diretório target_attack contém mais detalhes.

  • Novos algoritmos de ataque podem ser implementados escrevendo uma função de atualização do cliente que é uma função do Tensorflow, consulte ClientProjectBoost para obter um exemplo.
  • Novas defesas podem ser implementadas personalizando 'tff.utils.StatefulAggregateFn' que agrega as saídas do cliente para obter uma atualização global.

Para um script de exemplo para simulação, consulte emnist_with_targeted_attack.py .

Redes Adversárias Geradoras

As GANs criam um padrão de orquestração federada interessante que parece um pouco diferente da média federada padrão. Eles envolvem duas redes distintas (o gerador e o discriminador) cada uma treinada com sua própria etapa de otimização.

O TFF pode ser usado para pesquisas sobre treinamento federado de GANs. Por exemplo, o algoritmo DP-FedAvg-GAN apresentado em trabalho recente é implementado em TFF . Este trabalho demonstra a eficácia da combinação de aprendizado federado, modelos generativos e privacidade diferencial .

Personalização

A personalização no contexto do federated learning é uma área de pesquisa ativa. O objetivo da personalização é fornecer diferentes modelos de inferência para diferentes usuários. Existem abordagens potencialmente diferentes para este problema.

Uma abordagem é permitir que cada cliente ajuste um único modelo global (treinado usando aprendizado federado) com seus dados locais. Esta abordagem tem conexões com meta-aprendizagem, veja, por exemplo, este artigo . Um exemplo dessa abordagem é fornecido em emnist_p13n_main.py . Para explorar e comparar diferentes estratégias de personalização, você pode:

  • Defina uma estratégia de personalização implementando um tf.function que parte de um modelo inicial, treina e avalia um modelo personalizado usando os conjuntos de dados locais de cada cliente. Um exemplo é dado por build_personalize_fn .

  • Defina um OrderedDict que mapeie nomes de estratégias para as estratégias de personalização correspondentes e use-o como o argumento personalize_fn_dict em tff.learning.build_personalization_eval .

Outra abordagem é evitar treinar um modelo totalmente global treinando parte de um modelo totalmente local. Uma instanciação dessa abordagem é descrita nesta postagem do blog . Essa abordagem também está ligada ao meta-aprendizagem, veja este artigo . Para explorar o aprendizado federado parcialmente local, você pode: