背景
FATE (Federated AI Technology Enabler) 是微眾銀行AI部門發(fā)起的開源項目,為聯(lián)邦學(xué)習(xí)生態(tài)系統(tǒng)提供了可靠的安全計算框架。FATE項目使用多方安全計算 (MPC) 以及同態(tài)加密 (HE) 技術(shù)構(gòu)建底層安全計算協(xié)議,以此支持不同種類的機器學(xué)習(xí)的安全計算,包括邏輯回歸、基于樹的算法、深度學(xué)習(xí)和遷移學(xué)習(xí)等。
FATE官方網(wǎng)站:https://fate.fedai.org/
版本1.4.0
聯(lián)邦機器學(xué)習(xí)(Federated Machine Learning)
- Home Secureboost(基于xgboost的一個加密boost)
- 對線性模型的AIC/BIC的逐步回歸
- Hetero Optimal Feature Binning(異構(gòu)優(yōu)化的特征分箱),支持iv/gini/chi-square/ks且允許 非對稱分箱方法
- 支持AI生態(tài):引入了pytoch包來支持人神經(jīng)網(wǎng)絡(luò)
- 同構(gòu)框架解構(gòu),簡化同構(gòu)相關(guān)算法的開發(fā)
- 為不同算法提供更早的停止策略
- 多類型分類的本地參照物
- 一致的預(yù)測評估
- 有效性策略優(yōu)化,訓(xùn)練有效性的3倍速
Fate-flow(流的支持)
- 重構(gòu)模型管理,本地文件存儲,更易伸縮且信息更豐富的存儲解構(gòu)
- 在可靠的分布式系統(tǒng)上,支持模型的導(dǎo)入導(dǎo)出,存儲
- 任務(wù)隊列使用mysql管理而不是redis,減少系統(tǒng)的復(fù)雜性
- 提供上傳客戶端上傳本地文件
- 自動檢測存在的表且提供刪除選項
- 系統(tǒng),算法,調(diào)度日志的隔離,調(diào)度日志可以被獨立審查
Eggroll
- 穩(wěn)定性提升:新的資源管理組件有全新的會話機制,會話出錯后,管理組件呢也能通過簡單的方法調(diào)用進(jìn)行清理。去掉了存儲服務(wù),沒有c++/本地庫文件需要編譯。聯(lián)邦學(xué)習(xí)算法在28%的丟包率下依然工作。
- 性能提升:在Eggroll2上,聯(lián)邦學(xué)習(xí)算法有極大的性能提升,部分算法有10倍性能提升,聯(lián)邦場景下,join interface比pyspark快16倍
- 用戶體驗提升:快速開發(fā),支持maven,pip,config和start。輕量級依賴,可以從requirements.txt(python的依賴文件),pom.xml(java的依賴文件)看出。簡易的調(diào)試,必要的上下文提供,實時的運行狀態(tài)可以在日志和數(shù)據(jù)庫中查看。一些jvm應(yīng)用demo提供。
版本1.3.0
FederatedREC(聯(lián)邦推薦算法)
- 添加聯(lián)合推薦子模塊
- 添加異構(gòu)因子分解
- 添加同構(gòu)因子分解
- 添加異構(gòu)矩陣分解
- 添加異構(gòu)奇異值分解
- 添加異構(gòu)SVD++(滿足最近鄰分解)
- 添加異構(gòu)廣義矩陣分解
聯(lián)邦機器學(xué)習(xí)
- 支持非均勻一般線性模型(異構(gòu)LR、異構(gòu)LinR、異構(gòu)poissonR)中用稀疏數(shù)據(jù)訓(xùn)練
- 修正了32M分位數(shù)限制,以支持更高的特征維度
- 修正了SecureBoost直方圖統(tǒng)計的32M限制,以支持更高的特征維度訓(xùn)練。
- 在OneHot編碼器中添加異常參數(shù)和輸入數(shù)據(jù)檢測
- 修復(fù)在訓(xùn)練過程中,不傳遞驗證數(shù)據(jù)來適應(yīng)支持?jǐn)?shù)據(jù)評估驗證的過程
Fate-Flow
- 添加清除job的CLI(命令行交互界面)以清除輸出和中間結(jié)果,包括數(shù)據(jù)、度量和會話
- 支持通過CLI獲取表命名空間和輸出數(shù)據(jù)的名稱
- 在某些特殊情況下修復(fù)刪除job不成功的執(zhí)行
- 改進(jìn)日志系統(tǒng),添加更多異常和運行時狀態(tài)提示
版本1.2.0
聯(lián)邦學(xué)習(xí)
- 添加異構(gòu)深層神經(jīng)網(wǎng)絡(luò)
- 添加秘密共享協(xié)議SPDZ
- 在SPDZ中加入異構(gòu)特征相關(guān)算法并支持異構(gòu)Pearson相關(guān)性計算
- 增加異構(gòu)的SQN優(yōu)化器,可用于異構(gòu)回歸和異構(gòu)回歸,可顯著降低通信成本
- 支持?jǐn)U展的重復(fù)id取交集
- 異構(gòu)特征分箱中的多主節(jié)點支持
- 異構(gòu)特征篩選中的多主節(jié)點支持
- 支持異構(gòu)特征分箱中離散特征的IV計算
- 支持異構(gòu)特征分箱中原始特征值到WOE的轉(zhuǎn)換
- 在異類特征篩選中添加手動過濾器
- 支持性能與sklearn' logistic回歸的對比
- 聯(lián)邦訓(xùn)練迭代過程中對象/表的自動清理
- 提高大對象的傳輸性能
- 添加用于提交和運行任務(wù)的自動腳本
Fate-Flow
- 添加數(shù)據(jù)管理模塊,用于在運行的作業(yè)中記錄上傳的數(shù)據(jù)表和模型的輸出,以及查詢和清理的命令行工具。
- 支持注冊中心簡化FATE Flow和FATE Serving之間的通信配置
- 重構(gòu)模型發(fā)布邏輯,命運流將模型直接推向fate服務(wù)。將fate服務(wù)和Eggroll分離,離線和在線架構(gòu)只通過fate-flow連接。
- 提供CLI查詢數(shù)據(jù)上傳記錄
- 按行上傳和下載數(shù)據(jù)支持進(jìn)度統(tǒng)計
- 添加一些異常診斷提示
- 支持向任務(wù)添加注釋信息
- 本機部署
- 修復(fù)EggRoll啟動腳本中的錯誤,添加mysql,redis啟動選項。
- 禁用mysql服務(wù)的主機名解析配置。
- 使用自動獲取模式更新軟件打包腳本中每個模塊的版本號。
版本1.1.1
主要特點和改進(jìn)
- 添加基于ubuntu的集群部署
- 添加支持?jǐn)?shù)據(jù)合并的聯(lián)合組件。
- 支持在一個Onehot Encoder中顯示部分列
- 支持任務(wù)結(jié)束后的中間數(shù)據(jù)清理
- 求交加速
- 優(yōu)化部署過程
漏洞修補
- 修復(fù)secureboost“提前停止”的錯誤
- 修復(fù)下載api中的錯誤
- 修復(fù)spark后端的錯誤
版本1.1
聯(lián)邦機器學(xué)習(xí)
- 為支持安全聚合的同構(gòu)聯(lián)邦學(xué)習(xí)提供一個通用算法框架
- 加深度神經(jīng)網(wǎng)絡(luò)
- 添加異質(zhì)線性回歸
- 添加非均勻泊松回歸
- 支持異構(gòu)邏輯回歸中的多主節(jié)點
- 支持異構(gòu)線性回歸中的多主節(jié)點
- 支持多主節(jié)點求交
- 利用緩存加速求交
- 重構(gòu)異構(gòu)廣義線性模型框架
- 異構(gòu)SecureBoost中支持仿射同態(tài)加密
- 支持異構(gòu)SecureBoost中,對于缺失值進(jìn)行輸入數(shù)據(jù)
- 支持訓(xùn)練期間的評估并驗證數(shù)據(jù)
- 添加spark作為計算引擎
fate-flow
- 查詢?nèi)蝿?wù)狀態(tài)的上載和下載,支持CLI
- 支持取消等待任務(wù)
- 支持設(shè)置任務(wù)超時
- 支持在任務(wù)日志文件夾中存儲任務(wù)調(diào)度日志
- 添加身份驗證來控制測試版,包括其中組件、命令、角色
版本1.0.2
- Python和JDK環(huán)境僅用于運行獨立版本的快速體驗
- 支持集群版本docker部署
- 添加中文部署指南
- 部署群集版本時,支持用于快速體驗的獨立版本運行。
- Python服務(wù)日志將保留14天。
版本1.0
這個版本包括兩個新產(chǎn)品,分別是fate面板和fate-flow,面板作為聯(lián)邦建模的可視化工具,fate流是聯(lián)邦學(xué)習(xí)的端到端pipeline平臺。此版本包含對FederatedML的重要改進(jìn),它可以更好地跟蹤聯(lián)邦學(xué)習(xí)算法的運行進(jìn)度。
fate面板
- 聯(lián)邦學(xué)習(xí)任務(wù)面板
- 聯(lián)邦學(xué)習(xí)任務(wù)可視化
- 聯(lián)合學(xué)習(xí)任務(wù)管理
- 實時日志面板
fate-flow
- DAG定義Pipeline
- 聯(lián)邦多方非對稱DSL解析器
- 聯(lián)邦學(xué)習(xí)生命周期管理
- 聯(lián)邦任務(wù)協(xié)同調(diào)度
- 數(shù)據(jù)、度量、模型等的跟蹤
- 聯(lián)邦多方模型管理
聯(lián)邦ML
- 用fate流更新聯(lián)邦建模的所有算法模塊運行狀態(tài)
- 中間統(tǒng)計結(jié)果在所有算法模塊的面板中可視化。
- 支持Nesterov Momentum SGD優(yōu)化器
- 基于仿射變換的加同態(tài)加密方案
- 聯(lián)邦特征分享支持稀疏的輸入
- 更新評估指標(biāo),如ks、roc、gain、lift curve等
- 更新算法的參數(shù)定義類
fate服務(wù)
- 在線聯(lián)邦接口添加在線聯(lián)邦模型的DSL解析器
版本 0.3
聯(lián)邦學(xué)習(xí)
- 支持多標(biāo)簽分類任務(wù)的OneVsALL
- 異方差Logistic回歸中的垃圾回收
- 為sigmoid和對數(shù)邏輯函數(shù)添加數(shù)值穩(wěn)定。
- 支持異構(gòu)Logistic回歸和異構(gòu)SecureBoost的不同計算模式
- 聯(lián)邦特征組合與聯(lián)邦特征選擇的解耦
- 在Hetero SecureBoost中增加特征重要性計算
- 在Hetero SecureBoost中添加多主節(jié)點
- 支持標(biāo)簽:值稀疏輸入數(shù)據(jù)
- 支持輸出交集id與交集中的特征實例
- 支持OneHot模塊。
- 支持聯(lián)邦特性分箱的bucket分箱。
- 支持定點數(shù)上的加法、sub、mul、div、gt、lt、eq等數(shù)學(xué)運算符
- 為參數(shù)設(shè)置添加權(quán)限驗證
fate服務(wù)
- 為多方推理結(jié)果添加多級緩存
- 添加startInferceJob和getInferenceResult接口以支持推理過程異步化
- 規(guī)范化推理返回碼
- 推理匯總?cè)罩竞屯评砑?xì)節(jié)日志的實時日志記錄
- 改進(jìn)主機前、后處理適配器和數(shù)據(jù)訪問適配器的加載
eggroll
- 新的計算和存儲api
- 穩(wěn)定性優(yōu)化
- 性能優(yōu)化
- 存儲使用率改進(jìn)
- 添加Mini FederatedML測試任務(wù)示例
- 使用任務(wù)管理器提交當(dāng)前示例的分布式任務(wù)
- 錯誤修復(fù)和其他更改
- 修復(fù)檢測一個最大列溢出錯誤。
- 修復(fù)數(shù)據(jù)IO密集格式不讀取主機數(shù)據(jù)頭錯誤。
- 修正統(tǒng)計函數(shù)調(diào)用錯誤
- 修復(fù)聯(lián)合功能選擇的錯誤,每個參與方至少保留一個功能
- 出于安全考慮,不允許在LR模塊中使用小的批量。
- 修復(fù)聯(lián)合功能選擇模塊中的命名錯誤。
- 在某些極端情況下修復(fù)自動發(fā)布模型信息的錯誤
- 修復(fù)了定點數(shù)中的一些溢出錯誤
- 修復(fù)許多其他錯誤。
版本0.2
fate-flow
- 添加模型管道線
- 添加異構(gòu)聯(lián)合特征分箱工作流
- 添加異構(gòu)聯(lián)合特征選擇工作流
- 添加異構(gòu)dnn工作流
- 為訓(xùn)練,預(yù)測,較差驗證添加求交算子
聯(lián)邦ML
- 支持svm稀疏格式輸入數(shù)據(jù)
- 支持標(biāo)簽稀疏格式輸入數(shù)據(jù)
- 添加異聯(lián)邦特性分箱
- 添加異構(gòu)聯(lián)邦特征選擇
- 添加功能定標(biāo)器:MinMaxScaler和StandardScaler
- 為缺失值填充添加特征輸入
- 為數(shù)據(jù)實例添加數(shù)據(jù)統(tǒng)計
- 支持原始交集可配置的編碼和主計算角色
- 添加采樣器:隨機采樣器和分層采樣器
- 支持SecureBoost中的回歸
- 支持回歸評估
- 支持分散化FTL
- 通過DNN添加特征提取
- 將模型格式更改為ProtoBuf
- 增加異常參數(shù)檢測
- 添加異常輸入數(shù)據(jù)檢測
fate服務(wù)(聯(lián)邦學(xué)習(xí)模型的在線推理)
- 動態(tài)加載聯(lián)邦學(xué)習(xí)模型。
- 使用聯(lián)邦學(xué)習(xí)模型的實時預(yù)測。
- 模型管理
- 版本控制
- 再現(xiàn)性
- 查詢,搜索
- 任務(wù)管理器
- 添加加載文件/下載文件
- 從本地文件添加導(dǎo)入ID
- 添加開始工作流
- 添加工作流任務(wù)隊列
- 添加查詢?nèi)蝿?wù)狀態(tài)
- 添加Get Runtime conf
- 添加刪除任務(wù)
Eggroll
- 為多處理器添加節(jié)點管理器以提高分布式計算性能
- 添加C++重寫存儲服務(wù)
- 添加eggroll清理API
部署
- 添加自動部署
- 改進(jìn)部署文檔
例子
- 添加異構(gòu)聯(lián)邦特征分箱示例
- 添加異構(gòu)聯(lián)邦特征選擇示例
- 添加異構(gòu)DNN示例
- 添加小例子
- 添加任務(wù)管理器示例
- 添加服務(wù)示例
- 錯誤修復(fù)和其他更改
- Hetero-LR Minibath 修正
- 梯度平均修正
- 代理1秒延遲錯誤修正
- 修正了訓(xùn)練流程
版本 0.1
初始化版本
工作flow
- 支持求交工作流
- 支持訓(xùn)練工作流程
- 支持預(yù)測工作流
- 支持評估工作流
- 支持模型加載和保存工作流
聯(lián)邦ML
- 支持樣本比對的分布式安全求交和原始求交
- 支持分布式同質(zhì)LR和異構(gòu)LR
- 支持分布式SecureBoost
- 支持分布式安全聯(lián)邦遷移學(xué)習(xí)
- 支持二值和多類評估
- 支持模型交叉驗證
- 支持小批量
- 支持L1,L2正則化
- 支持多方同構(gòu)聯(lián)邦聚合器
- 支持多方異構(gòu)聯(lián)邦聚合器
- 支持部分同態(tài)加密MPC協(xié)議
結(jié)構(gòu)
- 計算api的初始版本
- 存儲api的初始發(fā)布
- 聯(lián)合API的初始發(fā)布
- 跨站點網(wǎng)絡(luò)通信(即“聯(lián)合”)的初始發(fā)布
- 獨立運行時的初始版本,包括計算引擎和k-v存儲
- 分布式運行時的初始發(fā)布,包括分布式計算引擎、分布式k-v存儲、元數(shù)據(jù)管理和站點內(nèi)/跨站點網(wǎng)絡(luò)通信
- 支持跨站點異構(gòu)基礎(chǔ)設(shè)施
- 建模與推理的初始支持
部署
- 支持獨立(docker&manual)部署
- 支持群集部署