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

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