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 conduzir diferentes tipos de pesquisa no TFF.
A estrutura típica do código de pesquisa em TFF
Uma simulação FL de pesquisa 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). Esse código é normalmente escrito e testado sem nenhuma referênciatff.*
e pode ser reutilizado fora do TFF. Por exemplo, o loop de treinamento do cliente no Federated Averaging é implementado neste nível.Lógica de orquestração federada do TensorFlow, que une as
tf.function
s individuais de 1. agrupando-as comotff.tf_computation
s e, em seguida, orquestrando-as usando abstrações comotff.federated_broadcast
etff.federated_mean
dentro de umatff.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 Federado EMNIST .
Conjuntos de dados de aprendizagem federados
O TensorFlow hospeda vários conjuntos de dados representativos das características de problemas do mundo real que podem 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 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 de trens completo 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 com base 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 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 marcos mundiais, com imagens agrupadas por fotógrafo para obter um particionamento federado dos dados. Dois tipos de conjuntos 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. Uma delas é agrupada pelo fotógrafo e é composta por 9257 clientes. O resto dos conjuntos de dados são agrupados 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 decorrido de uma simulação 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 FL rapidamente é fundamental para a produtividade da pesquisa. Portanto, a TFF investiu pesadamente no fornecimento de tempos de execução de uma ou várias máquinas de alto desempenho. 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 TFF de alto desempenho é ativado 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 independente 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 aplicativos personalizados e alterações algorítmicas seguindo instruções detalhadas no README .
Uma implementação mais geral do Federated Averaging pode ser encontrada aqui . Essa implementação permite técnicas de otimização mais sofisticadas, incluindo o uso de diferentes otimizadores no servidor e no cliente. Outros algoritmos de aprendizado federado, 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 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 o comparation_methods no projeto para obter linhas de base como exemplo 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 em novos algoritmos para treinamento federado de modelos com privacidade diferencial. Para obter um exemplo de treinamento com DP usando o algoritmo básico DP-FedAvg e extensões , consulte este driver de experimento .
Se quiser 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 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 diferenciais baseadas em privacidade consideradas em Você pode realmente fazer backdoor do aprendizado federado? . Isso é feito construindo um processo iterativo com clientes potencialmente mal-intencionados (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, veja
ClientProjectBoost
para 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 obter um script de exemplo para simulação, consulte emnist_with_targeted_attack.py
.
Redes Adversárias Gerativas
As GANs criam um padrão de orquestração federado 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 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 esse 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 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 é fornecido porbuild_personalize_fn
.Defina um
OrderedDict
que mapeia os nomes das 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 totalmente localmente. Uma instanciação dessa abordagem é descrita nesta postagem do blog . Essa abordagem também está conectada ao meta aprendizado, veja este artigo . Para explorar o aprendizado federado parcialmente local, você pode:
Confira o tutorial para obter um exemplo de código completo aplicando 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 customizar o comportamento do processo.