Categories
程式開發

百度開源聯邦學習框架 PaddleFL:簡化大規模分佈式集群部署


近兩年,聯邦學習技術發展迅速。作為分佈式的機器學習範式,聯邦學習能夠有效解決數據孤島問題,讓參與方在不共享數據的基礎上聯合建模,從技術上打破數據孤島。但是,目前這一技術在很多企業落地遇到了困難,InfoQ 將通過選題的方式逐一揭開各大公司在聯邦學習方面的探索。

為了讓機器學習模型取得更好的效果,開發者往往希望獲得更多數據訓練模型,而有助於解決該問題的聯邦學習受到了越來越多的關注。簡單來說,聯邦學習可以在不共享數據的前提下,利用雙方數據實現模型優化,在數據隱私越來越重要的今天,聯邦學習很好的平衡了隱私和數據利用之間的關係。正因如此,很多科技公司在聯邦學習方向有所探索。

近日,百度宣布開源基於飛槳( PaddlePaddle) 開源框架的聯邦學習框架PaddleFL 。據了解,研究人員可以很輕鬆地用PaddleFL 復現和比較不同的聯邦學習算法;得益於飛槳在大規模並行訓練方面的基礎能力的積累,PaddleFL可以幫助開發者快速實現在大規模分佈式集群中部署聯邦學習系統。對此,InfoQ採訪了百度深度學習研發工程師,為大家進一步剖析PaddleFL的技術原理和提供聯邦學習部署的建議。

PaddleFL為何而生?

眾所周知,百度在2016年就開源了深度學習平台PaddlePaddle,而為了幫助飛槳開發者快速調研一些聯邦學習算法,作為底層編程框架支撐上層應用,PaddleFL應運而生。

百度工程師表示,PaddleFL為聯邦學習研究人員提供了基礎編程框架,並封裝了一些公開的聯邦學習數據集。針對橫向聯邦學習場景,PaddleFL實現了多種不同的優化算法,舉例來說DP-SGD、Fed-Avg、Secure-Aggregate都是在飛槳開源框架靈活的編程組件之上搭建的。此外,借助於飛槳豐富的模型庫和預訓練模型,研究人員也可以快速上手針對一些具體的垂直場景應用進行研究。

百度開源聯邦學習框架 PaddleFL:簡化大規模分佈式集群部署 1

圖1

PaddleFL整體的建設方向可以參考圖1,當前PaddleFL已經開源了完整的橫向聯邦學習能力,底層的編程模型採用飛槳訓練框架,結合飛槳的參數服務器功能,PaddleFL可以實現在Kubernetes集群中進行橫向聯邦學習系統的部署。值得一提的是,儘管橫向聯邦學習與傳統的數據並行分佈式訓練原理一致,但在如何部署訓練任務的方式上有一些區別:

1)橫向聯邦學習中,參與訓練的各方數據格式可能不同,這需要框架能夠支持不同類型數據讀取器,並在同一套訓練系統裡運行。

2)橫向聯邦學習中的各方以及模型參數維護方可能處於不同的集群當中,很難通過一次統一的調度實現多方訓練任務同時啟動。

為此,PaddleFL設計了編譯期階段,在編譯期通過多方協商生成一個具有共識的網絡配置,然後由PaddleFL自動拆分成多方集群需要運行的程序,大大簡化部署過程,同時也開發了二次開發接口允許各方定義私有化的數據讀取器。編譯期和執行期的關係可以參考下圖:

百度開源聯邦學習框架 PaddleFL:簡化大規模分佈式集群部署 2

圖2

當前,PaddleFL已經開源了橫向聯邦的場景,適合有相同類型任務的多個組織進行聯合訓練。針對雲端提供計算資源,但用戶不願意上傳原始數據的應用場景,PaddleFL也開源了一套兩方安全學習的方案。以圖像分類為例,可以參考圖3,用戶通過本地計算資源,利用圖像的預訓練模型的前幾層進行圖片原始數據的編碼,雲端接收客戶端的編碼以及對應的標籤進行訓練,這種模式在保護用戶原始數據的情況下可以提供用戶雲端進行安全訓練的能力。

百度開源聯邦學習框架 PaddleFL:簡化大規模分佈式集群部署 3

圖3

PaddleFL未來之路

據了解,在接下來的迭代中,飛槳將會開源縱向聯邦學習編程框架,並在橫向與縱向之間進行編程接口方面的統一。借助於飛槳訓練框架的快速迭代,PaddleFL在分佈式訓練的速度,跨地域的稀疏通信以及通信的穩定性方面都會得到穩步的提升。在應用層,PaddleFL 還將提供傳統機器學習訓練策略的應用,例如多任務學習、聯邦學習環境下的遷移學習。基於飛槳豐富的模型庫,PaddleFL還將開放更多適合聯邦學習的模型示例和部署教程,方便用戶學習。

由於是基於飛槳開源框架的聯邦學習框架,所以目前安裝PaddleFL的時候會自動安裝飛槳開源框架依賴,兩者有綁定關係。建議開發者能夠把PaddleFL當成底層編程框架,在上層封裝出一些支撐垂直領域的平台,探索聯邦學習的更多產品形態。

企業該如何部署聯邦學習?

雖然我們已經可以看到聯邦學習在一些實際業務場景中有了應用,但只能算是剛剛開始,這項技術目前還遠遠沒有進入大規模落地的階段,這樣意味著存在大量的機會和挑戰。

百度工程師表示,搭建一個方便易用的平台還是十分重要的,參與聯邦訓練的開發者不一定非要知道自己在採用聯邦學習技術,平台能夠讓用戶知道自己的數據很安全且不會洩露,以及業務的實際效果有提升,這才是最關鍵的。

目前來看,百度工程師補充道,面向C端用戶的端上產品,落地聯邦學習的可能性比較大,例如在手機的app端利用聯邦學習為用戶提供快速且安全的個性化能力就是一個典型的橫向聯邦學習場景。企業級的聯邦學習,跨群組、跨分公司的聯邦學習更容易成功,前提是有一個置信的、易用的聯邦學習平台以及相關的政策法規做保障。