TensorFlow Federated: apprendimento automatico su dati decentralizzati

import collections
import tensorflow as tf
import tensorflow_federated as tff

# Load simulation data.
source, _ = tff.simulation.datasets.emnist.load_data()
def client_data(n):
  return source.create_tf_dataset_for_client(source.client_ids[n]).map(
      lambda e: (tf.reshape(e['pixels'], [-1]), e['label'])
  ).repeat(10).batch(20)

# Pick a subset of client devices to participate in training.
train_data = [client_data(n) for n in range(3)]

# Wrap a Keras model for use with TFF.
keras_model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(
    10, tf.nn.softmax, input_shape=(784,), kernel_initializer='zeros')
])
tff_model = tff.learning.models.functional_model_from_keras(
      keras_model,
      loss_fn=tf.keras.losses.SparseCategoricalCrossentropy(),
      input_spec=train_data[0].element_spec,
      metrics_constructor=collections.OrderedDict(
        accuracy=tf.keras.metrics.SparseCategoricalAccuracy))

# Simulate a few rounds of training with the selected client devices.
trainer = tff.learning.algorithms.build_weighted_fed_avg(
  tff_model,
  client_optimizer_fn=tff.learning.optimizers.build_sgdm(learning_rate=0.1))
state = trainer.initialize()
for _ in range(5):
  result = trainer.next(state, train_data)
  state = result.state
  metrics = result.metrics
  print(metrics['client_work']['train']['accuracy'])
  • TensorFlow Federated (TFF) è un framework open source per l'apprendimento automatico e altri calcoli su dati decentralizzati. TFF è stato sviluppato per facilitare la ricerca e la sperimentazione aperte con Federated Learning (FL) , un approccio all'apprendimento automatico in cui un modello globale condiviso viene addestrato tra molti clienti partecipanti che conservano i dati di formazione a livello locale. Ad esempio, FL è stato utilizzato per addestrare modelli di previsione per tastiere mobili senza caricare dati di digitazione sensibili sui server.

    TFF consente agli sviluppatori di simulare gli algoritmi di apprendimento federati inclusi sui loro modelli e dati, nonché di sperimentare nuovi algoritmi. I ricercatori troveranno punti di partenza ed esempi completi per molti tipi di ricerca. Gli elementi costitutivi forniti da TFF possono essere utilizzati anche per implementare calcoli non di apprendimento, come l' analisi federata . Le interfacce di TFF sono organizzate in due livelli principali:

  • Questo livello offre una serie di interfacce di alto livello che consentono agli sviluppatori di applicare le implementazioni incluse di formazione e valutazione federate ai modelli TensorFlow esistenti.
  • Al centro del sistema c’è un insieme di interfacce di livello inferiore per esprimere in modo conciso nuovi algoritmi federati combinando TensorFlow con operatori di comunicazione distribuiti all’interno di un ambiente di programmazione funzionale fortemente tipizzato. Questo livello funge anche da base su cui abbiamo costruito il Federated Learning. Al centro del sistema c'è un insieme di interfacce di livello inferiore per esprimere in modo conciso nuovi algoritmi federati combinando TensorFlow con operatori di comunicazione distribuiti all'interno di un ambiente di programmazione funzionale fortemente tipizzato. Questo livello funge anche da base su cui abbiamo costruito il Federated Learning.
  • TFF consente agli sviluppatori di esprimere in modo dichiarativo calcoli federati, in modo che possano essere distribuiti in diversi ambienti di runtime. Incluso con TFF è un runtime di simulazione multi-macchina ad alte prestazioni per esperimenti. Visita i tutorial e prova tu stesso!

    Per domande e supporto, trovaci al tag tensorflow federato su StackOverflow.