隱私計算FATE-核心概念與單機部署

一、說明

Fate 是一個工業級聯邦學習框架,所謂聯邦學習指的就是可以聯合多方的數據,共同構建一個模型;

與傳統數據使用方式相比,它不需要聚合各方數據搭建 數據倉庫,聯邦學習在聯合計算建模的過程中,多方機構之間的數據是不會進行共享的,實現數據的 可用不可見;本文主要分享隱私計算平臺 Fate 的相關基本概念,以及基於 Docker 的單機部署。

 

二、隱私計算

隱私計算 是指在保護數據本身不對外泄露的前提下實現數據分析計算的技術集合,實現數據的 可用不可見 的目的;在充分保護數據和隱私安全的前提下,實現數據價值的轉化和釋放。

圖靈獎得主姚期智院士在1982年提出的 百萬富翁 問題:

假設有兩個百萬富翁,都想比較誰更富有,但是他們都想保護自己的 隱私 不願意讓對方或者任何第三方知道自己真正擁有多少錢。如何在保護雙方隱私的情況下,計算出誰更有錢呢?

此問題開創了安全多方計算領域,在如今以區塊鏈爲先導的一系列可信架構中,多方計算問題是建立機器信任的關鍵技術之一。

目前實現隱私計算的主流技術主要分爲三大方向:第一類是以 多方安全計算 爲代表的基於密碼學的隱私計算技術;第二類是以 聯邦學習 爲代表的人工智能與隱私保護技術融合衍生的技術;第三類是以 可信執行環境 爲代表的基於可信硬件的隱私計算技術。

不同技術往往可以 組合 使用,在保證原始數據安全和隱私性的同時,完成對數據的計算和分析任務。

 

三、聯邦學習

在聯邦學習當中主要有兩種模式:

橫向聯邦

指的是在聯合的多方當中,特徵 是相同的,但是 用戶 不一樣;那麼通過聯合呢,就可以在訓練模型時 擴展樣本數量

例如:有兩家不同地區銀行(北京與廣州)由於銀行間的業務相似,所以數據的特徵(字段)大概率是相同的;但是它們的用戶羣體分別來自北京與廣州的居住人口,用戶的交集相對較小;這種場景就比較適合使用 橫向聯邦 用於增加模型訓練的用戶數據 擴展數據量

縱向聯邦

指的是在聯合的多方當中,各方的 用戶 重疊較多,但是它們的 特徵 是不一樣的,那麼通過聯合呢,就可以在訓練模型時 擴展特徵維度

例如:同一地區的商場與銀行,它們的用戶羣體很有可能包含該地的大部分居民,用戶的交集可能較大;由於銀行記錄的都是用戶的收支行爲與信用評級,而商場則保有用戶的購買歷史,因此它們的用戶特徵交集較小;這種場景就比較適合使用 縱向聯邦 用於增加模型訓練的特徵數量 擴展模型能力

 

四、Fate

FATE (Federated AI Technology Enabler)是微衆銀行人工智能團隊自研的全球首個聯邦學習工業級開源框架,它提供一種基於數據隱私保護的安全計算框架,爲機器學習、深度學習、遷移學習算法提供強有力的安全計算支持。並內置保護線性模型,樹模型以及神經網絡在內的多種機器學習算法。

github地址:https://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 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

 

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 兩方角色的任務。

 

掃碼關注有驚喜!

file

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章