TensorFlow Federated: Học máy trên dữ liệu phi tập trung

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) là một khuôn khổ mã nguồn mở cho máy học và các tính toán khác trên dữ liệu phi tập trung. TFF đã được phát triển để tạo điều kiện cho nghiên cứu và thử nghiệm mở với Federated Learning (FL) , một phương pháp tiếp cận máy học trong đó mô hình toàn cầu được chia sẻ được đào tạo cho nhiều khách hàng tham gia và lưu giữ dữ liệu đào tạo của họ tại địa phương. Ví dụ: FL đã được sử dụng để đào tạo các mô hình dự đoán cho bàn phím di động mà không cần tải dữ liệu nhập nhạy cảm lên máy chủ.

    TFF cho phép các nhà phát triển mô phỏng các thuật toán học tập liên hợp được bao gồm trên các mô hình và dữ liệu của họ, cũng như thử nghiệm với các thuật toán mới. Các nhà nghiên cứu sẽ tìm ra các điểm khởi đầu và các ví dụ hoàn chỉnh cho nhiều loại nghiên cứu. Các khối xây dựng do TFF cung cấp cũng có thể được sử dụng để triển khai các phép tính không học, chẳng hạn như phân tích liên hợp . Các giao diện của TFF được tổ chức theo hai lớp chính:

  • Lớp này cung cấp một tập hợp các giao diện cấp cao cho phép các nhà phát triển áp dụng việc triển khai đào tạo và đánh giá liên kết đi kèm cho các mô hình TensorFlow hiện có của họ.
  • Cốt lõi của hệ thống là một tập hợp các giao diện cấp thấp hơn để thể hiện chính xác các thuật toán liên kết mới bằng cách kết hợp TensorFlow với các toán tử truyền thông phân tán trong môi trường lập trình chức năng được định kiểu mạnh mẽ. Lớp này cũng đóng vai trò là nền tảng để chúng tôi xây dựng Học tập Liên kết.
  • TFF cho phép các nhà phát triển thể hiện rõ ràng các phép tính liên hợp, vì vậy chúng có thể được triển khai cho các môi trường thời gian chạy đa dạng. Đi kèm với TFF là thời gian chạy mô phỏng đa máy biểu diễn cho các thí nghiệm. Vui lòng truy cập các hướng dẫn và thử nó cho mình!

    Đối với các câu hỏi và hỗ trợ, hãy tìm chúng tôi tại thẻ liên kết tensorflow trên StackOverflow.