Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Federasi TensorFlow: Machine Learning pada Data Terdesentralisasi

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) adalah framework open source untuk machine learning dan komputasi lain pada data yang didesentralisasi. TFF telah dikembangkan untuk memfasilitasi penelitian dan eksperimen terbuka dengan Federated Learning (FL) , sebuah pendekatan untuk pembelajaran mesin di mana model global bersama dilatih di banyak klien yang berpartisipasi yang menyimpan data pelatihan mereka secara lokal. Misalnya, FL telah digunakan untuk melatih model prediksi untuk keyboard seluler tanpa mengunggah data pengetikan sensitif ke server.

    TFF memungkinkan pengembang untuk mensimulasikan algoritma pembelajaran federasi yang disertakan pada model dan data mereka, serta bereksperimen dengan algoritma baru. Blok penyusun yang disediakan oleh TFF juga dapat digunakan untuk mengimplementasikan komputasi non-pembelajaran, seperti analitik gabungan atas data yang didesentralisasi. Antarmuka TFF diatur dalam dua lapisan:

  • Lapisan ini menawarkan sekumpulan antarmuka tingkat tinggi yang memungkinkan developer menerapkan implementasi pelatihan federasi dan evaluasi yang disertakan ke model TensorFlow yang ada.
  • Inti dari sistem ini adalah sekumpulan antarmuka tingkat rendah untuk mengekspresikan algoritme federasi baru secara singkat dengan menggabungkan TensorFlow dengan operator komunikasi terdistribusi dalam lingkungan pemrograman fungsional yang diketik dengan kuat. Lapisan ini juga berfungsi sebagai fondasi di mana kami telah membangun Pembelajaran Federasi.
  • TFF memungkinkan pengembang untuk mengekspresikan komputasi federasi secara deklaratif, sehingga mereka dapat diterapkan ke lingkungan waktu proses yang beragam. Termasuk dengan TFF adalah runtime simulasi mesin tunggal untuk eksperimen. Silakan kunjungi tutorialnya dan cobalah sendiri!