王志良,何 剛,2*,俞文心,許 康,文 軍,劉 暢
(1.西南科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,四川 綿陽 621010;2.國家衛(wèi)生健康委核技術(shù)醫(yī)學(xué)轉(zhuǎn)化實驗室(綿陽市中心醫(yī)院),四川 綿陽 621010)
隨著物聯(lián)網(wǎng)和智慧城市等應(yīng)用的快速發(fā)展,越來越多的設(shè)備(如傳感器、攝像頭和智能手機等)加入到無線網(wǎng)絡(luò)中。然而,云計算已經(jīng)無法滿足海量邊緣數(shù)據(jù)爆炸式增長[1-2]。為了解決這一問題,邊緣計算[3]作為一種新的計算形式出現(xiàn),通過在網(wǎng)絡(luò)邊緣的邊緣端服務(wù)器上處理數(shù)據(jù),避免了將數(shù)據(jù)發(fā)送到遠程云端所需的長傳播延遲。然而,由于通信資源和數(shù)據(jù)隱私安全等限制,將用戶數(shù)據(jù)發(fā)送到云端的方法通常被認為不切實際。因此,Google提出了一種分布式的機器學(xué)習(xí)方法,稱為聯(lián)邦學(xué)習(xí)(Federated Learning,FL)[4-5]。在傳統(tǒng)的集中式機器學(xué)習(xí)模型中,通信成本相對較小,計算成本占主導(dǎo)地位。然而,在聯(lián)邦學(xué)習(xí)中,通信成本占主體地位。綜合以往的研究,可以總結(jié)出以下三個挑戰(zhàn):
(1)通信問題:服務(wù)器與客戶端之間的網(wǎng)絡(luò)連接相對較慢。
(2)設(shè)備異構(gòu):不同參與者的計算資源可能不同。
(3)數(shù)據(jù)不均衡:不同客戶端之間的數(shù)據(jù)分布不一致[6]。
為了解決通信問題,已有研究者提出了模型壓縮和模型蒸餾來降低鏈路通信成本[7-8]。許多文獻著重于處理數(shù)據(jù)特征分布不均衡,以減少通信回合來提高聯(lián)邦學(xué)習(xí)的測試準確率[9-11],但每個回合的計算時間也很重要。針對數(shù)據(jù)類別不平衡,可以修改訓(xùn)練數(shù)據(jù)或調(diào)整學(xué)習(xí)策略[12]。而樣本總數(shù)在參與者之間分布不均衡會影響每回合聯(lián)邦學(xué)習(xí)的時間消耗。
該文重點解決每回合時間消耗大導(dǎo)致整體訓(xùn)練效率低的問題。聯(lián)邦學(xué)習(xí)中,每回合的時間消耗由耗時最長的參與者決定,而參與者的時間消耗差異通常由設(shè)備異構(gòu)和數(shù)據(jù)不均衡引起。已有國內(nèi)外研究關(guān)注如何縮短每回合的通信時間,其中基于博弈論的優(yōu)化研究較多[13-15]。Sarikaya等人[15]基于斯塔克伯格博弈模型提出了一項研究,在預(yù)算有限的情況下,通過權(quán)衡參與者多樣性和完成訓(xùn)練的延遲來選擇參與者。然而,這種選擇方式使得某些參與者無法參與聯(lián)邦學(xué)習(xí),不公平。賈云健[16]提出了一種基于博弈論的激勵機制,在分層聯(lián)邦學(xué)習(xí)框架下考慮了連接終端設(shè)備數(shù)量差異。該機制設(shè)計了兩層主從博弈,分配激勵預(yù)算,刺激終端設(shè)備更積極參與聯(lián)邦學(xué)習(xí)任務(wù),減小“掉隊效應(yīng)”,最小化全局模型訓(xùn)練時間。然而,仍存在不公平行為和某些參與者需要貢獻更多計算資源的問題。
綜上所述,設(shè)計一種方法以充分考慮每回合中參與者的設(shè)備異構(gòu)和數(shù)據(jù)不均衡,縮短每回合時間消耗并確保公平性變得重要。為此,該文提出了FlexFL算法,旨在縮短聯(lián)邦學(xué)習(xí)每回合的時間消耗。主要貢獻如下:
(1)引入聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)動態(tài)縮放策略,通過兩層聯(lián)邦學(xué)習(xí)架構(gòu),在同一參與者上部署多個聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)和一個聯(lián)邦學(xué)習(xí)聚合服務(wù)。通過動態(tài)縮放服務(wù),加快計算速度。
(2)提出FlexFL算法,將本地數(shù)據(jù)集平均分配給各聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù),并每回合激活一定數(shù)量的訓(xùn)練服務(wù)。未激活的服務(wù)休眠,不占用計算資源,并將計算資源平均分配給激活的服務(wù),加快訓(xùn)練速度。
通過以上貢獻,FlexFL算法能有效解決參與者設(shè)備異構(gòu)和數(shù)據(jù)不均衡導(dǎo)致的訓(xùn)練時間差異問題,提高整體訓(xùn)練效率。
服務(wù)動態(tài)縮放常常在互聯(lián)網(wǎng)高并發(fā)架構(gòu)中使用,其本質(zhì)是通過合理配置資源以及增加或縮減服務(wù)來提高服務(wù)吞吐量和降低服務(wù)延遲[17-19]。目前,尚未有研究者考慮將服務(wù)動態(tài)縮放與聯(lián)邦學(xué)習(xí)相結(jié)合。該文旨在將服務(wù)動態(tài)縮放與聯(lián)邦學(xué)習(xí)相結(jié)合,以平衡每回合參與者在設(shè)備異構(gòu)和數(shù)據(jù)不均衡性帶來的時間消耗差異。
時間消耗的優(yōu)化一直是FL的主要研究方向之一。McMahan等人[20]提出了一種名為FedAvg(Federated Averaging)的聯(lián)邦學(xué)習(xí)算法,該算法通過對各參與方的局部模型進行平均來更新全局模型,并通過增加聚合期間局部模型的訓(xùn)練次數(shù)來減少通信開銷。然而,該算法忽略了減少每回合時間消耗的問題。
田有亮[21]提出了一種基于激勵機制的聯(lián)邦學(xué)習(xí)優(yōu)化算法,利用博弈論和拍賣理論設(shè)計了拍賣機制。參與者通過向霧節(jié)點拍賣本地訓(xùn)練任務(wù),并委托高性能霧節(jié)點訓(xùn)練本地數(shù)據(jù),以提升本地訓(xùn)練效率并解決客戶端間性能不均衡的問題。然而,這種方案破壞了聯(lián)邦學(xué)習(xí)的隱私性,因為本地數(shù)據(jù)被發(fā)送到其他節(jié)點。程帆[22]提出了一種基于動態(tài)權(quán)重的聯(lián)邦學(xué)習(xí)優(yōu)化方法。在極端情況下,計算時間消耗較大的參與者可以選擇不參與聚合。盡管這種方案可以減少每回合的時間消耗,但對于部分計算時間消耗較大的參與者來說存在不公平性的問題?,F(xiàn)有的研究常常通過剔除訓(xùn)練延遲大的參與者來提高效率,但這對某些參與者不公平。為解決這個問題,該文提出了FlexFL算法,能夠平衡參與者設(shè)備異構(gòu)和數(shù)據(jù)不均衡性對訓(xùn)練時間的影響,提高整體訓(xùn)練效率。實驗結(jié)果表明,FlexFL算法在減少時間消耗的同時,不降低模型性能。
在本章中,首先提出了聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)動態(tài)縮放策略,并引入了兩層聯(lián)邦學(xué)習(xí)架構(gòu)來實現(xiàn)該策略。隨后,基于聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)動態(tài)策略,提出了FlexFL算法,旨在降低聯(lián)邦學(xué)習(xí)每回合的時間消耗。
使用的符號解釋如表1所示。
表1 符號解釋
針對聯(lián)邦學(xué)習(xí)中每回合不同參與者由于時間消耗不同而導(dǎo)致全局模型聚合時間長,從而影響整體聯(lián)邦學(xué)習(xí)訓(xùn)練效率的問題,重點考慮設(shè)備異構(gòu)和數(shù)據(jù)不均衡這兩個因素,因為它們在實際環(huán)境中是主要影響參與者時間消耗的因素?;趯嶋H環(huán)境的考慮,提出以下設(shè)定:
設(shè)定一:參與者的設(shè)備異構(gòu)主要通過模擬計算資源的不同來實現(xiàn),而數(shù)據(jù)不均衡主要通過模擬數(shù)據(jù)分布的不均衡來實現(xiàn)。
設(shè)定二:參與者在訓(xùn)練開始之前能夠收集到自身的數(shù)據(jù)量和計算資源的情況,并且對中央服務(wù)器具有信任,能夠?qū)⑦@些信息上傳至中央服務(wù)器。
設(shè)定三:參與者的數(shù)據(jù)量不均衡,并且在聯(lián)邦學(xué)習(xí)過程中不再發(fā)生變化,即不會增加或減少本地數(shù)據(jù)量。
設(shè)定四:參與者的計算資源因復(fù)雜的環(huán)境而處于動態(tài)變化中,例如參與了其他計算任務(wù),占用了計算資源。
基于以上設(shè)定,并結(jié)合服務(wù)動態(tài)縮放的思想[17],提出了聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)動態(tài)縮放策略。該策略在每個參與者上部署了多個聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)和一個聯(lián)邦學(xué)習(xí)模型聚合服務(wù)。首先,將參與者的本地數(shù)據(jù)平均劃分給對應(yīng)的聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)進行訓(xùn)練,得到本地模型。然后,參與者的模型聚合服務(wù)將本地模型聚合后上傳到中央服務(wù)器進行進一步的模型聚合。中央服務(wù)器完成模型聚合后,將更新后的模型發(fā)送回參與者的聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù),進行下一回合的訓(xùn)練。在每回合訓(xùn)練中,根據(jù)參與者計算資源的變化,隨機選擇激活參與者部署的聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)參與下一輪的訓(xùn)練,未被選中的服務(wù)將休眠并釋放計算資源,而被選中的服務(wù)將獲得分配的計算資源,從而加快計算速度。圖1展示了該策略的結(jié)構(gòu)。
圖1 聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)動態(tài)縮放策略
如圖1所示,m個參與者在一個中央服務(wù)器的協(xié)助下共同訓(xùn)練一個全局模型。在該設(shè)定中,參與者的本地數(shù)據(jù)是非獨立同分布(Non-IID)且不均衡的,這符合大多數(shù)真實場景的情況。參與者的本地數(shù)據(jù)用集合{D1,D2,…,Dm}表示,參與者的聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)數(shù)目cm為:
(1)
然后,參與者m將本地數(shù)據(jù)集隨機平均劃分成cm份,對應(yīng)cm個聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)。接著,每回合重復(fù)以下步驟直至模型收斂。
(2)
步驟二:確定參與者選擇激活的參與者的數(shù)目為:
(3)
步驟三:隨機激活a個聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù),并將計算資源平均分配給這些激活的聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù),使其參與本回合的計算。未被激活的服務(wù)不進行計算,不占用計算資源。
表2 通信開銷和計算開銷
(4)
(5)
其中,?F是損失函數(shù),g是梯度,ω表示回合k中的模型參數(shù),μ表示學(xué)習(xí)率,c是聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)標號。
(6)
(7)
如圖2所示,在開始訓(xùn)練之前,參與者需進行本地數(shù)據(jù)劃分以對應(yīng)聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)。中央服務(wù)器需要進行一些初始化工作,包括選擇算法,超參數(shù),初始化全局模型等,然后重復(fù)下述步驟直至模型收斂。
第1步:訓(xùn)練開始,中央服務(wù)器下發(fā)本輪全局模型給參與者。
第2步:參與者接收到中央服務(wù)器的全局模型ωk-1,并將其發(fā)送給聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)。
第6步:參與者將其本地模型發(fā)送到中央服務(wù)器。
第7步:中央服務(wù)器收到所有本輪參與訓(xùn)練的參與者的本地模型后,聚合更新后得到全局模型ωk。
第8步:返回第1步,直至模型收斂。
為了驗證提出的FlexFL算法的性能,設(shè)計了一個由200個參與者和1個中央服務(wù)器組成的網(wǎng)絡(luò)。每個回合中央服務(wù)器隨機選擇20%的參與者參與訓(xùn)練。
在深度學(xué)習(xí)中使用了兩個常見的基準數(shù)據(jù)集來實現(xiàn)算法。第一個數(shù)據(jù)集是MNIST手寫數(shù)字識別,包含60 000個訓(xùn)練樣本和10 000個測試樣本。每張圖片代表0到9中的一個數(shù)字,位于中央。為了每個參與者被隨機分配訓(xùn)練樣本,并且反映出聯(lián)邦學(xué)習(xí)數(shù)據(jù)非獨立同分布的特點,數(shù)據(jù)集劃分采用了非平衡方式,首先按數(shù)字標簽進行隨機打亂,然后分為3 000個分片,每個分片包含20張數(shù)據(jù)。這種劃分方式確保可以通過控制分片數(shù)目來控制樣本數(shù)量差距。第二個數(shù)據(jù)集是CIFAR-10,包含50 000個訓(xùn)練樣本和10 000個測試樣本,共有10個類別。每個類別包含6 000個32×32像素點的彩色圖像。CIFAR-10將識別任務(wù)遷移到普適物體,具有大量噪聲和不同比例的物體識別,因此對圖像識別更具挑戰(zhàn)性。數(shù)據(jù)集的劃分方式與MNIST類似,采用了非平衡劃分。該文使用全連接神經(jīng)網(wǎng)絡(luò)(也稱為多層感知機)進行訓(xùn)練。
FlexFL算法是基于Pytorch 的客戶端/服務(wù)器端聯(lián)邦學(xué)習(xí)架構(gòu)框架實現(xiàn)。該文主要考慮由于設(shè)備異構(gòu)和數(shù)據(jù)不均衡的影響,為了排除參與者和中央服務(wù)器中之間網(wǎng)絡(luò)通信時間的影響,實驗中的中央服務(wù)器的聚合和客戶端的本地訓(xùn)練都在同一臺具有NVIDIA1080Ti的機器上進行。實驗相關(guān)參數(shù)設(shè)置如下:本地訓(xùn)練中,學(xué)習(xí)率為0.01,batch設(shè)置為50,epoch設(shè)置為5。設(shè)備的異構(gòu)性通過給予設(shè)備不同的計算資源來模擬,并在每一回合隨機、動態(tài)地更新不同參與者的計算資源。數(shù)據(jù)的不均衡通過設(shè)置不同的環(huán)境來實現(xiàn):
環(huán)境A:隨機選取5%的參與者平均分得50%的數(shù)據(jù)。其余參與者平均分得50%的數(shù)據(jù)。
環(huán)境B:隨機選取10%的參與者平均分得50%的數(shù)據(jù)。其余參與者平均分得50%的數(shù)據(jù)。
環(huán)境C:隨機選取30%的參與者平均分得50%的數(shù)據(jù)。其余參與者平均分得50%的數(shù)據(jù)。
(1)準確率上升速率。
為了對FlexFL算法的性能有直觀的認識,圖3比較了兩種算法在不同環(huán)境設(shè)置下的性能表現(xiàn)??梢杂^察到,在通信初始階段,FedAvg以較少回合達到了同樣的準確率,這是因為,當(dāng)數(shù)據(jù)分布不均衡、參與者計算資源隨機變化的時候,FedAvg在通信初期,每回合能夠有較多的數(shù)據(jù)參與訓(xùn)練,所以準確率上升較快。而FlexFL對本地數(shù)據(jù)進行劃分,對聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)隨機激活,每次參與訓(xùn)練的數(shù)據(jù)比FedAvg少。當(dāng)通信回合大于150的時候,FlexFL以較少的通信回合達到同樣的準確率,并且在相同的通信回合中,其準確率優(yōu)于FedAvg。這證明了FlexFL相較于FedAvg性能并沒有降低。
圖3 不同設(shè)置下測試集準確率和通信回合的關(guān)系
(2)平均時間消耗。
時間消耗在評價聯(lián)邦學(xué)習(xí)算法的性能上也是一個重要指標。如圖4所示,FlexFL算法無論是準確率還是最后收斂時間都優(yōu)于FedAvg算法。
圖4 不同設(shè)置下測試集準確率和時間消耗的關(guān)系
表3列出了不同環(huán)境設(shè)置下(對應(yīng)圖4中(a)~(f))使用兩種算法達到目標準確率97.5%所需要的通信回合,平均每回合所需時間和總的時間消耗。在表3中幾組實驗均顯示,FlexFL的每回合平均時間消耗和達到目標準確率總的時間消耗均比FedAvg的低。
表3 不同環(huán)境下FlexFL算法與聯(lián)邦學(xué)習(xí)算法FedAvg在測試集上的表現(xiàn)對比
由表4顯示,所提算法在不同環(huán)境下,用MNIST數(shù)據(jù)集測試,分別將訓(xùn)練時間消耗降低了90.37%,96.00%和14.41%。用CIFAR數(shù)據(jù)集測試,分別將訓(xùn)練時間消耗降低了91.04%,86.35%和24.82%。這證實了在參與者數(shù)據(jù)分布不平衡、計算資源動態(tài)變化的時候,FlexFL具有較低的時間消耗。
表4 不同環(huán)境下FlexFL達到目標準確率(97.5%)以FedAvg為基準的時間消耗減少率
值得說明的是,當(dāng)數(shù)據(jù)分布均衡的時候,FlexFL算法對本地數(shù)據(jù)不進行劃分,參與者僅僅部署一個聯(lián)邦學(xué)習(xí)服務(wù),這本質(zhì)上與FedAvg算法沒有區(qū)別。
提出了一種基于動態(tài)縮放策略的聯(lián)邦學(xué)習(xí)算法FlexFL,旨在減少聯(lián)邦學(xué)習(xí)每回合的時間消耗。該算法引入了兩層聯(lián)邦學(xué)習(xí)架構(gòu),通過將本地數(shù)據(jù)進行劃分,并對應(yīng)部署聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù),結(jié)合每輪參與者的計算資源變化,對部署在該參與者的聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)進行動態(tài)激活,使得參與者的每回合的時間消耗減少。實驗結(jié)果表明,與聯(lián)邦學(xué)習(xí)算法FedAvg相比,該算法有效降低了聯(lián)邦學(xué)習(xí)的訓(xùn)練時間消耗。不足之處在于,需要在參與者部署多個聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)和一個聚合服務(wù),這會帶來一些額外的資源消耗;FlexFL每一回合都需要對聯(lián)邦學(xué)習(xí)服務(wù)進行動態(tài)激活,在復(fù)雜實際環(huán)境中,可能會有部分激活失敗的情況。
在接下來的工作中,將對該算法進行改進。例如,在聯(lián)邦學(xué)習(xí)訓(xùn)練服務(wù)進行縮放和本地數(shù)據(jù)集進行劃分的時候不夠細致,可能并沒有達到最好的效果。其次,在中央服務(wù)器選擇參與者的過程中采取的隨機的方式,這可以結(jié)合其他研究進行優(yōu)化。