Domande frequenti (FAQ)

TensorFlow Federated può essere utilizzato in ambienti di produzione, ad esempio sui telefoni cellulari?

Attualmente no. Sebbene abbiamo progettato TFF pensando all'implementazione su dispositivi reali, in questa fase al momento non forniamo alcuno strumento a questo scopo. La versione attuale è destinata a usi sperimentali, come l'espressione di nuovi algoritmi federati o la prova dell'apprendimento federato con i propri set di dati, utilizzando il runtime di simulazione incluso.

Prevediamo che nel tempo l'ecosistema open source attorno a TFF si evolverà per includere runtime destinati a piattaforme di distribuzione fisica.

Come posso utilizzare TFF per esperimenti con set di dati di grandi dimensioni?

Il runtime predefinito incluso nella versione iniziale di TFF è destinato solo a piccoli esperimenti come quelli descritti nei nostri tutorial in cui tutti i dati (su tutti i client simulati) rientrano contemporaneamente nella memoria di un singolo computer e l'intero esperimento viene eseguito localmente all'interno del taccuino di collaborazione.

La nostra roadmap futura a breve termine include un runtime ad alte prestazioni per esperimenti con set di dati molto grandi e un gran numero di client.

Come posso garantire che la casualità nel TFF corrisponda alle mie aspettative?

Poiché TFF ha l'elaborazione federata al suo interno, lo scrittore di TFF non dovrebbe assumere il controllo su dove e come vengono immesse Session di TensorFlow o su come viene eseguita run all'interno di tali sessioni. La semantica della casualità può dipendere dall'entrata e dall'uscita delle Session TensorFlow se i seed sono impostati. Si consiglia di utilizzare la radomness in stile TensorFlow 2, utilizzando ad esempio tf.random.experimental.Generator a partire da TF 1.14. Utilizza una tf.Variable per gestire il proprio stato interno.

Per aiutare a gestire le aspettative, TFF consente al TensorFlow che serializza di avere set di seed a livello di operazione, ma non di seed a livello di grafico. Questo perché la semantica dei seed a livello operativo dovrebbe essere più chiara nell'impostazione TFF: una sequenza deterministica verrà generata su ogni invocazione di una funzione racchiusa come tf_computation e solo all'interno di questa invocazione verranno mantenute le garanzie fornite dal generatore di numeri pseudocasuali . Si noti che questa non è proprio la stessa semantica della chiamata a tf.function in modalità desiderosa; TFF entra ed esce effettivamente da un tf.Session univoco ogni volta che viene invocato tf_computation , mentre chiamare ripetutamente una funzione in modalità desiderosa è analogo a chiamare sess.run ripetutamente sul tensore di output all'interno della stessa sessione.

Come posso contribuire?

Consulta il README , le linee guida per i contributi e le collaborazioni .

Qual è la relazione tra FedJAX e TensorFlow Federated?

TensorFlow Federated (TFF) è un framework completo per l'apprendimento e l'analisi federati progettato per facilitare la composizione di diversi algoritmi e funzionalità e per abilitare il porting del codice in diversi scenari di simulazione e distribuzione. TFF fornisce un runtime scalabile e supporta molti algoritmi di privacy, compressione e ottimizzazione tramite le sue API standard. TFF supporta anche molti tipi di ricerca FL , con una raccolta di esempi tratti da documenti Google pubblicati che appaiono nel repository di ricerca di Google .

Al contrario, FedJAX è una libreria di simulazione leggera basata su Python e JAX che si concentra sulla facilità d'uso e sulla prototipazione rapida di algoritmi di apprendimento federato per scopi di ricerca. TensorFlow Federated e FedJAX sono sviluppati come progetti separati, senza aspettativa di portabilità del codice.