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 פותח כדי לאפשר מחקר פתוח וניסוי עם Federated Learning (FL) , גישה ללמידת מכונה שבה מאומן מודל גלובלי משותף על פני לקוחות משתתפים רבים השומרים על נתוני ההדרכה שלהם באופן מקומי. לדוגמה, נעשה שימוש ב-FL כדי להכשיר מודלים של חיזוי עבור מקלדות ניידות מבלי להעלות נתוני הקלדה רגישים לשרתים.

    TFF מאפשר למפתחים לדמות את אלגוריתמי הלמידה המאוחדים הכלולים על המודלים והנתונים שלהם, כמו גם להתנסות באלגוריתמים חדשים. החוקרים ימצאו נקודות התחלה ודוגמאות מלאות לסוגים רבים של מחקרים. ניתן להשתמש באבני הבניין שסופק על ידי TFF גם ליישום חישובים שאינם לומדים, כגון ניתוח מאוחד . הממשקים של TFF מאורגנים בשתי שכבות עיקריות:

  • שכבה זו מציעה קבוצה של ממשקים ברמה גבוהה המאפשרים למפתחים ליישם את ההטמעות הכלולים של אימון והערכה מאוחדים על המודלים הקיימים של TensorFlow.
  • בליבת המערכת נמצאת קבוצה של ממשקים ברמה נמוכה יותר לביטוי תמציתי של אלגוריתמים מאוחדים חדשים על ידי שילוב של TensorFlow עם מפעילי תקשורת מבוזרת בתוך סביבת תכנות פונקציונלית עם הקלדה חזקה. שכבה זו משמשת גם כבסיס שעליו בנינו למידה פדרית.
  • TFF מאפשר למפתחים לבטא באופן הצהרתי חישובים מאוחדים, כך שניתן יהיה לפרוס אותם בסביבות זמן ריצה מגוונות. כלול ב-TFF זמן ריצה של סימולציית ריבוי מכונות ביצועית עבור ניסויים. אנא בקר במדריכים ונסה זאת בעצמך!

    לשאלות ותמיכה, מצא אותנו בתג המאוחד של tensorflow ב-StackOverflow.