TensorFlow Federated: машинное обучение на децентрализованных данных

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.
def model_fn():
  model = tf.keras.models.Sequential([
      tf.keras.layers.Dense(10, tf.nn.softmax, input_shape=(784,),
                            kernel_initializer='zeros')
  ])
  return tff.learning.from_keras_model(
      model,
      input_spec=train_data[0].element_spec,
      loss=tf.keras.losses.SparseCategoricalCrossentropy(),
      metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])

# Simulate a few rounds of training with the selected client devices.
trainer = tff.learning.build_federated_averaging_process(
  model_fn,
  client_optimizer_fn=lambda: tf.keras.optimizers.SGD(0.1))
state = trainer.initialize()
for _ in range(5):
  state, metrics = trainer.next(state, train_data)
  print(metrics['train']['loss'])
  • TensorFlow Federated (TFF) - это платформа с открытым исходным кодом для машинного обучения и других вычислений с децентрализованными данными. TFF был разработан для облегчения открытых исследований и экспериментов с федеративным обучением (FL) , подходом к машинному обучению, при котором общая глобальная модель обучается для многих участвующих клиентов, которые хранят свои данные обучения локально. Например, FL использовался для обучения моделей прогнозирования для мобильных клавиатур без загрузки конфиденциальных данных набора на серверы.

    TFF позволяет разработчикам моделировать включенные алгоритмы федеративного обучения на своих моделях и данных, а также экспериментировать с новыми алгоритмами. Исследователи найдут отправные точки и полные примеры для многих видов исследований. Строительные блоки, предоставляемые TFF, также могут использоваться для реализации вычислений, не связанных с обучением, таких как федеративная аналитика . Интерфейсы TFF разделены на два основных уровня:

  • Этот уровень предлагает набор высокоуровневых интерфейсов, которые позволяют разработчикам применять включенные реализации федеративного обучения и оценки к своим существующим моделям TensorFlow.
  • В основе системы лежит набор интерфейсов нижнего уровня для лаконичного выражения новых объединенных алгоритмов путем объединения TensorFlow с операторами распределенной связи в строго типизированной среде функционального программирования. Этот уровень также служит фундаментом, на котором мы построили федеративное обучение.
  • TFF позволяет разработчикам декларативно выражать федеративные вычисления, чтобы их можно было развернуть в различных средах выполнения. В комплект TFF входит высокопроизводительная среда моделирования для экспериментов на нескольких машинах. Пожалуйста, посетите обучающие программы и попробуйте сами!

    По вопросам и поддержке обращайтесь к нам в теге tenorflow-federated на StackOverflow.