TensorFlow Federado: Aprendizaje automático sobre datos descentralizados,TensorFlow Federado: Aprendizaje automático sobre datos descentralizados

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) es un marco de código abierto para el aprendizaje automático y otros cálculos en datos descentralizados. TFF se ha desarrollado para facilitar la investigación abierta y la experimentación con el aprendizaje federado (FL) , un enfoque de aprendizaje automático en el que se entrena un modelo global compartido entre muchos clientes participantes que mantienen sus datos de entrenamiento localmente. Por ejemplo, FL se ha utilizado para entrenar modelos de predicción para teclados móviles sin cargar datos confidenciales de escritura en los servidores.

    TFF permite a los desarrolladores simular los algoritmos de aprendizaje federado incluidos en sus modelos y datos, así como experimentar con algoritmos novedosos. Los investigadores encontrarán puntos de partida y ejemplos completos para muchos tipos de investigación. Los componentes básicos proporcionados por TFF también se pueden usar para implementar cálculos que no son de aprendizaje, como el análisis federado . Las interfaces de TFF están organizadas en dos capas principales:

  • Esta capa ofrece un conjunto de interfaces de alto nivel que permiten a los desarrolladores aplicar las implementaciones incluidas de capacitación y evaluación federadas a sus modelos TensorFlow existentes. Esta capa ofrece un conjunto de interfaces de alto nivel que permiten a los desarrolladores aplicar las implementaciones incluidas de capacitación y evaluación federadas a sus modelos TensorFlow existentes.
  • En el núcleo del sistema hay un conjunto de interfaces de nivel inferior para expresar de manera concisa nuevos algoritmos federados combinando TensorFlow con operadores de comunicación distribuidos dentro de un entorno de programación funcional fuertemente tipado. Esta capa también sirve como base sobre la cual hemos construido el aprendizaje federado. En el núcleo del sistema hay un conjunto de interfaces de nivel inferior para expresar de manera concisa nuevos algoritmos federados combinando TensorFlow con operadores de comunicación distribuidos dentro de un entorno de programación funcional fuertemente tipado. Esta capa también sirve como base sobre la cual hemos construido el aprendizaje federado.
  • TFF permite a los desarrolladores expresar de forma declarativa los cálculos federados, de modo que puedan implementarse en diversos entornos de tiempo de ejecución. TFF incluye un tiempo de ejecución de simulación multimáquina de gran rendimiento para experimentos. ¡Visite los tutoriales y pruébelo usted mismo!

    Para preguntas y soporte, encuéntrenos en la etiqueta federada de tensorflow en StackOverflow.