Uso de TFF para la investigación del aprendizaje federado

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 conceptos y componentes principales que son relevantes para las simulaciones de investigación, así como también 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 FL de investigación implementada en TFF normalmente consta de tres tipos principales de lógica.

  1. Piezas individuales de código de TensorFlow, normalmente tf.function , que encapsulan la lógica que se ejecuta en una única ubicación (por ejemplo, en clientes o en un servidor). Este código normalmente se escribe y prueba sin ninguna referencia tff.* y se puede reutilizar fuera de TFF. Por ejemplo, el ciclo de capacitación del cliente en Promedio federado se implementa en este nivel.

  2. Lógica de orquestación federada de TensorFlow, que une los tf.function individuales de 1. envolviéndolos como tff.tensorflow.computation sy luego orquestándolos usando abstracciones como tff.federated_broadcast y tff.federated_mean dentro de un tff.federated_computation . Consulte, por ejemplo, esta orquestación para el promedio federado .

  3. 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 federado 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.

  • EMNIST 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 3.400 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 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 pronunciadas por el personaje de una obra determinada.

  • 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 manera que se cree 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 fotografías de varios 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 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 fotografías de varias especies. El conjunto de datos contiene 120.300 imágenes de 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 están agrupados por la ubicación geográfica donde se tomó la foto. Estos seis tipos del conjunto de datos constan de 11 a 3606 clientes.

Simulaciones de alto rendimiento

Si bien el tiempo 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 de implementación de FL reales), 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 de 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 mínima e independiente del algoritmo de promedio federado . El código incluye funciones TF para cálculo local, cálculos 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 instrucciones detalladas en el 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, incluido el uso de diferentes optimizadores tanto en el servidor como en el cliente. Aquí se pueden encontrar otros algoritmos de aprendizaje federado, incluida la agrupación en clústeres de k-means federados.

Compresión de actualización del modelo

La compresión con pérdidas de las actualizaciones del modelo puede generar costos de comunicación reducidos, 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 los métodos de comparación en el proyecto para obtener líneas base como ejemplo y el tutorial de agregadores de TFF si aún no está familiarizado con ellos.

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 DP-FedAvg básico y sus extensiones , consulte este controlador de experimento .

Si desea implementar un algoritmo DP personalizado y aplicarlo a las actualizaciones agregadas del promedio federado, puede implementar un nuevo algoritmo medio DP como una 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 se puede utilizar para simular los ataques dirigidos a sistemas de aprendizaje federados y defensas diferenciales basadas en la privacidad consideradas en ¿Puede realmente el aprendizaje federado por la puerta trasera? . 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 del cliente que sea una función de Tensorflow; consulte ClientProjectBoost para ver un ejemplo.
  • Se pueden implementar nuevas defensas personalizando 'tff.utils.StatefulAggregateFn' , que agrega resultados del cliente para obtener una actualización global.

Para ver un script de ejemplo para simulación, consulte emnist_with_targeted_attack.py .

Redes generativas de confrontación

Las GAN crean un patrón de orquestación federada 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 investigaciones sobre capacitación federada 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 aprendizaje federado, modelos generativos y 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 diferentes usuarios. Existen enfoques potencialmente diferentes para este problema.

Un enfoque es permitir que cada cliente ajuste un único modelo global (entrenado mediante aprendizaje federado) con sus datos locales. Este enfoque tiene conexiones con el metaaprendizaje; consulte, por ejemplo, este artículo . Un ejemplo de este enfoque se proporciona en emnist_p13n_main.py . 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. build_personalize_fn proporciona un ejemplo.

  • Defina un OrderedDict que asigne nombres de estrategias a las estrategias de personalización correspondientes y utilícelo como argumento personalize_fn_dict en tff.learning.build_personalization_eval_computation .

Otro enfoque es evitar entrenar un modelo completamente global entrenando parte de un modelo completamente localmente. 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: