TensorFlow Federated: التعلم الآلي على البيانات اللامركزية

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.models.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['client_work']['train']['loss'])
  • TensorFlow Federated (TFF) هو إطار مفتوح المصدر للتعلم الآلي والحسابات الأخرى على البيانات اللامركزية. تم تطوير TFF لتسهيل البحث المفتوح والتجريب مع التعلم الفيدرالي (FL) ، وهو نهج للتعلم الآلي حيث يتم تدريب نموذج عالمي مشترك عبر العديد من العملاء المشاركين الذين يحتفظون ببيانات التدريب الخاصة بهم محليًا. على سبيل المثال ، تم استخدام FL لتدريب نماذج التنبؤ للوحات المفاتيح المحمولة دون تحميل بيانات الكتابة الحساسة إلى الخوادم.

    يمكّن TFF المطورين من محاكاة خوارزميات التعلم الموحد المضمنة على نماذجهم وبياناتهم ، بالإضافة إلى تجربة خوارزميات جديدة. سيجد الباحثون نقاط انطلاق وأمثلة كاملة لأنواع عديدة من البحث. يمكن أيضًا استخدام اللبنات الأساسية التي يوفرها TFF لتنفيذ العمليات الحسابية غير التعليمية ، مثل التحليلات الموحدة . يتم تنظيم واجهات TFF في طبقتين رئيسيتين:

  • تقدم هذه الطبقة مجموعة من الواجهات عالية المستوى التي تسمح للمطورين بتطبيق عمليات التنفيذ المضمنة للتدريب الموحد والتقييم على نماذج TensorFlow الحالية الخاصة بهم.
  • يوجد في قلب النظام مجموعة من الواجهات ذات المستوى الأدنى للتعبير بإيجاز عن خوارزميات موحدة جديدة من خلال الجمع بين TensorFlow ومشغلي الاتصالات الموزعة في بيئة برمجة وظيفية شديدة التصنيف. تعمل هذه الطبقة أيضًا كأساس أنشأنا عليه التعلم الموحد.
  • يمكّن TFF المطورين من التعبير بشكل إعلاني عن الحسابات الموحدة ، بحيث يمكن نشرها في بيئات وقت تشغيل متنوعة. يشتمل مع TFF على وقت تشغيل محاكاة متعددة الآلات للتجارب. يرجى زيارة الدروس وجربها بنفسك!

    للأسئلة والدعم ، تجدنا في العلامة الموحدة tensorflow على StackOverflow.