Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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)]

# Grab a single batch of data so that TFF knows what data looks like.
sample_batch = tf.nest.map_structure(
    lambda x: x.numpy(), iter(train_data[0]).next())

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

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

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

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