หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

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)]

# Grab a single batch of data so that TFF knows what data looks like.
sample_batch = tf.nest.map_structure(
    lambda x: x.numpy(), iter(train_data[0]).next())

# 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.from_keras_model(
      model,
      dummy_batch=sample_batch,
      loss=tf.keras.losses.SparseCategoricalCrossentropy(),
      metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])

# Simulate a few rounds of training with the selected client devices.
trainer = tff.learning.build_federated_averaging_process(
  model_fn,
  client_optimizer_fn=lambda: tf.keras.optimizers.SGD(0.1))
state = trainer.initialize()
for _ in range(5):
  state, metrics = trainer.next(state, train_data)
  print (metrics.loss)
  • TensorFlow Federated (TFF) เป็นเฟรมเวิร์กโอเพ่นซอร์สสำหรับการเรียนรู้ของเครื่องและการคำนวณอื่น ๆ บนข้อมูลที่กระจายอำนาจ TFF ได้รับการพัฒนาเพื่ออำนวยความสะดวกในการวิจัยแบบเปิดและการทดลองด้วย Federated Learning (FL) ซึ่งเป็นแนวทางในการเรียนรู้ของเครื่องที่มีการฝึกอบรมโมเดลส่วนกลางที่ใช้ร่วมกันกับลูกค้าที่เข้าร่วมจำนวนมากซึ่งเก็บข้อมูลการฝึกอบรมไว้ในเครื่อง ตัวอย่างเช่น FL ถูกใช้เพื่อฝึก โมเดลการคาดคะเนสำหรับคีย์บอร์ดมือถือ โดยไม่ต้องอัปโหลดข้อมูลการพิมพ์ที่ละเอียดอ่อนไปยังเซิร์ฟเวอร์

    TFF ช่วยให้นักพัฒนาสามารถจำลองอัลกอริธึมการเรียนรู้แบบรวมศูนย์ที่รวมอยู่ในโมเดลและข้อมูลของพวกเขารวมทั้งทดลองกับอัลกอริทึมใหม่ ๆ นอกจากนี้ยังสามารถใช้หน่วยการสร้างที่จัดเตรียมโดย TFF เพื่อใช้การคำนวณที่ไม่ใช่การเรียนรู้เช่นการวิเคราะห์แบบรวมผ่านข้อมูลแบบกระจายอำนาจ อินเทอร์เฟซของ TFF จัดเป็นสองชั้น:

  • เลเยอร์นี้นำเสนอชุดอินเทอร์เฟซระดับสูงที่ช่วยให้นักพัฒนาสามารถประยุกต์ใช้การฝึกอบรมแบบรวมศูนย์และการประเมินผลกับโมเดล TensorFlow ที่มีอยู่
  • ที่แกนหลักของระบบคือชุดของอินเทอร์เฟซระดับล่างสำหรับการแสดงอัลกอริทึมแบบรวมใหม่อย่างกระชับโดยการรวม TensorFlow กับตัวดำเนินการสื่อสารแบบกระจายภายในสภาพแวดล้อมการเขียนโปรแกรมเชิงฟังก์ชัน เลเยอร์นี้ยังทำหน้าที่เป็นรากฐานที่เราได้สร้างการเรียนรู้แบบรวมศูนย์
  • TFF ช่วยให้นักพัฒนาสามารถแสดงการคำนวณแบบรวมศูนย์อย่างเปิดเผยดังนั้นจึงสามารถปรับใช้กับสภาพแวดล้อมรันไทม์ที่หลากหลายได้ รวมอยู่ใน TFF เป็นรันไทม์จำลองเครื่องเดียวสำหรับการทดลอง โปรดไปที่ บทแนะนำ และทดลองใช้ด้วยตัวคุณเอง!

    หากมีคำถามและการสนับสนุนโปรดติดต่อเราที่ แท็ก tensorflow-federated บน StackOverflow