本公開涉及計算機領(lǐng)域,更具體地講,涉及一種面向在線訓練的算力資源彈性分配系統(tǒng)。
背景技術(shù):
1、深度學習(dl)訓練是一個由大量迭代組成的過程,每次迭代都會讀取和處理一定數(shù)量的數(shù)據(jù)樣本,也就是迷你批次。與從離線數(shù)據(jù)集獲取數(shù)據(jù)的離線深度學習訓練不同,在線深度學習訓練管道消耗的是由kafka等流媒體平臺提供的流數(shù)據(jù)。在線訓練是一種動態(tài)程序,它能實時地從數(shù)據(jù)流中增量學習,并使不斷演化的算法適應新到達的數(shù)據(jù)。為了支持使用海量數(shù)據(jù)進行大規(guī)模模型訓練,dl作業(yè)被提交到gpu集群,并使用不同的并行技術(shù),通過gpu進行分布式模型訓練。
2、在大規(guī)模生產(chǎn)環(huán)境中,用于在線模型訓練的流樣本生產(chǎn)率通常會呈現(xiàn)周期性波動。用戶行為(如用戶點擊、應用使用、交易量等)有明顯的高峰和非高峰特征。在工作日一個典型的流量波動模式如下,數(shù)據(jù)吞吐量在清晨達到最低值,在傍晚達到最大值。不難理解,集群通常能在傍晚之后的很長一段時間內(nèi)保持較高的數(shù)據(jù)生產(chǎn)率,并在夜間急劇下降。相比之下,數(shù)據(jù)流量的平均值在周末或節(jié)假日會更高--用戶數(shù)據(jù)從清晨開始上升和累積,并在一天的其余時間保持在極高水平。流量的最大值和最小值之間相差7.65倍,我們從生產(chǎn)集群中觀察到,差距從5倍到30倍不等。這表明gpu集群上的動態(tài)自動擴展在減少資源浪費和提高模型訓練吞吐量方面具有巨大潛力。
3、本公開的目的在于,設(shè)計和實現(xiàn)一個用于現(xiàn)實世界大規(guī)模在線模型訓練的彈性gpu調(diào)度系統(tǒng),有以下研究和工程要求:
4、i)基于預測的主動自動擴展。現(xiàn)有的自動擴展策略是響應系統(tǒng)負載變化的反應式策略,但自動擴展的耗時對于在線訓練來說太長。一旦觸發(fā)自動擴展,包括模型保存、容器啟動以準備新作業(yè)節(jié)點、鏡像拉取、模型加載、數(shù)據(jù)流重建等一系列后續(xù)步驟。當所有這些步驟完成后,自動擴展可能已經(jīng)過時,因為系統(tǒng)負載隨時間迅速變化,大量新鮮數(shù)據(jù)樣本沒有得到及時使用。此外,反應式策略容易導致頻繁的資源分配,這不可避免地導致了高昂的搶占開銷。正如前文所述,在用戶點擊、視頻觀看時間和頻率等方面存在顯著的時序(例如,明顯的高峰和低谷)行為模式。這一觀察揭示了采用主動預測方法的潛力,以預測流量并指導主動自動擴展。
5、ii)及時準確的資源估算。必須及時準確地計算出恰到好處的gpu數(shù)量,以適應數(shù)據(jù)樣本的時變大小。雖然一些現(xiàn)有工作使用分析性能-資源模型來確定優(yōu)化集群寬訓練吞吐量的最優(yōu)資源量,但它們要么僅關(guān)注cpu/內(nèi)存量,要么僅在離線訓練模型中的通用dnn模型上有效。
6、為了滿足這些需求,在本文中,我們提出了kale,這是一個新的彈性gpu調(diào)度系統(tǒng),用于提升在線深度學習模型訓練的性能。為了實現(xiàn)這一目標,我們主要通過以下方式提出了一個有效的自動擴展機制:利用數(shù)據(jù)流量預測和基于資源-性能模型的資源估算。關(guān)鍵的設(shè)計理念是利用歷史數(shù)據(jù)流量來主動預測訓練作業(yè)需要消耗的數(shù)據(jù)樣本數(shù)量,并確定最合適的并行度,即gpu的數(shù)量,以便作業(yè)擁有足夠的資源來處理并利用數(shù)據(jù)訓練出一個足夠好的模型。一旦確定了gpu資源,就會執(zhí)行自動擴展來調(diào)整分配的gpu,將每個gpu分配給一個工作節(jié)點,以便及時地、最合適地適應傳入的數(shù)據(jù)樣本。
技術(shù)實現(xiàn)思路
1、本公開的實施例的目的在于提供一種面向在線訓練的算力資源彈性分配系統(tǒng),本發(fā)明的主要研究目標是通過基于層次結(jié)構(gòu)的模型與程序分析技術(shù)的有機結(jié)合,實現(xiàn)對粒度為項目級別的代碼摘要文檔的自動生成。研究的具體對象為英文文檔,針對的編程語言為java。摘要文檔主要體現(xiàn)為簡短的自然語言摘要,不涉及復雜信息比如目錄結(jié)構(gòu)、使用說明等。并根據(jù)此模型以eclipse插件形式在eclipse?ide上設(shè)計和實現(xiàn)了開源代碼倉庫摘要自動生成工具。
2、在一個總的方面,提供一種面向在線訓練的算力資源彈性分配系統(tǒng),包括用戶端、集群資源管理器、彈性調(diào)度器以及使用待分配的gpu的工作節(jié)點,系統(tǒng)的工作過程為:用戶向集群資源管理器提交在線學習作業(yè)的詳細配置和偏好設(shè)置,所述集群資源管理器分析并批準并向用戶返回提交的配置;之后,將配置提交給彈性調(diào)度器在整個在線訓練作業(yè)的生命周期內(nèi)管理數(shù)據(jù)流量和資源分配,所述彈性調(diào)度器包括三個組件:工作負載預測器、工作節(jié)點估計器和在線學習自動伸縮器;
3、所述工作負載預測器接收提交的配置,使用歷史數(shù)據(jù)訓練一個時間序列預測模型,以預測在線訓練作業(yè)在即將到來的時期可能面臨的即將到來的數(shù)據(jù)流量,采用基于transformer的時間序列預測模型,使用時間序列分解方法將時間數(shù)據(jù)分解為趨勢、季節(jié)性、周期性和噪聲組成部分,通過一個編碼器將輸入的時間序列數(shù)據(jù)轉(zhuǎn)換為注意力向量,結(jié)合位置編碼來捕獲時間序列信息,最后使用一個解碼器來預測未來的工作負載需求;
4、所述工作節(jié)點估計器在對未來的工作負載預測的基礎(chǔ)上,采用一個資源吞吐量模型來確定分布式訓練最合適的工作節(jié)點數(shù)量;
5、所述在線學習自動伸縮器對工作節(jié)點進行擴展或縮減,并在通過集群資源管理器的后續(xù)審批后,為工作節(jié)點分配更多的gpu或?qū)pu回收到資源池中。
6、所述詳細配置和偏好設(shè)置包括模型算法和參數(shù)、數(shù)據(jù)源和訪問方式,以及模型導出地址。
7、所述工作節(jié)點估計器針對參數(shù)服務(wù)器架構(gòu),所述參數(shù)服務(wù)器架構(gòu)由兩類節(jié)點組成:參數(shù)服務(wù)器和工作節(jié)點;
8、參數(shù)服務(wù)器負責存儲和維護全局模型參數(shù),根據(jù)系統(tǒng)規(guī)模和需求部署一個或多個參數(shù)服務(wù)器節(jié)點來分布存儲模型參數(shù),多個參數(shù)服務(wù)器節(jié)點之間通常會進行同步,以確保它們持有的參數(shù)一致;工作節(jié)點負責實際的模型訓練任務(wù),每個工作節(jié)點獨立處理一部分訓練數(shù)據(jù),通過并行計算來加速整個訓練過程,工作節(jié)點從參數(shù)服務(wù)器獲取最新的模型參數(shù),在本地進行計算后,將計算出的梯度發(fā)送回參數(shù)服務(wù)器;
9、所述參數(shù)服務(wù)器架構(gòu)下模型訓練的工作流程如下:
10、步驟1:參數(shù)初始化,訓練開始時,參數(shù)服務(wù)器初始化全局模型參數(shù),參數(shù)可以是隨機生成的,也可以是通過加載預訓練模型得到的;
11、步驟2:參數(shù)拉取,在每個計算步驟之前,工作節(jié)點從參數(shù)服務(wù)器拉取最新的模型參數(shù),這個過程確保每個工作節(jié)點使用的是最新版本的模型參數(shù)進行訓練;
12、步驟3:本地訓練,工作節(jié)點在拉取參數(shù)后,在本地使用一批的訓練樣本進行前向傳播和反向傳播計算,在前向傳播階段,工作節(jié)點根據(jù)當前模型參數(shù)計算預測值和損失函數(shù);在反向傳播階段,工作節(jié)點根據(jù)損失函數(shù)計算梯度;
13、步驟4:梯度推送,工作節(jié)點在本地計算出梯度后,將這些梯度發(fā)送回參數(shù)服務(wù)器;
14、步驟5:參數(shù)更新,參數(shù)服務(wù)器接收到來自多個工作節(jié)點的梯度后,根據(jù)這些梯度更新全局模型參數(shù);
15、步驟6:迭代進行,上述步驟會反復進行,直到模型收斂或達到預定的訓練輪數(shù);
16、所述參數(shù)服務(wù)器架構(gòu)中每個工作節(jié)點訓練一步所需的時間為:t=td+tf+tb+tu+to+tc;其中td表示拉取參數(shù)的時間,tf表示前向傳播的時間,tb表示后向傳播的時間,tu表示推送參數(shù)的時間,to表示優(yōu)化器更新參數(shù)的時間,tc表示其余的額外時間開銷。
17、對于所述訓練過程中稠密參數(shù)和稀疏參數(shù),設(shè)參數(shù)服務(wù)器的數(shù)量為p,工作節(jié)點的數(shù)量為w,每個工作節(jié)點訓練的批次大小為m,稠密參數(shù)的大小為d,稀疏參數(shù)的大小為m×s;假設(shè)參數(shù)在參數(shù)服務(wù)器上均勻分布,則工作節(jié)點發(fā)送給參數(shù)服務(wù)器的稠密參數(shù)數(shù)量為d/p,稀疏參數(shù)數(shù)量為m×s/p;定義訓練一個小批次的前向傳播時間為tforward,反向傳播時間為tbackward,tf=m×tforward,tb=tbackward。
18、td=(m×s)/(b×p),tu=(m×s+d)/(b×p);設(shè)更新一個小批次參數(shù)的時間為tupdate,則to=m×s×tupdate/p;其他額外的開銷假設(shè)與p和w成線性關(guān)系,tc=λ×p+λ′×w,那么每個工作節(jié)點訓練一步所需的時間為:
19、
20、在同步訓練中,所有工作節(jié)點同時訪問同一個參數(shù)服務(wù)器;設(shè)參數(shù)服務(wù)器和工作節(jié)點的帶寬均為b0,當一個工作節(jié)點同時與p個參數(shù)服務(wù)器建立連接時,每個連接的帶寬最大為b0/p,而當一個參數(shù)服務(wù)器同時與w個工作節(jié)點建立連接時,每個連接的帶寬最大為b0/w,參數(shù)服務(wù)器和工作節(jié)點之間的帶寬b應為b0/w和b0/p中的較小值:
21、
22、吞吐量等于總批次大小除以一步訓練的時間,設(shè)總批次大小為m,則同步訓練下的吞吐量為:
23、
24、對min進行線性近似后,簡化為,其中θ為非負系數(shù):
25、
26、如果在生產(chǎn)環(huán)境中存在w/p的最佳性能比,則進一步簡化為:
27、
28、在異步訓練中,每個工作節(jié)點可以被認為是錯開地訪問參數(shù)服務(wù)器,工作節(jié)點與參數(shù)服務(wù)器之間的帶寬為b0/p,總吞吐量是各個節(jié)點吞吐量的w倍,異步訓練下的吞吐量為:
29、
30、類似地,將w和p作為自變量,其他變量作為擬合參數(shù)按自變量合并同類項,最后對參數(shù)重命名為θ,θ為非負系數(shù):
31、
32、如果在生產(chǎn)環(huán)境中存在w/p的最佳性能比,則方程可以進一步簡化:
33、
34、所述在線學習自動伸縮器的實現(xiàn)方式為:根據(jù)所需工作節(jié)點的估計,對在線訓練作業(yè)進行擴展或縮減,制定每個時刻t需要滿足的在線學習工作節(jié)點數(shù)量的要求:
35、min{w(t)∈z+|w(t)}
36、s.t.f(w(t))>l(t)
37、其中w(t)表示時刻t分配的工作節(jié)點數(shù)量,f(w)表示使用前一節(jié)擬合的資源吞吐量模型的w個工作節(jié)點節(jié)點的吞吐量,l(t)表示由預測得出的時刻t的工作負載;
38、在模型訓練期間保持批量大小不變,在擴展過程中保持w/p的比例恒定。
39、本發(fā)明實施例的創(chuàng)新之處在于:
40、(1)更好地保證在線訓練模型的性能。由于主動預測,kale的違約率和累積延遲與像autopilot和hpa這樣的反應性擴展方法相比大幅降低。與hpa相比,kale顯著減少了累積延遲和停機時間,分別降低了69.2%和33.1%,同時將slo違約率從19.57%降低到僅2.6%。正如圖3的上中部所示,在工作負載高峰期間,反應性擴展方法的gpu分配尚未達到最高點。autopilot的gpu分配曲線與工作負載高峰略有錯位,這可能導致樣本累積并導致延遲。這個問題在hpa中更為嚴重,其工作節(jié)點數(shù)量在工作負載高峰后20分鐘才達到峰值。在最高峰時擴展意味著相同的停機時間累積了更多樣本,使得消除延遲更加困難,從而導致hpa擁有最高的違約率和累積延遲。
41、(2)更加節(jié)約算力資源。歸功于準確的資源吞吐量建模,與madu相比,kale顯著減少了gpu小時數(shù),最高可達46.8%。盡管madu預測了未來的負載,但其針對gpu吞吐量的線性擬合算法導致了資源的過度分配。如圖3所示,kale的曲線像一對鑷子,緊緊地圍繞在峰值附近,而madu在高峰時顯示出過度且持續(xù)的分配,這反映了其高gpu小時數(shù)。此外,在違約率和累積延遲方面,kale和madu是可比的,kale顯示出2.60%的違約率和2203.69分鐘的累積延遲,而madu則顯示出2.57%的違約率和2302.85分鐘的累積延遲。然而,kale僅使用242個gpu小時就實現(xiàn)了這一性能,而madu需要455個gpu小時。kale在資源吞吐量建模和擴展時機上的精確性使其以顯著更低的資源消耗達到了與madu高資源使用相當?shù)男阅堋S捎阡忼X形檢測,kale顯著減少了停機時間,最高減少了59.5%(從hpa的269分鐘減少到kale的109分鐘)。反應性方法由于缺乏遠見,更容易出現(xiàn)分配波動。