¿Se puede utilizar TensorFlow Federated en entornos de producción, por ejemplo, en teléfonos móviles?
Actualmente no. Aunque diseñamos TFF teniendo en mente la implementación en dispositivos reales, en esta etapa no proporcionamos ninguna herramienta para este propósito. La versión actual está destinada a usos de experimentación, como expresar algoritmos federados novedosos 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á destinado únicamente a 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 de 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 garantizar que la aleatoriedad en TFF coincida con mis expectativas?
Dado que TFF tiene computación federada incorporada en su núcleo, el autor de TFF no debe asumir control sobre dónde y cómo se ingresan Session
de TensorFlow o se llama 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 radomness estilo TensorFlow 2, usando, por ejemplo tf.random.experimental.Generator
a partir de TF 1.14. Esto utiliza una tf.Variable
para gestionar su estado interno.
Para ayudar a gestionar las expectativas, TFF permite que TensorFlow que serializa tenga semillas de nivel de operación configuradas, pero no semillas de nivel de gráfico. Esto se debe a que la semántica de las semillas de nivel de operación debería ser más clara en la configuración 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 realizadas por el generador de números pseudoaleatorios. . Tenga en cuenta que esto no es exactamente lo mismo que la semántica de llamar a una tf.function
en modo ansioso; TFF entra 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 análogo a llamar sess.run
en el tensor de salida repetidamente dentro de la misma sesión.
¿Cómo puedo contribuir?
Consulte el archivo README , 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 aprendizaje y el análisis federados que está diseñado para facilitar la composición de diferentes algoritmos y características, y para permitir la transferencia de código a 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 admite muchos tipos de investigación de FL , con una colección de ejemplos de artículos publicados por 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 federados con fines de investigación. TensorFlow Federated y FedJAX se desarrollan como proyectos separados, sin expectativas de portabilidad del código.