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

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) — это платформа с открытым исходным кодом для машинного обучения и других вычислений с децентрализованными данными. TFF был разработан для облегчения открытых исследований и экспериментов с федеративным обучением (FL) — подходом к машинному обучению, при котором общая глобальная модель обучается на множестве участвующих клиентов, которые хранят свои обучающие данные локально. Например, FL использовался для обучения моделей предсказания для мобильных клавиатур без загрузки конфиденциальных данных для ввода на серверы.

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

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

    Чтобы задать вопросы и получить поддержку, найдите нас по тегу tensorflow-federated на StackOverflow.