Federated Learning Tensorflow 指導教學
本指導教學示範 Federated Learning 的使用,目的是使用來自不同使用者的資料訓練機器學習模型,而無需使用者共用其資料。 這些步驟是在具有使用者介面及 Tensorflow 架構的低程式碼環境中完成。
這是用於執行使用者介面驅動 Federated Learning 實驗的逐步指導教學。 若要查看 API 驅動方法的程式碼範例,請參閱 Federated Learning Tensorflow 範例。
在本指導教學中, admin 是指啟動 Federated Learning 實驗的使用者,而 party 是指在管理者啟動實驗之後傳送其模型結果的一或多個使用者。 雖然指導教學可以由管理者及多個參與方完成,但單一使用者也可以作為管理者和參與方完成完整執行。 為了示範更為簡單,在下列指導教學中,一個參與方只提交一個資料集。 如需管理者及參與方的相關資訊,請參閱 術語。
觀看此簡短視訊指導教學,瞭解如何使用 Watson Studio建立 Federated Learning 實驗。
此視訊提供視覺化方法,以瞭解本文件中的概念及作業。
在本指導教學中,您將學習:
步驟 1: 以管理者身分啟動 Federated Learning
在本指導教學中,您將使用 Tensorflow 架構及 MNIST 資料集來訓練 Federated Learning 實驗。
開始之前
啟動聚集器
建立聯合學習實驗資產:
按一下專案中的 資產 標籤。
按一下 新建作業> 根據分散式資料訓練模型。
輸入實驗的 名稱 ,並選擇性地輸入說明。
在 選取機器學習實例下驗證相關聯的 Watson Machine Learning 實例。 如果您看不到相關聯的 Watson Machine Learning 實例,請遵循下列步驟:
按一下 關聯 Machine Learning 服務實例。
選取現有實例,然後按一下 關聯,或建立 新建服務。
按一下 重新載入 ,以查看相關聯的服務。

按下一步。
配置實驗。
在「 配置 」頁面上,選取 硬體規格。
在 機器學習架構 下拉清單下,選取 Tensorflow 2。
選取 模型類型。
下載未訓練的模型。
回到 Federated Learning 實驗中,在模型規格下按一下選取。
將名為
tf_mnist_model.zip的已下載檔案拖曳至 上傳 檔案 box.1。 針對 軟體規格 下拉清單選取runtime-22.2-py3.10。為模型提供名稱,然後按一下 新增。

按一下 融合方法的 加權平均值 ,然後按 下一步。

定義超參數。
接受預設超參數或視需要進行調整。
完成時,請按下一步。
選取遠端訓練系統。
- 按一下新增系統。

為遠端訓練系統提供名稱。
在 容許的身分下,選擇您所屬的使用者,然後按一下 新增。 在本指導教學中,您可以新增虛擬使用者或您自己,以進行示範。
此使用者必須以具有 編輯者 或更高權限的合作人員身分新增至專案。 針對您想要使用的每個遠端參與方重複此步驟以新增其他系統。完成時,請按一下新增系統。

回到「 選取遠端訓練系統 」頁面,驗證已選取您的系統,然後按 下一步。
檢閱您的設定,然後按一下建立。
監看狀態。 Federated Learning 實驗開始時,其狀態為擱置中。 當實驗已備妥且可讓參與方連接時,狀態即會變更為設定 – 正在等待遠端系統。 可能需要數分鐘。
按一下 檢視設定資訊 ,以下載參與方配置及可在遠端參與方上執行的參與方連接器 Script。
按一下您建立的每一個遠端訓練系統旁邊的下載圖示,然後按一下 當事人連接器 Script。 這會提供參與方連接器 Script。 將 Script 儲存至機器上的目錄。

