陳瑞鋒,謝在鵬,朱曉瑞,屈志昊
(河海大學 計算機與信息學院,南京 211100) E-mail:zaipengxie@hhu.edu.cn
近年來,智能手機、平板電腦、可穿戴設備等移動設備逐漸成為人們?nèi)粘I畹慕M成部分.這些移動設備通常裝備了種類豐富的傳感器,可感知諸如圖像、聲音、加速度等數(shù)據(jù).隨著這些設備的普及,諸如運動檢測[1]、圖像識別[2-4]、自然語言處理[5]等移動互聯(lián)網(wǎng)應用逐漸流行.這些應用通?;跈C器學習模型對用戶提交的感知數(shù)據(jù)進行處理并返回處理結(jié)果.理想情況下,用于處理用戶數(shù)據(jù)的機器學習模型可使用來自不同用戶的大量標記數(shù)據(jù)進行訓練以提高模型的表達性能和泛化性能.然而出于隱私與安全原因,用戶經(jīng)常不愿意上傳這些數(shù)據(jù).
針對此問題,谷歌[6]提出了聯(lián)邦學習用于解決機器學習模型訓練的數(shù)據(jù)需求與用戶數(shù)據(jù)隱私保護之間的矛盾.聯(lián)邦學習是一種分布式機器學習框架,能夠在滿足用戶隱私與數(shù)據(jù)安全的同時有效利用數(shù)據(jù)進行機器學習模型訓練.具體而言,聯(lián)邦學習利用移動設備(工作節(jié)點)本地計算能力和數(shù)據(jù)訓練機器學習模型,然后將訓練后的模型參數(shù)在服務器端聚合并作為下一輪本地訓練的初始參數(shù),迭代上述過程直至達到最終模型達到最好的泛化性能.由于所有用戶數(shù)據(jù)都只用于本地模型訓練,聯(lián)邦學習充分保護了用戶隱私與數(shù)據(jù)安全.
盡管具有上述優(yōu)點,聯(lián)邦學習在實現(xiàn)時經(jīng)常面臨以下問題[6-8]:1)由于多個工作節(jié)點上可用的計算、通信資源以及數(shù)據(jù)量通常不同,因此工作節(jié)點完成每輪本地訓練后提交模型參數(shù)的時間存在差異.這會造成參數(shù)服務器因等待慢節(jié)點上傳參數(shù)而延長訓練時間(即落跑者問題[9]);2)由于多個工作節(jié)點上的數(shù)據(jù)通常不能服從相同概率分布,這會造成不同工作節(jié)點的本地模型收斂方向均與參數(shù)服務器不一致,從而降低了整體訓練速度.
為解決上述問題,現(xiàn)有工作提出了基于指數(shù)滑動平均的聯(lián)邦學習方法[9-15].具體而言,參數(shù)服務器在接收到某個工作節(jié)點發(fā)來的神經(jīng)網(wǎng)絡參數(shù)(權重)后,參數(shù)服務器將保存的平均權重與工作節(jié)點發(fā)來的權重加權平均以得到新的平均權重,并將此權重返回給工作節(jié)點.由于參數(shù)服務器不再需要等待收集完所有工作節(jié)點相同版本的參數(shù)后進行聚合,因而解決了落跑者問題,提高了訓練速度.加權平均的策略將由非獨立用分布數(shù)據(jù)訓練的模型參數(shù)聚合成一個全局泛化能力更強的模型參數(shù),從而緩解了非獨立用分布數(shù)據(jù)的影響.但是使用指數(shù)滑動平均聚合也存在指數(shù)滑動平均方法并不能主動控制版本差距問題[9]:1)快節(jié)點頻繁提交權重會造成聚合后的模型參數(shù)偏離其他節(jié)點上模型的收斂方向;2)慢節(jié)點滯后提交的參數(shù)會阻礙參數(shù)服務器模型的收斂,并且此影響無法完全消除.這些問題會顯著影響參數(shù)服務器上模型的收斂速度.此外,當訓練節(jié)點差距過大時,甚至會導致模型不收斂.上述問題的主要原因在于指數(shù)滑動平均只保存了一個全局平均權重,導致工作節(jié)點提交的參數(shù)一旦被聚合到參數(shù)服務器平均權重中,就不能對這個權重做任何修改,只能等待之后的每次更新所占比例下降.
針對指數(shù)滑動平均聚合更新方式的不足,本文設計并實現(xiàn)了一種異步聯(lián)邦學習聚合更新算法(FederatedWeight Profileand VersionAware,F(xiàn)edWPVA):一種基于權重摘要(Weight Profile)和更新版本感知(Version Aware)的異步聯(lián)邦學習聚合更新方法,其解決了因工作節(jié)點訓練速度差異而導致的模型收斂速度降低問題.具體而言,權重摘要保留了工作節(jié)點最新權重,并且所有工作節(jié)點所占權重比例相同.首先所有保存了所有工作節(jié)點最新權重作為權重摘要,從而保留了完整的聚合信息.權重摘要通過每個工作節(jié)點只能更新自身摘要部分,限制了快節(jié)點高頻更新對整體權重的影響,降低可以推動參數(shù)服務器上的模型更快地收斂.版本感知是參數(shù)服務器對權重摘要的版本進行記錄,使得參數(shù)服務器聚合時可以根據(jù)工作節(jié)點不同的版本確定不同的加權比例.同時,當整體版本差距過大時,通過全局更新方式將慢節(jié)點中使用的舊權重更新到最新權重,從而提高慢節(jié)點的更新效率,使參數(shù)服務器上的模型更快的收斂.
本工作的主要貢獻如下:
1)本文所提出的異步聯(lián)邦學習聚合更新方法消除了過時權重對全局權重的影響,解決了現(xiàn)有指數(shù)滑動平均算法的問題.針對版本差異,當工作節(jié)點間版本差距過大時使用主動更新機制同步更新所有工作節(jié)點,當版本差距較小時,使用完全的不同節(jié)點版本來對權重進行加權聚合解決了版本差距問題.
2)本文在兩個典型數(shù)據(jù)集上進行了實驗評估,在數(shù)據(jù)集上的實驗結(jié)果表明,將基準算法、FedWPVA在MNIST數(shù)據(jù)集中訓練相同個訓練輪次,對比基準算法,使用相同訓練輪次,F(xiàn)edWPVA將損失值平均降低了14.45%,CIFAR-10數(shù)據(jù)集損失平均降低了7.26%.
近年來,聯(lián)邦學習參數(shù)服務器上的聚合更新機制被廣泛關注[10-24],這些工作主要分為基于聯(lián)邦平均算法(Federated Averaging,F(xiàn)edAvg)和基于指數(shù)滑動平均(Exponential Moving Average).
原始的聯(lián)邦平均算法[6,16,17]將每輪訓練的所有工作節(jié)點的權重進行加權平均.需要等待最慢的工作節(jié)點.針對比問題,F(xiàn)edProx[18]利用參數(shù)服務器調(diào)整不同性能工作節(jié)點上本地訓練所需輪次,減少快節(jié)點與慢節(jié)點的差距,并且限制本地多輪訓練時的工作節(jié)點對參數(shù)服務器發(fā)來的權重做過多的更改,將修改范圍限制在一定范圍,減少了快節(jié)點對參數(shù)服務器的影響,使得模型收斂性更好.然而FedProx直接將工作節(jié)點權重對應位置進行加權平均的做法減低了收斂.針對比問題,聯(lián)邦匹配平均[19](Federated Matched Averaging,F(xiàn)edMA)聯(lián)邦匹配平均算法認為之前的,基于神經(jīng)網(wǎng)絡參數(shù)的置換不變性,在對多個節(jié)點進行平均前,先對其進行匹配,再進行加權平均,使每次模型聚合更加有效,增加了模型的收斂性.上述同步聯(lián)邦學習方法都能取得一定的成效,但是受限于聯(lián)邦平均算法的框架,不能完全解決落跑者問題.隨著工作節(jié)點規(guī)模的擴大,落跑者問題將更加嚴重,同步的策略也可能導致網(wǎng)絡擁塞.
指數(shù)滑動平均的聚合更新策略[20,21]在通信延遲較高且異構(gòu)的情況下,效率較高,在聯(lián)邦學習中也有也廣受關注[9-15],使用指數(shù)滑動平均的方式,即工作節(jié)點完成本地固定輪次更新后發(fā)送到參數(shù)服務器,參數(shù)服務器將這個更新權重與參數(shù)服務器保留的平均權重做加權聚合.通過指數(shù)滑動平均的聚合更新策略,可以避免參數(shù)服務器對慢節(jié)點的等待,每次收到工作節(jié)點的更新都可以與參數(shù)服務器保留的權重以固定權重加權求和.
但是不同工作節(jié)點發(fā)送的權重的版本不同,以固定加權比例會降低收斂性能,在參考文獻[9]中,對指數(shù)滑動平均算法的加權比例進行改進,根據(jù)工作節(jié)點的不用版本,使用不用的比例,當工作節(jié)點與參數(shù)服務器版本差距較小時,加權比例取更大的值,當版本差距較大時,減少加權比例的值,通過這種加權的策略來減少慢節(jié)點梯度延遲造成的影響.
針對指數(shù)滑動平均策略版本差距大的問題,參考文獻[11]提出了對損失函數(shù)增加懲罰項的策略,并且針對相對慢節(jié)點動態(tài)的提高本地訓練中的學習率,降低慢節(jié)點的學習率,從而降低工作節(jié)點間權重的差異,增加整體收斂速度.針對神經(jīng)網(wǎng)絡,參考文獻[12]提出了一種以不同頻率更新DNN網(wǎng)絡不同層次的訓練方式來提高整個模型收斂速度的策略,由于神經(jīng)網(wǎng)絡中淺層神經(jīng)網(wǎng)絡一般代表了不同數(shù)據(jù)集的常規(guī)特征,深層神經(jīng)網(wǎng)絡代表了特定數(shù)據(jù)集的特定特征,所以在這篇論文中通過更高的頻率更新淺層神經(jīng)網(wǎng)絡,來提高模型在不同分布的數(shù)據(jù)集上泛化能力,通過這種策略可以使用更少的通信量更新更多的輪次,從而提高模型的收斂速度.
針對指數(shù)滑動平均策略收斂速度慢的問題,針對神經(jīng)網(wǎng)絡的實際情況,參考文獻[13]結(jié)合了同步與異步,認為神經(jīng)網(wǎng)絡不同層可以通過使用不同的更新策略提高模型收斂速度,多個工作節(jié)點間的同一神經(jīng)網(wǎng)絡層使用同步更新,而層與層之間使用異步的策略進行更新,類似參考文獻[12]這種策略可以降低每次通信代價,從而提高模型的收斂速度.
上述工作均在指數(shù)滑動平均策略的基礎上做出了改進,緩解了指數(shù)滑動平均快慢節(jié)點差距的問題,但是沒有有效的利用工作節(jié)點上傳來的權重信息,參數(shù)服務器只保留了一個平均權重信息,沒有解決快節(jié)點頻繁提交權重造成聚合后的模型參數(shù)偏離其他節(jié)點上模型的收斂方向,以及慢節(jié)點滯后提交的參數(shù)阻礙參數(shù)服務器模型的收斂的問題.不能消除過時權重對參數(shù)服務器的影響;對版本差距的控制也不夠靈活、主動.
針對指數(shù)滑動平均策略快節(jié)點頻繁提交權重造成聚合后的模型參數(shù)偏離其他節(jié)點上模型的收斂方向,以及慢節(jié)點滯后提交的參數(shù)阻礙參數(shù)服務器模型的收斂、版本控制不夠靈活、主動的問題,本文提出了一種基于權重摘要(Weight Profile)和更新版本感知(Version Aware)的異步聯(lián)邦學習聚合更新方法.
基于權重摘要的聚合方式通過參數(shù)服務器保留完整工作節(jié)點的最新權重,實現(xiàn)每次更新可以完全替換掉之前舊權重的影響,使得整體更新更加有效.基于版本感知的更新機制分別在版本差距較小時使用完全的版本加權策略提高快節(jié)點的快節(jié)點的所占比例,以及版本差距較大時的全局更新策略保證聯(lián)邦學習內(nèi)部版本差距的控制.下面的分別討論FedWPVA方法的權重摘要的聚合算法、以及版本感知更新策略.
3.1.1 基于指數(shù)滑動平均的聚合問題分析
如圖1所示,假設,在聯(lián)邦學習系統(tǒng)中,存在n個工作節(jié)點,一個參數(shù)服務器.
圖1 異步聯(lián)邦學習系統(tǒng)架構(gòu)Fig.1 Asynchronous federated learning architecture
1)工作節(jié)點端
每個工作節(jié)點中都有可用于訓練的本地數(shù)據(jù),并且數(shù)據(jù)分不平衡、非獨立同分布.參數(shù)服務器不可以直接操作數(shù)據(jù),通過聚合工作節(jié)點訓練的模型的范式不斷迭代.
(1)
?i∈[n],其中i是本地數(shù)據(jù)集i的采樣.即每次本地訓練都是從本地數(shù)據(jù)中采樣部分數(shù)據(jù)作為本輪訓練數(shù)據(jù),由于數(shù)據(jù)非獨立同分布,i≠j,?i≠?j,因此,不同設備的數(shù)據(jù)集有不同的期望,即Ef(W;i)≠Ef(W;j),?i≠j.
2)參數(shù)服務器端
指數(shù)滑動平均的聚合策略為本地訓練固定輪次后,將自身神經(jīng)網(wǎng)絡參數(shù)發(fā)送給參數(shù)服務器,并等待最新的神經(jīng)網(wǎng)絡參數(shù),當接收到參數(shù)過后使用指數(shù)滑動平均的方式聚合成新的權重,如公式(2)所示:
(2)
其中Wk+τ為參數(shù)服務器在聚合時的保留權重,Wki為工作節(jié)點i上傳到服務器的權重,ki為第i個工作節(jié)點權重的更新版本,工作節(jié)點使用指數(shù)系數(shù)η得到下一輪服務器最新的權重Wk+τ+1,并將其發(fā)送給發(fā)來權重的工作節(jié)點,工作節(jié)點將當接到參數(shù)服務器發(fā)來的權重時將繼續(xù)訓練重復上述過程.
3)問題分析
但是在指數(shù)滑動平均聚合策略下,快節(jié)點頻繁更新,慢節(jié)點更新滯后,當慢節(jié)點完成一輪訓練得到Wki時,參數(shù)服務器上的最新權重Wk+τ,其中μ=k+τ-ki,μ為此次更新工作節(jié)點與參數(shù)服務器版本差距,當版本差距過大時,此次更新對參數(shù)服務器整體權重無效甚至產(chǎn)生負面效果,如果參數(shù)服務器中接收了一個權重延遲的更新Wd,這個產(chǎn)生負面影響的權重將合并到參數(shù)服務器的最新權重中,并且造成的影響只能通過之后的多次更新來減少其影響,經(jīng)過τ輪更新,這個負面影響的更新 仍保留Wdητ,并不會完全消失,即使滑動平均策略使用版本差距加權來減少梯度延遲更新所占的更新比例,但是仍然會有部分梯度延遲聚合到整體權重中,并且在之后的聚合過程中,這個聚合到參數(shù)服務器的不良更新會同樣被當作最新權重獲得跟其他權重相同的加權比例,并且隨著節(jié)點規(guī)模擴大,產(chǎn)生的慢節(jié)點的概率也相應增高,并且快節(jié)點與慢節(jié)點在參數(shù)服務器的平均權重中所占比例差距會隨著設備異構(gòu)增大而增大,這與聯(lián)邦學習優(yōu)化目標最小化平均損失不符,這種聚合策略更加偏向了快節(jié)點的數(shù)據(jù)分布.
圖2 指數(shù)滑動平均更新策略Fig.2 Exponential moving average strategy
3.1.2 FedWPVA聚合機制
基于權重摘要的聚合方式保留了完整的工作節(jié)點的最新權重,假設t時刻權重摘要其中代表1號工作節(jié)點保存了t版本的摘要再參數(shù)服務器.假設下一個時刻1號節(jié)點發(fā)來了更新權重摘要將更新一號節(jié)點對應位置,通過這種方式,節(jié)點更新時可以完全去除過時更新權重,快節(jié)點的頻繁更新只能更新自身權重,使得慢節(jié)點的梯度延遲可以在下一次有效更新中去除.并且由于每個參數(shù)服務器的參數(shù)都單獨存儲,而不是簡單聚合在一起.
FedWPVA通過這種策略實現(xiàn)了保留所有節(jié)點最新權重,而沒有采用指數(shù)滑動平均的策略,本策略雖然提高了參數(shù)服務器存儲壓力,但是當慢節(jié)點進行更新時可以將之前梯度延遲造成的不良影響完全消除,并且可以有效限制快節(jié)點的頻繁更新,使之不能通過頻繁的更新使整體權重嚴重偏向快節(jié)點訓練數(shù)據(jù),提高了模型整體收斂性能.在本策略中如果碰到與圖2相同的網(wǎng)絡狀況,3個節(jié)點在參數(shù)服務器保留的比例是一致的.
在本策略中,在使用3.1節(jié)圖2相同假設的情況下,F(xiàn)edWPVA可以保證每個節(jié)點在聚合存儲時擁有相同的權重,使得FedWPVA不會偏向快節(jié)點的數(shù)據(jù)分布,當落后的權重更新時,F(xiàn)edWPVA可以完全去除落后權重的影響,如圖3所示.
圖3 FedWPVA聚合策略 Fig.3 FedWPVA aggregation strategy
根據(jù)上述思路,在算法1中,假設在一個異步聯(lián)邦學習下有一個參數(shù)服務器,隨機選擇n個工作節(jié)點,在初始化階段參數(shù)服務器分發(fā)給工作節(jié)點神經(jīng)網(wǎng)絡、初始神經(jīng)網(wǎng)絡參數(shù),本地訓練輪次等參數(shù).之后進入聚合更新階段,當工作節(jié)點完成指定次數(shù)迭代將會把自身節(jié)點編號id、神經(jīng)網(wǎng)絡參數(shù)w上傳到參數(shù)服務器,第1行中,參數(shù)服務器將此權重存儲到節(jié)點標號對應位置serverw[id],若節(jié)點所在位置已經(jīng)存在值,則進行覆蓋,在第2行中,計算所有已知節(jié)點最新權重的平均值wlatest作為下一輪迭代的初始值,第3行中,send函數(shù)用于向工作節(jié)點發(fā)送更新權重,需要兩個參數(shù):工作節(jié)點id和發(fā)送權重wlatest,本算法中將最新權重的平均值wlatest發(fā)送給節(jié)點編號id.
3.2.1 基于指數(shù)滑動平均的更新問題分析
指數(shù)滑動平均方法的更新策略只是將聚合后的權重發(fā)送給本次更新的工作節(jié)點,并不能控制版本差距所造成的影響.在每次聚合更新過程中,指數(shù)滑動平均策略中參數(shù)服務器保存的平均權重是由不同版本的權重組成的,但是在更新時使用了相同的權重與工作節(jié)點傳來的新權重加權平均,當快節(jié)點與慢節(jié)點版本差距過大時,指數(shù)滑動平均策略不能夠?qū)Π姹静罹嘧鲋鲃痈缮?,造成上述快?jié)點、慢節(jié)點兩個問題更加嚴重且不可控,從而降低了模型收斂性能.如公式(2)所示,當工作節(jié)點版本與參數(shù)服務器平均版本差距過大時,降低模型的收斂性能.從公式中可以看出,一旦權重合并到參數(shù)服務器平均權重內(nèi),再次與其他權重加權時獲得相同的加權比例,這是相對不夠靈活的.
算法1.FedWPVA參數(shù)服務器聚合算法
輸入:節(jié)點id,節(jié)點權重w
輸出:聚合后的參數(shù)wlatest
1.serverw[id]←w;//存儲w的權重
2.wlatest←mean(serverw);//計算均值
3.send(id,wlatest);//將計算的均值發(fā)回
3.2.2 FedWPVA版本控制更新機制
基于3.1.2節(jié)的FedWPVA聚合策略,如果不對版本進行感知,通過上述過程,本結(jié)構(gòu)下的參數(shù)服務器所做的聚合方式下,各個工作節(jié)點的更新如公式(3)所示:
(3)
FedWPVA通過參數(shù)服務器簡單記錄個節(jié)點最新的參數(shù)版本,使參數(shù)服務器能夠記錄聯(lián)邦學習中的參數(shù)版本差距情況,針對由于設備異構(gòu)導致的快節(jié)點版本高、慢節(jié)點版本低的問題,使用參數(shù)服務器保存了存儲的對應不同工作節(jié)點的最新權重版本信息,當整體版本差距較大時,使用主動更新機制將使慢節(jié)點追上快節(jié)點的版本,使下一次慢節(jié)點的更新更加有效.當版本差距不大時,在聚合時使用根據(jù)版本差距加權的策略對聚合時的所有權重按照版本信息加權聚合成最新權重.
1)FedWPVA加權聚合機制
FedWPVA方法的基礎結(jié)構(gòu)雖然有效限制了快節(jié)點的頻繁更新,有限的在慢節(jié)點提供有效更新后能夠剔除之前權重延遲的不利影響,但當數(shù)據(jù)集的分布非獨立同分布程度低時,嚴重的限制快節(jié)點也會拖慢整體訓練速度,引入加權機制可以更好的根據(jù)不同的數(shù)據(jù)實際情況,決定加全局和的超參數(shù)來適配不同的實際情況,可以在聚合時根據(jù)不同節(jié)點上提供的最新版本,與參數(shù)服務器記錄的當前最新版本,根據(jù)版本差距,增加版本差距較小的更新的節(jié)點的權重,減少版本差距較大的節(jié)點的權重.
在3.2節(jié)中新提出的機制中,由參數(shù)服務器記錄了用戶節(jié)點的版本信息,這根據(jù)不同版本加權賦值提供了前提條件,同樣基于上小結(jié)提出的結(jié)構(gòu),可以在聚合時加入對版本的考慮,進一步減少慢節(jié)點存留在整個系統(tǒng)的影響,不同于傳統(tǒng)的加權平均機制策略,參數(shù)服務器加全局聚合只考慮參數(shù)服務器保存的整體權重以及傳來的節(jié)點梯度的版本差距做加權聚合,F(xiàn)edWPVA的加權聚合策略將考慮參數(shù)服務器保存的所有的節(jié)點的版本差距與最新版本的差距進行加權聚合,并且隨著最新版本的遞增,服務器上存儲的各個節(jié)點的權重所占比例也是動態(tài)改變的.
如公式(4)所示,p(i)代表了權重摘要標號為i的節(jié)點比例,α為版本比例超參數(shù),α∈(0,1).
(4)
為了權重期望保持不變,需要對其進行歸一化.如公式(5)所示,P(i)代表實際加權所占權重.
(5)
結(jié)合上述公式,可以看出,F(xiàn)edWPVA算法中的加權覺和機制更加靈活,它可以給權重摘要上每一個權重一個合適的權重進行聚合,如公式(6)所示:
(6)
2)FedWPVA主動更新機制
FedWPVA存儲結(jié)構(gòu)提出的存儲結(jié)構(gòu)雖然可以使得等待慢節(jié)點更新替換掉梯度延遲的權重,完全去除之前梯度延遲的影響,但是在設備異構(gòu)嚴重的環(huán)境下,如果存在大量延遲節(jié)點,即使慢節(jié)點完成了一次更新,還會因為計算此次更新的權重相對參數(shù)服務器最新梯度差距過大成為無效甚至有害的權重,所以必須要控制FedWPVA系統(tǒng)下的整體版本差距,當系統(tǒng)版本差距過大時,由參數(shù)服務器向工作節(jié)點推送最新的梯度,從而使慢節(jié)點的下一次更新相對有效,提高系統(tǒng)的收斂速度.本文中,將版本存儲、控制交由參數(shù)服務器控制.
假設t時刻權重摘要=
vthreshold=「2nlog2n+1?
(7)
假設本輪選擇了n個工作節(jié)點,每個工作節(jié)點都有自身不變的id編號,每次工作節(jié)點上傳自身權重時,發(fā)送自身節(jié)點id和權重w.send函數(shù)接收目標節(jié)點id列表、權重在參數(shù)w,將權重發(fā)送到目標節(jié)點上,服務器保存所有工作節(jié)點的最新權重值serverw,每次節(jié)點更新都只會更新serverw[id],在參數(shù)服務器中保存所有工作節(jié)點的最新版本號到serverver,serverver可以單獨存儲所有接收到得工作節(jié)點的最新值,版本號初始化為1,每次發(fā)生更新后自增1,當前最新版本號記錄為versionlatest,未使用加權策略時,最新的權重使用serverw中保存的所有工作節(jié)點的最新值得平均數(shù)作為本次得出的最新結(jié)果wlatest,檢測所有節(jié)點版本是否落后最新版本之和是否超過了版本差距限制gap,當超過版本差距限制時,參數(shù)服務器將發(fā)送最新權重到所有節(jié)點all_node,否則只發(fā)送更新到本次接收得工作節(jié)點.綜上,F(xiàn)edWPVA方法完整算法流程如算法2所示.
算法2.參數(shù)服務器完整算法
輸入:節(jié)點id,節(jié)點權重w
輸出:聚合后的參數(shù)wlatest
1.versionlatest←1;//初始化版本為1
2.versionlatest←versionlatest+1;//版本累加
3.serverw[id]←w;//存儲w的權重
4.serverver[id]←versionlatest;//更新節(jié)點版本號
8. |send(id,wlatest);//版本差距較小不需要全局更新
9.else
10. |send(all_node,wlatest);//版本差距大需要全局更新
在本章中為了驗證FedWPVA算法在實際應用上的表現(xiàn),本文通過集群模擬實驗的方式進行了實驗驗證,操作系統(tǒng)環(huán)境為Ubuntu 20.04.1 LTS,整個實驗基于分布式機器學習框架Parallel-SGD,在集群環(huán)境下進行試驗,共8個工作節(jié)點,為了模擬設備異構(gòu)每個工作節(jié)點占用8-16GB內(nèi)存,根據(jù)公式(7),帶入節(jié)點數(shù)目為8,計算得出vthreshold=49.
數(shù)據(jù)集分別使用的MNIST[22,23]、CIFAR-10[24]兩個數(shù)據(jù)集,并且對前兩個數(shù)據(jù)集在分發(fā)給不同節(jié)點前進行了非獨立同分布處理,其中MNIST數(shù)據(jù)集包含60000個用于訓練的示例和10000個用于測試的示例,每個實例均為28×28的單通道圖片,擁有10個不同類別.CIFAR-10數(shù)據(jù)集包含50000個用于訓練的示例和10000個用于測試的示例,每個實例均為32×32的RGB通道圖片,擁有10個不同類別,所有數(shù)據(jù)集在分配到不同工作節(jié)點時均使之符合非獨立同分布.
在神經(jīng)網(wǎng)絡模型方面,其中MNIST采用全連接的神經(jīng)網(wǎng)絡,共有4層.CIFAR-10數(shù)據(jù)集采用卷積神經(jīng)網(wǎng)絡進行訓練.為了比較說明訓練速度,本文比較為相同訓練輪次的形況下,不同實驗設置的損失值變化情況展示不同策略下的聯(lián)邦學習收斂性能.實驗分別使用上述提及的兩個數(shù)據(jù)集,使用相同的學習率、損失函數(shù)等實驗設置依次對比使用FedWPVA基礎結(jié)構(gòu)對比基于指數(shù)滑動平均的異步聯(lián)邦學習、為了驗證更新機制的效果,對比更新是否使用更新機制的區(qū)別,最后使用完整的FedWPVA算法對比基于指數(shù)滑動平均的異步聯(lián)邦學習,查看整體收斂情況.由于MNIST相較于CIFAR-10更容易收斂,本文對MNIST訓練20個輪次,對CIFAR-10訓練60個輪次.
在對照實驗方面,我們使用了基于指數(shù)滑動平均的異步聯(lián)邦學習Afed(Asynchronous Federated Learning)和2020年的相關改進算法Aed_Hinge(Asynchronous Federated Optimization + Hinge)[9],該算法基于指數(shù)滑動平均的異步聯(lián)邦學習進行了改進,當接受工作節(jié)點的更新時,如果版本差距達到一定限制,降低本次更新中落后節(jié)點的加權權重.
我們首先測試了基于指數(shù)滑動平均的異步聯(lián)邦學習Afed、Aed_Hinge、FedWPVA在MNIST數(shù)據(jù)集上損失下降的不同,Aed_Hinge、FedWPVA在相同輪次損失函數(shù)上都相較傳統(tǒng)異步聯(lián)邦學習更快下降,如圖4所示,其中Aed_Hinge算法對比Afed算法在MNIST數(shù)據(jù)集上損失平均降低了3.95%,F(xiàn)edWPVA對比算法對比Afed算法在MNIST數(shù)據(jù)集上損失平均降低了14.45%.從圖4中可以看出FedWPVA算法收斂速度較快,其中Afed_Hing算法在早期版本差距不顯著時幾乎與Afed保持一致,當后期差距更加顯著時Afed_Hing與Afed逐漸拉開差距,F(xiàn)edWPVA算法較為穩(wěn)定全程超過了Afed、Afed_Hing算法.
圖4 Afed、Afed_Hinge、FedWPVA在MNIST數(shù)據(jù)集上訓練效率Fig.4 Afed、Afed_Hinge、FedWPVAtraining efficiency on the MNIST dataset
之后我們測試了基于指數(shù)滑動平均的異步聯(lián)邦學習Afed、Aed_Hinge、FedWPVA在CIFAR-10數(shù)據(jù)集上損失下降的不同,Aed_Hinge、FedWPVA在相同輪次損失函數(shù)上都相較傳統(tǒng)異步聯(lián)邦學習更快下降,如圖5所示,其中Aed_Hinge算法對比Afed算法在CIFAR-10數(shù)據(jù)集上損失平均降低了4.00%,F(xiàn)edWPVA對比算法對比Afed算法在CIFAR-10數(shù)據(jù)集上損失平均降低了7.26%.從圖5中可以看出FedWPVA算法收斂速度較快,其中Afed在訓練中期損失下降變慢是由于快滿節(jié)點版本差距拉大,由于慢節(jié)點的更新降低了模型整體收斂性能,Afed_Hing算法由于對慢節(jié)點進行了權重懲罰,可以一定程度上緩解中后期的收斂速度慢的問題,但是FedWPVA由于其權重摘要和更新版本感知機制在實驗后期效果對比Afed_Hing算法效果更加明顯.
圖5 Afed、Afed_Hinge、FedWPVA在CIFAR-10數(shù)據(jù)集上訓練效率Fig.5 Afed、Afed_Hinge、FedWPVA training efficiency on the MNIST dataset
基于指數(shù)滑動平均的異步聯(lián)邦學習,在實際使用時會出現(xiàn)聚合比例偏向快節(jié)點、慢節(jié)點過時權重不能被及時消除等聚合問題,當慢節(jié)點與快節(jié)點版本差距拉大時,指數(shù)滑動平均策略更新策略對版本差距的處理也不夠靈活.本文通過基于權重摘要的聚合策略和版本感知的更新策略,其中權重摘要通過保留工作節(jié)點最新權重,并且所有工作節(jié)點所占權重比例相同.權重摘要通過每個工作節(jié)點只能更新自身摘要部分,限制了快節(jié)點高頻更新對整體權重的影響,可以推動參數(shù)服務器上的模型更快地收斂.版本感知是參數(shù)服務器對權重摘要的版本進行記錄,使得參數(shù)服務器聚合時可以根據(jù)工作節(jié)點不同的版本確定不同的加權比例.同時,當整體版本差距過大時,通過全局更新方式將慢節(jié)點中使用的舊權重更新到最新權重,從而提高慢節(jié)點的更新效率,使參數(shù)服務器上的模型更快的收斂.
綜上所述,F(xiàn)edWPVA算法解決了因工作節(jié)點訓練速度差異而導致的模型收斂速度降低問題.提高了異步聯(lián)邦學習訓練效率.