Federasi TensorFlow: Pembelajaran Mesin pada Data Terdesentralisasi, Federasi TensorFlow: Pembelajaran Mesin pada Data Terdesentralisasi

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) adalah kerangka kerja sumber terbuka untuk pembelajaran mesin dan komputasi lainnya pada data yang didesentralisasi. TFF telah dikembangkan untuk memfasilitasi penelitian dan eksperimen terbuka dengan Federated Learning (FL) , sebuah pendekatan 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 algoritme pembelajaran gabungan yang disertakan pada model dan data mereka, serta bereksperimen dengan algoritme baru. Peneliti akan menemukan titik awal dan contoh lengkap untuk berbagai jenis penelitian. Blok penyusun yang disediakan oleh TFF juga dapat digunakan untuk mengimplementasikan komputasi non-pembelajaran, seperti analitik gabungan . Antarmuka TFF diatur dalam dua lapisan utama:

  • Lapisan ini menawarkan serangkaian antarmuka tingkat tinggi yang memungkinkan pengembang menerapkan implementasi pelatihan dan evaluasi gabungan yang disertakan ke model TensorFlow yang sudah ada. , Lapisan ini menawarkan serangkaian antarmuka tingkat tinggi yang memungkinkan pengembang menerapkan implementasi pelatihan dan evaluasi gabungan yang disertakan ke model TensorFlow yang ada.
  • Inti dari sistem ini adalah seperangkat antarmuka tingkat rendah untuk mengekspresikan algoritma gabungan baru secara ringkas dengan menggabungkan TensorFlow dengan operator komunikasi terdistribusi dalam lingkungan pemrograman fungsional yang sangat spesifik. Lapisan ini juga berfungsi sebagai fondasi yang kami gunakan untuk membangun Pembelajaran Federasi. , Inti dari sistem ini adalah sekumpulan antarmuka tingkat rendah untuk mengekspresikan algoritme gabungan baru secara ringkas dengan menggabungkan TensorFlow dengan operator komunikasi terdistribusi dalam lingkungan pemrograman fungsional yang sangat spesifik. Lapisan ini juga berfungsi sebagai fondasi yang kami gunakan untuk membangun Pembelajaran Federasi.
  • TFF memungkinkan pengembang untuk mengekspresikan komputasi gabungan secara deklaratif, sehingga dapat diterapkan ke lingkungan runtime yang beragam. Termasuk dengan TFF adalah runtime simulasi multi-mesin berkinerja untuk eksperimen. Silakan kunjungi tutorial dan mencobanya sendiri!

    Untuk pertanyaan dan dukungan, temukan kami di tag federasi tensorflow di StackOverflow.