步驟 2: 訓練模型作為參與方
請遵循下列步驟,將模型訓練為參與方:
確保您使用與管理者相同的 Python 版本。 使用不同的 Python 版本可能會導致相容性問題。 若要查看與不同架構相容的 Python 版本,請參閱 Frameworks 及 Python 版本相容性。
建立新的本端目錄,並將您的當事人連接器 Script 放入其中。
下載資料處理程式 mnist_keras_data_handler.py,方式是用滑鼠右鍵按一下它並按一下將鏈結另存為。 將它儲存至與參與方連接器 Script 相同的目錄。
從我們的「範例」中 下載 MNIST 手寫資料集 。 在與參與方連接器 Script、資料處理程式及其餘檔案相同的目錄中,執行 unzip 指令
unzip MNIST-pkl.zip來解壓縮它。安裝 Watson Machine Learning。
- 如果您使用 Linux,請執行
pip install 'ibm-watson-machine-learning[fl-rt22.2-py3.10]'。 - 如果您使用 Mac OS with M-series CPU and Conda ,請下載 安裝 Script ,然後執行
./install_fl_rt22.2_macos.sh <name for new conda environment>。
您現在在相同目錄中有參與方連接器 Scriptmnist_keras_data_handler.py、mnist-keras-test.pkl及mnist-keras-train.pkl。
- 如果您使用 Linux,請執行
您的參與方連接器 Script 如下所示。 可透過填寫遠端訓練系統中所定義使用者的資料檔位置、資料處理程式及 API 金鑰來進行編輯。 若要取得 API 金鑰,請移至 IBM Cloud 帳戶中的 管理> 存取權 (IAM)> API 金鑰 。 如果您沒有 API 金鑰,請按一下 建立 API 金鑰,填寫欄位,然後按一下 建立。
from ibm_watson_machine_learning import APIClient wml_credentials = { "url": "https://us-south.ml.cloud.ibm.com", "apikey": "<API KEY>" } wml_client = APIClient(wml_credentials) wml_client.set.default_project("XXX-XXX-XXX-XXX-XXX") party_metadata = { wml_client.remote_training_systems.ConfigurationMetaNames.DATA_HANDLER: { # 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, # "name": "MnistSklearnDataHandler", # "path": "example.mnist_sklearn_data_handler", # "info": { # "train_file": pwd + "/mnist-keras-train.pkl", # "test_file": pwd + "/mnist-keras-test.pkl" # } "name": "<data handler>", "path": "<path to data handler>", "info": { "<information to pass to data handler>" } } } party = wml_client.remote_training_systems.create_party("XXX-XXX-XXX-XXX-XXX", party_metadata) party.monitor_logs() party.run(aggregator_id="XXX-XXX-XXX-XXX-XXX", asynchronous=False)執行參與方連接器 Script:
python3 rts_<RTS Name>_<RTS ID>.py。
從 UI 中,您可以監視 Federated Learning 實驗的狀態。
步驟 3: 線上儲存並部署模型
在本節中,您將學習儲存並部署您訓練的模型。
儲存模型。
- 在已完成的 Federated Learning 實驗中,按一下 將模型儲存至專案。
- 為模型提供名稱,然後按一下 儲存。
- 跳至您的專案首頁。
如果您沒有部署空間,請建立部署空間。
- 從導覽功能表
中,按一下 部署。
- 按一下新建部署空間。
- 填寫欄位,然後按一下 建立。
- 從導覽功能表
將模型升級至空間。
- 回到您的專案,然後按一下 資產 標籤。
- 在 模型 區段中,按一下模型以檢視其詳細資料頁面。
- 按一下 升級至空間。
- 選擇訓練模型的部署空間。
- 選取 升級之後移至空間中的模型 選項。
- 按一下升級。
當模型顯示在部署空間內時,請按一下 新建部署。
- 選取 線上 作為 部署類型。
- 為部署指定名稱。
- 按一下建立。
按一下 部署 標籤,以監視模型的部署狀態。
後續的步驟
準備好建立自己的自訂聯合實驗了嗎? 請參閱建立 Federated Learning 實驗中的高階步驟。
