隱私計算FATE-核心概念與單機部署
- 2022 年 6 月 13 日
- 筆記
一、說明
Fate
是一個工業級聯邦學習框架,所謂聯邦學習指的就是可以聯合多方的數據,共同構建一個模型;
與傳統數據使用方式相比,它不需要聚合各方數據搭建 數據倉庫,聯邦學習在聯合計算建模的過程中,多方機構之間的數據是不會進行共享的,實現數據的 可用不可見;本文主要分享隱私計算平台 Fate
的相關基本概念,以及基於 Docker 的單機部署。
二、隱私計算
隱私計算
是指在保護數據本身不對外泄露的前提下實現數據分析計算的技術集合,實現數據的 可用不可見 的目的;在充分保護數據和隱私安全的前提下,實現數據價值的轉化和釋放。
圖靈獎得主姚期智院士在1982年提出的 百萬富翁
問題:
假設有兩個百萬富翁,都想比較誰更富有,但是他們都想保護自己的 隱私 不願意讓對方或者任何第三方知道自己真正擁有多少錢。如何在保護雙方隱私的情況下,計算出誰更有錢呢?
此問題開創了安全多方計算領域,在如今以區塊鏈為先導的一系列可信架構中,多方計算問題是建立機器信任的關鍵技術之一。
目前實現隱私計算的主流技術主要分為三大方向:第一類是以 多方安全計算
為代表的基於密碼學的隱私計算技術;第二類是以 聯邦學習
為代表的人工智慧與隱私保護技術融合衍生的技術;第三類是以 可信執行環境
為代表的基於可信硬體的隱私計算技術。
不同技術往往可以 組合 使用,在保證原始數據安全和隱私性的同時,完成對數據的計算和分析任務。
三、聯邦學習
在聯邦學習當中主要有兩種模式:
橫向聯邦
指的是在聯合的多方當中,特徵 是相同的,但是 用戶 不一樣;那麼通過聯合呢,就可以在訓練模型時 擴展樣本數量;
例如:有兩家不同地區銀行(北京與廣州)由於銀行間的業務相似,所以數據的特徵(欄位)大概率是相同的;但是它們的用戶群體分別來自北京與廣州的居住人口,用戶的交集相對較小;這種場景就比較適合使用 橫向聯邦 用於增加模型訓練的用戶數據 擴展數據量。
縱向聯邦
指的是在聯合的多方當中,各方的 用戶 重疊較多,但是它們的 特徵 是不一樣的,那麼通過聯合呢,就可以在訓練模型時 擴展特徵維度;
例如:同一地區的商場與銀行,它們的用戶群體很有可能包含該地的大部分居民,用戶的交集可能較大;由於銀行記錄的都是用戶的收支行為與信用評級,而商場則保有用戶的購買歷史,因此它們的用戶特徵交集較小;這種場景就比較適合使用 縱向聯邦 用於增加模型訓練的特徵數量 擴展模型能力。
四、Fate
FATE
(Federated AI Technology Enabler)是微眾銀行人工智慧團隊自研的全球首個聯邦學習工業級開源框架,它提供一種基於數據隱私保護的安全計算框架,為機器學習、深度學習、遷移學習演算法提供強有力的安全計算支援。並內置保護線性模型,樹模型以及神經網路在內的多種機器學習演算法。
github地址://github.com/FederatedAI/FATE
在 Fate 裡面存在以下三種角色:
Guest
為數據的應用方,指的是在實際的建模場景中有業務需求去應用這些數據;並且在縱向演算法中,Guest 往往是有標籤 y 的一方。
Host
為數據的提供方,通常它只是一個合作的機構負責提供數據來輔助 guest 完成這個建模,只是幫助提升訓練效果。
Arbiter
為第三方協作者,用來輔助多方完成聯合建模的,不提供數據主要是負責發放公鑰,加解密,還有聚合模型等功能。
五、部署
5.1. 安裝鏡像
首先設置環境變數 version
用於後面指定 Fate
的版本,執行以下命令:
export version=1.8.0
使用的是當前最新版本,可按需修改。
鏡像有 兩種安裝 方式,選其一即可;
方式一 如果伺服器能訪問公網的話,可直接拉取騰訊雲容器鏡像:
docker pull federatedai/standalone_fate:${version}
docker tag ccr.ccs.tencentyun.com/federatedai/standalone_fate:${version} federatedai/standalone_fate:${version}
方式二 如果伺服器沒有公網,則可以通過下載鏡像然後導入的方式:
在有網路的機器上下載鏡像包:
wget //webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/${version}/release/standalone_fate_docker_image_${version}_release.tar.gz
在目標機器導入鏡像:
docker load -i standalone_fate_docker_image_${version}_release.tar.gz
查看已安裝的鏡像:
docker images | grep federatedai/standalone_fate
5.2. 啟動容器
執行以下命令啟動:
docker run -d --name standalone_fate -p 8080:8080 federatedai/standalone_fate:${version};
六、測試
Fate 裡面自帶了測試任務;
首先執行以下命令,進入 Fate 的容器中:
docker exec -it $(docker ps -aqf "name=standalone_fate") bash
執行以下命令,啟動 toy 測試:
flow test toy -gid 10000 -hid 10000
成功後顯示以下內容:
success to calculate secure_sum, it is 2000.0
七、圖形化介面
FATE Board
是 Fate 裡面負責可視化的服務組件,在單機版容器中已經集成了該服務,可以通過 8080
埠訪問:
帳號和密碼都是
admin
通過右上角的 JOBS
按鈕可以查看我們 Toy測試
所運行的任務:
因為是聯邦學習所以看到 guest 和 host 兩方角色的任務。
掃碼關注有驚喜!