Weź udział w sympozjum Women in ML 7 grudnia Zarejestruj się teraz
Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Federacja TensorFlow: uczenie maszynowe na zdecentralizowanych danych

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.algorithms.build_weighted_fed_avg(
  model_fn,
  client_optimizer_fn=lambda: tf.keras.optimizers.SGD(0.1))
state = trainer.initialize()
for _ in range(5):
  result = trainer.next(state, train_data)
  state = result.state
  metrics = result.metrics
  print(metrics['train']['loss'])
  • 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:

  • Ta warstwa oferuje zestaw interfejsów wysokiego poziomu, które umożliwiają programistom stosowanie dołączonych implementacji szkolenia sfederowanego i oceny do istniejących modeli TensorFlow.
  • Rdzeniem systemu jest zestaw interfejsów niższego poziomu do zwięzłego wyrażania nowatorskich algorytmów sfederowanych poprzez połączenie TensorFlow z operatorami komunikacji rozproszonej w ramach silnie określonego funkcjonalnego środowiska programistycznego. Ta warstwa służy również jako fundament, na którym zbudowaliśmy federacyjną naukę.
  • 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.