Descripción general
TFF es un marco potente y extensible para realizar investigaciones de aprendizaje federado (FL) mediante la simulación de cálculos federados en conjuntos de datos proxy realistas. Esta página describe los principales conceptos y componentes que son relevantes para las simulaciones de investigación, así como una guía detallada para realizar diferentes tipos de investigación en TFF.
La estructura típica del código de investigación en TFF
Una simulación FL de investigación implementada en TFF generalmente consta de tres tipos principales de lógica.
Piezas individuales de código de TensorFlow, generalmente
tf.function
s, que encapsulan la lógica que se ejecuta en una sola ubicación (por ejemplo, en clientes o en un servidor). Este código generalmente se escribe y prueba sin ninguna referenciatff.*
y se puede reutilizar fuera de TFF. Por ejemplo, el ciclo de capacitación del cliente en Promedio federado se implementa en este nivel.Lógica de orquestación federada de TensorFlow, que une las
tf.function
s individuales de 1. envolviéndolas comotff.tf_computation
s y luego organizándolas usando abstracciones comotff.federated_broadcast
ytff.federated_mean
dentro detff.federated_computation
. Consulte, por ejemplo, esta orquestación para el promedio federado .Un script de controlador externo que simula la lógica de control de un sistema FL de producción, seleccionando clientes simulados de un conjunto de datos y luego ejecutando cálculos federados definidos en 2. en esos clientes. Por ejemplo, un controlador de experimento EMNIST federado .
Conjuntos de datos de aprendizaje federado
TensorFlow aloja múltiples conjuntos de datos que son representativos de las características de los problemas del mundo real que podrían resolverse con el aprendizaje federado.
Los conjuntos de datos incluyen:
Desbordamiento de pila . Un conjunto de datos de texto realista para modelado de lenguaje o tareas de aprendizaje supervisado, con 342 477 usuarios únicos con 135 818 730 ejemplos (oraciones) en el conjunto de entrenamiento.
EMNISTA Federado . Un preprocesamiento federado del conjunto de datos de caracteres y dígitos de EMNIST, donde cada cliente corresponde a un escritor diferente. El conjunto completo de trenes contiene 3400 usuarios con 671 585 ejemplos de 62 etiquetas.
Shakespeare Un conjunto de datos de texto de nivel de caracteres más pequeño basado en las obras completas de William Shakespeare. El conjunto de datos consta de 715 usuarios (personajes de obras de Shakespeare), donde cada ejemplo corresponde a un conjunto contiguo de líneas habladas por el personaje en una obra dada.
CIFAR-100 . Una partición federada del conjunto de datos CIFAR-100 en 500 clientes de entrenamiento y 100 clientes de prueba. Cada cliente tiene 100 ejemplos únicos. La partición se realiza de forma que se crea una heterogeneidad más realista entre los clientes. Para obtener más detalles, consulte la API .
Conjunto de datos de Google Landmark v2 El conjunto de datos consta de fotos de varios puntos de referencia mundiales, con imágenes agrupadas por fotógrafo para lograr una partición federada de los datos. Hay dos tipos de conjuntos de datos disponibles: un conjunto de datos más pequeño con 233 clientes y 23080 imágenes, y un conjunto de datos más grande con 1262 clientes y 164172 imágenes.
CelebA Un conjunto de datos de ejemplos (imagen y atributos faciales) de rostros de celebridades. El conjunto de datos federado tiene los ejemplos de cada celebridad agrupados para formar un cliente. Hay 9343 clientes, cada uno con al menos 5 ejemplos. El conjunto de datos se puede dividir en grupos de entrenamiento y prueba, ya sea por clientes o por ejemplos.
iNaturalist Un conjunto de datos consta de fotos de varias especies. El conjunto de datos contiene 120.300 imágenes para 1.203 especies. Hay siete versiones del conjunto de datos disponibles. Uno de ellos está agrupado por el fotógrafo y consta de 9257 clientes. El resto de los conjuntos de datos se agrupan por la ubicación geográfica donde se tomó la foto. Estos seis sabores del conjunto de datos consisten en 11 - 3606 clientes.
Simulaciones de alto rendimiento
Si bien el tiempo de reloj de pared de una simulación de FL no es una métrica relevante para evaluar algoritmos (ya que el hardware de simulación no es representativo de los entornos reales de implementación de FL), poder ejecutar simulaciones de FL rápidamente es fundamental para la productividad de la investigación. Por lo tanto, TFF ha invertido mucho en proporcionar tiempos de ejecución de alto rendimiento para una o varias máquinas. La documentación está en desarrollo, pero por ahora consulte las instrucciones sobre simulaciones TFF con aceleradores y las instrucciones sobre cómo configurar simulaciones con TFF en GCP . El tiempo de ejecución TFF de alto rendimiento está habilitado de forma predeterminada.
TFF para diferentes áreas de investigación
Algoritmos de optimización federados
La investigación sobre algoritmos de optimización federados se puede realizar de diferentes maneras en TFF, según el nivel de personalización deseado.
Aquí se proporciona una implementación independiente mínima del algoritmo de promedio federado . El código incluye funciones TF para cómputo local, cómputos TFF para orquestación y un script de controlador en el conjunto de datos EMNIST como ejemplo. Estos archivos se pueden adaptar fácilmente para aplicaciones personalizadas y cambios algorítmicos siguiendo las instrucciones detalladas en el LÉAME .
Puede encontrar una implementación más general del promedio federado aquí . Esta implementación permite técnicas de optimización más sofisticadas, incluido el uso de diferentes optimizadores tanto en el servidor como en el cliente. Aquí se pueden encontrar otros algoritmos de aprendizaje federado, incluido el agrupamiento de k-means federado.
Compresión de actualización de modelo
La compresión con pérdida de las actualizaciones del modelo puede reducir los costos de comunicación, lo que a su vez puede reducir el tiempo total de capacitación.
Para reproducir un artículo reciente, consulte este proyecto de investigación . Para implementar un algoritmo de compresión personalizado, consulte la comparación_métodos en el proyecto para obtener líneas base como ejemplo y el tutorial TFF Aggregators si aún no está familiarizado.
Privacidad diferencial
TFF es interoperable con la biblioteca de privacidad de TensorFlow para permitir la investigación de nuevos algoritmos para el entrenamiento federado de modelos con privacidad diferencial. Para ver un ejemplo de entrenamiento con DP utilizando el algoritmo básico DP-FedAvg y las extensiones , consulte este controlador de experimento .
Si desea implementar un algoritmo de DP personalizado y aplicarlo a las actualizaciones agregadas del promedio federado, puede implementar un nuevo algoritmo de media de DP como una subclase de tensorflow_privacy.DPQuery
y crear una tff.aggregators.DifferentiallyPrivateFactory
con una instancia de su consulta. Puede encontrar un ejemplo de implementación del algoritmo DP-FTRL aquí
Las GAN federadas (descritas a continuación ) son otro ejemplo de un proyecto TFF que implementa privacidad diferencial a nivel de usuario (p. ej., aquí en el código ).
Robustez y ataques
TFF también se puede utilizar para simular los ataques dirigidos a los sistemas de aprendizaje federado y las defensas diferenciales basadas en la privacidad consideradas en Can You Really Backdoor Federated Learning? . Esto se hace mediante la creación de un proceso iterativo con clientes potencialmente maliciosos (consulte build_federated_averaging_process_attacked
). El directorio target_attack contiene más detalles.
- Se pueden implementar nuevos algoritmos de ataque escribiendo una función de actualización de cliente que es una función de Tensorflow; consulte
ClientProjectBoost
para ver un ejemplo. - Se pueden implementar nuevas defensas al personalizar 'tff.utils.StatefulAggregateFn' , que agrega las salidas del cliente para obtener una actualización global.
Para ver un script de ejemplo para la simulación, consulte emnist_with_targeted_attack.py
.
Redes adversarias generativas
Las GAN crean un patrón de orquestación federado interesante que se ve un poco diferente al promedio federado estándar. Implican dos redes distintas (el generador y el discriminador) cada una entrenada con su propio paso de optimización.
TFF se puede utilizar para la investigación sobre la formación federada de GAN. Por ejemplo, el algoritmo DP-FedAvg-GAN presentado en un trabajo reciente se implementa en TFF . Este trabajo demuestra la efectividad de combinar aprendizaje federado, modelos generativos y privacidad diferencial .
Personalización
La personalización en el entorno del aprendizaje federado es un área de investigación activa. El objetivo de la personalización es proporcionar diferentes modelos de inferencia a diferentes usuarios. Hay enfoques potencialmente diferentes para este problema.
Un enfoque es dejar que cada cliente ajuste un único modelo global (entrenado mediante el aprendizaje federado) con sus datos locales. Este enfoque tiene conexiones con el metaaprendizaje; consulte, por ejemplo, este documento . En emnist_p13n_main.py
se proporciona un ejemplo de este enfoque. Para explorar y comparar diferentes estrategias de personalización, puede:
Defina una estrategia de personalización implementando una
tf.function
parte de un modelo inicial, entrena y evalúa un modelo personalizado utilizando los conjuntos de datos locales de cada cliente. Un ejemplo lo dabuild_personalize_fn
.Defina un
OrderedDict
que asigne nombres de estrategia a las estrategias de personalización correspondientes y utilícelo como el argumentopersonalize_fn_dict
entff.learning.build_personalization_eval_computation
.
Otro enfoque es evitar entrenar un modelo completamente global entrenando parte de un modelo completamente local. En esta publicación de blog se describe una instancia de este enfoque. Este enfoque también está relacionado con el metaaprendizaje, consulte este artículo . Para explorar el aprendizaje federado parcialmente local, puede:
Consulte el tutorial para ver un ejemplo de código completo que aplica la reconstrucción federada y los ejercicios de seguimiento .
Cree un proceso de capacitación parcialmente local mediante
tff.learning.reconstruction.build_training_process
y modifiquedataset_split_fn
para personalizar el comportamiento del proceso.