Preguntas frecuentes

¿Se puede usar TensorFlow Federated en entornos de producción, por ejemplo, en teléfonos móviles?

Actualmente no. Aunque diseñamos TFF con la implementación en dispositivos reales en mente, en esta etapa actualmente no proporcionamos ninguna herramienta para este propósito. La versión actual está destinada a usos de experimentación, como expresar nuevos algoritmos federados o probar el aprendizaje federado con sus propios conjuntos de datos, utilizando el tiempo de ejecución de simulación incluido.

Anticipamos que, con el tiempo, el ecosistema de código abierto en torno a TFF evolucionará para incluir tiempos de ejecución dirigidos a plataformas de implementación física.

¿Cómo uso TFF para experimentar con grandes conjuntos de datos?

El tiempo de ejecución predeterminado incluido en la versión inicial de TFF está diseñado solo para pequeños experimentos como los descritos en nuestros tutoriales en los que todos sus datos (en todos los clientes simulados) caben simultáneamente en la memoria de una sola máquina y todo el experimento se ejecuta localmente. dentro del cuaderno colab.

Nuestra hoja de ruta futura a corto plazo incluye un tiempo de ejecución de alto rendimiento para experimentos con conjuntos de datos muy grandes y una gran cantidad de clientes.

¿Cómo puedo asegurarme de que la aleatoriedad en TFF coincida con mis expectativas?

Dado que TFF tiene computación federada integrada en su núcleo, el escritor de TFF no debe asumir el control sobre dónde y cómo se ingresan las Session de TensorFlow o se llama a la run dentro de esas sesiones. La semántica de la aleatoriedad puede depender de la entrada y salida de las Session de TensorFlow si se establecen semillas. Recomendamos usar la aleatoriedad de estilo TensorFlow 2, usando, por ejemplo, tf.random.experimental.Generator a partir de TF 1.14. Esto utiliza una tf.Variable para administrar su estado interno.

Para ayudar a administrar las expectativas, TFF permite que el TensorFlow que serializa tenga un conjunto de semillas de nivel operativo, pero no semillas de nivel gráfico. Esto se debe a que la semántica de las semillas de nivel operativo debería ser más clara en la configuración de TFF: se generará una secuencia determinista en cada invocación de una función envuelta como tf_computation , y solo dentro de esta invocación se mantendrán las garantías hechas por el generador de números pseudoaleatorios. . Tenga en cuenta que esto no es lo mismo que la semántica de llamar a una tf.function en modo impaciente; TFF ingresa y sale efectivamente de una tf.Session única cada vez que se invoca tf_computation , mientras que llamar repetidamente a una función en modo ansioso es similar a llamar a sess.run en el tensor de salida repetidamente dentro de la misma sesión.

¿Cómo puedo contribuir?

Consulte el LÉAME , las pautas de contribución y las colaboraciones .

¿Cuál es la relación entre FedJAX y TensorFlow Federated?

TensorFlow Federated (TFF) es un marco completo para el análisis y el aprendizaje federado que está diseñado para facilitar la composición de diferentes algoritmos y funciones, y para permitir la portabilidad del código en diferentes escenarios de simulación e implementación. TFF proporciona un tiempo de ejecución escalable y admite muchos algoritmos de privacidad, compresión y optimización a través de sus API estándar. TFF también es compatible con muchos tipos de investigación de FL , con una colección de ejemplos de artículos publicados de Google que aparecen en el repositorio de investigación de Google .

Por el contrario, FedJAX es una biblioteca de simulación ligera basada en Python y JAX que se centra en la facilidad de uso y la creación rápida de prototipos de algoritmos de aprendizaje federado con fines de investigación. TensorFlow Federated y FedJAX se desarrollan como proyectos separados, sin expectativas de portabilidad de código.