TensorFlow Federated: Uczenie maszynowe na zdecentralizowanych danych, TensorFlow Federated: Uczenie maszynowe na zdecentralizowanych danych

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) to platforma typu open source do uczenia maszynowego i innych obliczeń na zdecentralizowanych danych. TFF został opracowany w celu ułatwienia otwartych badań i eksperymentów z Federated Learning (FL) , podejściem do uczenia maszynowego, w którym wspólny model globalny jest szkolony przez wielu uczestniczących klientów, którzy przechowują swoje dane szkoleniowe lokalnie. Na przykład FL jest używany do trenowania modeli predykcyjnych dla klawiatur mobilnych bez przesyłania poufnych danych dotyczących pisania na serwery.

    TFF umożliwia programistom symulowanie dołączonych algorytmów sfederowanego uczenia się na ich modelach i danych, a także eksperymentowanie z nowymi algorytmami. Badacze znajdą punkty wyjścia i kompletne przykłady dla wielu rodzajów badań. Bloki konstrukcyjne dostarczane przez TFF mogą być również wykorzystywane do implementacji obliczeń nieuczących się, takich jak analityka federacyjna . Interfejsy TFF są zorganizowane w dwóch głównych warstwach:

  • Warstwa ta oferuje zestaw interfejsów wysokiego poziomu, które umożliwiają programistom zastosowanie dołączonych implementacji stowarzyszonego szkolenia i oceny do istniejących modeli TensorFlow. Ta warstwa oferuje zestaw interfejsów wysokiego poziomu, które umożliwiają programistom zastosowanie dołączonych implementacji stowarzyszonego szkolenia i oceny do istniejących modeli TensorFlow.
  • Rdzeniem systemu jest zestaw interfejsów niższego poziomu służących do zwięzłego wyrażania nowatorskich algorytmów stowarzyszonych poprzez połączenie TensorFlow z operatorami komunikacji rozproszonej w ramach silnie typowanego funkcjonalnego środowiska programowania. Warstwa ta służy również jako podstawa, na której zbudowaliśmy Federated Learning. Trzon systemu stanowi zestaw interfejsów niższego poziomu służących do zwięzłego wyrażania nowatorskich algorytmów stowarzyszonych poprzez połączenie TensorFlow z operatorami komunikacji rozproszonej w ramach silnie typowanego funkcjonalnego środowiska programowania. Warstwa ta służy również jako podstawa, na której zbudowaliśmy Federated Learning.
  • TFF umożliwia programistom deklaratywne wyrażanie sfederowanych obliczeń, dzięki czemu można je wdrażać w różnych środowiskach wykonawczych. W zestawie z TFF znajduje się wydajne środowisko uruchomieniowe symulacji wielu maszyn do eksperymentów. Odwiedź samouczki i wypróbuj to sam!

    W przypadku pytań i wsparcia, znajdź nas w tagu tensorflow-federated na StackOverflow.