Descripción general
TFF es un marco extensible y potente para realizar investigación 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 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 de investigación FL implementada en TFF generalmente consta de tres tipos principales de lógica.
Fragmentos individuales de código de TensorFlow, generalmente
tf.function, que encapsulan la lógica que se ejecuta en una única ubicación (p. ej., en clientes o en un servidor). Este código suele escribirse y probarse sin referencias atff.*y puede reutilizarse fuera de TFF. Por ejemplo, el bucle de entrenamiento del cliente en el Promedio Federado se implementa en este nivel.La lógica de orquestación federada de TensorFlow une las funciones
tf.functionindividuales desde el punto 1. Envolviéndolas como funcionestff.tensorflow.computationy orquestándolas mediante abstracciones comofederated_language.federated_broadcastyfederated_language.federated_meandentro defederated_language.federated_computation. Véase, 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 ejecutando los cálculos federados definidos en el punto 2 en dichos clientes. Por ejemplo, un controlador de experimento EMNIST federado .
Conjuntos de datos de aprendizaje federados
TensorFlow federado aloja múltiples conjuntos de datos que son representativos de las características de problemas del mundo real que podrían resolverse con el aprendizaje federado.
Los conjuntos de datos incluyen:
StackOverflow . Un conjunto de datos de texto realista para modelado de lenguaje o tareas de aprendizaje supervisado, con 342.477 usuarios únicos y 135.818.730 ejemplos (oraciones) en el conjunto de entrenamiento.
EMNIST federado . Preprocesamiento federado del conjunto de datos de caracteres y dígitos EMNIST, donde cada cliente corresponde a un escritor diferente. El conjunto de entrenamiento completo contiene 3400 usuarios con 671 585 ejemplos de 62 etiquetas.
Shakespeare . Un conjunto de datos de texto más pequeño, a nivel de caracteres, basado en la obra completa 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 pronunciadas por el personaje en una obra determinada.
CIFAR-100 . Partición federada del conjunto de datos CIFAR-100 entre 500 clientes de entrenamiento y 100 clientes de prueba. Cada cliente tiene 100 ejemplos únicos. La partición se realiza para crear una heterogeneidad más realista entre los clientes. Para más detalles, consulte la API .
Conjunto de datos de Google Landmark v2. Este conjunto de datos consta de fotos de diversos lugares emblemáticos del mundo, con imágenes agrupadas por fotógrafo para lograr una partición federada de los datos. Hay dos tipos de conjunto de datos disponibles: uno más pequeño con 233 clientes y 23 080 imágenes, y otro más grande con 1262 clientes y 164 172 imágenes.
CelebA: Un conjunto de datos con ejemplos (imagen y atributos faciales) de rostros de famosos. El conjunto de datos federado agrupa los ejemplos de cada famoso 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 de prueba, ya sea por clientes o por ejemplos.
iNaturalist es un conjunto de datos compuesto por fotos de diversas especies. Contiene 120.300 imágenes de 1.203 especies. Hay siete versiones disponibles. Una está agrupada por fotógrafo y cuenta con 9.257 clientes. El resto se agrupa por ubicación geográfica donde se tomó la foto. Estas seis versiones incluyen entre 11 y 3.606 clientes.
Simulaciones de alto rendimiento
Si bien el tiempo de reloj 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), la capacidad de ejecutar simulaciones de FL rápidamente es fundamental para la productividad de la investigación. Por lo tanto, TFF ha invertido mucho en proporcionar entornos 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 de TFF con aceleradores y las instrucciones sobre cómo configurar simulaciones con TFF en GCP . El entorno de ejecución de TFF de alto rendimiento está habilitado por defecto.
TFF para diferentes áreas de investigación
Algoritmos de optimización federados
La investigación sobre algoritmos de optimización federada se puede realizar de diferentes maneras en TFF, dependiendo del nivel de personalización deseado.
Aquí se proporciona una implementación mínima e independiente del algoritmo de Promedio Federado . El código incluye funciones TF para el cálculo local, cálculos TFF para la orquestación y, a modo de ejemplo, un script de controlador en el conjunto de datos EMNIST. Estos archivos se pueden adaptar fácilmente para aplicaciones personalizadas y cambios algorítmicos siguiendo las instrucciones detalladas del archivo README .
Puede encontrar una implementación más general del Promedio Federado aquí . Esta implementación permite técnicas de optimización más sofisticadas, incluyendo el uso de diferentes optimizadores tanto en el servidor como en el cliente. Puede encontrar otros algoritmos de aprendizaje federado, incluyendo la agrupación en clústeres k-medias federadas aquí .
Compresión de actualización de modelos
La compresión con pérdida de las actualizaciones del modelo puede generar menores costos de comunicación, lo que a su vez puede generar una reducción del tiempo general de capacitación.
Para reproducir un artículo reciente, consulte este proyecto de investigación . Para implementar un algoritmo de compresión personalizado, consulte comparison_methods en el proyecto para obtener ejemplos de líneas base, y el tutorial de agregadores TFF si aún no está familiarizado.
Privacidad diferencial
TFF es interoperable con la biblioteca de privacidad de TensorFlow para facilitar 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 sus extensiones , consulte este controlador de experimentos .
Si desea implementar un algoritmo DP personalizado y aplicarlo a las actualizaciones agregadas del promedio federado, puede implementar un nuevo algoritmo de media DP como subclase de tensorflow_privacy.DPQuery y crear un 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 (por ejemplo, aquí en el código ).
Robustez y ataques
TFF también puede usarse para simular ataques dirigidos a sistemas de aprendizaje federado y defensas diferenciales basadas en la privacidad, considerados en "¿Es realmente posible crear una puerta trasera en el aprendizaje federado? ". Esto se logra mediante la creación de un proceso iterativo con clientes potencialmente maliciosos (véase build_federated_averaging_process_attacked ). El directorio intended_attack contiene más detalles.
- Se pueden implementar nuevos algoritmos de ataque escribiendo una función de actualización de cliente que sea una función de Tensorflow; consulte
ClientProjectBoostpara ver un ejemplo. - Se pueden implementar nuevas defensas personalizando 'tff.utils.StatefulAggregateFn' , que agrega las salidas del cliente para obtener una actualización global.
Para ver un ejemplo de script para simulación, consulte emnist_with_targeted_attack.py .
Redes generativas antagónicas
Las GAN constituyen un interesante patrón de orquestación federada , ligeramente diferente del promedio federado estándar. Implican dos redes distintas (el generador y el discriminador), cada una entrenada con su propio paso de optimización.
TFF puede utilizarse para la investigación sobre el entrenamiento federado de GAN. Por ejemplo, el algoritmo DP-FedAvg-GAN presentado en un trabajo reciente se implementa en TFF . Este trabajo demuestra la eficacia de combinar el aprendizaje federado, los modelos generativos y la privacidad diferencial .
Personalización
La personalización en el contexto del aprendizaje federado es un área de investigación activa. El objetivo de la personalización es proporcionar diferentes modelos de inferencia a distintos usuarios. Existen diferentes enfoques para abordar este problema.
Un enfoque consiste en permitir que cada cliente ajuste un único modelo global (entrenado mediante aprendizaje federado) con sus datos locales. Este enfoque está relacionado con el metaaprendizaje; véase, por ejemplo, este artículo . Un ejemplo de este enfoque se encuentra en emnist_p13n_main.py . Para explorar y comparar diferentes estrategias de personalización, puede:
Defina una estrategia de personalización implementando una
tf.functionque, a partir de un modelo inicial, entrene y evalúe un modelo personalizado utilizando los conjuntos de datos locales de cada cliente. Un ejemplo esbuild_personalize_fn.Defina un
OrderedDictque asigne nombres de estrategias a las estrategias de personalización correspondientes y utilícelo como argumentopersonalize_fn_dictentff.learning.build_personalization_eval_computation.
Otro enfoque consiste en evitar el entrenamiento de un modelo completamente global entrenando parte de él completamente localmente. En esta entrada del blog se describe una instancia de este enfoque. Este enfoque también está relacionado con el metaaprendizaje; véase este artículo .