Usando TFF para Pesquisa de Aprendizagem Federada

Visão geral

O TFF é uma estrutura extensível e poderosa para conduzir pesquisas em aprendizado federado (FL) por meio da simulação de computações federadas em conjuntos de dados proxy realistas. Esta página descreve os principais conceitos e componentes relevantes para simulações de pesquisa, além de fornecer orientações detalhadas para a realização de diferentes tipos de pesquisa no TFF.

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

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

  1. Trechos individuais de código TensorFlow, tipicamente tf.function , que encapsulam a lógica executada em um único local (por exemplo, em clientes ou em um servidor). Esse código geralmente é escrito e testado sem nenhuma tff.* ` e pode ser reutilizado fora do TensorFlow. Por exemplo, o loop de treinamento do cliente na Média Federada é implementado nesse nível.

  2. A lógica de orquestração do TensorFlow Federated agrupa as funções individuais tf.function do item 1, encapsulando-as como tff.tensorflow.computation e, em seguida, orquestrando-as usando abstrações como federated_language.federated_broadcast e federated_language.federated_mean dentro de um federated_language.federated_computation . Veja, por exemplo, esta orquestração para Média Federada .

  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 aprendizagem federada

O TensorFlow Federated 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:

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

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

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

  • CIFAR-100 . Uma partição federada do conjunto de dados CIFAR-100 em 500 clientes de treinamento e 100 clientes de teste. Cada cliente possui 100 exemplos únicos. A partição é feita de forma a criar uma heterogeneidade mais realista entre os clientes. Para mais detalhes, consulte a API .

  • O conjunto de dados Google Landmark v2 consiste em fotos de diversos pontos turísticos mundiais, agrupadas por fotógrafo para permitir uma divisão federada dos dados. Estão disponíveis duas versões: uma menor, com 233 clientes e 23.080 imagens, e outra 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 possui 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 treino e teste, seja por clientes ou por exemplos.

  • O conjunto de dados iNaturalist consiste em fotos de diversas espécies. Ele contém 120.300 imagens de 1.203 espécies. Existem sete versões do conjunto de dados. Uma delas é agrupada por fotógrafo e inclui 9.257 usuários. As demais versões são agrupadas pela localização geográfica onde a foto foi tirada. Essas seis versões do conjunto de dados incluem de 11 a 3.606 usuários.

Simulações de alto desempenho

Embora o tempo de execução de uma simulação de lógica fuzzy 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 lógica fuzzy), a capacidade de executar simulações de lógica fuzzy rapidamente é crucial para a produtividade da pesquisa. Portanto, a TFF investiu fortemente no fornecimento de tempos de execução de alto desempenho para máquinas únicas e múltiplas. A documentação está em desenvolvimento, mas, por enquanto, consulte as instruções sobre simulações da TFF com aceleradores e as instruções sobre como configurar simulações com a TFF no GCP . O tempo de execução de alto desempenho da TFF está habilitado por padrão.

TFF para diferentes áreas de pesquisa

Algoritmos de otimização federada

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

Uma implementação mínima e independente do algoritmo de Média Federada é fornecida aqui . O código inclui funções TF para computação local, cálculos TFF para orquestração e um script de execução no conjunto de dados EMNIST como exemplo. Esses arquivos podem ser facilmente adaptados para aplicações personalizadas e alterações algorítmicas seguindo as instruções detalhadas no arquivo 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 o agrupamento k-means federado, podem ser encontrados aqui .

Compressão de atualização do modelo

A compressão com perda de dados nas atualizações do modelo pode levar à redução dos custos de comunicação, o que, por sua vez, pode reduzir o tempo total de treinamento.

Para reproduzir um artigo recente, consulte este projeto de pesquisa . Para implementar um algoritmo de compressão personalizado, consulte comparison_methods no projeto para obter exemplos de métodos de referência e o tutorial TFF Aggregators, caso ainda não esteja 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 um exemplo de treinamento com privacidade diferencial usando o algoritmo básico DP-FedAvg e extensões , consulte este driver de experimento .

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

As GANs federadas (descritas abaixo ) são outro exemplo de um projeto da 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 ataques direcionados a sistemas de aprendizado federado e defesas baseadas em privacidade diferencial, consideradas em "É possível realmente inserir backdoors no aprendizado federado?" . Isso é feito construindo um processo iterativo com clientes potencialmente maliciosos (consulte build_federated_averaging_process_attacked ). O diretório targeted_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; veja ClientProjectBoost para um exemplo.
  • Novas defesas podem ser implementadas personalizando a função 'tff.utils.StatefulAggregateFn' , que agrega as saídas do cliente para obter uma atualização global.

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

Redes Adversárias Generativas

As GANs (Redes Adversárias Generativas) oferecem um padrão de orquestração federada interessante, um pouco diferente da Média Federada padrão. Elas 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 pesquisa sobre treinamento federado de GANs. Por exemplo, o algoritmo DP-FedAvg-GAN apresentado em um trabalho recente foi 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 da aprendizagem federada é uma área de pesquisa ativa. O objetivo da personalização é fornecer diferentes modelos de inferência para diferentes usuários. Existem potencialmente diferentes abordagens para esse problema.

Uma abordagem consiste em permitir que cada cliente ajuste um único modelo global (treinado usando aprendizado federado) com seus dados locais. Essa abordagem tem conexões com meta-aprendizado, 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 uma 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 é fornecido pela build_personalize_fn .

  • Defina um OrderedDict que mapeie os nomes das 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_computation .

Outra abordagem consiste em evitar o treinamento de um modelo totalmente global, treinando parte do modelo de forma inteiramente local. Uma implementação dessa abordagem é descrita nesta postagem do blog . Essa abordagem também está relacionada à meta-aprendizagem; veja este artigo .