Visão geral
TFF é uma estrutura extensível e poderosa para conduzir pesquisas de aprendizagem federada (FL), simulando cálculos federados em conjuntos de dados proxy realistas. Esta página descreve os principais conceitos e componentes relevantes para simulações de pesquisa, bem como orientações detalhadas para a condução de diferentes tipos de pesquisa em TFF.
A estrutura típica do código de pesquisa no TFF
Uma simulação de pesquisa FL implementada em TFF normalmente consiste em três tipos principais de lógica.
Partes individuais do código do TensorFlow, normalmente
tf.function
s, que encapsulam a lógica executada em um único local (por exemplo, em clientes ou em um servidor). Este código normalmente é escrito e testado sem nenhumatff.*
e pode ser reutilizado fora do TFF. Por exemplo, o ciclo de treinamento do cliente no Federated Averaging é implementado neste nível.Lógica de orquestração federada do TensorFlow, que une os
tf.function
s individuais de 1. envolvendo-os comotff.tensorflow.computation
s e, em seguida, orquestrando-os usando abstrações comotff.federated_broadcast
etff.federated_mean
dentro de umtff.federated_computation
. Veja, por exemplo, esta orquestração para Federated Averaging .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 Federated EMNIST .
Conjuntos de dados de aprendizagem federados
O TensorFlow federado hospeda vários conjuntos de dados que representam as características de problemas do mundo real que poderiam ser resolvidos com o aprendizado federado.
Os conjuntos de dados incluem:
StackOverflow . Um conjunto de dados de texto realista para modelagem de linguagem ou tarefas de aprendizagem supervisionada, 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 menor em nível de caractere 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 faladas 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 exclusivos. O particionamento é feito de forma a criar uma heterogeneidade mais realista entre os clientes. Para mais detalhes, consulte a API .
Conjunto de dados Google Landmark v2 O conjunto de dados consiste em fotos de vários marcos 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 agrupa os exemplos de cada celebridade para formar um cliente. Existem 9.343 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 versões do conjunto de dados estão disponíveis. Um deles é agrupado pelo fotógrafo e é composto por 9.257 clientes. O restante dos conjuntos de dados são agrupados pela localização geográfica onde a foto foi tirada. Essas seis variações 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. Conseqüentemente, a TFF investiu pesadamente no fornecimento de tempos de execução de alto desempenho para uma ou várias máquinas. A documentação está em desenvolvimento, mas por enquanto veja as 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 do 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 federados 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 . Esta 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 aprendizagem federados, incluindo clustering k-means federado, podem ser encontrados aqui .
Compactação de atualização de modelo
A compactação com perdas de atualizações de modelo pode levar à redução dos custos de comunicação, o que, por sua vez, pode levar à redução do tempo geral de treinamento.
Para reproduzir um artigo recente, consulte este projeto de pesquisa . Para implementar um algoritmo de compactação personalizado, consulte compare_methods no projeto para obter linhas de base como exemplo e o tutorial de agregadores TFF, se ainda não estiver familiarizado.
Privacidade diferencial
O TFF é interoperável com a biblioteca TensorFlow Privacy para permitir pesquisas em novos algoritmos para treinamento federado de modelos com privacidade diferencial. Para obter um exemplo de treinamento com DP usando o algoritmo DP-FedAvg básico e extensões , consulte este driver de experimento .
Se você quiser implementar um algoritmo DP personalizado e aplicá-lo às atualizações agregadas da média federada, poderá 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 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 projeto TFF que implementa privacidade diferencial no nível do 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 aprendizagem federados e defesas diferenciais baseadas em privacidade considerados em Você pode realmente fazer backdoor no 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 Tensorflow, consulte
ClientProjectBoost
para obter um exemplo. - Novas defesas podem ser implementadas personalizando 'tff.utils.StatefulAggregateFn' que agrega saídas do cliente para obter uma atualização global.
Para obter um exemplo de script para simulação, consulte emnist_with_targeted_attack.py
.
Redes Adversariais Gerativas
As GANs criam um padrão de orquestração federada interessante que parece um pouco diferente da média federada padrão. 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 trabalhos recentes é implementado em TFF . Este trabalho demonstra a eficácia da combinação de aprendizagem federada, modelos generativos e privacidade diferencial .
Personalização
A personalização no cenário da aprendizagem federada é 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 aprendizagem federada) com seus dados locais. Esta abordagem tem conexões com a meta-aprendizagem, veja, por exemplo, este artigo . Um exemplo desta abordagem é dado 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 é dado porbuild_personalize_fn
.Defina um
OrderedDict
que mapeie nomes de estratégias para as estratégias de personalização correspondentes e use-o como o argumentopersonalize_fn_dict
emtff.learning.build_personalization_eval_computation
.
Outra abordagem é evitar treinar um modelo totalmente global treinando parte de um modelo inteiramente localmente. Uma instanciação dessa abordagem é descrita nesta postagem do blog . Essa abordagem também está ligada ao meta-aprendizado, veja este artigo . Para explorar a aprendizagem federada parcialmente local, você pode:
Confira o tutorial para obter um exemplo de código completo aplicando a Reconstrução Federada e exercícios de acompanhamento .
Crie um processo de treinamento parcialmente local usando
tff.learning.reconstruction.build_training_process
, modificandodataset_split_fn
para personalizar o comportamento do processo.