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.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.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['train']['loss'])
  • TensorFlow Federated (TFF) 是適用於機器學習和其他分散式資料運算的開放原始碼架構。TFF 的開發目的是促進聯合學習 (FL) 的開放式研究和實驗,聯合學習是一種機器學習方法,針對許多參與的用戶端訓練共用的通用模型,並且讓用戶端將訓練資料保留在本機。舉例來說,FL 已用於訓練行動裝置鍵盤的預測模型,且不會將敏感的輸入資料上傳到伺服器。

    TFF 可讓開發人員在自己的模型和資料上模擬內含的聯合學習演算法,並使用新的演算法進行實驗。TFF 所提供的構成要素也可用於實作非學習運算,例如分散式資料的匯總分析。TFF 的介面分為兩層:

  • 這一層提供了一組高階介面,可讓開發人員將內含的聯合訓練實作和評估套用至現有的 TensorFlow 模型。
  • 系統的核心是一組較低階的介面,在強型類別函式的程式設計環境中結合 TensorFlow 與分散式通訊運算子,以簡潔的方式表示新穎的聯合演算法。這一層也是我們建立聯合學習的基礎。
  • TFF 可讓開發人員透過宣告表示聯合運算,藉此將聯合運算部署至不同的執行階段環境。TFF 還提供用於實驗的單一機器模擬執行階段。請參閱教學課程並自行嘗試看看!

    如有任何疑問或需要協助,可在 StackOverflow 透過 tensorflow-federated 標記與我們聯絡。