TensorFlow Federated:基於分散式數據的機器學習


https://www.tensorflow.org/federated/

 

  • TensorFlow Federated (TFF) 是一個開源框架,用於對分散式數據進行機器學習和其他計算。我們開發 TFF 是為了促進聯合學習 (FL) 的開放研究和實驗,FL 是一種機器學習方法,使我們能夠跨多個參與客戶端訓練共享全局模型,並將訓練數據保存在本地。例如,FL 已被用於訓練手機鍵盤的預測模型,但不會將敏感的輸入數據上傳到服務器。

    開發者可以利用借助 TFF 對其模型和數據模擬所包含的聯合學習算法,以及實驗新算法。TFF 提供的構建塊也可用於實現非學習計算,例如對分散式數據進行聚合分析。TFF 的接口可以分成兩層:

  • chevron_right

    Federated Learning (FL) API

    該層提供了一組高階接口,使開發者能夠將包含的聯合訓練和評估實現應用於現有的 TensorFlow 模型。
  • chevron_right

    Federated Core (FC) API

    該系統的核心是一組較低階接口,可以通過在強類型函數式編程環境中結合使用 TensorFlow 與分布式通信運算符,簡潔地表達新的聯合算法。這一層也是我們構建聯合學習的基礎。
  • 借助 TFF,開發者能夠以聲明方式表達聯合計算,從而將它們部署到不同的運行時環境中。TFF 包含一個用於實驗的單機模擬運行時。請訪問相關 教程,並親自試用!
     
    from six.moves import range
    import tensorflow as tf
    import tensorflow_federated as tff
    from tensorflow_federated.python.examples import mnist
    tf.compat.v1.enable_v2_behavior()

    # Load simulation data.
    source, _ = tff.simulation.datasets.emnist.load_data()
    def client_data(n):
      dataset = source.create_tf_dataset_for_client(source.client_ids[n])
      return mnist.keras_dataset_from_emnist(dataset).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():
      return tff.learning.from_compiled_keras_model(
          mnist.create_simple_keras_model(), sample_batch)

    # Simulate a few rounds of training with the selected client devices.
    trainer = tff.learning.build_federated_averaging_process(model_fn)
    state = trainer.initialize()
    for _ in range(5):
      state, metrics = trainer.next(state, train_data)
      print (metrics.loss)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM