TensorFlow Federated: یادگیری ماشین بر روی داده های غیرمتمرکز، TensorFlow Federated: یادگیری ماشین بر روی داده های غیرمتمرکز

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) یک چارچوب منبع باز برای یادگیری ماشین و سایر محاسبات روی داده های غیرمتمرکز است. TFF برای تسهیل تحقیق و آزمایش باز با یادگیری فدرال (FL) ایجاد شده است، رویکردی برای یادگیری ماشین که در آن یک مدل جهانی مشترک در بسیاری از مشتریان شرکت‌کننده آموزش داده می‌شود که داده‌های آموزشی خود را به صورت محلی نگهداری می‌کنند. برای مثال، FL برای آموزش مدل‌های پیش‌بینی برای صفحه‌کلیدهای موبایل بدون آپلود داده‌های حساس تایپ در سرورها استفاده شده است.

    TFF توسعه دهندگان را قادر می سازد تا الگوریتم های یادگیری فدرال را روی مدل ها و داده های خود شبیه سازی کنند و همچنین الگوریتم های جدید را آزمایش کنند. محققان نقاط شروع و مثال های کاملی را برای بسیاری از انواع تحقیقات پیدا خواهند کرد. بلوک‌های ساختمانی ارائه‌شده توسط TFF همچنین می‌توانند برای پیاده‌سازی محاسبات غیرآموزشی، مانند تجزیه و تحلیل فدرال استفاده شوند. رابط های TFF در دو لایه اصلی سازماندهی شده اند:

  • این لایه مجموعه‌ای از رابط‌های سطح بالا را ارائه می‌کند که به توسعه‌دهندگان اجازه می‌دهد تا پیاده‌سازی‌های آموزشی و ارزیابی فدرال را در مدل‌های TensorFlow موجود خود اعمال کنند. این لایه مجموعه‌ای از رابط‌های سطح بالا را ارائه می‌کند که به توسعه‌دهندگان اجازه می‌دهد تا پیاده‌سازی‌های آموزشی و ارزیابی فدرال را در مدل‌های تنسورفلو موجود خود اعمال کنند.
  • در هسته سیستم مجموعه‌ای از رابط‌های سطح پایین‌تر برای بیان مختصر الگوریتم‌های فدرال جدید با ترکیب TensorFlow با اپراتورهای ارتباطی توزیع‌شده در یک محیط برنامه‌نویسی عملکردی قوی وجود دارد. این لایه همچنین به عنوان پایه ای عمل می کند که ما یادگیری فدرال را بر آن بنا کرده ایم. در هسته سیستم مجموعه‌ای از رابط‌های سطح پایین‌تر برای بیان مختصر الگوریتم‌های فدرال جدید با ترکیب TensorFlow با اپراتورهای ارتباطی توزیع‌شده در یک محیط برنامه‌نویسی عملکردی قوی وجود دارد. این لایه همچنین به عنوان پایه ای عمل می کند که ما یادگیری فدرال را بر آن بنا کرده ایم.
  • TFF به توسعه دهندگان این امکان را می دهد تا محاسبات فدرال را به صورت اعلامی بیان کنند، بنابراین آنها می توانند در محیط های زمان اجرا متنوع مستقر شوند. همراه با TFF یک زمان اجرا شبیه‌سازی چند ماشینی برای آزمایش‌ها است. لطفا از آموزش دیدن کنید و خودتان آن را امتحان کنید!

    برای سؤالات و پشتیبانی، ما را در برچسب tensorflow-federated در StackOverflow بیابید.