隱私計算 FATE - 模型訓練
一、說明
本文分享基於 Fate 自帶的測試樣例,進行
縱向邏輯迴歸
演算法的模型訓練,並且通過
FATE Board
視覺化檢視結果。
本文的內容為基於《隱私計算 FATE - 概念與單機部署指南》中部署的環境。
二、進入容器
執行以下命令,進入 Fate 的容器中:
docker exec -it $(docker ps -aqf "name=standalone_fate") bash
可以看到其中有一個
examples
的目錄,裡面包含各種演算法的測試樣例,以及測試的資料。
進入到
examples
後,建立一個
my_test
的目錄:
cd examplesmkdir my_test
注意:後面所有的操作都預設在該目錄下執行。
三、上傳資料
第一步需要準備好訓練要用的資料,我們可以通過
csv檔案
把資料上傳到 Fate 裡面;
自帶的測試資料都在容器裡的
/data/projects/fate/examples/data
目錄中:
可以看到每種演算法都分別提供了 guest 和 host 兩方的資料。
3.1. 準備 guest 方配置
在
my_test
目錄下,執行以下命令:
vi upload_hetero_guest.json
內容如下:
{ "file": "/data/projects/fate/examples/data/breast_hetero_guest.csv", "head": 1, "partition": 10, "work_mode": 0, "namespace": "experiment", "table_name": "breast_hetero_guest"}
- file:資料檔案的路徑
- head:資料檔案是否包含表頭
- partition:用於儲存資料的分割槽數
- work_mode:工作模式,0 為單機版,1 為叢集版
- namespace:名稱空間
- table_name:資料表名
3.2. 準備 host 方配置
在
my_test
目錄下,執行以下命令:
vi upload_hetero_host.json
內容如下:
{ "file": "/data/projects/fate/examples/data/breast_hetero_host.csv", "head": 1, "partition": 10, "work_mode": 0, "namespace": "experiment", "table_name": "breast_hetero_host"}
注意檔名與表名是和 guest 方不一樣的。
3.3. 執行上傳
執行以下兩個命令,分別上傳 guest 和 host 方的資料:
flow data upload -c upload_hetero_guest.jsonflow data upload -c upload_hetero_host.json
通過 -c 來指定配置檔案。
成功後返回上傳任務的相關資訊:
{ "data": { "board_url": "{ "model_id": "local-0#model", "model_version": "202205070640371260700" }, "namespace": "experiment", "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/202205070640371260700/pipeline_dsl.json", "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/202205070640371260700/local/0/job_runtime_on_party_conf.json", "runtime_conf_path": "/data/projects/fate/fateflow/jobs/202205070640371260700/job_runtime_conf.json", "table_name": "breast_hetero_guest", "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/202205070640371260700/train_runtime_conf.json" }, "jobId": "202205070640371260700", "retcode": 0, "retmsg": "success"}
3.4. 檢查資料
執行以下命令,檢視錶的相關資訊:
flow table info -t breast_hetero_guest -n experiment
執行後返回:
{ "data": { "address": { "home": null, "name": "breast_hetero_guest", "namespace": "experiment", "storage_type": "LMDB" }, "count": 569, "exist": 1, "namespace": "experiment", "partition": 10, "schema": { "header": "y,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9", "sid": "id" }, "table_name": "breast_hetero_guest" }, "retcode": 0, "retmsg": "success"}
四、模型訓練
接下來我們就開始進行建模任務,需要準備兩個配置檔案,流程配置檔案 dsl 和引數配置檔案 conf。
4.1. 準備 dsl 檔案
執行以下命令:
cp /data/projects/fate/examples/dsl/v2/hetero_logistic_regression/hetero_lr_normal_dsl.json /data/projects/fate/examples/my_test/
直接把 Fate 自帶的縱向邏輯迴歸演算法樣例,複製到我們的
my_test
目錄下。
Fate 把各種演算法實現了元件化,dsl 檔案主要配置整個建模流程是由哪些 component 組成的:
比如第一個模組
Reader
就是用於讀取剛剛上傳的訓練資料,然後是
DataTransform
模組,把訓練資料轉換為例項物件,一般所有的建模流程都需要有前面這兩個模組;
總的來說配置一個 component 需要以下內容:
- module:模型元件,Fate 當前支援 37 個模型元件 - input: - date:資料輸入 - module:模型輸入- output: - date:資料輸出 - module:模型輸出
module 是定義這個元件的型別,當前 Fate 已經自帶 37 個元件可以使用,當然我們也可以自己開發新增演算法元件進去;
input 和 output 就是分別設定元件的輸入輸出,兩個同時都支援兩種型別,分別是資料和模型輸入輸出。
4.2. 準備 conf 檔案
執行以下命令:
cp /data/projects/fate/examples/dsl/v2/hetero_logistic_regression/hetero_lr_normal_conf.json /data/projects/fate/examples/my_test/
直接把 Fate 自帶的縱向邏輯迴歸演算法樣例,複製到我們的
my_test
目錄下。
從上圖可以看到在
component_parameters
元素下,配置
Reader
元件所讀取的表名。
該配置主要是配置以下內容:
- DSL 的版本
- 各個參與方的角色以及 party_id
- 元件執行引數
4.3. 提交任務
執行以下命令:
flow job submit -d hetero_lr_normal_dsl.json -c hetero_lr_normal_conf.json
通過 -d 和 -c 來分別指定 dsl 和 conf 配置檔案。
成功後返回訓練任務的相關資訊:
{ "data": { "board_url": "{ "model_id": "arbiter-10000#guest-9999#host-10000#model", "model_version": "202205070226373055640" }, "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/202205070226373055640/pipeline_dsl.json", "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/202205070226373055640/guest/9999/job_runtime_on_party_conf.json", "runtime_conf_path": "/data/projects/fate/fateflow/jobs/202205070226373055640/job_runtime_conf.json", "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/202205070226373055640/train_runtime_conf.json" }, "jobId": "202205070226373055640", "retcode": 0, "retmsg": "success"}
其中有幾個屬性需要關注:
- board_url:這個地址是可以檢視任務情況的 FATE Board 地址。
- job_id:任務的唯一關鍵字,可以在 FATE Board 上通過這個 ID 檢視任務的詳情。
- logs_directory:是日誌的路徑,可以通過這個地址檢視任務的各種日誌資訊。
- model_info:裡面有 model_id 和 model_version 這兩個資訊會在執行預測任務時需要用到,預測之前需要指定基於哪個模型來執行預測任務,而這兩個資訊就是模型的唯一關鍵字。
五、視覺化
5.1. 任務概覽
通過上面返回資訊中
board_url
的地址,在瀏覽器訪問即可進入任務的概覽頁面:
左邊 Dataset info 是各個參與方的資訊,中間呢是任務的執行情況顯示執行的進度條以及耗時,右邊是整個任務流程的元件
DAG
圖,下方是任務日誌資訊。
5.2. 元件輸出
點選中間的
view this job
按鈕,進入任務的詳細資訊:
DAG 圖中的每個元件都是可以點選的,選中
hetero_lr_0
元件,點選右下角的
view the outputs
按鈕,進入
邏輯迴歸 元件的輸出頁面:
左上角有三個 TAG 分別為:
- model output:模型輸出,是演算法元件的訓練結果。
- data output:資料輸出,每個元件資料處理後的輸出,用於下游元件的輸入。
- log:該元件的執行日誌。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019616/viewspace-2905326/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 隱私計算FATE-模型訓練模型
- 隱私計算FATE-離線預測
- 隱私計算FATE-核心概念與單機部署
- 隱私計算 FATE - 多分類神經網路演算法測試神經網路演算法
- 隱私計算FATE-多分類神經網路演算法測試神經網路演算法
- 隱私計算:保護資料隱私的利器
- 隱私計算核心技術
- 百度點石隱私計算平臺與FATE開源框架實現互聯互通框架
- 星環科技Sophon 3.1釋出,模型運管、隱私計算、邊緣計算模型
- 隱私計算資料彙總
- 隱私計算綜述閱讀
- 最近,我和隱私計算幹上了。
- 既保護隱私又快速訓練,Facebook開源Opacus庫
- [踩樓贈書] 新書上市!《隱私計算》——系統揭秘隱私計算,全面駕馭資料要素新書
- 2022隱私計算十大觀察
- 隱私計算相關技術介紹
- 基於區塊鏈的隱私計算區塊鏈
- 銘說 | 淺論資料安全中的隱私計算方法之差分隱私
- 隱私計算之多方安全計算(MPC,Secure Multi-Party Computation)
- 模型訓練時間預測,計算量估計 Scaling Laws for Neural Language Models模型
- 如何利用隱私計算技術消除貧困?
- 全球隱私計算技術發展概覽
- 數字政府隱私計算落地案例介紹
- 終於有人把隱私計算講明白了
- 雲環境下集合隱私計算-解讀
- 2021騰訊隱私計算白皮書(附下載)
- 瓴羊隱私計算產品的定位是什麼?
- 【隱私計算筆談】MPC系列專題(十三):位元分解
- 隱私計算助力資料的安全流通與共享
- 隱私計算是什麼
- 常見的安全模型、攻擊模型和隱私需求模型
- 監控大模型訓練大模型
- PyTorch預訓練Bert模型PyTorch模型
- fasttext訓練模型程式碼AST模型
- 【隱私計算筆談】MPC系列專題(十):安全多方計算下的集合運算
- 隱私計算真的是一項變革性技術麼?
- 基於區塊鏈的隱私計算 - 原理和實踐區塊鏈
- 【隱私計算筆談】MPC系列專題(十二):位元比較