Fate
是一個工業級聯邦學習框架,所謂聯邦學習指的就是可以聯合多方的資料,共同構建一個模型;
與傳統資料使用方式相比,它不需要聚合各方資料搭建 資料倉儲,聯邦學習在聯合計算建模的過程中,多方機構之間的資料是不會進行共用的,實現資料的 可用不可見;本文主要分享隱私計算平臺 Fate
的相關基本概念,以及基於 Docker 的單機部署。
隱私計算
是指在保護資料本身不對外洩露的前提下實現資料分析計算的技術集合,實現資料的 可用不可見 的目的;在充分保護資料和隱私安全的前提下,實現資料價值的轉化和釋放。
圖靈獎得主姚期智院士在1982年提出的 百萬富翁
問題:
假設有兩個百萬富翁,都想比較誰更富有,但是他們都想保護自己的 隱私 不願意讓對方或者任何第三方知道自己真正擁有多少錢。如何在保護雙方隱私的情況下,計算出誰更有錢呢?
此問題開創了安全多方計算領域,在如今以區塊鏈為先導的一系列可信架構中,多方計算問題是建立機器信任的關鍵技術之一。
目前實現隱私計算的主流技術主要分為三大方向:第一類是以 多方安全計算
為代表的基於密碼學的隱私計算技術;第二類是以 聯邦學習
為代表的人工智慧與隱私保護技術融合衍生的技術;第三類是以 可信執行環境
為代表的基於可信硬體的隱私計算技術。
不同技術往往可以 組合 使用,在保證原始資料安全和隱私性的同時,完成對資料的計算和分析任務。
在聯邦學習當中主要有兩種模式:
指的是在聯合的多方當中,特徵 是相同的,但是 使用者 不一樣;那麼通過聯合呢,就可以在訓練模型時 擴充套件樣本數量;
例如:有兩家不同地區銀行(北京與廣州)由於銀行間的業務相似,所以資料的特徵(欄位)大概率是相同的;但是它們的使用者群體分別來自北京與廣州的居住人口,使用者的交集相對較小;這種場景就比較適合使用 橫向聯邦 用於增加模型訓練的使用者資料 擴充套件資料量。
指的是在聯合的多方當中,各方的 使用者 重疊較多,但是它們的 特徵 是不一樣的,那麼通過聯合呢,就可以在訓練模型時 擴充套件特徵維度;
例如:同一地區的商場與銀行,它們的使用者群體很有可能包含該地的大部分居民,使用者的交集可能較大;由於銀行記錄的都是使用者的收支行為與信用評級,而商場則保有使用者的購買歷史,因此它們的使用者特徵交集較小;這種場景就比較適合使用 縱向聯邦 用於增加模型訓練的特徵數量 擴充套件模型能力。
FATE
(Federated AI Technology Enabler)是微眾銀行人工智慧團隊自研的全球首個聯邦學習工業級開源框架,它提供一種基於資料隱私保護的安全計算框架,為機器學習、深度學習、遷移學習演演算法提供強有力的安全計算支援。並內建保護線性模型,樹模型以及神經網路在內的多種機器學習演演算法。
github地址:https://github.com/FederatedAI/FATE
在 Fate 裡面存在以下三種角色:
為資料的應用方,指的是在實際的建模場景中有業務需求去應用這些資料;並且在縱向演演算法中,Guest 往往是有標籤 y 的一方。
為資料的提供方,通常它只是一個合作的機構負責提供資料來輔助 guest 完成這個建模,只是幫助提升訓練效果。
為第三方共同作業者,用來輔助多方完成聯合建模的,不提供資料主要是負責發放公鑰,加解密,還有聚合模型等功能。
首先設定環境變數 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 https://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
執行以下命令啟動:
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 兩方角色的任務。
掃碼關注有驚喜!