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 的介面分為兩層:
-
Federated Learning (FL) API
這一層提供了一組高階介面,可讓開發人員將內含的聯合訓練實作和評估套用至現有的 TensorFlow 模型。 -
Federated Core (FC) API
系統的核心是一組較低階的介面,在強型類別函式的程式設計環境中結合 TensorFlow 與分散式通訊運算子,以簡潔的方式表示新穎的聯合演算法。這一層也是我們建立聯合學習的基礎。 -
TFF 可讓開發人員透過宣告表示聯合運算,藉此將聯合運算部署至不同的執行階段環境。TFF 還提供用於實驗的單一機器模擬執行階段。請參閱教學課程並自行嘗試看看!
如有任何疑問或需要協助,可在 StackOverflow 透過 tensorflow-federated 標記與我們聯絡。