• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    聯(lián)邦學(xué)習(xí)開源框架綜述

    2023-07-20 11:21:16林偉偉李董東許銀海
    關(guān)鍵詞:模型

    林偉偉 石 方 曾 嵐 李董東 許銀海 劉 波

    1 (華南理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 廣州 510006)2 (吉林大學(xué)數(shù)學(xué)學(xué)院 長春 130012)

    3 (華南師范大學(xué)計(jì)算機(jī)學(xué)院 廣州 510631)

    人工智能(artificial intelligence, AI)從1995 年達(dá)特茅斯會議開始經(jīng)過了兩起兩落的發(fā)展.第1 個(gè)高峰期,自動化算法的提出使得人們看到了AI 的希望,但是受計(jì)算能力的限制大規(guī)模任務(wù)訓(xùn)練無法完成,AI 進(jìn)入了第1 個(gè)低谷.第2 個(gè)高峰期,霍普菲爾特神經(jīng)網(wǎng)絡(luò)(Hopfiled neural network, HNN)和反向(back propagation, BP)神經(jīng)網(wǎng)絡(luò)的提出使得大規(guī)模網(wǎng)絡(luò)訓(xùn)練成為可能.但是由于算力和數(shù)據(jù)不夠?qū)е翧I 進(jìn)入了第2 個(gè)低谷.隨著深度神經(jīng)網(wǎng)絡(luò)的提出、硬件設(shè)備計(jì)算能力的提升以及大數(shù)據(jù)的出現(xiàn),AI 迎來了第3個(gè)高峰.特別是近年來智能邊緣設(shè)備的激增,海量的數(shù)據(jù)更是推動了邊緣協(xié)同技術(shù)的發(fā)展.許多研究人員嘗試將AI 技術(shù)和邊緣計(jì)算結(jié)合起來,挖掘龐大邊緣設(shè)備的巨大潛力.其中,Neurosurgeon[1]可以說是較具代表性的研究之一,它的基本思想是將一個(gè)完整的深度神經(jīng)網(wǎng)絡(luò)分割成幾個(gè)更小的部分并將它們下放到邊緣設(shè)備進(jìn)行訓(xùn)練,依靠邊緣設(shè)備和用戶之間的低延遲,可以顯著提高模型訓(xùn)練速度.

    雖然大數(shù)據(jù)時(shí)代提供了海量數(shù)據(jù),但是大部分行業(yè)中的數(shù)據(jù)都是以孤島形式存在.由于隱私安全、公司制度等問題,即使同一個(gè)公司的不同部門之間實(shí)現(xiàn)數(shù)據(jù)整合也非常困難.因此,在現(xiàn)實(shí)中想要聯(lián)合各地的各個(gè)機(jī)構(gòu)進(jìn)行數(shù)據(jù)交流是一項(xiàng)艱巨的任務(wù).由此可見,“數(shù)據(jù)孤島”[2]問題和數(shù)據(jù)隱私安全問題成為了制約AI 發(fā)展的重要因素.

    為了解決存在的問題,聯(lián)邦學(xué)習(xí)(federated learning,FL)應(yīng)運(yùn)而生,并被成功應(yīng)用于工業(yè)界和學(xué)術(shù)界.2016年,谷歌公司在安卓手機(jī)終端研究機(jī)器學(xué)習(xí)時(shí)提出了聯(lián)邦學(xué)習(xí)這一概念和技術(shù)[3-4],旨在保護(hù)隱私安全的前提下進(jìn)行各參與方的數(shù)據(jù)交流.具體來講,多個(gè)數(shù)據(jù)擁有者(如移動設(shè)備)可以在中央服務(wù)器(如服務(wù)提供商)協(xié)調(diào)下訓(xùn)練模型.且在訓(xùn)練過程中,各參與方的原始數(shù)據(jù)始終保留在本地,服務(wù)器主要通過加密機(jī)制下的參數(shù)交換建立共有模型.

    可以看出,聯(lián)邦學(xué)習(xí)技術(shù)是一種“合作共贏”的模式,在這種聯(lián)邦機(jī)制下,聯(lián)邦系統(tǒng)幫助各參與方建立了一個(gè)“共同富?!钡牟呗?特別是對于各商業(yè)企業(yè),聯(lián)邦學(xué)習(xí)可以實(shí)現(xiàn)不同行業(yè)間的數(shù)據(jù)交流,打破數(shù)據(jù)壁壘,實(shí)現(xiàn)各行業(yè)間的協(xié)同發(fā)展.因此,隨著聯(lián)邦學(xué)習(xí)研究的不斷深入,各科研團(tuán)隊(duì)與公司紛紛推出了適用于不同場景的聯(lián)邦學(xué)習(xí)框架,如FATE(federated AI technology enabler)[5]和TensorFlow Federated[6]等.

    據(jù)中國信息通信研究院推出的報(bào)告顯示,2020年通過評測的聯(lián)邦學(xué)習(xí)產(chǎn)品多達(dá)18 款,擁有聯(lián)邦學(xué)習(xí)框架和產(chǎn)品的企業(yè)超過60 多家.除了Google 開源的TensorFlow Federated[7]、OpenMined 開源的PySyft[8]、南加州大學(xué)團(tuán)隊(duì)的FedML[9]和劍橋大學(xué)團(tuán)隊(duì)的Flower[10]外,業(yè)界內(nèi)較為成熟的聯(lián)邦學(xué)習(xí)框架還有微眾銀行的FATE[5]和百度的PaddleFL[11].根據(jù)各框架的受眾定位,其主要被應(yīng)用于工業(yè)產(chǎn)品研究和學(xué)術(shù)研究,以幫助業(yè)界的研究人員了解聯(lián)邦學(xué)習(xí)的原理并進(jìn)一步促進(jìn)聯(lián)邦學(xué)習(xí)理論、算法以及隱私安全等方面的優(yōu)化和創(chuàng)新.由此可見,聯(lián)邦學(xué)習(xí)框架是學(xué)術(shù)研究和工業(yè)應(yīng)用的基石,然而,盡管聯(lián)邦學(xué)習(xí)的研究和開源框架的開發(fā)進(jìn)展迅速,但目前仍鮮有文獻(xiàn)針對各框架進(jìn)行系統(tǒng)分析和比較.因此,為了幫助大家更系統(tǒng)、更快速地了解聯(lián)邦學(xué)習(xí)框架,本文根據(jù)各開源框架在業(yè)界的受眾程度,選取具有代表性的PySyft,F(xiàn)ATE,TensorFlow Federated,PaddleFL, FedML,F(xiàn)lower 框架進(jìn)行詳細(xì)分析和比較.針對不同類型的研究框架,本文首先從框架的系統(tǒng)架構(gòu)和系統(tǒng)功能2 個(gè)層次出發(fā)分別對各框架進(jìn)行詳細(xì)分析;其次從算法、隱私機(jī)制、計(jì)算范式、學(xué)習(xí)類型、工業(yè)支持、可視化、硬件類型等多個(gè)維度對不同框架進(jìn)行對比分析.同時(shí)本文基于目前框架存在的問題,進(jìn)一步討論了未來可能的研究發(fā)展方向,為開源框架的建設(shè)創(chuàng)新、結(jié)構(gòu)優(yōu)化、安全優(yōu)化以及算法優(yōu)化等提供有效思路.

    1 聯(lián)邦學(xué)習(xí)概述

    1.1 聯(lián)邦學(xué)習(xí)的定義及分類

    聯(lián)邦學(xué)習(xí)是一種加密的分布式機(jī)器學(xué)習(xí)范式,一般由多個(gè)客戶端(如移動設(shè)備)和一個(gè)中央服務(wù)器(如服務(wù)提供商)組成.其特點(diǎn)是各參與客戶端的數(shù)據(jù)始終保持在用戶本地,以最大限度保障客戶端數(shù)據(jù)安全.

    聯(lián)邦學(xué)習(xí)常用的框架包含2 種:中心化架構(gòu)和去中心化架構(gòu).中心化架構(gòu)也被稱作客戶端-服務(wù)器架構(gòu),在該架構(gòu)中,各參與客戶端利用自己的本地?cái)?shù)據(jù)和本地資源進(jìn)行本地訓(xùn)練,待訓(xùn)練完成后再將脫敏參數(shù)上傳到服務(wù)器進(jìn)行整合,其具體架構(gòu)如圖1 所示.中心化架構(gòu)的基本流程大致可以分3 步:1)分發(fā)全局模型.中央服務(wù)器初始化全局模型,并根據(jù)不同的客戶端狀態(tài)信息(如是否充電、是否為計(jì)費(fèi)網(wǎng)絡(luò)等)選擇參與訓(xùn)練的客戶端,并將初始化后的模型結(jié)構(gòu)和參數(shù)分發(fā)給所選客戶端.2)訓(xùn)練本地模型并發(fā)回更新.客戶端收到模型后利用本地?cái)?shù)據(jù)執(zhí)行模型訓(xùn)練,在訓(xùn)練一定次數(shù)之后,將更新的模型參數(shù)發(fā)送給服務(wù)器.3)聚合與更新.服務(wù)器對所選客戶端參數(shù)進(jìn)行聚合后更新全局模型,并將更新后的模型及參數(shù)發(fā)送給各客戶端,通過重復(fù)這3 個(gè)步驟直到停止訓(xùn)練.

    Fig.1 Centralized architecture of federated learning system圖1 聯(lián)邦學(xué)習(xí)系統(tǒng)中心化架構(gòu)

    不同于中心化架構(gòu),在去中心化的聯(lián)邦學(xué)習(xí)[12]架構(gòu)中,由于各參與客戶端可以直接通信,不需要借助第三方(服務(wù)器),因此也被稱作對等網(wǎng)絡(luò)架構(gòu),其架構(gòu)如圖2 所示.在該架構(gòu)中,聯(lián)邦學(xué)習(xí)的基本流程與中心化架構(gòu)相似,不同之處在于訓(xùn)練全局模型的任務(wù)是由某一個(gè)參與方發(fā)起,且當(dāng)其他參與方對模型進(jìn)行訓(xùn)練后,各參與方需要將其本地模型加密傳輸給其余參與方.雖然該架構(gòu)減少了第三方服務(wù)器的參與,但是由于所有模型參數(shù)的交互都是加密的,因此需要更多的操作進(jìn)行加密和解密操作.目前在工業(yè)界和學(xué)術(shù)界研究更多的還是基于中心化的聯(lián)邦學(xué)習(xí)架構(gòu).

    Fig.2 Decentralized architecture of federated learning system圖2 聯(lián)邦學(xué)習(xí)系統(tǒng)去中心化架構(gòu)

    此外,在聯(lián)邦學(xué)習(xí)系統(tǒng)中,各參與方的數(shù)據(jù)又具有不同的分布特征.若根據(jù)參與方之間數(shù)據(jù)重疊程度的不同,聯(lián)邦學(xué)習(xí)又可以分為橫向聯(lián)邦學(xué)習(xí)[13]、縱向聯(lián)邦學(xué)習(xí)[14]以及遷移聯(lián)邦學(xué)習(xí)[15].

    如圖3 所示,橫向聯(lián)邦學(xué)習(xí)也稱為特征對齊的聯(lián)邦學(xué)習(xí),適用于各參與方之間數(shù)據(jù)特征空間重疊較多而用戶空間重疊較少的情況.目前橫向聯(lián)邦學(xué)習(xí)的經(jīng)典框架是FedAvg[3],喚醒單詞識別[16]和輸入法下一詞預(yù)測[17]是橫向聯(lián)邦的典型應(yīng)用.縱向聯(lián)邦學(xué)習(xí)如圖4 所示,即樣本對齊的聯(lián)邦學(xué)習(xí),適用于各參與方之間用戶空間重疊較多而特征空間重疊較少或沒有重疊的場景.目前支持縱向聯(lián)邦學(xué)習(xí)的經(jīng)典框架包括FATE,PaddleFL,F(xiàn)edML.聯(lián)邦遷移學(xué)習(xí),如圖5所示,是對橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí)的補(bǔ)充.聯(lián)邦遷移學(xué)習(xí)用于克服數(shù)據(jù)或標(biāo)簽不足的情況,以解決單邊數(shù)據(jù)規(guī)模小和標(biāo)簽樣本少的問題,適用于各參與方用戶空間和特征空間都重疊較少的場景.目前支持聯(lián)邦遷移學(xué)習(xí)的框架主要為FATE.

    Fig.3 Horizontal federated learning圖3 橫向聯(lián)邦學(xué)習(xí)

    Fig.4 Vertical federated learning圖4 縱向聯(lián)邦學(xué)習(xí)

    1.2 聯(lián)邦學(xué)習(xí)與傳統(tǒng)分布式學(xué)習(xí)的區(qū)別

    從系統(tǒng)架構(gòu)上看,聯(lián)邦學(xué)習(xí)與傳統(tǒng)分布式學(xué)習(xí)都是由服務(wù)器和多個(gè)分布式節(jié)點(diǎn)組成,具有較高的相似性.但是相比于傳統(tǒng)分布式學(xué)習(xí),聯(lián)邦學(xué)習(xí)在數(shù)據(jù)、通信以及系統(tǒng)構(gòu)成上又具有自己的特點(diǎn),其與傳統(tǒng)分布式學(xué)習(xí)的主要區(qū)別如表1 所示.

    Table 1 Difference Between Traditional Distributed Learning and Federated Learning表1 傳統(tǒng)分布式學(xué)習(xí)與聯(lián)邦學(xué)習(xí)的區(qū)別

    1.2.1 數(shù)據(jù)方面

    聯(lián)邦學(xué)習(xí)與傳統(tǒng)分布式學(xué)習(xí)在數(shù)據(jù)方面的區(qū)別主要體現(xiàn)在3 個(gè)方面:數(shù)據(jù)分布、數(shù)據(jù)量級和數(shù)據(jù)安全.

    1)數(shù)據(jù)分布.在傳統(tǒng)分布式學(xué)習(xí)中,不同設(shè)備的數(shù)據(jù)通常是均勻、隨機(jī)分布的,具有獨(dú)立同分布的特點(diǎn).而在聯(lián)邦學(xué)習(xí)中,不同設(shè)備的數(shù)據(jù)是其獨(dú)立產(chǎn)生的,由于設(shè)備擁有者的喜好、設(shè)備的地理位置、時(shí)間等的差異往往表現(xiàn)出不同的分布特征,具有非獨(dú)立同分布的特點(diǎn).

    2)數(shù)據(jù)量級.傳統(tǒng)分布式學(xué)習(xí)為了提高訓(xùn)練效率,通常都會把訓(xùn)練數(shù)據(jù)均勻分布在每個(gè)參與設(shè)備上,實(shí)現(xiàn)負(fù)載均衡.然而在聯(lián)邦學(xué)習(xí)中,每個(gè)參與設(shè)備擁有的數(shù)據(jù)量與設(shè)備擁有者的喜好以及設(shè)備自身有關(guān),很難保證不同設(shè)備擁有相近的數(shù)據(jù)量.

    3)數(shù)據(jù)安全.傳統(tǒng)分布式學(xué)習(xí)中的服務(wù)器對參與設(shè)備以及其中的數(shù)據(jù)具有較高的控制權(quán),可以將訓(xùn)練數(shù)據(jù)分布在各個(gè)參與設(shè)備上,也可以對參與設(shè)備進(jìn)行調(diào)度,讓設(shè)備之間進(jìn)行數(shù)據(jù)交換等操作.當(dāng)數(shù)據(jù)具有隱私敏感屬性時(shí),傳統(tǒng)分布式學(xué)習(xí)無疑會給用戶數(shù)據(jù)帶來極大的隱私泄露風(fēng)險(xiǎn).而在聯(lián)邦學(xué)習(xí)過程中,由于參與設(shè)備的數(shù)據(jù)始終保持在本地,服務(wù)器無法直接或間接操作設(shè)備上的數(shù)據(jù),因此參與設(shè)備對數(shù)據(jù)具有絕對的控制權(quán),可以最大限度地保障數(shù)據(jù)隱私和安全.

    1.2.2 通信方面

    聯(lián)邦學(xué)習(xí)與傳統(tǒng)分布式學(xué)習(xí)在通信方面的區(qū)別主要體現(xiàn)在2 個(gè)方面:網(wǎng)絡(luò)穩(wěn)定性和通信代價(jià).

    1)網(wǎng)絡(luò)穩(wěn)定性.傳統(tǒng)分布式場景中的服務(wù)器與參與設(shè)備通常都位于專用的機(jī)房中,且用高速寬帶進(jìn)行互聯(lián),網(wǎng)絡(luò)、運(yùn)行環(huán)境都相對穩(wěn)定.而參與聯(lián)邦學(xué)習(xí)的設(shè)備大多數(shù)是手機(jī)、平板等移動設(shè)備,由于具有移動性,其所處的網(wǎng)絡(luò)環(huán)境并不穩(wěn)定,導(dǎo)致其穩(wěn)定性較差,隨時(shí)都可能與中心服務(wù)器斷開連接.

    2)通信代價(jià).由于傳統(tǒng)分布式場景中的服務(wù)器和參與設(shè)備通常處于同一地理位置,且具有專用的信道進(jìn)行通信,其通信代價(jià)往往較小.而在聯(lián)邦學(xué)習(xí)中,由于參與訓(xùn)練的設(shè)備可能分布在不同的地理位置,與服務(wù)器一般處于遠(yuǎn)程連接的狀態(tài),受不同設(shè)備網(wǎng)絡(luò)帶寬的影響,還存在設(shè)備掉線等不穩(wěn)定情況,因此聯(lián)邦學(xué)習(xí)相比于傳統(tǒng)的分布式學(xué)習(xí)通信代價(jià)要更高.

    1.2.3 系統(tǒng)構(gòu)成

    聯(lián)邦學(xué)習(xí)與傳統(tǒng)分布式學(xué)習(xí)的系統(tǒng)構(gòu)成較為相似,都是由服務(wù)器和多個(gè)分布式節(jié)點(diǎn)組成.不同之處在于,在傳統(tǒng)的分布式學(xué)習(xí)系統(tǒng)中,數(shù)據(jù)分布、計(jì)算以及模型更新都是由服務(wù)器進(jìn)行統(tǒng)一控制,服務(wù)器具有絕對的控制權(quán).而在聯(lián)邦學(xué)習(xí)系統(tǒng)中,由于節(jié)點(diǎn)之間數(shù)據(jù)分布、數(shù)據(jù)量級、計(jì)算能力以及網(wǎng)絡(luò)環(huán)境之間的差別,聯(lián)邦學(xué)習(xí)的系統(tǒng)不但需要考慮數(shù)據(jù)安全性和非獨(dú)立同分布的特點(diǎn),還需要考慮數(shù)據(jù)傳輸時(shí)延等眾多因素.

    1.3 聯(lián)邦學(xué)習(xí)計(jì)算范例

    在聯(lián)邦學(xué)習(xí)中,根據(jù)其目前的應(yīng)用場景,我們將其計(jì)算范例分為單機(jī)模擬、基于拓?fù)浣Y(jié)構(gòu)的分布式訓(xùn)練和移動設(shè)備端訓(xùn)練[9].

    單機(jī)模擬主要是為了幫助研究人員快速了解聯(lián)邦學(xué)習(xí)框架以及測試算法等,比較適合小型研究使用.當(dāng)項(xiàng)目內(nèi)容較為簡單時(shí),可以將項(xiàng)目部署在一臺服務(wù)器上,由該服務(wù)器模擬整個(gè)聯(lián)邦學(xué)習(xí)框架.然而,單機(jī)對于大規(guī)模數(shù)據(jù)計(jì)算和存儲的處理能力有限,當(dāng)需要進(jìn)行復(fù)雜聯(lián)邦學(xué)習(xí)訓(xùn)練時(shí),單機(jī)的硬件資源將無法滿足需求.

    基于拓?fù)浣Y(jié)構(gòu)的分布式訓(xùn)練類似于傳統(tǒng)的分布式訓(xùn)練,由多方協(xié)同進(jìn)行聯(lián)邦計(jì)算,可以用于大型實(shí)驗(yàn)測試和真實(shí)環(huán)境部署(如不同機(jī)構(gòu)組織之間).在該計(jì)算范例中,中央服務(wù)器作為協(xié)調(diào)者負(fù)責(zé)分發(fā)和聚合模型,所有模型的訓(xùn)練都在客戶端完成.因此在分布式訓(xùn)練范例中,通信起著至關(guān)重要的作用.在分布式通信中,應(yīng)用層可以采用的協(xié)議有HTTP 和WebSocket等,會話層則可以基于RPC 進(jìn)行通信.在通信過程中,聯(lián)邦學(xué)習(xí)框架通常采用同態(tài)加密、差分隱私和安全多方計(jì)算等手段保護(hù)隱私安全,以求達(dá)到效率、精度和隱私的平衡.

    聯(lián)邦學(xué)習(xí)的重要計(jì)算范例之一是移動設(shè)備端訓(xùn)練,如移動電話、智能手環(huán)等設(shè)備.在學(xué)習(xí)過程中節(jié)點(diǎn)間需要頻繁通信,非常消耗計(jì)算資源和傳輸資源,然而移動設(shè)備通常計(jì)算能力有限,且由于網(wǎng)絡(luò)狀況的不穩(wěn)定可能隨時(shí)退出訓(xùn)練.因此,除了PySyft,F(xiàn)edML,F(xiàn)lower 外,其他聯(lián)邦學(xué)習(xí)框架并未過多關(guān)注移動設(shè)備訓(xùn)練,而更多考慮在服務(wù)器上訓(xùn)練好模型后,將存儲的模型移植到終端,在終端推理模型.

    2 聯(lián)邦學(xué)習(xí)開源框架

    為了更系統(tǒng)、更快速地了解聯(lián)邦學(xué)習(xí)框架以及不同框架的特點(diǎn),本文根據(jù)開源框架在業(yè)界的受眾程度,選取目前在工業(yè)界和學(xué)術(shù)界影響較大的開源框架進(jìn)行深入分析和介紹,重點(diǎn)從各框架的架構(gòu)設(shè)計(jì)和系統(tǒng)功能2 個(gè)層次對各框架進(jìn)行剖析.

    2.1 PySyft

    PySyft[8]是OpenMined 在2018 年提出、開源于2020 年的一個(gè)基于Python 的隱私保護(hù)深度學(xué)習(xí)框架,它主要借助差分隱私和加密計(jì)算等技術(shù),對聯(lián)邦學(xué)習(xí)過程中的數(shù)據(jù)和模型進(jìn)行分離.PySyft 的設(shè)計(jì)主要依賴于客戶端之間交換的張量鏈,特點(diǎn)是涵蓋了多種隱私機(jī)制,如差分隱私、同態(tài)加密和安全多方計(jì)算;并以可擴(kuò)展的方式進(jìn)行設(shè)計(jì),便于研究人員可以添加新的聯(lián)邦學(xué)習(xí)方法或隱私保護(hù)機(jī)制.

    2.1.1 PySyft 系統(tǒng)架構(gòu)

    由于PySyft 的設(shè)計(jì)主要依賴于客戶端之間交換的張量鏈,因此其系統(tǒng)架構(gòu)的重點(diǎn)是基于張量的鏈抽象模型的設(shè)計(jì).如圖6 所示,基于張量的鏈抽象模型的核心部分是一個(gè)稱為_Syft 張量的抽象,_Syft 張量主要用于表示數(shù)據(jù)的狀態(tài)或變換,并且可以鏈接在一起.鏈結(jié)構(gòu)的頭部始終有PyTorch 張量,并使用子屬性向下訪問由_Syft 張量體現(xiàn)的變換或狀態(tài),使用父屬性向上訪問由_Syft 張量體現(xiàn)的變換或狀態(tài).

    Fig.6 Chain abstract model圖6 鏈抽象模型

    如圖7 所示,_Syft 張量有2 個(gè)重要的子類:第1個(gè)是在實(shí)例化Torch 張量時(shí)自動創(chuàng)建的Local 張量,其作用是在Torch 張量上執(zhí)行與加載運(yùn)算相對應(yīng)的本機(jī)運(yùn)算;第2 個(gè)是當(dāng)將張量發(fā)送給遠(yuǎn)程客戶端時(shí)創(chuàng)建的Pointer 張量.Pointer 張量發(fā)送和取回十分簡便:當(dāng)接收到命令時(shí),整個(gè)鏈將被發(fā)送給客戶端,并被替換為具有雙節(jié)點(diǎn)的鏈(張量(空)和指定擁有數(shù)據(jù)和遠(yuǎn)程存儲地址的Pointer 張量).此外,PySyft 采用了類似指針的方式進(jìn)行多方調(diào)度,當(dāng)向客戶端發(fā)送張量時(shí),客戶端會返回一個(gè)指向該張量的指針,所有操作都將使用該指針執(zhí)行.

    Fig.7 Tensor sending schematic diagram圖7 張量發(fā)送示意圖

    PySyft 還建立了一個(gè)用于客戶端間通信的標(biāo)準(zhǔn)化協(xié)議.在聯(lián)邦學(xué)習(xí)環(huán)境中的客戶端有2 種實(shí)現(xiàn)方式:Network Sockets 和 Web Sockets.Network Sockets 客戶端通過調(diào)用Socket API 來完成應(yīng)用層協(xié)議,實(shí)現(xiàn)不同客戶端之間的通信.而Web Sockets 客戶端從瀏覽器中實(shí)例化,每個(gè)客戶端都被視為設(shè)備上的一個(gè)單獨(dú)實(shí)體,并通過WebSocket API 進(jìn)行通信,為不同機(jī)器上的遠(yuǎn)程客戶端之間的聯(lián)邦學(xué)習(xí)提供了解決方案.此外,由于WebSocket API 是純事件驅(qū)動,因此可以使用異步事件在客戶端監(jiān)聽連接生命周期的每個(gè)階段.

    2.1.2 PySyft 系統(tǒng)功能

    作為注重隱私安全的深度學(xué)習(xí)框架,PySyft 重要的一項(xiàng)系統(tǒng)功能就是基于張量指針集成了SyMPC 多方安全計(jì)算庫以實(shí)現(xiàn)SPDZ 協(xié)議.同時(shí),除安全多方計(jì)算外,PySyft 還支持差分隱私,包括DP-SGD,PATE,Moments Accountant,Laplace 和指數(shù)機(jī)制.同態(tài)加密方面由TenSEAL 庫負(fù)責(zé)完成,其主要依賴Microsoft SEAL中的CKKS,允許各方加密它們的數(shù)據(jù),以便讓不受信任的第三方使用加密數(shù)據(jù)訓(xùn)練模型,而不泄露數(shù)據(jù)本身.除此之外,還有PyDP,Petlib 等庫提供了隱私保護(hù).

    對于聯(lián)邦學(xué)習(xí)類型,PySyft 目前僅可用于橫向聯(lián)邦學(xué)習(xí),涵蓋的聯(lián)邦算法包括FedAvg 等.雖然PySyft 可進(jìn)行基于拆分神經(jīng)網(wǎng)絡(luò)的垂直學(xué)習(xí),并利用PSI 協(xié)議以保護(hù)數(shù)據(jù)集隱私,但仍未提供縱向聯(lián)邦的解決方案.機(jī)器學(xué)習(xí)算法方面,PySyft 支持邏輯回歸和神經(jīng)網(wǎng)絡(luò),如DCGAN 和 VAE 模型.除聯(lián)邦學(xué)習(xí)的基本方法外,PySyft 還支持聯(lián)邦的同步和異步機(jī)制.操作系統(tǒng)方面,PySyft 支持Mac,Windows,Linux.研究人員能進(jìn)行單機(jī)模擬、基于拓?fù)浼軜?gòu)的分布式訓(xùn)練和移動端設(shè)備訓(xùn)練.

    2.1.3 PySyft 版本變化

    雖然OpenMined 提供了多種隱私保護(hù)方式,但目前的版本僅支持橫向聯(lián)邦學(xué)習(xí).其中,2021 年7 月發(fā)布的PySyft 0.2.8 版本取消了以模型和數(shù)據(jù)為中心的概念,引入了動態(tài)和靜態(tài)的聯(lián)邦概念.2021 年9月發(fā)布的PySyft 0.2.9 版本改進(jìn)了函數(shù)加密共享的執(zhí)行速度,添加了對BFV 方案的支持,以及監(jiān)控基準(zhǔn).直到2021 年12 月發(fā)布的最新版 PySyft 0.6 暫時(shí)僅對功能進(jìn)行一定程度上的維護(hù).相較于FATE 和PaddleFL,PySyft 尚未提供高效的部署方案及服務(wù)器ing 端解決方案.

    2.2 FATE

    FATE 是微眾銀行在2019 年開源的聯(lián)邦學(xué)習(xí)框架,旨在解決各種工業(yè)應(yīng)用實(shí)際問題.在安全機(jī)制方面,F(xiàn)ATE 采用密鑰共享、散列[18]以及同態(tài)加密技術(shù),以此支持多方安全模式下不同種類的機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和遷移學(xué)習(xí).在技術(shù)方面,F(xiàn)ATE 同時(shí)覆蓋了橫向、縱向、遷移聯(lián)邦學(xué)習(xí)和同步、異步模型融合,不僅實(shí)現(xiàn)了許多常見聯(lián)邦機(jī)器學(xué)習(xí)算法(如LR[19-20],GBDT,CNN[21]),還提供了一站式聯(lián)邦模型服務(wù)解決方案,包括聯(lián)邦特征工程、模型評估、在線推理、樣本安全匹配等.此外,F(xiàn)ATE 所提供的FATE-Board 建模具有可視化功能,建模過程交互體驗(yàn)感強(qiáng),具有較強(qiáng)的易用性.目前這一開源框架已在金融、服務(wù)、科技、醫(yī)療等多領(lǐng)域推動應(yīng)用落地.為了讓大家更清晰地了解FATE,我們將從系統(tǒng)架構(gòu)以及系統(tǒng)功能2 個(gè)層次出發(fā),對FATE 進(jìn)行詳細(xì)分析.

    2.2.1 FATE 系統(tǒng)架構(gòu)

    FATE 系統(tǒng)架構(gòu)主要包括離線訓(xùn)練和在線預(yù)測2 部分,其系統(tǒng)架構(gòu)如圖8 所示.其中,F(xiàn)ATE Flow 為學(xué)習(xí)任務(wù)流水線管理模塊,負(fù)責(zé)聯(lián)邦學(xué)習(xí)的作業(yè)調(diào)度;Federation為聯(lián)邦網(wǎng)絡(luò)中數(shù)據(jù)通信模塊,用于在不同功能單元之間傳輸消息;Proxy 作為網(wǎng)絡(luò)通信模塊承擔(dān)路由功能;元服務(wù)為集群元數(shù)據(jù)服務(wù)模塊;MySQL為元服務(wù)和FATE-Flow 的基礎(chǔ)組件,用于存放系統(tǒng)數(shù)據(jù)和工作日志;FATE 服務(wù)(FATE serving)為在線聯(lián)合預(yù)測模塊,提供聯(lián)邦在線推理功能;FATE-Board為聯(lián)邦學(xué)習(xí)過程可視化模塊;Egg 和Roll 分別為分布式計(jì)算處理器管理模塊和運(yùn)算結(jié)果匯聚模塊,負(fù)責(zé)計(jì)算和存儲數(shù)據(jù).

    Fig.8 FATE system architecture圖8 FATE 系統(tǒng)架構(gòu)

    2.2.2 FATE 系統(tǒng)功能

    1)離線訓(xùn)練框架

    離線訓(xùn)練框架如圖9 所示,其架構(gòu)主要分成基礎(chǔ)設(shè)施層、計(jì)算存儲層、核心組件層、任務(wù)執(zhí)行層、任務(wù)調(diào)度層、可視化面板層以及跨網(wǎng)絡(luò)交互層.在基礎(chǔ)設(shè)施層,F(xiàn)ATE 提供KubeFATE 模式,使用云本地技術(shù)管理聯(lián)邦學(xué)習(xí)工作負(fù)載,支持通過Docker Compose和Kubernetes 進(jìn)行部署.其中,KubeFATE 提供了豐富的FATE 集群生命周期管理功能,可以方便地對集群進(jìn)行增加或刪減、修改配置等操作.利用FATE 集群管理的任務(wù)框架,研發(fā)人員可以輕松定位與解決基礎(chǔ)設(shè)施層的問題.

    Fig.9 Off-line training framework architecture圖9 離線訓(xùn)練框架架構(gòu)

    在計(jì)算存儲層,離線訓(xùn)練框架使用EggRoll 以及Spark 作為分布式計(jì)算引擎.當(dāng)使用EggRoll 作為計(jì)算引擎時(shí),簇管理器(cluster manager)負(fù)責(zé)提供服務(wù)入口以分配資源,節(jié)點(diǎn)管理器(node manager)執(zhí)行實(shí)際計(jì)算和進(jìn)行存儲,Rollsite 負(fù)責(zé)數(shù)據(jù)傳輸.當(dāng)使用Spark作為計(jì)算引擎時(shí),需要使用HDFS 來實(shí)現(xiàn)數(shù)據(jù)的持久化,而Pipeline 的同步和訓(xùn)練過程中消息的同步則要依賴于Nginx 和RabbitMQ 服務(wù)來完成.

    核心組件層主要提供數(shù)據(jù)交互、算法和模型訓(xùn)練評估相關(guān)的實(shí)現(xiàn).本層主要由FederatedML 組成,其包括許多常見機(jī)器學(xué)習(xí)算法的聯(lián)邦實(shí)現(xiàn)以及必要的實(shí)用工具.簡單來說,可分為4 個(gè)功能模塊:①算法模塊,用于數(shù)據(jù)預(yù)處理和聯(lián)邦特征工程的機(jī)器學(xué)習(xí)算法;②實(shí)用程序模塊,作為啟用聯(lián)邦學(xué)習(xí)的工具,例如加密算子、參數(shù)定義及傳遞變量自動生成器等;③框架模塊,用于開發(fā)新算法模塊的工具包和基礎(chǔ)模型;④安全協(xié)議模塊,包括SPDZ,OT 等協(xié)議,以實(shí)現(xiàn)安全聯(lián)邦學(xué)習(xí).

    任務(wù)執(zhí)行層以及調(diào)度層主要由FATE-Flow 構(gòu)成.FATE-Flow 是實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)建模和任務(wù)協(xié)同調(diào)度的重要工具,主要包括:DAG 定義聯(lián)邦學(xué)習(xí)Pipeline、聯(lián)邦任務(wù)協(xié)同調(diào)度、聯(lián)邦任務(wù)生命周期管理、聯(lián)邦模型管理、聯(lián)邦任務(wù)輸入輸出實(shí)時(shí)追蹤以及生產(chǎn)發(fā)布功能.

    可視化面板層由FATE-Board 構(gòu)成,主要實(shí)現(xiàn)聯(lián)邦建模過程的可視化.FATE-Board 由任務(wù)儀表盤、任務(wù)可視化、任務(wù)管理與日志管理等模塊組成,可以對聯(lián)邦學(xué)習(xí)過程中模型的訓(xùn)練狀態(tài)及輸出結(jié)果進(jìn)行可視化展現(xiàn).FATE-Board 提供了矩陣圖、回歸結(jié)果、樹模型等的可視化反映,從而研究人員可以更及時(shí)地了解模型狀態(tài)與調(diào)整參數(shù),提升聯(lián)邦學(xué)習(xí)的效果.

    跨網(wǎng)絡(luò)交互層由Federated-Network 聯(lián)邦多方通信網(wǎng)絡(luò)構(gòu)成,它的架構(gòu)為:元服務(wù)為元數(shù)據(jù)管理者和持有者,負(fù)責(zé)定位不同數(shù)據(jù)在不同機(jī)器的位置;Proxy為應(yīng)用程序?qū)勇?lián)邦學(xué)習(xí)路由,F(xiàn)ederation 負(fù)責(zé)全局對象的抽象和實(shí)現(xiàn),F(xiàn)ATE-Exchange 提供通信功能.

    2)在線預(yù)測框架功能

    FATE 服務(wù)是針對聯(lián)邦學(xué)習(xí)模型的高性能工業(yè)化服務(wù)系統(tǒng).在離線建模后,F(xiàn)ATE-Flow 將模型推送至FATE 服務(wù),F(xiàn)ATE 服務(wù)通過加載訓(xùn)練模型實(shí)現(xiàn)在線預(yù)測功能,主要支持動態(tài)加載聯(lián)合學(xué)習(xí)模型、多級緩存、生產(chǎn)部署的預(yù)/后處理、聯(lián)邦學(xué)習(xí)在線批量預(yù)測、各方并行預(yù)測等.其具體部署架構(gòu)如圖10 所示.其中服務(wù)器服務(wù)(serving-service)為預(yù)測功能的核心,用于處理各種請求,提供基于gRPC 的模型在線推理服務(wù).服務(wù)器服務(wù)從FATE-Flow 加載好模型后,將該模型相關(guān)的服務(wù)信息注入注冊中心(zookeeper),以便網(wǎng)關(guān)服務(wù)從中拉取可用服務(wù)并調(diào)用.同時(shí),訓(xùn)練好的模型信息將被發(fā)送給模型管理服務(wù)完成持久化存儲,作為備份可在特殊情況下恢復(fù).

    Fig.10 FATE-serving deployment architecture圖10 FATE 服務(wù)部署架構(gòu)

    服務(wù)代理(serving-proxy)主要是在多方交互時(shí)作為網(wǎng)關(guān)服務(wù)實(shí)現(xiàn)服務(wù)路由,實(shí)現(xiàn)客戶端與主機(jī)之間的通信.它對外提供gRPC 接口以及HTTP 接口,維護(hù)一個(gè)各參與方partId 的路由表,通過路由表中的信息轉(zhuǎn)發(fā)外部系統(tǒng)的請求.

    從FATE 的系統(tǒng)架構(gòu)和系統(tǒng)功能可以看出,F(xiàn)ATE的優(yōu)勢在于其具有豐富的算法組件,具有簡單、開箱即用、易用性強(qiáng)的特點(diǎn).作為目前唯一的一個(gè)可以同時(shí)支持橫向聯(lián)邦學(xué)習(xí)、縱向聯(lián)邦學(xué)習(xí)以及聯(lián)邦遷移學(xué)習(xí)的開源框架,F(xiàn)ATE 得到了業(yè)界廣泛的關(guān)注與應(yīng)用.同時(shí),F(xiàn)ATE 還提供了一站式聯(lián)邦模型解決方案,可以有效降低開發(fā)成本,相比于其他開源框架,在工業(yè)領(lǐng)域優(yōu)勢突出.

    2.2.3 FATE 版本變化

    2019 年首款工業(yè)級聯(lián)邦學(xué)習(xí)框架FATE 由微眾銀行推出,其具有區(qū)別于其他開源框架的特色功能,包括可視化模塊FATE-Board、聯(lián)邦學(xué)習(xí)建模pipeline調(diào)度和生命周期管理工具FATE-Flow.截至2019 年12 月發(fā)布的FATE v1.2 版本覆蓋橫向聯(lián)邦學(xué)習(xí)、縱向聯(lián)邦學(xué)習(xí)、聯(lián)邦遷移學(xué)習(xí),得到了社區(qū)內(nèi)廣泛的關(guān)注與應(yīng)用.2020 年10 月發(fā)布的 FATE 1.5 版本對縱向聯(lián)邦的通信效率進(jìn)行了提升,支持不同的計(jì)算、存儲和傳輸引擎的組合,并對用戶的便捷使用做出改進(jìn),引入了Pipeline 和CLI v2 等.2021 年3 月,該框架新增了本地文件系統(tǒng)目錄路徑虛擬存儲引擎和消息隊(duì)列Pulsar 跨站傳輸引擎,對組網(wǎng)模式進(jìn)一步擴(kuò)充,并在后續(xù)加入了1 對多的FATE 服務(wù)的集群推送.在FATE 1.7 版本中,開始支持EggRoll、Spark-Local 計(jì)算引擎、Hive 存儲,進(jìn)一步提升Spark-Local 和Spark-Cluster 之間的異步融合.2022 年4 月發(fā)布的FATE 1.8 除了添加加密性能評估Paillier、性能評估SPDZ 和管道dsl的轉(zhuǎn)換工具外,還對縱向聯(lián)邦的性能進(jìn)行了提升,例如SecureBoost 節(jié)省帶寬75%,提速1.5~5 倍.

    2.3 TFF (TensorFlow federated)

    2019 年,谷歌發(fā)布了基于TensorFlow 構(gòu)建的全球首個(gè)大規(guī)模移動設(shè)備端聯(lián)邦學(xué)習(xí)系統(tǒng)[6],該系統(tǒng)用于在移動智能設(shè)備執(zhí)行機(jī)器學(xué)習(xí)和其他分布式計(jì)算,旨在促進(jìn)聯(lián)邦學(xué)習(xí)的開放性研究和實(shí)驗(yàn).

    2.3.1 TFF 系統(tǒng)架構(gòu)

    為協(xié)調(diào)客戶端和中央服務(wù)器的交互,TFF 除了提供與GKE(Google Kubernetes engine)和Kubernetes 集群的集成,還提供容器映像來部署客戶端并通過gRPC調(diào)用進(jìn)行連接,其系統(tǒng)架構(gòu)如圖11 所示.

    Fig.11 TFF framework architecture圖11 TFF 系統(tǒng)架構(gòu)

    從系統(tǒng)架構(gòu)圖可以看出,TFF 的訓(xùn)練流程包括3 步:1)服務(wù)器從所有設(shè)備端篩選出參與該輪聯(lián)邦學(xué)習(xí)任務(wù)的設(shè)備,為了不影響用戶體驗(yàn),篩選標(biāo)準(zhǔn)包括是否充電、是否為計(jì)費(fèi)網(wǎng)絡(luò)等.2)服務(wù)器向訓(xùn)練設(shè)備發(fā)送數(shù)據(jù),包括計(jì)算圖以及執(zhí)行計(jì)算圖的方法.而在每輪訓(xùn)練開始時(shí),服務(wù)器向設(shè)備端發(fā)送當(dāng)前模型的超參數(shù)以及必要狀態(tài)數(shù)據(jù).設(shè)備端根據(jù)全局參數(shù)、狀態(tài)數(shù)據(jù)以及本地?cái)?shù)據(jù)集進(jìn)行訓(xùn)練,并將更新后的本地模型發(fā)送到服務(wù)端.3)服務(wù)端聚合所有設(shè)備的本地模型,更新全局模型并開始下一輪訓(xùn)練.由此可見,設(shè)備端的功能主要包括連接服務(wù)器、獲取模型和參數(shù)狀態(tài)數(shù)據(jù)、模型訓(xùn)練、模型更新.TFF 的客戶端架構(gòu)設(shè)計(jì)如圖12 所示.

    Fig.12 TFF client architecture圖12 TFF 客戶端架構(gòu)

    對于服務(wù)器端,TFF 圍繞編程模型參與者模式(actor model)設(shè)計(jì),使用消息傳遞作為唯一的通信機(jī)制,采用自頂向下的設(shè)計(jì)結(jié)構(gòu),如圖13 所示.其中協(xié)調(diào)方(coordinator)是頂級參與者,負(fù)責(zé)全局同步和推送訓(xùn)練.多個(gè)協(xié)調(diào)方與多個(gè)聯(lián)邦學(xué)習(xí)設(shè)備集群一一對應(yīng),負(fù)責(zé)注冊設(shè)備集群的地址.協(xié)調(diào)方接收有關(guān)選擇器的信息,并根據(jù)計(jì)劃指示它們接受多少設(shè)備參與訓(xùn)練.而選擇器負(fù)責(zé)接收和轉(zhuǎn)發(fā)設(shè)備連接,同時(shí)定期從協(xié)調(diào)方接收有關(guān)聯(lián)邦集群的信息,決定是否接受每臺設(shè)備做出本地決策.主聚合器(master aggregator)負(fù)責(zé)管理每個(gè)聯(lián)邦學(xué)習(xí)任務(wù)的回合數(shù),它可以根據(jù)設(shè)備的數(shù)量做出動態(tài)決策,以生成聚合器(aggregator)實(shí)現(xiàn)彈性計(jì)算.

    Fig.13 TFF top-down structure圖13 TFF 自頂向下結(jié)構(gòu)

    2.3.2 TFF 系統(tǒng)功能

    為實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)模型訓(xùn)練的實(shí)驗(yàn)環(huán)境和計(jì)算框架,TFF 構(gòu)建了FL API(federated learning API)和FC API(federated core API)兩個(gè)級別的接口.

    如圖14 所示,F(xiàn)L API 包括模型、聯(lián)合計(jì)算構(gòu)建器、數(shù)據(jù)集3 個(gè)部分.模型部分提供封裝完成的tff.learning 函數(shù),研究人員可以直接調(diào)用該函數(shù)實(shí)現(xiàn)各種聯(lián)邦學(xué)習(xí)算法而無需自行構(gòu)建,如可以使用FedAvg和Fed-SGD 進(jìn)行模型訓(xùn)練.聯(lián)邦計(jì)算構(gòu)建器的主要目的是使用現(xiàn)有模型為訓(xùn)練或評估構(gòu)造聯(lián)邦計(jì)算,主要用于輔助聯(lián)邦學(xué)習(xí)的訓(xùn)練和計(jì)算過程.在數(shù)據(jù)集模塊,通過TensorFlow API 中提供的LEAF[22]生成聯(lián)邦學(xué)習(xí)特定訓(xùn)練數(shù)據(jù)集,給出了用于TFF 仿真和模型訓(xùn)練的可直接下載和訪問的罐裝數(shù)據(jù)集.除了高級接口外,F(xiàn)C API 提供了底層聯(lián)邦學(xué)習(xí)接口,它是聯(lián)邦學(xué)習(xí)流程的基礎(chǔ),研究人員可以通過它方便地構(gòu)建自定義聯(lián)邦學(xué)習(xí)算法.

    Fig.14 TFF API architecture圖14 TFF API 架構(gòu)

    在聯(lián)邦學(xué)習(xí)類型方面,TFF 目前只支持橫向聯(lián)邦學(xué)習(xí),尚未提供縱向聯(lián)邦及遷移學(xué)習(xí)的方案;模型方面,提供了FedAvg,F(xiàn)ed-SGD 等算法,同時(shí)也支持神經(jīng)網(wǎng)絡(luò)和線性模型;在計(jì)算范式方面,TFF 支持單機(jī)模擬和移動設(shè)備訓(xùn)練,不支持基于拓?fù)浣Y(jié)構(gòu)的分布式訓(xùn)練;在隱私保護(hù)機(jī)制方面,TFF 采用差分隱私以保證數(shù)據(jù)安全.TFF 的主要受眾目標(biāo)是研究人員和從業(yè)者,他們可以采用靈活可擴(kuò)展的語言來表達(dá)分布式數(shù)據(jù)流算法,定義自己的運(yùn)算符,以實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)算法和研究聯(lián)邦學(xué)習(xí)機(jī)制.

    2.3.3 TFF 版本變化

    谷歌于2019 年2 月首次發(fā)布TFF 框架,12 月發(fā)布TFF 0.11.與PySyft 相同,該框架也僅支持橫向聯(lián)邦學(xué)習(xí).用戶可以通過FL API 與TensorFlow/Keras 交互,完成分類、回歸等任務(wù),也可以基于FC API 構(gòu)建自定義的聯(lián)邦學(xué)習(xí)算法.其中,2020 年發(fā)布的TFF 0.17版本支持計(jì)算跟蹤控制,消除了客戶機(jī)數(shù)量對分布式運(yùn)行的影響.2022 年TFF 0.20 版本除了對API 功能進(jìn)行了升級外,明確了對零客戶端聚合的支持,增加了張量的流量.直至最新的TFF 0.23 版本,該框架仍然僅提供了基于差分隱私的隱私保護(hù),未添加同態(tài)加密和多方安全計(jì)算.

    2.4 PaddleFL

    2019 年,百度基于安全多方計(jì)算、差分隱私等領(lǐng)域的實(shí)踐,開源了PaddlePaddle 生態(tài)中的聯(lián)邦學(xué)習(xí)框架PaddleFL[11],旨在為業(yè)界提供完整的安全機(jī)器學(xué)習(xí)開發(fā)生態(tài).PaddleFL 提供多種聯(lián)邦學(xué)習(xí)策略,因此該框架在不同領(lǐng)域都受到了廣泛關(guān)注.

    2.4.1 PaddleFL 系統(tǒng)架構(gòu)

    PaddleFL 架構(gòu)的整體設(shè)計(jì)可以參考圖15.如圖所示,PaddleFL 可以支持橫向聯(lián)邦和縱向聯(lián)邦2 種策略.對于橫向聯(lián)邦學(xué)習(xí),其主要支持FedAvg,DPSGD,SECAGG 等策略;對于縱向聯(lián)邦學(xué)習(xí),其主要支持LR with PrivC 和NN with MPC[23]的神經(jīng)網(wǎng)絡(luò).PaddleFL 底層的編程模型采用的是飛槳訓(xùn)練框架,結(jié)合飛槳的參數(shù)服務(wù)器功能,其可以實(shí)現(xiàn)在 Kubernetes 集群中聯(lián)邦學(xué)習(xí)系統(tǒng)的部署.訓(xùn)練策略方面,PaddleFL 可進(jìn)行多任務(wù)學(xué)習(xí)[24]、遷移學(xué)習(xí)、主動學(xué)習(xí)等訓(xùn)練.

    Fig.15 PaddleFL architecture圖15 PaddleFL 的架構(gòu)

    2.4.2 PaddleFL 系統(tǒng)功能

    PaddleFL 主要提供2 種實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)的方案:數(shù)據(jù)并行(data parallel, DP)和基于多方安全計(jì)算的聯(lián)邦學(xué)習(xí)(federated learning with MPC, PFM).在DP 中,模型訓(xùn)練過程主要分2 個(gè)階段:編譯和分布式運(yùn)行.

    如圖16 所示,編譯包含4 個(gè)組件:聯(lián)邦學(xué)習(xí)策略、用戶自定義程序、分布式配置、聯(lián)邦學(xué)習(xí)任務(wù)生成器.聯(lián)邦學(xué)習(xí)策略主要提供橫向和縱向聯(lián)邦學(xué)習(xí)算法,如神經(jīng)網(wǎng)絡(luò)和邏輯回歸等,用戶也可以自己定義機(jī)器學(xué)習(xí)模型和訓(xùn)練策略;用戶自定義程序定義了機(jī)器學(xué)習(xí)模型結(jié)構(gòu)和訓(xùn)練策略;分布式配置的作用是設(shè)定分布式訓(xùn)練的節(jié)點(diǎn)信息;聯(lián)邦學(xué)習(xí)任務(wù)生成器負(fù)責(zé)為聯(lián)邦服務(wù)器端和客戶端生成聯(lián)邦任務(wù),并將它發(fā)送到聯(lián)邦參數(shù)服務(wù)器進(jìn)行聯(lián)邦訓(xùn)練.分布式運(yùn)行由服務(wù)器、客戶端、聯(lián)邦學(xué)習(xí)調(diào)度器3 部分組成.服務(wù)器為聯(lián)邦參數(shù)服務(wù)器,是聯(lián)邦學(xué)習(xí)的管理者;客戶端為聯(lián)邦學(xué)習(xí)的各參與方,與聯(lián)邦參數(shù)服務(wù)器進(jìn)行通信,其中通信模式包括 Gloo 和gRPC;聯(lián)邦學(xué)習(xí)調(diào)度器在訓(xùn)練過程中負(fù)責(zé)調(diào)度,選擇每一訓(xùn)練回合中參與的客戶端.

    Fig.16 Data parallel training framework圖16 Data parallel 訓(xùn)練框架

    PFM 整個(gè)訓(xùn)練過程包括數(shù)據(jù)準(zhǔn)備、訓(xùn)練推理、結(jié)果解析3 個(gè)階段.其中數(shù)據(jù)準(zhǔn)備階段主要包括2 項(xiàng)工作:1)隱私集合求交.在保護(hù)數(shù)據(jù)隱私的前提下,求出各參與方的數(shù)據(jù)交集.2)數(shù)據(jù)加密及分發(fā).采用Secret Sharing 進(jìn)行數(shù)據(jù)和模型加密,并分發(fā)給參與方.數(shù)據(jù)準(zhǔn)備完成后,根據(jù)用戶設(shè)定的聯(lián)邦學(xué)習(xí)模型進(jìn)行訓(xùn)練,同時(shí)基于多方安全計(jì)算保證訓(xùn)練安全.在訓(xùn)練結(jié)束后,對結(jié)果解密并發(fā)送給各參與方.PFM 提供了多方安全計(jì)算下的聯(lián)邦學(xué)習(xí),支持橫向和縱向聯(lián)邦學(xué)習(xí).在PFM 中,一共有3 個(gè)參與者:輸入方(IP)、計(jì)算方(CP)和結(jié)果方(RP).輸入方(數(shù)據(jù)或模型的擁有者)負(fù)責(zé)將數(shù)據(jù)或模型加密后發(fā)送給計(jì)算方;計(jì)算方(云上的虛擬機(jī))接受加密后的數(shù)據(jù)或模型后基于特定的MPC 協(xié)議進(jìn)行訓(xùn)練或任務(wù)推理,完成后將結(jié)果發(fā)送給結(jié)果方;結(jié)果方接受加密計(jì)算結(jié)果后重構(gòu)明文結(jié)果.三方參與者角色可以重疊.

    PaddleFL 提供的聯(lián)邦學(xué)習(xí)策略涵蓋了橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí),相比于其他的聯(lián)邦學(xué)習(xí)框架,其適合在大規(guī)模分布式集群中部署.其中,橫向聯(lián)邦學(xué)習(xí)主要涵蓋了FedAvg[3],DP-SGD[25]等算法,縱向聯(lián)邦學(xué)習(xí)主要包括了基于PrivC 的邏輯回歸和基于ABY3協(xié)議的神經(jīng)網(wǎng)絡(luò).目前Paddle FL 開源了橫向聯(lián)邦學(xué)習(xí)場景,可以用于具有相同類型任務(wù)的多個(gè)組織進(jìn)行聯(lián)合訓(xùn)練.對于縱向聯(lián)邦學(xué)習(xí)場景,百度公司指出將會在未來開源縱向聯(lián)邦學(xué)習(xí)編程框架,并實(shí)現(xiàn)不同聯(lián)邦學(xué)習(xí)類型的編程接口統(tǒng)一,同時(shí)在性能方面也將提升訓(xùn)練的速度和精度、跨地域的稀疏通信、通信的穩(wěn)定性等.

    2.4.3 PaddleFL 版本變化

    PaddleFL 自2019 年11 月開源以來,百度公司隨后在2020 年5 月發(fā)布的Paddle 1.8 版本深度優(yōu)化了命令式編程模式功能.對原生推理庫性能進(jìn)行了顯著優(yōu)化,推出了可以輕量化部署的推理引擎PaddleLite,并發(fā)布了前端推理引擎Paddle.js.且Paddle-服務(wù)器ving 全面升級,提供了強(qiáng)大簡單化的部署功能,其對應(yīng)的開發(fā)庫和工具組件也進(jìn)一步豐富完善.2022 年11 月百度公司推出了Paddle 2.4.0 版本,對框架使用了新動態(tài)圖架構(gòu),對框架的調(diào)度性能進(jìn)行大幅度提升,超過90%的API 的調(diào)度性能提升超過50%.全面提升了Paddle 的動靜統(tǒng)一能力,提供了更加豐富的Python 語法支持.新增稀疏計(jì)算類API,支持多種稀疏Tensor,極致節(jié)省內(nèi)存.

    2.5 FedML

    FedML 是由美國南加州大學(xué)聯(lián)合MIT、Stanford、MSU、UW-Madison、UIUC、騰訊、微眾銀行等眾多高校與公司聯(lián)合發(fā)布的聯(lián)邦學(xué)習(xí)開源框架.FedML 不但支持3 種計(jì)算范例(單機(jī)模擬、基于拓?fù)浣Y(jié)構(gòu)的分布式訓(xùn)練和移動設(shè)備訓(xùn)練),還通過靈活通用的API設(shè)計(jì)和參考基準(zhǔn)實(shí)現(xiàn)促進(jìn)了各種算法研究,并針對非獨(dú)立同分布(non-independent identically distributed, Non-IID)數(shù)據(jù)設(shè)置了精選且全面的基準(zhǔn)數(shù)據(jù)集用于公平性比較.

    2.5.1 FedML 系統(tǒng)架構(gòu)

    FedML 主要包含F(xiàn)edML-core 和FedML-API 這2個(gè)組件,分別對應(yīng)低級別接口(low-level API)和高級別接口(high-level API),系統(tǒng)架構(gòu)如圖17 所示.

    Fig.17 FedML system architecture圖17 FedML 系統(tǒng)架構(gòu)

    圖17 中FedML-core 將分布式通信和模型訓(xùn)練分為2 個(gè)單獨(dú)的模塊.分布式通信模塊負(fù)責(zé)不同客戶端之間的底層通信,并使用統(tǒng)一的通信管理來完成算法通信協(xié)議.目前,F(xiàn)edML-core 支持MPI,RPC,MQTT通信后端.其中MPI 主要用于滿足單個(gè)集群中的分布式訓(xùn)練需求;RPC 主要用于滿足跨數(shù)據(jù)中心的通信需求(例如cross-silo FL);MQTT 主要用于滿足移動設(shè)備的聯(lián)邦學(xué)習(xí)訓(xùn)練.由于FedML 默認(rèn)采用MPI通信,因此下面簡要介紹其通信過程,而針對移動設(shè)備的MQTT 通信則在2.5.5 節(jié)介紹.

    在FedML 中,MPI 通信主要由通信管理和其維護(hù)的發(fā)送線程和接收線程實(shí)現(xiàn).其中發(fā)送線程和接收線程各自維護(hù)一個(gè)緩沖隊(duì)列,發(fā)送線程每隔0.003 s輪詢一次自己的隊(duì)列,如果有新消息放入,就將其發(fā)送.對于收到的消息,通信管理每隔0.3 s 進(jìn)行1 次對其自身的輪詢,有新消息收到則通知觀察者,觀察者利用回調(diào)機(jī)制處理信息.

    具體通信過程如圖18 所示:①服務(wù)器啟動,發(fā)送初始化信息給客戶端;②客戶端收到服務(wù)器端發(fā)送的消息,觸發(fā)handler 函數(shù);③訓(xùn)練方進(jìn)行本地模型的訓(xùn)練;④每輪訓(xùn)練結(jié)束后,將訓(xùn)練好的參數(shù)放入發(fā)送隊(duì)列;⑤發(fā)送線程將隊(duì)列中的數(shù)據(jù)傳回服務(wù)器;⑥服務(wù)器收到客戶端端發(fā)送的消息,觸發(fā)handler 函數(shù);⑦更新全局模型參數(shù);⑧將更新后的全局參數(shù)傳入發(fā)送隊(duì)列進(jìn)行下發(fā),開始下一輪迭代訓(xùn)練.此外,F(xiàn)edML還支持用戶自定義通信協(xié)議.如果需要使用不同的通信協(xié)議,用戶只需替換底層的通信管理即可.

    Fig.18 MPI communication diagram圖18 MPI 通信示意

    在分布式通信模塊內(nèi)部,TopologyManager 支持多種網(wǎng)絡(luò)結(jié)構(gòu),如基于數(shù)據(jù)中心的聯(lián)邦學(xué)習(xí)、去中心化聯(lián)邦學(xué)習(xí)、分層聯(lián)邦學(xué)習(xí)[26-27]等.

    FedML-API 建立在FedML-core 之上,F(xiàn)edML-API包括模型、數(shù)據(jù)集和算法.FedML 支持的算法包括線性模型(邏輯回歸)、神經(jīng)網(wǎng)絡(luò)(CNN,RNN)等;每個(gè)算法包括服務(wù)器Manager 和客戶端Manager 這2 個(gè)對象,用于集成FedML-core 的通信模塊的ComManager與機(jī)器學(xué)習(xí)組件的客戶端和coordinator,完成分布式算法協(xié)議(如FedAvg,F(xiàn)edNAS,F(xiàn)edNova,F(xiàn)edOpt 等)和分布式訓(xùn)練.FedML-API 采用模型、數(shù)據(jù)集和算法相互分開的系統(tǒng)設(shè)計(jì),以實(shí)現(xiàn)代碼重用和公平比較,避免由于不同實(shí)現(xiàn)方式導(dǎo)致的算法之間的統(tǒng)計(jì)或系統(tǒng)級差距.此外,通過這種設(shè)計(jì),研究人員無需了解不同的分布式算法的細(xì)節(jié)就可以開發(fā)新模型并提交更現(xiàn)實(shí)的數(shù)據(jù)集.

    2.5.2 FedML 系統(tǒng)功能

    從圖17 可以看出,F(xiàn)edML 的系統(tǒng)功能主要包含F(xiàn)edML-core,F(xiàn)edML-API,F(xiàn)edML-Mobile,F(xiàn)edML-IoT.

    1)FedML-core 功能

    ①自定義客戶端及信息交換.FedML-core 采取了面向客戶端的編程設(shè)計(jì)模式,當(dāng)設(shè)計(jì)聯(lián)邦學(xué)習(xí)算法中的訓(xùn)練過程時(shí),用戶可以通過繼承客戶端Manager類并使用其預(yù)定義的API 來定義接收消息和發(fā)送消息,從而在聯(lián)邦學(xué)習(xí)網(wǎng)絡(luò)中自定義其客戶端.另外,消息交換方面,F(xiàn)edML 還支持梯度或模型之外的消息交換(如特定的中間結(jié)果),每個(gè)客戶端都可以從發(fā)送的角度定義消息類型.客戶端Manager 用于處理各客戶端定義的消息,并發(fā)送其自身定義的消息.

    ②拓?fù)涔芾?聯(lián)邦學(xué)習(xí)具有各種拓?fù)涠x,例如垂直聯(lián)邦學(xué)習(xí)[28]、拆分學(xué)習(xí)[29]、去中心化聯(lián)邦學(xué)習(xí)和分層聯(lián)邦學(xué)習(xí)[27].為了滿足這種多樣化的要求,F(xiàn)edML提供了TopologyManager 來管理拓?fù)?,并允許客戶端在培訓(xùn)期間將消息發(fā)送給任意相鄰客戶端.在完成TopologyManager 的初始設(shè)置后,網(wǎng)絡(luò)中的每個(gè)客戶端都可以通過TopologyManager 查詢相鄰客戶端的ID、權(quán)重等信息.

    ③隱私安全和魯棒性.除了保護(hù)數(shù)據(jù)隱私外,聯(lián)邦學(xué)習(xí)框架(尤其是移動設(shè)備訓(xùn)練時(shí))的另一個(gè)關(guān)鍵要求是應(yīng)對用戶退出的魯棒性.為了增強(qiáng)安全性和隱私性,F(xiàn)edML-core 實(shí)現(xiàn)了常見的密碼原語,可支持多方安全計(jì)算(秘密共享)和同態(tài)加密(密鑰協(xié)議和數(shù)字簽名).針對聯(lián)邦學(xué)習(xí)中對抗攻擊的防御,F(xiàn)edML涵蓋了規(guī)范差異裁剪[30]、弱差分隱私[30]、RFA[31]、KRUM和MULTIKRUM[32].該框架還提供了通用的對抗性攻擊API,該API通過實(shí)施模型替換攻擊[33]和邊緣案例后門攻擊[34]來支持后門.

    2)FedML-API 功能

    ①算法.FedML 提供了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)不同、交換信息不同(如交換模型參數(shù)或特定中間結(jié)果)的各種聯(lián)邦學(xué)習(xí)算法.不同計(jì)算范式支持的算法有:單機(jī)模擬支持FedAvg、FedOpt、FedNova、FedNAS[35]、去中心化聯(lián)邦、縱向聯(lián)邦、分層聯(lián)邦;分布式計(jì)算支持去中心化聯(lián)邦、FedAvg、FedRobust、FedNAS、FedSEG、FedGKT、縱向聯(lián)邦、Split Learning;移動設(shè)備僅支持FedAvg.同時(shí),這些算法也可以用作實(shí)現(xiàn)示例和基準(zhǔn),以幫助用戶開發(fā)和評估自己的算法.FedML 還在不斷添加新的聯(lián)邦學(xué)習(xí)算法,如Adaptive Federated optimizer,F(xiàn)edProx,F(xiàn)edMA.

    ②模型和數(shù)據(jù)集.由于不同實(shí)驗(yàn)中模型和數(shù)據(jù)集的用法不一致,因此很難公平比較聯(lián)邦學(xué)習(xí)算法的性能.為了加強(qiáng)公平比較,F(xiàn)edML 采取了模型和數(shù)據(jù)集合二為一的方法,明確規(guī)定了數(shù)據(jù)集和模型的組合.FedML 提供的模型和數(shù)據(jù)集分為3 類:線性模型(凸優(yōu)化)、輕型淺層神經(jīng)網(wǎng)絡(luò)(非凸優(yōu)化,一般用于Cross-device 設(shè)置)以及深度神經(jīng)網(wǎng)絡(luò)(非凸優(yōu)化,用于Cross-silo 訓(xùn)練大型DNN).其中線性模型的數(shù)據(jù)集包括MNIST[36]、聯(lián)邦EMNIST[37]和Synthetic(α,β)[38];淺層神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集包括聯(lián)邦EMNIST[22]、CIFAR-100[39]、莎士比亞[40]和StackOverflow[41];深度神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集有CIFAR10,CIFAR100,CINIC10,Stack-Overflow.具體模型和數(shù)據(jù)集的組合如表2 所示.

    Table 2 Combination of FedML Specific Models and Datasets表2 FedML 具體模型和數(shù)據(jù)集的組合

    3)FedML-Mobile 和FedML-IoT

    FedML 的一項(xiàng)主要功能是其在實(shí)際硬件框架上對聯(lián)邦學(xué)習(xí)的支持.具體來說,F(xiàn)edML 包括FedMLMobile 和FedML-IoT,這是2 個(gè)基于實(shí)際硬件框架構(gòu)建設(shè)備上的聯(lián)邦學(xué)習(xí)測試框架.當(dāng)前,F(xiàn)edML-Mobile(包括FedML-服務(wù)器和Android 客戶端 Simulator 這2 個(gè)API)支持在Android/iOS 智能手機(jī)進(jìn)行設(shè)備的培訓(xùn).而FedML-IoT 支持Raspberry PI 4 和NVIDIA Jetson Nano.借助建立在實(shí)際硬件框架上的測試框架,研究人員可以評估實(shí)際系統(tǒng)性能,例如訓(xùn)練時(shí)間、通信成本和計(jì)算成本.FedML 的架構(gòu)設(shè)計(jì)可以將分布式計(jì)算代碼平穩(wěn)地移植到FedML-Mobile 和FedML-IoT 框架上,從而幾乎重用了分布式計(jì)算范式中的所有算法.

    根據(jù)訓(xùn)練設(shè)備的異構(gòu)性,F(xiàn)edML 采用了當(dāng)前最流行的物聯(lián)網(wǎng)協(xié)議MQTT,實(shí)現(xiàn)FedML-服務(wù)器與移動/IoT 設(shè)備之間的通信.在發(fā)布/訂閱體系結(jié)構(gòu)中,F(xiàn)edML-服務(wù)器為訂閱者,主要識別設(shè)備何時(shí)準(zhǔn)備好開始培訓(xùn)以及接收模型;而參與訓(xùn)練的客戶端為發(fā)布者.

    圖19 為服務(wù)器和設(shè)備之間的工作流程.在步驟1~3 中,服務(wù)器和設(shè)備與代理建立連接,然后由代理進(jìn)行通信.同時(shí),服務(wù)器為自己訂閱一個(gè)特定的主題,以便從設(shè)備端接收狀態(tài)更新.步驟4 和步驟5 將訓(xùn)練模型發(fā)送到設(shè)備.在模型發(fā)送之前,服務(wù)器分配并準(zhǔn)備所有對通信階段有用的參數(shù)(資源分配、模型序列化等).在步驟6 和步驟7 中,參與訓(xùn)練的設(shè)備開始訓(xùn)練并返回模型更新.

    Fig.19 Workflow between FedML servers and devices圖19 FedML 服務(wù)器與設(shè)備之間的工作流程

    2.5.3 FedML 版本變化

    2020 年9 月由南加州大學(xué)聯(lián)合多所科研院所聯(lián)合發(fā)布了FedML 聯(lián)邦學(xué)習(xí)開源框架,針對現(xiàn)有軟件框架不能充分支持多樣化算法開發(fā)以及實(shí)驗(yàn)對比存在不一致的問題,提供了一個(gè)開放的研究庫以及基準(zhǔn).2020 年10 月7 日的版本提供了面向研究的數(shù)據(jù)集和模型.2020 年10 月28 日的版本對單一的FedAvg聚合算法進(jìn)行擴(kuò)充,加入了更多的聯(lián)合優(yōu)化算法.2020年11 月5 日的版本針對物聯(lián)網(wǎng)設(shè)備的聯(lián)邦學(xué)習(xí)模式進(jìn)行支持.直至2022 年5 月發(fā)布了最新的版本,本次升級對原有的MPI 訓(xùn)練進(jìn)行了擴(kuò)充,加入了NCCL 的模式,支持跨組織的跨倉聯(lián)合訓(xùn)練.相較于FATE,Paddle FL 等工業(yè)聯(lián)邦學(xué)習(xí)框架, FedML 更適合開發(fā)人員作為學(xué)術(shù)研究使用.

    2.6 Flower

    Flower[10]是由英國牛津大學(xué)在2020 年發(fā)布的一款聯(lián)邦學(xué)習(xí)框架,其優(yōu)點(diǎn)在于Flower 可以模擬真實(shí)場景下的大規(guī)模聯(lián)邦學(xué)習(xí)訓(xùn)練.基于其跨平臺的兼容性、跨設(shè)計(jì)語言的易用性、對已有機(jī)器學(xué)習(xí)框架的支持以及抽象的框架封裝,用戶可以快速高效搭建所需的聯(lián)邦學(xué)習(xí)訓(xùn)練流程.Flower 綜合計(jì)算資源、內(nèi)存空間和通信資源等因素,高效實(shí)現(xiàn)了移動端和無線客戶端下異構(gòu)資源的使用.

    2.6.1 Flower 系統(tǒng)架構(gòu)

    Flower 包含F(xiàn)lower 客戶端(Flower client)、Flower服務(wù)器端(Flower service)、Flower 聯(lián)邦策略(Flower federation strategy)、Flower 協(xié)議(Flower protocol)、Flower 數(shù)據(jù)集(Flower datasets)、Flower 基準(zhǔn)(Flower baselines)、Flower 工具(Flower tools)這7 部分,系統(tǒng)架構(gòu)如圖20 所示.

    Fig.20 Flower system architecture圖20 Flower 系統(tǒng)架構(gòu)

    Flower 客戶端允許用戶借助接口實(shí)現(xiàn)相應(yīng)的操作,如軟件開發(fā)工具包(software development kit, SDK),SDK 主要為用戶處理連接管理、Flower 協(xié)議和序列化等操作.在目前的版本中,SDK 提供了對Android和Python 的支持,研究團(tuán)隊(duì)指出將陸續(xù)開放SDK 對iOS 端等移動終端的支持.

    Flower 服務(wù)器端在整個(gè)框架中負(fù)責(zé)節(jié)點(diǎn)之間的連接,客戶端生命周期的管理,聯(lián)邦學(xué)習(xí)執(zhí)行的定制、驗(yàn)證、聚合和度量等處理.聯(lián)邦策略中,用戶可以借助抽象的策略來實(shí)現(xiàn)新的聯(lián)邦學(xué)習(xí)算法,如FedAvg,F(xiàn)edProx,QFedAvg,F(xiàn)edOpt.

    此外,F(xiàn)lower 協(xié)議降低了對聯(lián)邦學(xué)習(xí)設(shè)備的要求和對特定編程語言的依賴程度,提高了使用上的客制化程度.Flower 數(shù)據(jù)集中考慮到不同實(shí)驗(yàn)數(shù)據(jù)的使用以及數(shù)據(jù)的劃分,提供了一組內(nèi)置的數(shù)據(jù)集和相應(yīng)的分區(qū)函數(shù),滿足客戶機(jī)之間數(shù)據(jù)的動態(tài)分配.Flower 基準(zhǔn)提供了端到端的聯(lián)邦學(xué)習(xí)實(shí)現(xiàn),用戶借助特定領(lǐng)域語言(domain-specific language,DSL),設(shè)置好相應(yīng)的實(shí)驗(yàn)條件就可創(chuàng)建.Flower 工具提供了一套部署、模擬、檢測參數(shù)的系統(tǒng)級工具.主要包括1)部署實(shí)例去模擬客戶端和服務(wù)器端;2)模擬不同性能的客戶端設(shè)備;3)改變客戶端和服務(wù)器端之間的網(wǎng)絡(luò)帶寬,模擬真實(shí)場景下的網(wǎng)絡(luò)狀態(tài).

    Flower 的通信模塊位于Flower 服務(wù)端組件中,該組件可大致分為4 層,如圖21 所示.目前Flower 僅支持gRPC 的通信方式,但是也支持用戶自定義通信協(xié)議的替換.gRPC 的交互過程主要通過連接管理(connection management)和gRPC 網(wǎng)橋(gRPC bridge)這2 個(gè)模塊實(shí)現(xiàn).其中連接管理模塊負(fù)責(zé)維護(hù)當(dāng)前的所有g(shù)RPC 連接,如圖22 所示.當(dāng)gRPC 服務(wù)器第1次收到請求時(shí),會觸發(fā)注冊函數(shù)進(jìn)行客戶端連接的注冊管理,將該客戶端的信息存放到一個(gè)數(shù)組中,每一個(gè)gRPC 對應(yīng)一個(gè)客戶端.服務(wù)器借助這個(gè)模塊來獲得指定客戶端的gRPC 連接,之后進(jìn)行通信,獲取模型信息.在完成通信或者因?yàn)榈却瑫r(shí)等情況導(dǎo)致gRPC 斷開,則調(diào)用非注冊函數(shù)將斷開連接的客戶端從當(dāng)前的記錄中刪去.

    Fig.21 Flower server architecture圖21 Flower 服務(wù)器端架構(gòu)

    Fig.22 Connection management diagram圖22 連接管理示意圖

    客戶端和服務(wù)器端的通信由gRPC 網(wǎng)橋進(jìn)行,該模塊負(fù)責(zé)緩存客戶端和服務(wù)器端的gRPC 信息.首先由客戶端向gRPC 網(wǎng)橋放入信息,客戶端再從中獲??;客戶端本地訓(xùn)練完模型后,將模型信息上傳至網(wǎng)橋,服務(wù)器端從網(wǎng)橋獲取客戶端所上傳的本地模型信息進(jìn)行全局模型的更新.該過程通過狀態(tài)轉(zhuǎn)換的方法來保證其中儲存的都是相同信息.大致的狀態(tài)轉(zhuǎn)換見圖23.

    Fig.23 gRPC bridge state transition diagram圖23 gRPC 網(wǎng)橋狀態(tài)轉(zhuǎn)換圖

    2.6.2 Flower 系統(tǒng)功能模塊

    Flower 主要提供可復(fù)現(xiàn)實(shí)驗(yàn)、機(jī)器學(xué)習(xí)算法、網(wǎng)絡(luò)擾動、跨平臺接入、大規(guī)模接入這5 個(gè)功能模塊.

    1)可復(fù)現(xiàn)實(shí)驗(yàn)?zāi)K

    一個(gè)完整的聯(lián)邦學(xué)習(xí)框架需要多個(gè)組件來實(shí)現(xiàn),F(xiàn)lower 中提供了一套可靠、成熟的組件來實(shí)現(xiàn),研究人員可以在一套組件下快速進(jìn)行實(shí)驗(yàn)驗(yàn)證.此外,已有算法庫可以讓研究人員快速與現(xiàn)有方案進(jìn)行對比.

    2)機(jī)器學(xué)習(xí)算法模塊

    聯(lián)邦學(xué)習(xí)計(jì)算的方式彌補(bǔ)了傳統(tǒng)單機(jī)模式下的不足,但是仍舊有許多的ML 算法尚未遷移過來.Flower通過對現(xiàn)有機(jī)器學(xué)習(xí)框架的鏈接,允許用戶在現(xiàn)有機(jī)器學(xué)習(xí)代碼庫的基礎(chǔ)之上將機(jī)器學(xué)習(xí)算法快速應(yīng)用于聯(lián)邦學(xué)習(xí)模型的訓(xùn)練中.

    3)網(wǎng)絡(luò)擾動模塊

    通信網(wǎng)絡(luò)貫穿聯(lián)邦學(xué)習(xí)的整個(gè)始末,在現(xiàn)實(shí)場景中,網(wǎng)絡(luò)通信狀態(tài)直接會影響模型訓(xùn)練的效率和結(jié)果.Flower 提供了對網(wǎng)絡(luò)帶寬約束的功能,方便量化網(wǎng)絡(luò)波動對整個(gè)聯(lián)邦學(xué)習(xí)過程的影響.

    4)跨平臺接入模塊

    現(xiàn)有聯(lián)邦學(xué)習(xí)框架對異構(gòu)設(shè)備的支持十分有限,更多的是傾向于對服務(wù)器端的定義和客戶端的計(jì)算,或是傾向于對服務(wù)器集群而忽視對移動客戶端的關(guān)注.Flower 中提供了對不同架構(gòu)的支持,因此可以測試異構(gòu)環(huán)境下不同算法的表現(xiàn).此外,F(xiàn)lower 在設(shè)計(jì)上抽象類的設(shè)計(jì),使得Flower 對于特定編程語言的依賴降到最低.

    5)大規(guī)模接入模塊

    在真實(shí)場景下的聯(lián)邦學(xué)習(xí)訓(xùn)練需要大量的設(shè)備參與.然而,在實(shí)驗(yàn)場景中往往不會以真實(shí)的參與規(guī)模進(jìn)行設(shè)計(jì),對于大規(guī)模設(shè)備參與的可擴(kuò)展性有待考察.Flower 在設(shè)計(jì)之初就考慮到了大量并發(fā)連接客戶機(jī)的場景,具有很好的可擴(kuò)展性.

    2.6.3 Flower 版本變化

    相比于其他聯(lián)邦學(xué)習(xí)框架,F(xiàn)lower 具有可擴(kuò)展性、兼容性、易擴(kuò)展等特性,使得使該框架不僅可以用于項(xiàng)目研究,還能方便地進(jìn)行生產(chǎn)部署.除了2020年11 月發(fā)布的首個(gè)版本,2021 年1 月Flower 0.13.0版本實(shí)現(xiàn)了由集中式訓(xùn)練向聯(lián)合式訓(xùn)練的轉(zhuǎn)變.2021 年9 月的Flower 0.17 版本引入了虛擬客戶端引擎,支持在單臺機(jī)器或計(jì)算集群中實(shí)現(xiàn)大規(guī)模客戶端的模擬.2022 年2 月Flower0.18.0 版本實(shí)現(xiàn)了對Android 移動端的支持.

    3 其他聯(lián)邦學(xué)習(xí)框架

    除了目前業(yè)內(nèi)較常用的幾款開源框架外,其他的公司也根據(jù)自己的業(yè)務(wù)場景設(shè)計(jì)、開源了其框架.其中開源框架包括Fedlearner,F(xiàn)edNLP,F(xiàn)ederatedScope;閉源框架有ClaraFL 和蜂巢.由于閉源框架的封閉性,本文后續(xù)的對比僅針對開源框架進(jìn)行.

    3.1 其他開源框架

    3.1.1 Fedlearner 框架

    字節(jié)跳動公司在2020 年初就開源了聯(lián)邦學(xué)習(xí)框架 Fedlearner,該框架可以支持各類聯(lián)邦學(xué)習(xí)模式,包括模型管理、訓(xùn)練任務(wù)管理等模塊[42].與微眾銀行等開源框架不同,F(xiàn)edlearner 實(shí)行產(chǎn)品化工作,將模塊部署于平臺側(cè)和廣告主側(cè),注重于在推薦行業(yè)開展聯(lián)邦學(xué)習(xí),如圖24 所示.

    Fig.24 Fedlearner architecture圖24 Fedlearner 架構(gòu)

    Fedlearner 的主要架構(gòu)如圖24 所示,主要流程可以概括為3 個(gè)部分:數(shù)據(jù)求交、模型訓(xùn)練和部署.

    1)數(shù)據(jù)求交

    在進(jìn)行聯(lián)邦學(xué)習(xí)前,首先要對訓(xùn)練雙方數(shù)據(jù)求交集,找到共有的數(shù)據(jù)特征,數(shù)據(jù)求交的方法有2 種:流式數(shù)據(jù)求交和隱私集合求交(private set intersection,PSI)數(shù)據(jù)求交.①流式數(shù)據(jù)求交.流式數(shù)據(jù)通常是指由共同在線流量產(chǎn)生的數(shù)據(jù),它們的數(shù)據(jù)落盤時(shí)間、樣本存儲可靠性都不能做到一致,且不同的訓(xùn)練方還存在樣本缺失和樣本順序不統(tǒng)一的問題.因此,F(xiàn)edlearner針對這些數(shù)據(jù)采取了流式數(shù)據(jù)求交的方法.②PSI 數(shù)據(jù)求交.對于各方獨(dú)自持有的數(shù)據(jù),例如不同機(jī)構(gòu)的用戶信息數(shù)據(jù),F(xiàn)edlearner 提供了PSI 加密數(shù)據(jù)求交的方式,通過該方式完成數(shù)據(jù)求交后,雙方不會得到除交集信息之外的其他任何信息.

    2)模型訓(xùn)練

    由于字節(jié)跳動公司在推薦場景有豐富的技術(shù)資源,因此模型訓(xùn)練部分包括神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練(支持橫向和縱向聯(lián)邦學(xué)習(xí))和樹模型訓(xùn)練(SecureBoost 算法).

    3)部署

    為了實(shí)現(xiàn)一鍵式部署,F(xiàn)edlearner 的設(shè)計(jì)團(tuán)隊(duì)推出了Kubernetes+HDFS/MySQL/Elasticsearch 的部署模式.其中,Kubernetes 管理集群和任務(wù);HDFS 負(fù)責(zé)數(shù)據(jù)存放;MySQL 負(fù)責(zé)存儲系統(tǒng)數(shù)據(jù);Elasticsearch 用于實(shí)現(xiàn)一個(gè)動態(tài)可擴(kuò)展的集群,實(shí)現(xiàn)主節(jié)點(diǎn)、客戶端和數(shù)據(jù)節(jié)點(diǎn)的多角色部署.由此,用戶可以利用Helm Chart 輕松完成大規(guī)模部署.

    3.1.2 FedNLP 框架

    除了工業(yè)界,南加州大學(xué)Lin 等人[43]也開源了首個(gè)以研究為導(dǎo)向的自然語言處理聯(lián)邦學(xué)習(xí)框架(federated learning natural language processing, FedNLP).其具體框架如圖25 所示,主要由應(yīng)用程序?qū)?、算法層和基礎(chǔ)架構(gòu)層這3 層組成.

    Fig.25 FedNLP architecture圖25 FedNLP 架構(gòu)

    1)應(yīng)用程序?qū)?/p>

    應(yīng)用程序?qū)佣x了數(shù)據(jù)管理、模型定義和自然語言處理(natural language processing,NLP)訓(xùn)練器3個(gè)功能模塊.①數(shù)據(jù)管理.在數(shù)據(jù)管理中,4 種不同類型的數(shù)據(jù)管理負(fù)責(zé)控制從加載數(shù)據(jù)到返回訓(xùn)練函數(shù)的整個(gè)工作流程.用戶可以根據(jù)需要開展聯(lián)邦學(xué)習(xí)任務(wù),實(shí)現(xiàn)自定義數(shù)據(jù)管理.②模型定義.FedNLP 提供了Transformer 和LSTM 模型.其特點(diǎn)是與HuggingFace Transformers 庫兼容,研究人員可以直接應(yīng)用現(xiàn)有NLP生態(tài)中各種類型的Transformer,無需重新設(shè)計(jì).此外,F(xiàn)edlearner 也支持LSTM 模型,以實(shí)現(xiàn)一些特定的聯(lián)邦學(xué)習(xí)案例.③NLP 訓(xùn)練器(單進(jìn)程角度).該NLP 訓(xùn)練器不需要研究人員了解分布式系統(tǒng)的內(nèi)容即可完成設(shè)定,即用戶只需完成單進(jìn)程代碼編寫.為實(shí)現(xiàn)聯(lián)邦訓(xùn)練,用戶需要繼承應(yīng)用層的訓(xùn)練分類來實(shí)現(xiàn)操作:獲取本地模型參數(shù)并傳輸至服務(wù)器、獲取服務(wù)器聚合后模型并更新本地模型參數(shù).

    2)算法層

    算法層由服務(wù)器管理和客戶端管理核心對象組成,其作用是集成基礎(chǔ)結(jié)構(gòu)層的通信模塊,以完成分布式算法協(xié)議(如FedAvg,F(xiàn)edProx,F(xiàn)edOpt 等)和分布式訓(xùn)練.同時(shí),用戶也可以通過將自定義的訓(xùn)練方傳遞給算法API 來自定義訓(xùn)練方,API 的參數(shù)包括模型、數(shù)據(jù)和單進(jìn)程訓(xùn)練器.

    3)基礎(chǔ)架構(gòu)層

    該層包括分布式計(jì)算、訓(xùn)練傳輸、訓(xùn)練引擎3 個(gè)模塊.其中分布式計(jì)算模塊主要負(fù)責(zé)管理各聯(lián)邦學(xué)習(xí)參與端,進(jìn)行GPU 資源分配.訓(xùn)練傳輸模塊中使用統(tǒng)一抽象的通信管理來完成復(fù)雜的算法通信協(xié)議.當(dāng)前,該架構(gòu)支持MPI,RPC,MQTT 通信后端.其中MPI 主要用于滿足單個(gè)集群中的分布式訓(xùn)練需求;RPC 主要用于滿足跨數(shù)據(jù)中心的通信需求(例如,跨孤島聯(lián)邦學(xué)習(xí));MQTT 主要用于滿足智能手機(jī)或物聯(lián)網(wǎng)設(shè)備的通信需求.訓(xùn)練引擎模塊的主要作用是通過訓(xùn)練分類重用現(xiàn)有的深度學(xué)習(xí)訓(xùn)練引擎.雖然該模塊的當(dāng)前版本是基于PyTorch,但它可以輕松支持TensorFlow等框架.同時(shí),未來該框架可能會考慮在此級別上支持通過編譯器技術(shù)優(yōu)化的輕量級邊緣訓(xùn)練引擎.

    3.1.3 FederatedScope

    FederatedScope 是由阿里巴巴達(dá)摩院研發(fā)、開源的框架[44].該框架采用事件驅(qū)動的編程范式,用于支持現(xiàn)實(shí)場景中聯(lián)邦學(xué)習(xí)應(yīng)用的異步訓(xùn)練,并借鑒分布式機(jī)器學(xué)習(xí)的相關(guān)研究成果,集成了異步訓(xùn)練策略來提升訓(xùn)練效率.具體而言,F(xiàn)ederatedScope 將聯(lián)邦學(xué)習(xí)看成是參與方之間收發(fā)消息的過程,其通過定義消息類型以及處理消息的行為來描述聯(lián)邦學(xué)習(xí)過程.

    如圖26 所示,F(xiàn)ederatedScope 通訊模塊由信息和通信兩部分組成,在服務(wù)器和客戶端之間交互.信息主要由發(fā)送方、接收方、“TYPE”和數(shù)據(jù)載體4 部分組成,發(fā)送方和接收方用于信息的跟蹤和驗(yàn)證,“TYPE”用于區(qū)分信息的類型,數(shù)據(jù)載體用于保存交換的信息.

    Fig.26 FederatedScope architecture圖26 FederatedScope 架構(gòu)

    FederatedScope 的優(yōu)點(diǎn)在于不需要開發(fā)者將聯(lián)邦學(xué)習(xí)的過程用順序執(zhí)行的視角來完整描述,而只需采用事件驅(qū)動的方式增加新的消息類型和消息處理行為,系統(tǒng)協(xié)助完成自動調(diào)參和高效異步訓(xùn)練,降低了所需的開發(fā)量以及復(fù)雜度.

    之后該團(tuán)隊(duì)開發(fā)了FS-G (FederatedScope-GNN),一種基于FederatedScope 面向于圖神經(jīng)網(wǎng)絡(luò)的聯(lián)邦學(xué)習(xí)(GFL)框架[45].FS-G 包含了一個(gè)FGL 包,用于構(gòu)建可配置、統(tǒng)一、全面的基準(zhǔn).其系統(tǒng)架構(gòu)如圖27 所示.

    Fig.27 FS-G architecture圖27 FS-G 架構(gòu)

    FS-G 系統(tǒng)組件功能為:

    1)GNN 模型庫模塊用于處理不同級別任務(wù);神經(jīng)網(wǎng)絡(luò)模塊構(gòu)建不同結(jié)構(gòu)的GNN;GNN 訓(xùn)練方封裝本地訓(xùn)練方法接口;圖數(shù)據(jù)庫模塊允許用戶通過配置數(shù)據(jù)集、分割器、轉(zhuǎn)化器以及數(shù)據(jù)下載器來構(gòu)建聯(lián)邦學(xué)習(xí)數(shù)據(jù)集.

    2)圖學(xué)習(xí)后端模塊可對接包括TensorFlow,Pytorch,JAX 在內(nèi)的多種主流機(jī)器學(xué)習(xí)框架以及 SQL 前端.

    3)FGL 運(yùn)行模式模塊為FS-G 的運(yùn)行調(diào)用接口,可接收配置參數(shù)信息并返回訓(xùn)練結(jié)果指標(biāo)集合.

    4)模型調(diào)優(yōu)組件模塊為模型調(diào)整組件.超參數(shù)優(yōu)化模塊用于自動調(diào)整參數(shù),通過減半算法(SHA)加快超參數(shù)評估和搜索,降低資源消耗.監(jiān)控器模塊通過可視化損失函數(shù)以及準(zhǔn)確率等指標(biāo)監(jiān)控訓(xùn)練過程.個(gè)性化模塊允許用戶在Non-IID 的條件下調(diào)整模型參數(shù)或者實(shí)現(xiàn)GNN 的超參數(shù)個(gè)性化.

    5)攻擊與防御模塊主要繼承了現(xiàn)成的各種主動和被動隱私攻擊方式,包括成員推理攻擊、屬性推理攻擊和標(biāo)簽推薦攻擊等.隱私安全保護(hù)策略,包括差分隱私、多方安全計(jì)算.

    3.2 閉源框架

    英偉達(dá)也推出了一款主要應(yīng)用目標(biāo)為醫(yī)院和醫(yī)療機(jī)構(gòu)的聯(lián)邦學(xué)習(xí)框架ClaraFL[46].該框架的特點(diǎn)是客戶端可以部署于面向邊緣的英偉達(dá)服務(wù)器上,在本地進(jìn)行模型訓(xùn)練,并通過聯(lián)邦學(xué)習(xí)的方式實(shí)現(xiàn)數(shù)據(jù)交流,從而與多參與方共同訓(xùn)練出更精準(zhǔn)的全局模型.ClaraFL 可以將患者數(shù)據(jù)保存在醫(yī)院內(nèi)部,實(shí)現(xiàn)隱私保護(hù)的同時(shí),幫助醫(yī)生進(jìn)行高速而準(zhǔn)確的診斷.由于單個(gè)醫(yī)療機(jī)構(gòu)的數(shù)據(jù)量有限,基于ClaraFL 進(jìn)行聯(lián)邦學(xué)習(xí)可以有效匯總海量醫(yī)療數(shù)據(jù),打破數(shù)據(jù)壁壘,提高醫(yī)療救治水平.

    此外,平安科技也推出了一款主要應(yīng)用于物流行業(yè)的聯(lián)邦智能框架——“蜂巢”.該框架的特點(diǎn)是支持定制化,采用了國密SM2、國密SM4 以及差分隱私和同態(tài)加密等加密方式,以滿足不同場景所需的不同保密級別.

    3.3 框架對比分析

    在3.1 節(jié)介紹的開源框架中,框架在隱私泄露風(fēng)險(xiǎn)和數(shù)據(jù)加密都有各自的方案.其中FedNLP 和FederatedScope 共同支持差分隱私的加密技術(shù).在此基礎(chǔ)之上,F(xiàn)ederatedScope 除了支持多方安全加密和同態(tài)加密之外,還提供了主流的隱私評估算法.Fedlearner則是采用嵌入式的保護(hù)框架.例如采用PSI 加密數(shù)據(jù)或是采用Paillier 算法對梯度加密.在算法級別,F(xiàn)edNLP,F(xiàn)ederatedScope 和Fedlearner 三者均支持傳統(tǒng)的機(jī)器學(xué)習(xí)算法、深度學(xué)習(xí)網(wǎng)絡(luò),但是在學(xué)習(xí)類型中FederatedScope和FedNLP 都支持橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí),而Fedlearner 暫時(shí)僅支持橫向聯(lián)邦學(xué)習(xí).在計(jì)算范式方面,三者均支持單機(jī)模擬和分布式訓(xùn)練,其中FederatedScope為單機(jī)模擬和分布式部署提供了統(tǒng)一的算法描述和接口.除了單機(jī)和分布式2 種模式外,F(xiàn)edNLP 還支持移動設(shè)備端的訓(xùn)練.針對可視化系統(tǒng)的支持,F(xiàn)edlearner自身有可視化圖表功能,F(xiàn)edNLP 借助wandb 模塊完成對框架的監(jiān)控.

    4 框架對比分析

    為了更好地根據(jù)應(yīng)用場景以及應(yīng)用需求選擇相應(yīng)的開源框架,本節(jié)從各框架支持的隱私機(jī)制、機(jī)器學(xué)習(xí)算法、計(jì)算范式、聯(lián)邦學(xué)習(xí)類型、訓(xùn)練架構(gòu)以及可視化等方面對目前應(yīng)用較廣的6 個(gè)開源框架進(jìn)行了深入分析和對比,具體如表3 所示.

    降低隱私泄露風(fēng)險(xiǎn)、提升私密數(shù)據(jù)安全性是聯(lián)邦學(xué)習(xí)的初衷之一,因此各框架均采用多樣的加密技術(shù)(如同態(tài)加密、多方安全計(jì)算和差分隱私)以保障參與方的隱私安全.其中同態(tài)加密主要是利用具有同態(tài)性質(zhì)的加密函數(shù)對數(shù)據(jù)加密,實(shí)現(xiàn)對加密后的數(shù)據(jù)處理和保證隱私安全.Deffie-Hellman 算法的通信雙方通過交換信息生成共同密鑰,并利用密鑰進(jìn)行對稱加密通信.RSA 加密算法則是非對稱加密技術(shù),由一對公鑰和私鑰組成密鑰.

    多方安全計(jì)算是指在無可信第三方情況下,通過多方共同參與安全完成協(xié)同計(jì)算.SPDZ 是許多聯(lián)邦學(xué)習(xí)框架采用的協(xié)議,它包含混淆電路、秘密共享和不經(jīng)意傳輸?shù)燃夹g(shù).ABY3 協(xié)議則綜合采用算術(shù)分享、布爾分享和混淆電路協(xié)議.

    基于差分隱私的數(shù)據(jù)保護(hù),是通過向數(shù)據(jù)或模型參數(shù)注入隨機(jī)噪聲以實(shí)現(xiàn)隱私保護(hù),同時(shí)防止對模型的推理攻擊.目前的聯(lián)邦學(xué)習(xí)框架主要采用DPSGD 算法對隨機(jī)梯度下降算法進(jìn)行改進(jìn)而使其具有差分私有性.

    PySyft 具有相對完善的隱私保護(hù)機(jī)制,同時(shí)應(yīng)用差分隱私、基于CKKS 的同態(tài)加密和基于SPDZ 協(xié)議的安全多方計(jì)算來保障數(shù)據(jù)安全;而TFF 和Flower僅采用了差分隱私技術(shù).與PySyft 類似,F(xiàn)edML 同樣提供了較為全面的隱私保障,同時(shí)它還能抵御對抗攻擊,采取RFA 和KRUM 等技術(shù)讓聯(lián)邦學(xué)習(xí)具有魯棒性.PaddleFL 利用差分隱私和基于PrivC 和ABY3的安全多方計(jì)算來實(shí)現(xiàn)安全聯(lián)邦學(xué)習(xí).FATE 在隱私機(jī)制上主要采用同態(tài)加密技術(shù)和安全多方計(jì)算,其中前者包括Paillier,RSA,Affine,IterativeAffine 等加密算法,后者基于SPDZ、混淆電路、不經(jīng)意傳輸?shù)让艽a學(xué)協(xié)議實(shí)現(xiàn).

    在算法級別,F(xiàn)ATE 框架最為全面,對于橫向聯(lián)邦學(xué)習(xí)、縱向聯(lián)邦學(xué)習(xí)和聯(lián)邦遷移學(xué)習(xí)均支持許多機(jī)器學(xué)習(xí)算法.該框架集成了各種線性模型和DNN,RNN,CNN 等神經(jīng)網(wǎng)絡(luò).此外,除了FATE 提供了SecureBoost 安全樹外,其他框架均尚未支持決策樹相關(guān)算法.PaddleFL 在橫向聯(lián)邦方面提供了DP-SGD等算法;Flower 在橫向聯(lián)邦方面,除了對常規(guī)神經(jīng)網(wǎng)絡(luò)有很好的支持外,對Sklearn 中提供的算法也有很好的支持.對于縱向聯(lián)邦學(xué)習(xí),支持關(guān)于神經(jīng)網(wǎng)絡(luò)和邏輯回歸的相關(guān)算法.TFF,PySyft,F(xiàn)edML 可以實(shí)現(xiàn)線性模型和神經(jīng)網(wǎng)絡(luò)算法.總而言之,F(xiàn)ATE 和PaddleFL傾向于提供現(xiàn)成算法供用戶直接使用,而PySyft,TFF,F(xiàn)edML 則更側(cè)重用戶構(gòu)建自定義聯(lián)邦學(xué)習(xí)算法.

    計(jì)算范式方面,針對科學(xué)研究、測試開發(fā)和工業(yè)生產(chǎn)等不同使用場景,需要有不同的計(jì)算范式,因此是否擁有多樣化的計(jì)算范式是衡量聯(lián)邦學(xué)習(xí)框架的一個(gè)重要因素.目前較多學(xué)者主要采用支持3 種范式的PySyft,F(xiàn)edML,F(xiàn)lower 開展學(xué)術(shù)研究;此外,F(xiàn)lower相較于其他框架,提供了一套用于模擬真實(shí)場景下網(wǎng)絡(luò)擁塞和大規(guī)模并發(fā)的機(jī)制,使得模擬場景更貼近現(xiàn)實(shí)場景.FATE 作為工業(yè)級聯(lián)邦學(xué)習(xí)框架,可進(jìn)行單機(jī)模擬和分布式計(jì)算,雖然在工業(yè)應(yīng)用上較有優(yōu)勢,但暫未支持移動設(shè)備端訓(xùn)練.PaddleFL 目前主要支持單機(jī)模擬與基于拓?fù)浣Y(jié)構(gòu)的分布式訓(xùn)練,但研究團(tuán)隊(duì)指出在下一版本中將開源手機(jī)端的聯(lián)邦學(xué)習(xí)模擬器.

    聯(lián)邦學(xué)習(xí)中服務(wù)器與客戶端間存在大量的通信,需要保證通信的效率和可靠性.多數(shù)開源框架都利用Google 提供的gRPC 來實(shí)現(xiàn)RPC 通信,包括TFF,F(xiàn)ATE,Paddle FL,F(xiàn)lower.RPC 框架可以有效連接跨數(shù)據(jù)中心的設(shè)備,適用于相互之間數(shù)據(jù)傳輸頻繁的Crosssilo 聯(lián)邦學(xué)習(xí)場景.FedML 支持的通信后端最為豐富,包括MPI,gRPC,MQTT,這是FedML 框架的一個(gè)突出優(yōu)勢.此外,F(xiàn)lower 和FedML 的通信模塊采用了靈活的設(shè)計(jì),可以通過替換底層的通信管理模塊來使用自定義的通信協(xié)議.

    對于工業(yè)生產(chǎn)應(yīng)用,利用FATE 可以輕松構(gòu)建端到端的聯(lián)邦學(xué)習(xí) Pipeline ,包括生產(chǎn)服務(wù)、建模訓(xùn)練、模型管理、生產(chǎn)發(fā)布和在線推理等方面.PySyft 尚未提供大規(guī)模或工業(yè)部署方案,更適合作為學(xué)術(shù)研究的工具.Flower 提供了大規(guī)模的部署方案以及網(wǎng)絡(luò)模擬,此外也在移動端、無線端提供了跨平臺支持,適合作為模擬大規(guī)模場景下的學(xué)術(shù)研究工具.TensorFlow,F(xiàn)ederated 和FedML 同樣缺少對線上生產(chǎn)的完善支撐.

    可視化方法可以幫助研究人員形象了解復(fù)雜模型的本質(zhì)和過程[47],從而進(jìn)行模型設(shè)計(jì)和模型調(diào)試等任務(wù)[48].截至目前,只有FATE 和FedML 提供了可視化功能,其他框架尚未推出相關(guān)功能.相對于其他框架,F(xiàn)ATE 設(shè)計(jì)了針對模型訓(xùn)練過程的可視化組件,可以記錄聯(lián)邦學(xué)習(xí)的全流程.對于聯(lián)邦學(xué)習(xí)了解較少的研究人員來說,使用FATE 可以更好地跟進(jìn)聯(lián)邦學(xué)習(xí)過程,完成模型調(diào)試等操作.

    異步聚合方面,F(xiàn)ATE 提供異步聚合的接口,其他框架未直接提供異步聚合接口,但可以基于框架進(jìn)行2 次開發(fā)實(shí)現(xiàn)異步聚合的功能.現(xiàn)有原生的框架本身都提供了比較健全、完善的方法接口,用戶可以根據(jù)需求編寫自己的算法來滿足不同的聯(lián)邦學(xué)習(xí)場景的需要,如用戶掉線場景.

    5 基于開源框架的聯(lián)邦學(xué)習(xí)實(shí)驗(yàn)

    為了幫助研究人員更好地根據(jù)應(yīng)用需求選擇合適的聯(lián)邦學(xué)習(xí)框架,本節(jié)以2 個(gè)不同的場景為例,闡述如何選擇以及搭建聯(lián)邦學(xué)習(xí)框架,并基于搭建的框架進(jìn)行實(shí)驗(yàn).

    5.1 應(yīng)用場景1:基于IoT 的圖像識別

    隨著智能設(shè)備感知能力和計(jì)算能力的不斷提升,越來越多的設(shè)備具備了微型計(jì)算機(jī)的能力.而如何利用這些智能設(shè)備的本地?cái)?shù)據(jù)和計(jì)算資源創(chuàng)造更有益的技術(shù)成為了目前的研究熱點(diǎn)之一.因此,我們選擇的第1 個(gè)應(yīng)用場景是:在IoT 網(wǎng)絡(luò)中,通過在分散的IoT 設(shè)備中訓(xùn)練一個(gè)圖像分類模型,使其可以準(zhǔn)確識別、分類圖片.

    對于此應(yīng)用場景,其需求是在IoT 網(wǎng)絡(luò)中部署聯(lián)邦學(xué)習(xí)框架,分析已有的開源框架,目前FedML 和Flower 支持該需求.我們以FedML 為例搭建聯(lián)邦學(xué)習(xí)框架,利用樹莓派搭建IoT 設(shè)備集群,在MNIST 和CIFAR10 數(shù)據(jù)集上實(shí)現(xiàn)圖片的分類任務(wù).

    5.1.1 實(shí)驗(yàn)基本設(shè)置

    該系統(tǒng)主要包含4 臺樹莓派,并將其中1 臺作為中心服務(wù)器,用于模型聚合;另外3 臺作為客戶機(jī),基于本地?cái)?shù)據(jù)集進(jìn)行訓(xùn)練并上傳模型.

    算法:采用常規(guī)的聯(lián)邦學(xué)習(xí)算法Fedavg.

    其他參數(shù):采用Adam 優(yōu)化器,學(xué)習(xí)率為0.01.

    數(shù)據(jù)集:為了測試搭建框架在不同數(shù)據(jù)集以及不同模型上的訓(xùn)練效果,分別基于真實(shí)數(shù)據(jù)集MNIST和CIFAR10 進(jìn)行實(shí)驗(yàn).

    對比方法:①集群訓(xùn)練.聯(lián)合3 臺客戶機(jī)的本地?cái)?shù)據(jù)進(jìn)行分布式聯(lián)邦學(xué)習(xí)模型訓(xùn)練.②單機(jī)本地訓(xùn)練.單臺客戶機(jī)基于本地?cái)?shù)據(jù)集進(jìn)行模型訓(xùn)練.

    5.1.2 基于MNIST 數(shù)據(jù)集的實(shí)驗(yàn)

    MNIST 數(shù)據(jù)集包含了60 000 個(gè)樣本(50 000 個(gè)訓(xùn)練集、10 000 個(gè)測試集).在MNIST 數(shù)據(jù)集中的每張圖片由28× 28 個(gè)像素點(diǎn)構(gòu)成,每個(gè)像素點(diǎn)用1 個(gè)灰度值表示.采用MobileNet 模型,模型由13 個(gè)Depthwise Separable 卷積層、1 個(gè)二元自適應(yīng)均值匯聚層和1 個(gè)全連接層構(gòu)成.圖28 分別分析了客戶端數(shù)據(jù)為500和5 000 這2 種情況下的聯(lián)邦學(xué)習(xí)和單機(jī)的模型準(zhǔn)確率收斂曲線.相比于單機(jī)本地訓(xùn)練,圖28(a)下聯(lián)邦學(xué)習(xí)可以提升12.4%的準(zhǔn)確率;圖28(b)下聯(lián)邦學(xué)習(xí)可以提升2.3%的準(zhǔn)確率.可見,在數(shù)據(jù)缺乏的情況下,聯(lián)邦學(xué)習(xí)可以帶來更大的收益.

    Fig.28 Model convergence curves under MNIST dataset圖28 MNIST 數(shù)據(jù)集下模型收斂曲線

    5.1.3 基于CIFAR10 數(shù)據(jù)集的實(shí)驗(yàn)

    CIFAR10 是1 個(gè)包含60 000 張圖片的數(shù)據(jù)集.其中每張照片為32× 32 的彩色照片,每個(gè)像素點(diǎn)包括RGB 3 個(gè)數(shù)值,數(shù)值范圍是 0~255.所有照片分屬10 個(gè)不同的類別,分別是“airplane”“automobile”“bird”“cat”“deer”“dog”“frog”“horse”“ship”“truck”.其中50 000張圖片為訓(xùn)練集,剩下的10 000 張圖片屬于測試集.

    模型采用2 個(gè)5× 5 的卷積網(wǎng)絡(luò)(每層有64 個(gè)通道),1 個(gè)2× 2 的最大池化層,2 個(gè)完全連接層(分別包含384 個(gè)單元和192 個(gè)單元),最后是一個(gè)softmax 輸出層.該實(shí)驗(yàn)設(shè)置單機(jī)隨機(jī)選擇1 500 個(gè)數(shù)據(jù)(圖29 (a))和5 000 個(gè)數(shù)據(jù)(圖29(b))作為對比,觀測在聯(lián)邦學(xué)習(xí)和單機(jī)模式下訓(xùn)練模型準(zhǔn)確率的收斂曲線.2 組對照實(shí)驗(yàn)中,聯(lián)邦學(xué)習(xí)的準(zhǔn)確率整體提升了8%,相較于傳統(tǒng)的單機(jī)模式性能有所提升.

    Fig.29 Model convergence curves under CIFAR10 dataset圖29 CIFAR10 數(shù)據(jù)集下模型收斂曲線

    5.2 應(yīng)用場景2:醫(yī)療系統(tǒng)中的輔助病理診斷

    人工病理診斷一般都要求醫(yī)院具有較強(qiáng)的技術(shù)支持和醫(yī)生具有較豐富的經(jīng)驗(yàn).而在一些醫(yī)療資源相對欠缺的區(qū)域,如果醫(yī)生無法通過一些儀器進(jìn)行輔助診斷,則可能存在誤診與漏診情況.目前,人工智能的發(fā)展大大推動了智能藥物研發(fā)、輔助醫(yī)療診斷、基因特性分析的發(fā)展,使得不同醫(yī)療機(jī)構(gòu)之間共享醫(yī)療資源成為可能.因此,第2 個(gè)應(yīng)用場景是:通過學(xué)習(xí)不同醫(yī)療機(jī)構(gòu)的醫(yī)療數(shù)據(jù),訓(xùn)練一個(gè)可以輔助醫(yī)生進(jìn)行病理診斷的模型.

    對于此應(yīng)用場景,我們最基本的設(shè)計(jì)需求是需要搭建一個(gè)支持?jǐn)?shù)據(jù)隱私保護(hù)的分布式學(xué)習(xí)架構(gòu).雖然已有開源框架幾乎都支持該需求,但是由于醫(yī)院對其醫(yī)療數(shù)據(jù)的安全性要求特別高,且目前工業(yè)支持和應(yīng)用較為成熟的只有FATE,因此,我們選擇以FATE 為例搭建病理診斷模型的聯(lián)邦學(xué)習(xí)系統(tǒng),選用UCI 數(shù)據(jù)庫中Wisconsin 州乳腺癌數(shù)據(jù)集[49]進(jìn)行模型訓(xùn)練.

    5.2.1 配置文件

    1)dsl 文件.用來描述任務(wù)模塊,以有向無環(huán)圖(DAG)的形式組合任務(wù)模塊.

    2)conf 文件.設(shè)置各個(gè)組件的參數(shù),如輸入模塊的數(shù)據(jù)表名、算法模塊的學(xué)習(xí)率、batch 大小、迭代次數(shù)等.

    5.2.2 參與各方角色

    1)Guest.任務(wù)的發(fā)起者,代表數(shù)據(jù)應(yīng)用方.

    2)Host.數(shù)據(jù)提供方,為Guest 提供數(shù)據(jù).

    3)Arbiter.輔助多方完成聯(lián)合建模,主要作用是聚合梯度或者模型.比如聚合各方本地模型,各方將自身梯度模型參數(shù)發(fā)送給Arbiter,Arbiter 進(jìn)行聯(lián)合優(yōu)化等.

    5.2.3 橫向聯(lián)邦場景

    1)數(shù)據(jù)集.采用乳腺癌數(shù)據(jù)集Breast Cancer 作為實(shí)驗(yàn)數(shù)據(jù).Breast Cancer 數(shù)據(jù)集有569 組31 維實(shí)例數(shù)據(jù),30 維的診斷屬性包括radius 半徑(從中心到邊緣上點(diǎn)的距離的平均值)、texture 紋理(灰度值的標(biāo)準(zhǔn)偏差)等,1 維的標(biāo)簽類分為WDBC-Malignant 惡性和WDBC-Benign 良性.該數(shù)據(jù)集中,469 條數(shù)據(jù)作為訓(xùn)練樣本,100 條數(shù)據(jù)作為測試樣本.從469 條訓(xùn)練樣本中,選取200 條樣本作為參與方A(host)的本地?cái)?shù)據(jù),將剩余的269 條樣本作為參與方B(guest)的本地?cái)?shù)據(jù),測試數(shù)據(jù)共享.

    2)任務(wù).采用Breast Cancer 數(shù)據(jù)集在Logistic Regression 模型下進(jìn)行醫(yī)療病例診斷.

    3)對比方法.①聯(lián)邦訓(xùn)練.聯(lián)合參與方A,B進(jìn)行聯(lián)邦學(xué)習(xí)模型訓(xùn)練.②本地訓(xùn)練.參與方B基于本地?cái)?shù)據(jù)進(jìn)行模型訓(xùn)練.

    實(shí)驗(yàn)結(jié)果如圖30 所示.圖30(a)為模型準(zhǔn)確率的收斂曲線,在整個(gè)訓(xùn)練過程中,雙方都達(dá)到了不錯(cuò)的效果,但是采用聯(lián)邦學(xué)習(xí)的方式,相比于單機(jī)模式提高了2.3%的準(zhǔn)確率.在圖30(b)所示的模型損失函數(shù)的收斂曲線中,聯(lián)邦學(xué)習(xí)的方式使得損失以更快的速度達(dá)到最小.相比于本地訓(xùn)練,聯(lián)邦學(xué)習(xí)下模型的準(zhǔn)確率有所提升.橫向聯(lián)邦學(xué)習(xí)可以聯(lián)合多個(gè)參與者的具有相同特征的數(shù)據(jù)樣本,提高樣本的豐富性.

    Fig.30 Breast Cancer horizontal federated learning圖30 Breast Cancer 橫向聯(lián)邦學(xué)習(xí)

    5.2.4 縱向聯(lián)邦學(xué)習(xí)場景

    1)數(shù)據(jù)集.采用Breast Cancer 數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù).其中,400 條數(shù)據(jù)作為訓(xùn)練樣本,169 條數(shù)據(jù)作為評估測試樣本.從400 條訓(xùn)練樣本中,選取Breast Cancer數(shù)據(jù)集前20 個(gè)特征作為參與方A的本地?cái)?shù)據(jù),后10個(gè)特征以及標(biāo)簽作為參與方B的本地?cái)?shù)據(jù),測試數(shù)據(jù)參與方B獨(dú)享.

    2)任務(wù).采用Breast Cancer 數(shù)據(jù)集在邏輯回歸模型下進(jìn)行醫(yī)療病例診斷.

    3)對比方法.①聯(lián)邦訓(xùn)練.聯(lián)合參與方A和B進(jìn)行聯(lián)邦學(xué)習(xí)模型訓(xùn)練.②本地訓(xùn)練.參與方B基于本地?cái)?shù)據(jù)進(jìn)行模型訓(xùn)練.

    實(shí)驗(yàn)結(jié)果如圖31 所示.圖31(a)為模型準(zhǔn)確率的收斂曲線.在準(zhǔn)確率方面:聯(lián)邦學(xué)習(xí)的結(jié)果相較于本地訓(xùn)練這種方式,準(zhǔn)確率提升了4.7%.在訓(xùn)練速度方面:聯(lián)邦學(xué)習(xí)的結(jié)果也比本地訓(xùn)練加快了約10 輪.圖31(b)為模型損失函數(shù)的收斂曲線,可以明顯看出聯(lián)邦學(xué)習(xí)的損失函數(shù)以更快的速度達(dá)到收斂.因此,從圖31可以看出,縱向聯(lián)邦學(xué)習(xí)可以聯(lián)合多個(gè)參與者的共同樣本的不同數(shù)據(jù)特征,豐富樣本特征,提高模型的識別準(zhǔn)確率.

    Fig.31 Breast Cancer vertical federated learning圖31 Breast Cancer 縱向聯(lián)邦學(xué)習(xí)

    總之,從圖30 和圖31 表明,橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí)都可以有效提高模型的訓(xùn)練效果,同時(shí),聯(lián)邦學(xué)習(xí)的計(jì)算范式保證了用戶本地?cái)?shù)據(jù)的隱私安全.此外,在開展聯(lián)邦學(xué)習(xí)時(shí),需要根據(jù)場景選擇合適的聯(lián)邦學(xué)習(xí)模式,缺少樣本數(shù)據(jù)可以選擇橫向聯(lián)邦學(xué)習(xí),缺少樣本特征可以選擇縱向聯(lián)邦學(xué)習(xí).

    5.3 框架訓(xùn)練效率對比

    為了進(jìn)一步對比不同框架的效率,我們基于FedML和FATE 框架分別對Breast Cancer 數(shù)據(jù)集進(jìn)行橫向聯(lián)邦學(xué)習(xí)模型訓(xùn)練和縱向聯(lián)邦學(xué)習(xí)模型訓(xùn)練,從時(shí)間角度來比較2 個(gè)框架間的效率差異.服務(wù)器配置清單:CPU 為i5-4460,1.86 GHz,6 核;內(nèi)存容量為16 GB;網(wǎng)絡(luò)帶寬為30 Mbps;操作系統(tǒng)為CentOS Linux release 7.9.2009.

    實(shí)驗(yàn)結(jié)果如圖32 所示,橫向聯(lián)邦學(xué)習(xí)到達(dá)指定目標(biāo)準(zhǔn)確率時(shí),F(xiàn)edML 框架比FATE 框架耗時(shí)少8s,有8%左右的速度優(yōu)勢.究其原因,F(xiàn)edML 相比于FATE更輕量級,時(shí)間優(yōu)勢主要體現(xiàn)在框架啟動過程中,但整體上2 個(gè)框架在橫向聯(lián)邦學(xué)習(xí)訓(xùn)練效率上比較相近.縱向聯(lián)邦學(xué)習(xí)到達(dá)指定目標(biāo)準(zhǔn)確率時(shí),F(xiàn)edML 框架只需103s,相比于FATE 框架速度提升了86%.這主要由于FATE 框架中的縱向聯(lián)邦學(xué)習(xí)采用了多方安全的樣本對齊算法,該算法基于RSA 加密算法和散列函數(shù)實(shí)現(xiàn),在增強(qiáng)隱私保護(hù)的同時(shí)嚴(yán)重降低了模型的訓(xùn)練效率.

    Fig.32 Comparison of training time of different frame models圖32 不同框架模型訓(xùn)練時(shí)間對比

    FATE 框架相比于FedML 有隱私保護(hù)機(jī)制支持,因而不可避免地造成效率上的損失.其他框架也是如此,追求數(shù)據(jù)的高度隱私安全會造成訓(xùn)練效率的急劇下降,但可以通過并行加密計(jì)算等技術(shù)加速訓(xùn)練,提高效率.

    6 挑戰(zhàn)與展望

    盡管聯(lián)邦學(xué)習(xí)已有實(shí)際落地的項(xiàng)目,但是其仍然處于發(fā)展初期,對于各種復(fù)雜的學(xué)習(xí)場景還有很多待解決的挑戰(zhàn)問題以及待提升的技術(shù),通過對目前聯(lián)邦學(xué)習(xí)開源框架的研究和應(yīng)用現(xiàn)狀的分析,本文總結(jié)了5 點(diǎn)挑戰(zhàn)與展望.

    1)隱私安全

    隱私安全問題是聯(lián)邦學(xué)習(xí)研究的動因.雖然通過訓(xùn)練數(shù)據(jù)不離開本地進(jìn)行訓(xùn)練可以保護(hù)數(shù)據(jù)隱私信息的安全性,但在實(shí)際應(yīng)用過程中,由于聯(lián)邦學(xué)習(xí)的訓(xùn)練過程包含多個(gè)復(fù)雜環(huán)節(jié),因而每個(gè)環(huán)節(jié)依然面臨許多安全與隱私挑戰(zhàn),如投毒攻擊[50-51]、基于GAN[52-53]的攻擊、推理攻擊[54]、通信節(jié)點(diǎn)攻擊和中央服務(wù)器攻擊等.多數(shù)實(shí)驗(yàn)證明,即使只上傳模型的相關(guān)參數(shù),仍然能反推出終端的隱私數(shù)據(jù)[55-56].針對以上威脅,聯(lián)邦學(xué)習(xí)框架在安全和隱私保護(hù)方面采取了一系列的措施,如差分隱私[57-58]、同態(tài)加密[59-60]和安全多方計(jì)算[61-62]等.雖然這些技術(shù)能實(shí)現(xiàn)安全聯(lián)邦學(xué)習(xí),但仍然存在一些易受攻擊的漏洞需要填補(bǔ).此外,采用隱私技術(shù)的同時(shí)也會造成較大的通信開銷,因此如何平衡模型安全和通信也是一個(gè)相當(dāng)大的挑戰(zhàn).

    2)效率、準(zhǔn)確性和隱私的權(quán)衡

    增強(qiáng)聯(lián)邦學(xué)習(xí)的隱私保護(hù),在一定程度上犧牲了模型訓(xùn)練效率與結(jié)果準(zhǔn)確性.在聯(lián)邦學(xué)習(xí)場景下,一個(gè)模型訓(xùn)練包括大規(guī)模的數(shù)據(jù)樣本和復(fù)雜計(jì)算,此時(shí)運(yùn)算效率是一個(gè)重要問題.聯(lián)邦學(xué)習(xí)框架采用復(fù)雜的加密系統(tǒng)以保護(hù)隱私,而這需要龐大的計(jì)算量和通信量.網(wǎng)絡(luò)帶寬有限、設(shè)備掉線等通信問題都會使傳輸?shù)臄?shù)據(jù)量和傳輸速度下降[63-64],從而導(dǎo)致聯(lián)邦學(xué)習(xí)的效率不高.結(jié)果準(zhǔn)確性方面,如果加密級別太高或添加噪聲過多,無疑會降低模型的準(zhǔn)確性.因此,如何在保障隱私安全的前提下提高聯(lián)邦學(xué)習(xí)的訓(xùn)練效率和結(jié)果準(zhǔn)確性,實(shí)現(xiàn)安全、效率和準(zhǔn)確性之間的平衡[64-66],是聯(lián)邦學(xué)習(xí)框架需要解決的問題.

    3)激勵機(jī)制

    聯(lián)邦學(xué)習(xí)是一個(gè)多方數(shù)據(jù)聯(lián)盟的技術(shù),只有提高參與用戶的數(shù)量才能訓(xùn)練出更精確有效的模型.如果沒有采取合適的激勵機(jī)制,那么獲取的數(shù)據(jù)和訓(xùn)練的模型質(zhì)量受限.同時(shí),各方可能因利益沖突、互不信任等問題導(dǎo)致最終合作失敗.如何制定合理的激勵機(jī)制是聯(lián)邦學(xué)習(xí)框架面臨的一大挑戰(zhàn).未來,聯(lián)邦學(xué)習(xí)框架不僅需要考慮隱私保護(hù),更要考慮如何通過共識機(jī)制實(shí)施公平激勵[67-68],以實(shí)現(xiàn)聯(lián)邦集體利益最大化.各框架可以通過計(jì)算各參與方對模型的貢獻(xiàn)建立數(shù)據(jù)記錄機(jī)制(例如記錄于區(qū)塊鏈中[69-70])以激勵不同程度參與方,從而形成最優(yōu)聯(lián)邦組織.

    4)異構(gòu)性與個(gè)性化

    現(xiàn)有的聯(lián)邦學(xué)習(xí)框架要求全體參與方訓(xùn)練出一致的全局模型,而這在實(shí)際復(fù)雜的物聯(lián)網(wǎng)應(yīng)用中是不現(xiàn)實(shí)的.由于設(shè)備、統(tǒng)計(jì)和模型的異構(gòu)性[71],現(xiàn)有的聯(lián)邦學(xué)習(xí)模型不能直接在物聯(lián)網(wǎng)設(shè)備中有效應(yīng)用.為了解決異構(gòu)性挑戰(zhàn),聯(lián)邦框架需要考慮個(gè)性化處理[72-74],讓每個(gè)設(shè)備獲得高質(zhì)量的個(gè)性化模型,如采取多任務(wù)和元學(xué)習(xí)的方法.

    5)跨框架交互

    隨著聯(lián)邦學(xué)習(xí)逐漸進(jìn)入大眾視野,不同行業(yè)的公司都推出了各自的聯(lián)邦學(xué)習(xí)框架.而這在豐富市場選擇中也出現(xiàn)了新的問題:由于各框架技術(shù)實(shí)現(xiàn)的差異和安全協(xié)議的區(qū)別,不同框架所托管的數(shù)據(jù)在實(shí)際應(yīng)用中無法跨框架交互.不同聯(lián)邦學(xué)習(xí)技術(shù)框架之間互聯(lián)的阻礙限制了跨行業(yè)數(shù)據(jù)的交流和行業(yè)間融合互通,制約了數(shù)據(jù)價(jià)值的釋放.因此,聯(lián)邦學(xué)習(xí)框架應(yīng)朝著數(shù)據(jù)跨框架交流、算法跨框架部署、任務(wù)跨框架執(zhí)行的方向發(fā)展,使不同行業(yè)可以在統(tǒng)一的標(biāo)準(zhǔn)下進(jìn)行聯(lián)邦學(xué)習(xí),實(shí)現(xiàn)行業(yè)互聯(lián)互通,推進(jìn)數(shù)字化融合發(fā)展.

    7 結(jié) 論

    作為破解“數(shù)據(jù)孤島”問題和保障隱私安全的有效手段,聯(lián)邦學(xué)習(xí)的重要性日益凸顯.而聯(lián)邦學(xué)習(xí)的有效應(yīng)用主要依托于開源框架的研究和建設(shè).因此,考慮到聯(lián)邦學(xué)習(xí)開源框架的重要性,本文重點(diǎn)從系統(tǒng)架構(gòu)、系統(tǒng)功能、版本變化3 方面介紹開源框架FATE,PySyft,TensorFlow Federated,Paddle FL,F(xiàn)edML,F(xiàn)lower.并從隱私機(jī)制、機(jī)器學(xué)習(xí)算法、計(jì)算范式、學(xué)習(xí)類型、訓(xùn)練架構(gòu)、通信協(xié)議、可視化等方面對比總結(jié)了各框架的優(yōu)劣勢.為了更好地幫助讀者搭建開源框架,本文給出了2 個(gè)不同應(yīng)用場景框架搭建的實(shí)例.并基于目前框架存在的開放性問題,從隱私安全、激勵機(jī)制與置信規(guī)則、跨框架交互等方面討論了未來可能的研究發(fā)展方向.總之,本文對于聯(lián)邦學(xué)習(xí)未來的研究具有較好的參考意義,可為開源框架的建設(shè)創(chuàng)新、結(jié)構(gòu)優(yōu)化、安全優(yōu)化以及算法優(yōu)化等提供有效思路.

    作者貢獻(xiàn)聲明:林偉偉提出文章的整體思路和框架;石方和曾嵐負(fù)責(zé)撰寫論文;李董東和許銀海負(fù)責(zé)完成實(shí)驗(yàn);劉波提出指導(dǎo)意見并修改論文.

    猜你喜歡
    模型
    一半模型
    一種去中心化的域名服務(wù)本地化模型
    適用于BDS-3 PPP的隨機(jī)模型
    提煉模型 突破難點(diǎn)
    函數(shù)模型及應(yīng)用
    p150Glued在帕金森病模型中的表達(dá)及分布
    函數(shù)模型及應(yīng)用
    重要模型『一線三等角』
    重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
    3D打印中的模型分割與打包
    蜜臀久久99精品久久宅男| 色5月婷婷丁香| 女性被躁到高潮视频| 五月开心婷婷网| 热99国产精品久久久久久7| 七月丁香在线播放| 欧美日韩一区二区视频在线观看视频在线| 少妇被粗大的猛进出69影院 | 中文乱码字字幕精品一区二区三区| 亚洲性久久影院| 我要看黄色一级片免费的| 99久久中文字幕三级久久日本| 欧美日韩综合久久久久久| 久久国产精品男人的天堂亚洲 | 日韩一区二区视频免费看| 国产老妇伦熟女老妇高清| 精品一区二区三区四区五区乱码 | 亚洲精品乱久久久久久| 只有这里有精品99| 久久久久精品人妻al黑| 成人综合一区亚洲| 欧美亚洲日本最大视频资源| av不卡在线播放| 伦理电影免费视频| 国产成人免费观看mmmm| 一区在线观看完整版| 亚洲一码二码三码区别大吗| 久久精品人人爽人人爽视色| 丝袜喷水一区| 自线自在国产av| 国内精品宾馆在线| av在线播放精品| 制服人妻中文乱码| 国产亚洲午夜精品一区二区久久| 国产成人免费观看mmmm| 黄片无遮挡物在线观看| 精品熟女少妇av免费看| 成年人免费黄色播放视频| 蜜桃在线观看..| 男女午夜视频在线观看 | 亚洲人成77777在线视频| 色5月婷婷丁香| av黄色大香蕉| 天堂俺去俺来也www色官网| 久久97久久精品| 免费在线观看黄色视频的| 国产免费一级a男人的天堂| 亚洲精品久久成人aⅴ小说| 婷婷色av中文字幕| av卡一久久| av片东京热男人的天堂| 91aial.com中文字幕在线观看| 国产高清不卡午夜福利| 国产不卡av网站在线观看| 久久久久久久亚洲中文字幕| 欧美 日韩 精品 国产| 99热这里只有是精品在线观看| 91精品伊人久久大香线蕉| 免费观看性生交大片5| www.熟女人妻精品国产 | 丰满饥渴人妻一区二区三| 国产老妇伦熟女老妇高清| 日本av手机在线免费观看| 国产亚洲午夜精品一区二区久久| 精品一区二区免费观看| 日韩大片免费观看网站| 国产成人精品婷婷| 日韩精品免费视频一区二区三区 | 中文欧美无线码| 国产欧美日韩一区二区三区在线| 精品国产国语对白av| 天堂8中文在线网| 久久这里只有精品19| 男女下面插进去视频免费观看 | 欧美精品一区二区免费开放| 精品国产一区二区三区久久久樱花| 捣出白浆h1v1| 欧美精品高潮呻吟av久久| www日本在线高清视频| 国产一区二区在线观看日韩| 免费高清在线观看日韩| 成年人免费黄色播放视频| 不卡视频在线观看欧美| 99国产精品免费福利视频| 成人午夜精彩视频在线观看| 午夜影院在线不卡| 狠狠精品人妻久久久久久综合| 日韩一区二区三区影片| 99九九在线精品视频| 综合色丁香网| 一本色道久久久久久精品综合| 国产永久视频网站| 色94色欧美一区二区| 80岁老熟妇乱子伦牲交| 免费人成在线观看视频色| 男人添女人高潮全过程视频| 男人舔女人的私密视频| 97人妻天天添夜夜摸| 精品一区二区三区视频在线| 久久精品久久精品一区二区三区| 免费久久久久久久精品成人欧美视频 | 黄网站色视频无遮挡免费观看| 王馨瑶露胸无遮挡在线观看| 欧美精品国产亚洲| freevideosex欧美| 久久免费观看电影| 亚洲精品一二三| 亚洲国产毛片av蜜桃av| 欧美国产精品va在线观看不卡| 欧美人与性动交α欧美软件 | 在线观看一区二区三区激情| 午夜福利视频在线观看免费| 日韩制服丝袜自拍偷拍| 久久久久久久大尺度免费视频| 亚洲欧美一区二区三区国产| 黄色怎么调成土黄色| 有码 亚洲区| 有码 亚洲区| 国产精品一区二区在线不卡| 18禁裸乳无遮挡动漫免费视频| 美女国产视频在线观看| 久久久久精品久久久久真实原创| 日本午夜av视频| 久久久久精品久久久久真实原创| 我的女老师完整版在线观看| 日韩大片免费观看网站| 自拍欧美九色日韩亚洲蝌蚪91| 国产欧美日韩综合在线一区二区| 免费高清在线观看视频在线观看| 亚洲熟女精品中文字幕| 日本色播在线视频| 亚洲av成人精品一二三区| 日韩伦理黄色片| 亚洲国产精品专区欧美| 精品一区二区免费观看| 亚洲一级一片aⅴ在线观看| 亚洲国产av影院在线观看| 99热国产这里只有精品6| 亚洲伊人久久精品综合| 日本午夜av视频| 最黄视频免费看| 国产一区二区三区av在线| 五月伊人婷婷丁香| 最黄视频免费看| 日韩伦理黄色片| av又黄又爽大尺度在线免费看| 一级a做视频免费观看| 国产精品一区二区在线不卡| 成人影院久久| 黑人欧美特级aaaaaa片| 在线观看美女被高潮喷水网站| 久久97久久精品| 黄色毛片三级朝国网站| 99久久精品国产国产毛片| 丝袜脚勾引网站| 国产精品国产三级国产专区5o| 久久久久网色| 国产日韩欧美视频二区| 蜜桃国产av成人99| 欧美成人午夜免费资源| 97在线人人人人妻| 建设人人有责人人尽责人人享有的| 精品少妇内射三级| 国产亚洲精品久久久com| 王馨瑶露胸无遮挡在线观看| 精品少妇内射三级| 丰满少妇做爰视频| 久久久久精品性色| 久久久久网色| 亚洲五月色婷婷综合| 韩国av在线不卡| 天堂俺去俺来也www色官网| 黄色视频在线播放观看不卡| 一区二区三区乱码不卡18| 亚洲 欧美一区二区三区| 成人影院久久| 成人漫画全彩无遮挡| 国产成人91sexporn| 一本—道久久a久久精品蜜桃钙片| av一本久久久久| av在线播放精品| 一区二区三区乱码不卡18| 最近的中文字幕免费完整| 欧美日韩亚洲高清精品| 久久国产精品男人的天堂亚洲 | 一区在线观看完整版| av在线观看视频网站免费| 69精品国产乱码久久久| 搡女人真爽免费视频火全软件| 国产精品三级大全| 嫩草影院入口| 久久久久国产精品人妻一区二区| 中文字幕亚洲精品专区| 亚洲国产毛片av蜜桃av| 亚洲人成网站在线观看播放| 色5月婷婷丁香| 久久人妻熟女aⅴ| 制服丝袜香蕉在线| 天天操日日干夜夜撸| 永久免费av网站大全| 草草在线视频免费看| 亚洲av福利一区| 久久ye,这里只有精品| 亚洲婷婷狠狠爱综合网| 国产精品99久久99久久久不卡 | 最黄视频免费看| 亚洲欧洲日产国产| 美女福利国产在线| 久久国内精品自在自线图片| 国产一级毛片在线| h视频一区二区三区| 大香蕉久久网| 22中文网久久字幕| 最新中文字幕久久久久| 多毛熟女@视频| 啦啦啦视频在线资源免费观看| av女优亚洲男人天堂| 成年av动漫网址| 精品一品国产午夜福利视频| 国产精品人妻久久久久久| 精品国产露脸久久av麻豆| 91午夜精品亚洲一区二区三区| 69精品国产乱码久久久| 国产男人的电影天堂91| 91在线精品国自产拍蜜月| 精品少妇内射三级| 91精品国产国语对白视频| 看免费av毛片| 欧美日韩av久久| 欧美成人精品欧美一级黄| 男女午夜视频在线观看 | 精品午夜福利在线看| 亚洲精品av麻豆狂野| 亚洲人与动物交配视频| 伊人久久国产一区二区| 尾随美女入室| 国产女主播在线喷水免费视频网站| 精品久久久久久电影网| 在线观看美女被高潮喷水网站| 国产精品嫩草影院av在线观看| 久久久精品区二区三区| 极品少妇高潮喷水抽搐| 欧美人与善性xxx| 国产成人精品久久久久久| 哪个播放器可以免费观看大片| 亚洲av福利一区| 精品第一国产精品| 最后的刺客免费高清国语| 成人二区视频| 精品人妻在线不人妻| 国产熟女欧美一区二区| 少妇被粗大猛烈的视频| 国产精品免费大片| 色视频在线一区二区三区| 中文乱码字字幕精品一区二区三区| 亚洲伊人色综图| 久久av网站| 成年美女黄网站色视频大全免费| 婷婷色综合大香蕉| 久久ye,这里只有精品| 丰满少妇做爰视频| 久热久热在线精品观看| 国产精品麻豆人妻色哟哟久久| 精品少妇黑人巨大在线播放| 亚洲激情五月婷婷啪啪| 草草在线视频免费看| 久久热在线av| 97人妻天天添夜夜摸| 国产色婷婷99| 在线观看免费高清a一片| 大香蕉97超碰在线| 在线亚洲精品国产二区图片欧美| 伦精品一区二区三区| 在线观看免费日韩欧美大片| 日韩av免费高清视频| 91精品伊人久久大香线蕉| 欧美亚洲日本最大视频资源| 青春草视频在线免费观看| 色网站视频免费| 中文字幕人妻熟女乱码| 国产精品三级大全| 一本久久精品| 国产一级毛片在线| 久久久欧美国产精品| 精品国产露脸久久av麻豆| 日韩av在线免费看完整版不卡| 亚洲国产av新网站| 少妇的逼好多水| 99久久精品国产国产毛片| 亚洲伊人色综图| 成年人免费黄色播放视频| 最新的欧美精品一区二区| 一级毛片电影观看| videossex国产| 热re99久久精品国产66热6| 欧美变态另类bdsm刘玥| 国产成人精品久久久久久| 亚洲av.av天堂| 精品久久久精品久久久| 婷婷色av中文字幕| 亚洲欧美成人精品一区二区| 一级,二级,三级黄色视频| 色吧在线观看| 毛片一级片免费看久久久久| a 毛片基地| 乱码一卡2卡4卡精品| 亚洲,欧美,日韩| 视频在线观看一区二区三区| 大片电影免费在线观看免费| 国产av国产精品国产| 黄色 视频免费看| 久久久久久久久久成人| 亚洲激情五月婷婷啪啪| 草草在线视频免费看| 午夜福利视频精品| 青春草国产在线视频| 成年动漫av网址| 午夜福利网站1000一区二区三区| 亚洲国产精品专区欧美| 黄色毛片三级朝国网站| 黄色 视频免费看| 免费看光身美女| 日本av免费视频播放| 欧美日韩视频高清一区二区三区二| 精品一区二区三区视频在线| 欧美精品高潮呻吟av久久| 亚洲av日韩在线播放| 大片电影免费在线观看免费| 国产片特级美女逼逼视频| 青春草视频在线免费观看| 亚洲一码二码三码区别大吗| 美女国产视频在线观看| 国产成人免费无遮挡视频| 女人被躁到高潮嗷嗷叫费观| 国产毛片在线视频| 18在线观看网站| 久久久国产一区二区| 老司机影院成人| 国产午夜精品一二区理论片| 汤姆久久久久久久影院中文字幕| 久久人人爽av亚洲精品天堂| 女的被弄到高潮叫床怎么办| 亚洲av电影在线进入| 成人国产av品久久久| 18禁在线无遮挡免费观看视频| 激情视频va一区二区三区| 深夜精品福利| 免费高清在线观看视频在线观看| 综合色丁香网| 国产在线一区二区三区精| 久久人妻熟女aⅴ| 中文精品一卡2卡3卡4更新| 男人爽女人下面视频在线观看| 两个人免费观看高清视频| 午夜av观看不卡| 欧美性感艳星| 国产精品蜜桃在线观看| 日韩熟女老妇一区二区性免费视频| 99热网站在线观看| 久久久久网色| 免费在线观看完整版高清| 久久精品久久久久久噜噜老黄| 国产精品久久久久久av不卡| 男女午夜视频在线观看 | av在线播放精品| 亚洲精品国产av蜜桃| 日韩熟女老妇一区二区性免费视频| 亚洲av男天堂| 国内精品宾馆在线| 免费看不卡的av| 亚洲熟女精品中文字幕| 精品少妇内射三级| 丝袜喷水一区| 中文天堂在线官网| 中国国产av一级| 婷婷色av中文字幕| videosex国产| 亚洲精品乱久久久久久| 2021少妇久久久久久久久久久| 国产淫语在线视频| 国产精品成人在线| 一二三四中文在线观看免费高清| 久久精品国产鲁丝片午夜精品| 日本-黄色视频高清免费观看| 大片电影免费在线观看免费| 97精品久久久久久久久久精品| 久久久久久久久久成人| 国产国语露脸激情在线看| 丰满少妇做爰视频| 精品一品国产午夜福利视频| 91国产中文字幕| 精品少妇内射三级| 老女人水多毛片| 国产女主播在线喷水免费视频网站| 狂野欧美激情性xxxx在线观看| 成人二区视频| 国产精品.久久久| 亚洲综合色网址| 巨乳人妻的诱惑在线观看| 欧美激情 高清一区二区三区| 亚洲色图 男人天堂 中文字幕 | 超碰97精品在线观看| 久久久久久久久久久免费av| 爱豆传媒免费全集在线观看| 久久精品夜色国产| 亚洲中文av在线| 色吧在线观看| 97精品久久久久久久久久精品| 欧美激情极品国产一区二区三区 | 999精品在线视频| 久久久久久久久久久免费av| 亚洲精品乱久久久久久| 久久久精品区二区三区| 成人免费观看视频高清| 99久久中文字幕三级久久日本| 久久精品夜色国产| 免费看光身美女| 日韩制服骚丝袜av| 亚洲四区av| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 国产xxxxx性猛交| 久久精品国产亚洲av涩爱| 成人国产av品久久久| av黄色大香蕉| 亚洲一码二码三码区别大吗| 精品一区在线观看国产| 狠狠精品人妻久久久久久综合| 成年美女黄网站色视频大全免费| 人人妻人人添人人爽欧美一区卜| 久久久a久久爽久久v久久| 久久99精品国语久久久| 丰满少妇做爰视频| 免费在线观看完整版高清| 日韩制服骚丝袜av| 欧美精品亚洲一区二区| 日韩熟女老妇一区二区性免费视频| av免费观看日本| 亚洲四区av| 亚洲在久久综合| 18禁裸乳无遮挡动漫免费视频| 在线免费观看不下载黄p国产| 岛国毛片在线播放| 有码 亚洲区| 亚洲国产欧美日韩在线播放| 99视频精品全部免费 在线| 一边摸一边做爽爽视频免费| 欧美 日韩 精品 国产| 熟女电影av网| 高清av免费在线| 人妻少妇偷人精品九色| 在线天堂中文资源库| 色婷婷av一区二区三区视频| 狂野欧美激情性bbbbbb| 久久国产精品大桥未久av| 亚洲精品国产色婷婷电影| 超碰97精品在线观看| 黑丝袜美女国产一区| xxx大片免费视频| 久热久热在线精品观看| 欧美日韩一区二区视频在线观看视频在线| 国国产精品蜜臀av免费| 亚洲精品中文字幕在线视频| 精品国产一区二区三区久久久樱花| 一本色道久久久久久精品综合| 欧美成人午夜精品| 大香蕉久久网| 日韩av免费高清视频| 国产爽快片一区二区三区| 久久久亚洲精品成人影院| 精品少妇内射三级| 尾随美女入室| 国产成人免费观看mmmm| 久久久久国产精品人妻一区二区| 色网站视频免费| 日韩成人av中文字幕在线观看| 亚洲美女搞黄在线观看| 男女下面插进去视频免费观看 | 考比视频在线观看| 久久久久久伊人网av| 激情视频va一区二区三区| 欧美日韩一区二区视频在线观看视频在线| 激情五月婷婷亚洲| 亚洲图色成人| 精品福利永久在线观看| 亚洲精品久久午夜乱码| 国产成人精品一,二区| av免费观看日本| 国产老妇伦熟女老妇高清| 亚洲精品美女久久av网站| 精品久久蜜臀av无| 国产欧美日韩一区二区三区在线| 边亲边吃奶的免费视频| av国产久精品久网站免费入址| 人人妻人人爽人人添夜夜欢视频| 成人国产av品久久久| 精品一品国产午夜福利视频| 免费在线观看黄色视频的| 国产 精品1| 99精国产麻豆久久婷婷| 亚洲国产精品一区三区| 国产亚洲精品第一综合不卡 | 在线免费观看不下载黄p国产| 亚洲人成77777在线视频| 国产精品一区二区在线不卡| 高清在线视频一区二区三区| 男人操女人黄网站| 日韩 亚洲 欧美在线| 色网站视频免费| 色视频在线一区二区三区| 免费少妇av软件| 午夜av观看不卡| av女优亚洲男人天堂| 免费av不卡在线播放| 国产成人a∨麻豆精品| tube8黄色片| 国产精品 国内视频| 日韩欧美精品免费久久| 少妇被粗大的猛进出69影院 | 丝袜美足系列| 国产毛片在线视频| 日韩大片免费观看网站| 人妻系列 视频| 人体艺术视频欧美日本| 日韩成人av中文字幕在线观看| 久久国产精品男人的天堂亚洲 | 国产精品久久久久久精品古装| 大陆偷拍与自拍| 国产一区二区在线观看av| 午夜激情av网站| 国产午夜精品一二区理论片| freevideosex欧美| 久久人人爽av亚洲精品天堂| 在现免费观看毛片| av在线app专区| 熟女电影av网| 如日韩欧美国产精品一区二区三区| 女人精品久久久久毛片| 黑人欧美特级aaaaaa片| 国产成人欧美| 一级片免费观看大全| 大香蕉97超碰在线| 九九在线视频观看精品| 王馨瑶露胸无遮挡在线观看| 日韩,欧美,国产一区二区三区| 搡老乐熟女国产| 欧美变态另类bdsm刘玥| 日韩三级伦理在线观看| 亚洲伊人色综图| 亚洲欧美成人综合另类久久久| 少妇熟女欧美另类| 中文天堂在线官网| 老司机亚洲免费影院| 黑丝袜美女国产一区| av卡一久久| 成人免费观看视频高清| 日日爽夜夜爽网站| 国产伦理片在线播放av一区| 一级毛片电影观看| 午夜福利乱码中文字幕| 亚洲av福利一区| 亚洲欧美色中文字幕在线| 中国三级夫妇交换| 日日啪夜夜爽| 精品一区二区免费观看| 久久久久久人妻| 精品国产乱码久久久久久小说| 国产无遮挡羞羞视频在线观看| 国产极品天堂在线| 熟女人妻精品中文字幕| 纵有疾风起免费观看全集完整版| 夜夜骑夜夜射夜夜干| 国产av精品麻豆| 99久久综合免费| 看十八女毛片水多多多| 日韩成人av中文字幕在线观看| 人人妻人人爽人人添夜夜欢视频| www.熟女人妻精品国产 | 中文精品一卡2卡3卡4更新| 精品亚洲乱码少妇综合久久| 欧美人与性动交α欧美精品济南到 | 女人久久www免费人成看片| 午夜免费鲁丝| 久久久久久久久久成人| 在线观看美女被高潮喷水网站| 国产又色又爽无遮挡免| 国产亚洲欧美精品永久| 国产精品久久久av美女十八| 女人精品久久久久毛片| 日本91视频免费播放| 久久久久视频综合| 一个人免费看片子| 国产国拍精品亚洲av在线观看| 巨乳人妻的诱惑在线观看| 少妇的丰满在线观看| 又黄又爽又刺激的免费视频.| 七月丁香在线播放| 亚洲伊人色综图| 又大又黄又爽视频免费| 女的被弄到高潮叫床怎么办| 国产欧美日韩综合在线一区二区| 久久人人97超碰香蕉20202| 极品人妻少妇av视频| 日本91视频免费播放| 18禁裸乳无遮挡动漫免费视频| 涩涩av久久男人的天堂| 国产欧美另类精品又又久久亚洲欧美| 亚洲欧美色中文字幕在线| 国产男人的电影天堂91| 午夜免费观看性视频| 国产精品三级大全| 另类亚洲欧美激情| 青春草亚洲视频在线观看| 亚洲成av片中文字幕在线观看 | 黑人高潮一二区| 精品一区二区三卡|