Federated Learning 指導教學和展示(技術預覽)

技術預覽注意事項

這是技術預覽,不支援用於正式作業工作量。

開始之前

在嘗試此指導教學之前,請先參閱開始設定 Federated Learning

確保您有權存取 IBM Watson Machine Learning。

Federated Learning 指導教學

  1. 您可以使用現有專案或在 IBM Cloud Pak for Data 中建立新專案。
  2. 在專案的資產 標籤上,按一下新增至專案
  3. 按一下 Federated Learning 實驗
  4. 輸入實驗的名稱。 按下一步
    Federated Learning 定義詳細資料使用者介面的擷取畫面
  5. 機器學習架構下拉清單下,選擇 Tensorflow 2,然後按一下模型規格下的選取
  6. 這裡下載未經訓練的模型。
  7. 將您在上一步下載的檔案 tf_mnist_model.zip 移至上傳檔案方框。
  8. 為模型提供名稱,然後按一下匯入
    模型匯入使用者介面的擷取畫面
  9. 針對融合方法選擇加權平均,然後按下一步
    融合方法使用者介面的擷取畫面
  10. 定義超參數標籤中,您可以使用預設超參數或根據需要進行調整。 完成後,請按下一步
  11. 選取遠端訓練系統標籤中,按一下新增系統
  12. 為遠端訓練系統提供名稱。 然後,在容許的使用者之下,選擇將用來從遠端方連接的使用者,然後按一下新增。 您可以新增任意數目的使用者,但是在此指導教學中您只能新增一個。
    附註:此使用者必須作為具有編輯者權限的合作人員新增至專案。 透過為您打算使用的每個遠端方重複此步驟來新增額外的系統。
    完成後,請按一下新增系統
    新增 RTS 使用者介面的擷取畫面
  13. 當您回到選取遠端訓練系統標籤時,請驗證已選取您的系統,然後按下一步
  14. 檢查您的設定,然後按一下建立
  15. 當 Federated Learning 實驗開始之後,其狀態為擱置。 當您的實驗已備妥可供當事方連接之後,狀態將變更為設定 – 正在等待遠端系統。 這可能需要幾分鐘的時間。
    訓練使用者介面的擷取畫面
  16. 若要下載當事方配置以及可在遠端方執行的 Python Script,請按一下檢視設定資訊
  17. 按一下您建立的每個遠端訓練系統旁邊的「下移鍵」,然後按一下 Python Script。 將 Script 儲存至您機器上的目錄。
    訓練使用者介面的擷取畫面
  18. 這裡下載展示區中的 MNIST 手寫資料集。 將其解壓縮至與上一步相同的目錄。
  19. 這裡下載資料處理程式 mnist_keras_data_handler.py,並將其儲存至 Python Script 所在的目錄。
  20. 現在,同一目錄中存在 mnist_keras_data_handler.pymnist-keras-test.pklmnist-keras-train.pkl 這三個遠端訓練 Python Script。
  21. 透過為遠端訓練系統中定義的使用者填入資料檔案位置、資料處理程式和 API 金鑰來編輯 Python Script。
     from ibm_watson_machine_learning import APIClient
    from ibmfl.party.party import Party
    	
    	
    wml_credentials = {
                           "url": "https://us-south.ml.cloud.ibm.com",
        "apikey": "<API KEY>"
    }
    	
    wml_client = APIClient(wml_credentials)
    	
    party_config = {
        "aggregator": {
            "ip": "us-south.ml.cloud.ibm.com/ml/v4/trainings/dc7ff18e-04fb-4e33-a005-1fedc156fab6"
        },
        "connection": {
            "info": {
                "id": "f0546938-4852-4180-af7b-10b083b43ef7"
            }
        },
        # Supply the name of the data handler class and path to it.
        # The info section may be used to pass information to the 
        # data handler.
        # For example,
        # 	"data": {
        # 		"info": {
        # 			"npz_file":"./example_data/example_data.npz"
        # 		},
        # 		"name": "MnistSklearnDataHandler",
        # 		"path": "example.mnist_sklearn_data_handler"
        # 	},
        "data": {        
            "name": "MnistTFDataHandler",
            "path": "./mnist_keras_data_handler.py",
            "info": {
                "train_file": "./mnist-keras-train.pkl",
                "test_file": "./mnist-keras-test.pkl"
            },
        },
        "local_training": {
            "name": "FedAvgLocalTrainingHandler",
            "path": "ibmfl.party.training.fedavg_local_training_handler"
        },
        "protocol_handler": {
            "name": "PartyProtocolHandler",
            "path": "ibmfl.party.party_protocol_handler"
        }
    }
    	
    p = Party( config_dict = party_config, token = "Bearer " + wml_client.wml_token )
    p.start()
    	
    while not p.connection.stopped:
        pass
    
  22. 執行 Python Script。
  23. 您可以從使用者介面監視 Federated Learning 實驗的狀態。

Federated Learning Notebook 展示

為協助使用者學習 Federated Learning 的過程,我們還提供了 2 個以 Python 編寫的 Notebook 範例,使用者透過執行它們,在 Federated Learning 中僅使用程式碼便可設定、呼叫及訓練其模型,而不會涉及 Federated Learning 使用者介面。 範例中也會提供 MNIST 資料集和 Tensorflow 2 Keras 模型範本,以示範 Federated Learning 多項功能中的一項。

下載 Federated Learning 專案展示

針對 Cloud Pak for Data,Federated Learning 是一個包含 2 組 MNIST 資料集、1 個模型範本和 2 個 Notebook(1 個將由 Federated Learning 管理者執行,1 個將由當事方執行)的專案。 此專案需要使用者上傳未經訓練的範例模型。 它還要求使用者具有 Federated Learning 存取權。

  1. 這裡下載專案。
  2. 移至 CPD 起始目錄,然後按一下新建專案 > 從檔案建立專案
  3. 上傳下載的 zip 檔。 這時已建立專案以供使用。

附註:此展示僅適用於 IBM Cloud Pak for Data。 IBM Watson Studio Cloud 的展示可在這裡找到。