国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向CPU-GPU集群的分布式機(jī)器學(xué)習(xí)資源調(diào)度框架研究

2021-07-12 12:24:34朱紫鈺湯小春趙全
關(guān)鍵詞:分片計(jì)算資源執(zhí)行器

朱紫鈺, 湯小春, 趙全

(西北工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 陜西 西安 710072)

分布式機(jī)器學(xué)習(xí)[1-3]在數(shù)據(jù)挖掘、醫(yī)學(xué)影像、股票市場(chǎng)分析、計(jì)算機(jī)視覺(jué)、市場(chǎng)分析等領(lǐng)域被大規(guī)模使用。但是訓(xùn)練機(jī)器學(xué)習(xí)模型通常需要大量的時(shí)間和計(jì)算資源。隨著數(shù)據(jù)中心開(kāi)始大規(guī)模使用GPU設(shè)備,CPU-GPU混合的異構(gòu)資源集群已經(jīng)成為一種通用基礎(chǔ)設(shè)施[4-5]。企業(yè)界為了提高分布式機(jī)器學(xué)習(xí)的效率,也逐漸將這類(lèi)應(yīng)用移植到異構(gòu)集群平臺(tái)上運(yùn)行。但是,CPU-GPU集群上面臨的一個(gè)基本挑戰(zhàn)是如何高效地調(diào)度分布式機(jī)器學(xué)習(xí)作業(yè)中的任務(wù)。特別是當(dāng)GPU計(jì)算資源較為珍貴時(shí),如何最大程度地利用CPU-GPU計(jì)算資源進(jìn)行模型訓(xùn)練已成為異構(gòu)集群上面臨的基本挑戰(zhàn)。

分布式機(jī)器學(xué)習(xí)初期,由于硬件限制,主要采用CPU集群來(lái)進(jìn)行,針對(duì)一批訓(xùn)練數(shù)據(jù),計(jì)算框架把數(shù)據(jù)分成很多個(gè)片段,然后根據(jù)集群節(jié)點(diǎn)上CPU的數(shù)量,將每一個(gè)片段作為一個(gè)單獨(dú)的任務(wù)分配到計(jì)算節(jié)點(diǎn)的不同CPU上,進(jìn)行局部梯度計(jì)算。當(dāng)所有的任務(wù)完成計(jì)算后,參數(shù)服務(wù)器收集各個(gè)任務(wù)的梯度誤差進(jìn)行匯總,然后發(fā)送新的參數(shù)用于下一次迭代。由于數(shù)據(jù)分片大小相同,CPU性能相同,所以每個(gè)任務(wù)在CPU上的執(zhí)行時(shí)間大致相同,這能夠保證每一次迭代的同步。

近幾年來(lái),隨著GPU硬件設(shè)施的廣泛應(yīng)用,分布式機(jī)器學(xué)習(xí)開(kāi)始使用GPU計(jì)算資源。在分布式機(jī)器學(xué)習(xí)的訓(xùn)練過(guò)程中,一部分任務(wù)可能運(yùn)行在GPU上,一部分任務(wù)可能運(yùn)行在CPU上。GPU用于單純的梯度計(jì)算,CPU用于初始化、節(jié)點(diǎn)之間通信、數(shù)據(jù)加載、主機(jī)內(nèi)存到設(shè)備內(nèi)存之間拷貝以及啟動(dòng)GPU的kernel函數(shù)等。

面對(duì)同構(gòu)的集群環(huán)境,分布式機(jī)器學(xué)習(xí)采用大小相同的數(shù)據(jù)分片策略,這樣可以保證任務(wù)在CPU或者GPU上執(zhí)行時(shí)間相同。面對(duì)異構(gòu)集群環(huán)境,分布式機(jī)器學(xué)習(xí)存在學(xué)習(xí)過(guò)程中不能保證CPU和GPU資源合理利用的問(wèn)題:如果只考慮使用異構(gòu)集群中的CPU計(jì)算資源,則沒(méi)有考慮到GPU計(jì)算資源帶來(lái)的計(jì)算優(yōu)勢(shì);如果只考慮使用異構(gòu)集群中的GPU計(jì)算資源,則在GPU設(shè)備執(zhí)行任務(wù)時(shí),CPU資源往往被閑置。無(wú)論是在異構(gòu)集群中只使用CPU資源還是只使用GPU資源,都無(wú)法充分利用異構(gòu)集群資源。因此,一種合理使用異構(gòu)集群計(jì)算資源的方式為:當(dāng)CPU資源存在空閑時(shí),將任務(wù)分配到CPU上執(zhí)行,當(dāng)GPU資源存在空閑時(shí),將任務(wù)分配到GPU上運(yùn)行。這種資源分配方案的優(yōu)點(diǎn)是最大限度地利用了CPU計(jì)算資源和GPU計(jì)算資源。但是上述任務(wù)分配方式的最大挑戰(zhàn)在于:(1)由于GPU和CPU具有不同的運(yùn)算能力(FLOPS),導(dǎo)致同樣的任務(wù)在GPU上執(zhí)行比在CPU上執(zhí)行消耗的時(shí)間更短;(2)類(lèi)似于聚類(lèi)分析的迭代過(guò)程,只有當(dāng)全部工作節(jié)點(diǎn)上的任務(wù)完成后,誤差聚合操作才能進(jìn)行參數(shù)的更新,并發(fā)布下一次的迭代過(guò)程。因此,如果把每一次迭代過(guò)程中的計(jì)算任務(wù)均勻地分配給CPU和GPU資源,就會(huì)造成CPU任務(wù)嚴(yán)重滯后,迭代過(guò)程不能同步,從而導(dǎo)致誤差聚合操作的推遲,影響下一次迭代的開(kāi)始時(shí)間。

針對(duì)分布式機(jī)器學(xué)習(xí)作業(yè)如何提高資源利用率的問(wèn)題,有相當(dāng)多的研究者進(jìn)行了研究。文獻(xiàn)[6]從分布式機(jī)器學(xué)習(xí)訓(xùn)練過(guò)程出發(fā),詳細(xì)說(shuō)明了訓(xùn)練過(guò)程中各個(gè)階段使用CPU和GPU資源帶來(lái)的性能提升,同時(shí)也說(shuō)明了使用GPU設(shè)備的瓶頸。文獻(xiàn)[7-14]主要針對(duì)GPU計(jì)算資源的調(diào)度策略,忽略CPU計(jì)算資源的調(diào)度。文獻(xiàn)[7]介紹了跨作業(yè)共享GPU資源帶來(lái)的一些挑戰(zhàn)性問(wèn)題。文獻(xiàn)[8]描述了一種大規(guī)??焖偬荻认陆邓惴ǖ膽?yīng)用場(chǎng)景,提出了大規(guī)模數(shù)據(jù)集在多個(gè)GPU之間的調(diào)度策略。文獻(xiàn)[9]提供了與分布式機(jī)器學(xué)習(xí)相關(guān)的資源管理模型和以及任務(wù)調(diào)度策略。文獻(xiàn)[10]提供了一種任務(wù)執(zhí)行過(guò)程的控制算法,保證機(jī)器學(xué)習(xí)作業(yè)的質(zhì)量。文獻(xiàn)[11]提出了一種針對(duì)異構(gòu)資源的混合DRF算法,能夠有效提高集群資源利用率。文獻(xiàn)[12]提出了一種支持向量機(jī)的任務(wù)分類(lèi)算法,任務(wù)根據(jù)類(lèi)型劃分并投入相應(yīng)的設(shè)備進(jìn)行計(jì)算,可以改善集群資源利用情況,但是該算法獲得數(shù)據(jù)存在一定的時(shí)間延遲,并不能準(zhǔn)確獲得集群資源變化。這些研究在最大化資源利用率、最小化作業(yè)的平均完成時(shí)間以及任務(wù)調(diào)度質(zhì)量等方面都有一定的借鑒意義。但是,上述文獻(xiàn)對(duì)CPU和GPU搭配使用的研究不全面,即要么只考慮CPU資源,要么只考慮GPU資源,不考慮CPU資源與GPU資源混合分配和調(diào)度的價(jià)值,也不關(guān)注CPU和GPU資源混合調(diào)度的利用率。文獻(xiàn)[13-14]主要任務(wù)是解決多個(gè)機(jī)器學(xué)習(xí)作業(yè)共享GPU集群時(shí),如何分配資源,減少迭代過(guò)程的延遲。它解決了不同作業(yè)之間的資源共享問(wèn)題,但沒(méi)有解決CPU-GPU資源之間的合理分配問(wèn)題。文獻(xiàn)[15]介紹了一種通用的CPU-GPU計(jì)算資源管理系統(tǒng),它不涉及具體的應(yīng)用,而是根據(jù)任務(wù)類(lèi)型(例如工作節(jié)點(diǎn)程序,參數(shù)服務(wù)器程序)執(zhí)行啟發(fā)式靜態(tài)資源分配,因此無(wú)法提高機(jī)器學(xué)習(xí)中CPU-GPU資源的利用率。文獻(xiàn)[16]通過(guò)預(yù)估任務(wù)的執(zhí)行時(shí)間來(lái)調(diào)度資源,但是它的核心在于確定參數(shù)服務(wù)器與計(jì)算節(jié)點(diǎn)之間的分配關(guān)系,不太關(guān)注CPU資源與GPU資源分配問(wèn)題。文獻(xiàn)[17]介紹了一種通過(guò)MapReduce來(lái)加速K-Means的算法,其按照CPU處理能力和GPU處理能力將Map任務(wù)分成2個(gè)部分,這種方式可以利用CPU資源和GPU資源,但是它對(duì)CPU任務(wù)和GPU任務(wù)的不敏感,導(dǎo)致迭代過(guò)程中CPU任務(wù)的延遲,增加了整個(gè)作業(yè)的響應(yīng)時(shí)間。文獻(xiàn)[18]中的理論框架產(chǎn)生了一個(gè)最佳整數(shù)規(guī)劃解決方案,根據(jù)CPU數(shù)量、CPU與GPU之間計(jì)算能力的不同,少部分任務(wù)由CPU承擔(dān),大部分任務(wù)由GPU承擔(dān),提高了CPU和GPU的利用率,但是由于CPU任務(wù)的數(shù)據(jù)大小與GPU任務(wù)的數(shù)據(jù)大小相同,當(dāng)數(shù)據(jù)分片較大時(shí),存在任務(wù)延遲問(wèn)題。

為了提高CPU和GPU資源利用率,同時(shí)也減少每次迭代中的任務(wù)延遲,本文提出了一種不均勻數(shù)據(jù)分片方法。在每一次迭代過(guò)程中,根據(jù)集群系統(tǒng)可以使用的CPU核數(shù)量和GPU數(shù)量,以及CPU和GPU的計(jì)算能力,將數(shù)據(jù)塊分解成大小不同的分片,小分片數(shù)據(jù)應(yīng)用于CPU資源,大分片數(shù)據(jù)應(yīng)用于GPU資源,在所有GPU任務(wù)執(zhí)行結(jié)束前,保證CPU任務(wù)也能夠結(jié)束,從而減少2類(lèi)不同任務(wù)之間的同步等待問(wèn)題,進(jìn)而降低分布式學(xué)習(xí)的訓(xùn)練時(shí)間,且提高系統(tǒng)的資源使用率。

論文的主要?jiǎng)?chuàng)新點(diǎn)是提出了一種面向CPU-GPU混合集群的分布式機(jī)器學(xué)習(xí)調(diào)度框架,即在機(jī)器學(xué)習(xí)模型參數(shù)的訓(xùn)練過(guò)程中,對(duì)于每個(gè)任務(wù),系統(tǒng)都包含2個(gè)版本——GPU版本和CPU版本。在每一次迭代操作開(kāi)始前,首先得到可以使用的CPU設(shè)備數(shù)量m以及GPU設(shè)備數(shù)量n,再根據(jù)任務(wù)的歷史統(tǒng)計(jì)數(shù)據(jù),確定CPU和GPU上運(yùn)行時(shí)間的比值(這個(gè)比值相當(dāng)于CPU和GPU執(zhí)行效率比),根據(jù)比值可將任務(wù)分解為p和q個(gè);然后將GPU任務(wù)提交到GPU計(jì)算資源,CPU任務(wù)提交到CPU計(jì)算資源。最后,采用線性規(guī)劃的思想,保證分配的CPU任務(wù)與GPU任務(wù)之間的同步執(zhí)行,即CPU任務(wù)與GPU任務(wù)之間不存在嚴(yán)重滯后的情況。

1 分布式機(jī)器學(xué)習(xí)的資源調(diào)度框架

1.1 CPU-GPU資源分配模型

通常情況下,當(dāng)使用GPU計(jì)算資源計(jì)算不同數(shù)據(jù)分片的梯度時(shí),CPU被用來(lái)初始化參數(shù),啟動(dòng)kernel函數(shù)的運(yùn)行。在GPU的kernel函數(shù)執(zhí)行過(guò)程中,CPU就不再被使用。這會(huì)導(dǎo)致CPU處于閑置狀態(tài),降低系統(tǒng)資源利用效率。但是,如果所有的CPU資源都處于“忙”狀態(tài)時(shí),也會(huì)造成GPU任務(wù)等待CPU資源而不能被迅速執(zhí)行的情況,這會(huì)浪費(fèi)GPU資源。

在機(jī)器學(xué)習(xí)訓(xùn)練中,要想CPU資源和GPU資源充分被利用,就需要考慮為GPU綁定一定的CPU資源,方便GPU任務(wù)的啟動(dòng)。在面向CPU-GPU的異構(gòu)集群系統(tǒng)中,圖1給出了CPU與GPU之間的資源分配關(guān)系。圖中的c0、c1等代表CPU設(shè)備,GPU1、GPU2等代表GPU設(shè)備。在每次的迭代過(guò)程中,將CPU和GPU進(jìn)行捆綁,即為每個(gè)GPU搭配一定數(shù)量的CPU。訓(xùn)練開(kāi)始后,對(duì)于GPU任務(wù),綁定的CPU只負(fù)責(zé)加載參數(shù)以及啟動(dòng)GPU的kernel函數(shù),一旦開(kāi)始在GPU上進(jìn)行誤差的計(jì)算,CPU會(huì)處于閑置狀態(tài),直到完成所有的局部誤差計(jì)算。之后在指定的CPU或者GPU上進(jìn)行誤差聚合運(yùn)算,產(chǎn)生新的模型參數(shù)。上述過(guò)程相當(dāng)于完成一次迭代,如果誤差未達(dá)到模型精度要求,則會(huì)進(jìn)行重復(fù)的迭代過(guò)程,直到滿足精度要求。

圖1 CPU-GPU異構(gòu)集群系統(tǒng)資源分配方式

1.2 GPU任務(wù)與CPU任務(wù)的資源需求

CPU-GPU異構(gòu)集群要求任務(wù)的二進(jìn)制程序既能夠在CPU上運(yùn)行,也能夠在GPU上運(yùn)行。當(dāng)一個(gè)機(jī)器學(xué)習(xí)作業(yè)準(zhǔn)備執(zhí)行時(shí),可以指定哪些任務(wù)運(yùn)行在CPU設(shè)備上,哪些任務(wù)運(yùn)行在GPU設(shè)備上。任務(wù)調(diào)度器會(huì)查看集群資源中是否有設(shè)備處于空閑狀態(tài),如果有GPU空閑,則提交GPU任務(wù),如果有CPU空閑,則提交CPU任務(wù)。任務(wù)調(diào)度器對(duì)任務(wù)進(jìn)行資源分配時(shí),如果需要使用GPU資源,那么任務(wù)就與GPU二進(jìn)制程序綁定;如果需要使用CPU資源,那么任務(wù)就與CPU二進(jìn)制程序綁定。之后,任務(wù)調(diào)度器會(huì)將任務(wù)及信息發(fā)送給工作節(jié)點(diǎn)的CPU執(zhí)行器或GPU執(zhí)行器,由執(zhí)行器啟動(dòng)并執(zhí)行任務(wù)。在設(shè)計(jì)CPU二進(jìn)制程序和GPU二進(jìn)制程序時(shí),任務(wù)的輸入數(shù)據(jù)格式和輸出數(shù)據(jù)格式要求完全一樣。這樣一來(lái),2種任務(wù)的輸入輸出能夠正確獲得下一次迭代時(shí)新的訓(xùn)練參數(shù),且不會(huì)影響機(jī)器學(xué)習(xí)作業(yè)的參數(shù)更新效果。

1.3 數(shù)據(jù)分片策略

數(shù)據(jù)分片策略包含2個(gè)目的:①面向分布式機(jī)器學(xué)習(xí),通過(guò)數(shù)據(jù)分片,可以并行執(zhí)行多個(gè)梯度計(jì)算過(guò)程,從而減少機(jī)器學(xué)習(xí)的訓(xùn)練時(shí)間,快速地完成模型的訓(xùn)練;②面向CPU-GPU異構(gòu)集群環(huán)境,進(jìn)行數(shù)據(jù)分片的目的是充分利用CPU資源和GPU資源。

為了達(dá)到上述目的,依據(jù)CPU任務(wù)和GPU任務(wù)的運(yùn)行時(shí)間,對(duì)數(shù)據(jù)進(jìn)行大小不等的分片。通過(guò)統(tǒng)計(jì)CPU任務(wù)和GPU任務(wù)在各自設(shè)備上的運(yùn)行時(shí)間,得到任務(wù)運(yùn)行效率的比值,從而確定數(shù)據(jù)分片的大小。由于機(jī)器學(xué)習(xí)聚合操作更新參數(shù)前要求本批次數(shù)據(jù)全部計(jì)算完成,因此分片大小決定了CPU任務(wù)和GPU任務(wù)的同步快慢問(wèn)題,這是本文算法的關(guān)鍵所在。

1.4 分片方法

減少機(jī)器學(xué)習(xí)迭代過(guò)程中運(yùn)行時(shí)間的核心是保證CPU任務(wù)與GPU任務(wù)的同步完成。假設(shè)N是整個(gè)數(shù)據(jù)規(guī)模的大小,n是CPU核數(shù)量,m是GPU設(shè)備數(shù)量,對(duì)于同樣大小的一塊數(shù)據(jù)B,CPU運(yùn)行時(shí)間與GPU運(yùn)行時(shí)間的比值是α,稱(chēng)α為加速系數(shù)。其含義是如果使用一個(gè)GPU設(shè)備完成數(shù)據(jù)的計(jì)算需要時(shí)間為t,那么使用一個(gè)CPU完成數(shù)據(jù)的計(jì)算需要α·t的時(shí)間。如果可以將數(shù)據(jù)分割成B/α的大小,那么一個(gè)CPU完成B/α數(shù)據(jù)的計(jì)算就只需要時(shí)間t,這樣對(duì)于GPU任務(wù)和CPU任務(wù)的計(jì)算就不存在執(zhí)行時(shí)間差別的問(wèn)題,很容易通過(guò)調(diào)度滿足迭代過(guò)程的同步。

對(duì)于機(jī)器學(xué)習(xí)中的數(shù)據(jù)N,現(xiàn)在需要進(jìn)行數(shù)據(jù)的分片,分片后的每一個(gè)數(shù)據(jù)塊對(duì)應(yīng)一個(gè)任務(wù)。為了保證計(jì)算性能的無(wú)差異,根據(jù)數(shù)據(jù)分片的大小決定任務(wù)由CPU執(zhí)行還是由GPU執(zhí)行。假設(shè)數(shù)據(jù)被分割后,有x個(gè)CPU任務(wù)和y個(gè)GPU任務(wù)。在n個(gè)CPU核上運(yùn)行x個(gè)任務(wù)的完成時(shí)間記為tC,在m個(gè)GPU上完成y任務(wù)的時(shí)間為tG,理想狀態(tài)下,數(shù)據(jù)分割計(jì)劃的目的是|tC-tG|=0。因此,任務(wù)同步時(shí)間差如下所示

(1)

使用以上參數(shù),需要確定CPU任務(wù)的個(gè)數(shù)x和GPU任務(wù)的個(gè)數(shù)y,目的是要減少CPU任務(wù)的執(zhí)行結(jié)束時(shí)間與GPU任務(wù)執(zhí)行結(jié)束時(shí)間的差值。所以給出以下的規(guī)劃條件,其目標(biāo)是

min|f(x,y)|

(2)

同時(shí)要滿足條件

x·B1+y·B2≥N

(3)

|B2-αB1|<η

(4)

B1,B2,x,y≥0

(5)

公式(2)給出了目標(biāo)函數(shù),即減少CPU任務(wù)與GPU任務(wù)之間的不同步。其物理意義是,假設(shè)tp代表p個(gè)任務(wù)中第一個(gè)任務(wù)開(kāi)始到最后一個(gè)任務(wù)結(jié)束的時(shí)間區(qū)間,而tq代表q個(gè)任務(wù)中第一個(gè)任務(wù)開(kāi)始到最后一個(gè)任務(wù)結(jié)束的時(shí)間區(qū)間。調(diào)度的目的是滿足|tp-tq|<ε,ε∈?(0,1),即GPU任務(wù)的完成時(shí)間和CPU任務(wù)的完成時(shí)間相當(dāng)。公式(3)是按數(shù)據(jù)分片要求,將CPU任務(wù)的數(shù)據(jù)分片大小為B1,GPU任務(wù)的數(shù)據(jù)分片大小為B2,公式(3)要求x+y個(gè)任務(wù)要處理完全部的訓(xùn)練數(shù)據(jù)。公式(4)描述了CPU和GPU任務(wù)數(shù)據(jù)規(guī)模之間的關(guān)系,其數(shù)據(jù)要滿足加速系數(shù)要求,η表示數(shù)據(jù)分割誤差。公式(5)對(duì)所有變量的取值范圍進(jìn)行了約束。

對(duì)于每一個(gè)數(shù)據(jù)分片,都會(huì)產(chǎn)生一個(gè)任務(wù),分片小的數(shù)據(jù)綁定CPU任務(wù),分片大的數(shù)據(jù)綁定GPU任務(wù)。整個(gè)數(shù)據(jù)分片完成后,將任務(wù)及數(shù)據(jù)信息分別插入到CPU任務(wù)隊(duì)列和GPU任務(wù)隊(duì)列中,等待調(diào)度器調(diào)度。根據(jù)數(shù)據(jù)分片產(chǎn)生的任務(wù),只能用于機(jī)器學(xué)習(xí)中的局部梯度計(jì)算,即gi值的計(jì)算?;贑PU任務(wù)和GPU任務(wù)的數(shù)量,調(diào)度器安排CPU資源以及GPU資源執(zhí)行任務(wù)。

1.5 算法分析

迭代計(jì)算過(guò)程中,CPU負(fù)責(zé)內(nèi)存到設(shè)備內(nèi)存的輸入和輸出,GPU負(fù)責(zé)計(jì)算。當(dāng)GPU計(jì)算時(shí),CPU空閑,因此,利用這些CPU時(shí)間是可行的,但是前提是不能影響GPU執(zhí)行前后對(duì)CPU的需求;另外,GPU數(shù)量一般較少,CPU核數(shù)量眾多,部分CPU核就可以承擔(dān)GPU計(jì)算前后的輸入和輸出工作,多余的CPU核就可以參與計(jì)算,因此CPU-GPU混合的算法是可行的。

為了利用這些CPU核,就需要對(duì)數(shù)據(jù)進(jìn)行合理的分片,避免部分任務(wù)滯后導(dǎo)致的作業(yè)響應(yīng)時(shí)間延遲。所以,論文采用整數(shù)規(guī)劃算法來(lái)計(jì)算分片的數(shù)量和分片的大小。

在時(shí)間復(fù)雜度方面,在公式(3)中,定義了2類(lèi)變量B1和B2,設(shè)其可取最大值為N,由公式(4)可知2類(lèi)變量滿足比例關(guān)系α。設(shè)x,y和N可取最大值為a,那么分片規(guī)模循環(huán)次數(shù)為a,任務(wù)數(shù)作為內(nèi)層循環(huán)也為a,則公式(3)時(shí)間復(fù)雜度為O(a2),該時(shí)間復(fù)雜度為算法時(shí)間復(fù)雜度,因此本算法可行。在空間復(fù)雜度方面,算法使用的主要變量共8個(gè),涉及的數(shù)量較少,因此占用內(nèi)存較少,算法具有較好的空間復(fù)雜度。

1.6 機(jī)器學(xué)習(xí)作業(yè)的任務(wù)調(diào)度框架

機(jī)器學(xué)習(xí)作業(yè)的任務(wù)調(diào)度框架由3個(gè)主要部分組成(ML框架、工作節(jié)點(diǎn)和數(shù)據(jù)分片)。ML框架是主控節(jié)點(diǎn),工作節(jié)點(diǎn)是由CPU-GPU資源組成的集群節(jié)點(diǎn),數(shù)據(jù)分片是對(duì)整個(gè)訓(xùn)練數(shù)據(jù)的劃分,其分片大小與計(jì)算資源的計(jì)算能力相關(guān)。整個(gè)框架如圖2所示。

ML框架:ML框架主要功能有①聚合各個(gè)工作節(jié)點(diǎn)執(zhí)行器上發(fā)送的局部梯度值;②根據(jù)梯度值更新模型參數(shù);③對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行分片,并依據(jù)分片創(chuàng)建CPU任務(wù)和GPU任務(wù)的描述;④對(duì)上述任務(wù)進(jìn)行調(diào)度。

工作節(jié)點(diǎn):工作節(jié)點(diǎn)的主要功能是依據(jù)CPU資源和GPU資源的不同,啟動(dòng)CPU執(zhí)行器以及GPU執(zhí)行器。CPU執(zhí)行器接收CPU任務(wù)描述,使用CPU資源來(lái)計(jì)算指定分片數(shù)據(jù)的局部梯度值;GPU執(zhí)行器接收GPU任務(wù)描述,采用GPU資源來(lái)計(jì)算指定分片數(shù)據(jù)的局部梯度值。

數(shù)據(jù)分片:數(shù)據(jù)分片是按照CPU資源和GPU資源的數(shù)量和計(jì)算能力,將整個(gè)訓(xùn)練數(shù)據(jù)分割成大小不等的CPU數(shù)據(jù)塊以及GPU數(shù)據(jù)塊。

整個(gè)作業(yè)任務(wù)調(diào)度框架的運(yùn)行過(guò)程按照以下步驟完成(以下的步驟序號(hào)與圖2中序號(hào)對(duì)應(yīng))。

圖2 面向CPU-GPU集群的機(jī)器學(xué)習(xí)調(diào)度框架

①M(fèi)L框架執(zhí)行梯度值的聚集運(yùn)算。如果是第一次迭代,隨機(jī)給出梯度值;如果不是第一次迭代,當(dāng)所有的執(zhí)行器全部將局部梯度值發(fā)送到ML框架后,ML框架再進(jìn)行聚集計(jì)算;

②根據(jù)聚集的梯度值,ML框架計(jì)算出新的權(quán)重系數(shù),即模型的參數(shù)值;

③ML框架將新的模型參數(shù)發(fā)布到各個(gè)工作節(jié)點(diǎn)的CPU執(zhí)行器和GPU執(zhí)行器;

④ML框架根據(jù)訓(xùn)練數(shù)據(jù)的大小以及CPU和GPU資源數(shù)量,按照第1.4節(jié)的方式進(jìn)行數(shù)據(jù)分片,將數(shù)據(jù)分為2類(lèi),CPU數(shù)據(jù)分片和GPU數(shù)據(jù)分片。每個(gè)分片包含訓(xùn)練數(shù)據(jù)的編號(hào)、開(kāi)始位置、數(shù)據(jù)塊大小和數(shù)據(jù)所在的IP地址信息等。每個(gè)數(shù)據(jù)分片按照一定數(shù)據(jù)格式構(gòu)成一個(gè)任務(wù)描述,并添加到各自的排隊(duì)隊(duì)列中;

⑤ML框架的任務(wù)調(diào)度器從CPU隊(duì)列和GPU隊(duì)列中取得任務(wù)描述,并根據(jù)任務(wù)描述及調(diào)度算法,確定每個(gè)任務(wù)將要發(fā)送的執(zhí)行器;

⑥調(diào)度器將任務(wù)發(fā)送到各個(gè)工作節(jié)點(diǎn)的CPU執(zhí)行器和GPU執(zhí)行器隊(duì)列中;

⑦各個(gè)工作節(jié)點(diǎn)的CPU執(zhí)行器以及GPU執(zhí)行器開(kāi)始按照FIFO的方式執(zhí)行機(jī)器學(xué)習(xí)中的局部訓(xùn)練任務(wù),計(jì)算局部梯度值;

⑧CPU執(zhí)行器以及GPU執(zhí)行器執(zhí)行計(jì)算前,根據(jù)任務(wù)描述中的數(shù)據(jù)分片信息,從訓(xùn)練數(shù)據(jù)中獲取采樣數(shù)據(jù);

⑨各個(gè)工作節(jié)點(diǎn)的執(zhí)行器完成任務(wù)的運(yùn)行后,將所有計(jì)算出的局部梯度值發(fā)送到ML框架;

ML框架收到全部的梯度值后,檢查誤差是否達(dá)到訓(xùn)練模型的精度要求或者是否滿足迭代次數(shù)的要求。如果滿足要求,停止訓(xùn)練;否則,繼續(xù)執(zhí)行①,進(jìn)行新一輪的迭代計(jì)算。這樣不斷地進(jìn)行迭代訓(xùn)練過(guò)程,最終得到模型參數(shù);

2 調(diào)度算法的實(shí)現(xiàn)

機(jī)器學(xué)習(xí)是一個(gè)不斷迭代的過(guò)程,每一次迭代都需要計(jì)算梯度誤差的變化,然后收集這些變化,為下一次的迭代做準(zhǔn)備。分布式機(jī)器學(xué)習(xí)中,采用數(shù)據(jù)并行的計(jì)算模型,各個(gè)計(jì)算節(jié)點(diǎn)上只計(jì)算整個(gè)數(shù)據(jù)的一個(gè)分片,然后將計(jì)算結(jié)果發(fā)送到PS服務(wù)器進(jìn)行聚合。如果數(shù)據(jù)分片大小不合適,可能會(huì)出現(xiàn)某個(gè)工作節(jié)點(diǎn)嚴(yán)重滯后的情況,導(dǎo)致下一次迭代的延遲,因此數(shù)據(jù)分片是本調(diào)度算法的核心。對(duì)于CPU-GPU混合的集群系統(tǒng),根據(jù)CPU執(zhí)行時(shí)間和GPU執(zhí)行時(shí)間來(lái)決定分片的數(shù)據(jù)大小,使一個(gè)分片對(duì)應(yīng)一個(gè)計(jì)算任務(wù),從而產(chǎn)生大量的任務(wù)。這些任務(wù)在執(zhí)行過(guò)程中,會(huì)根據(jù)各自的分片信息,讀取相應(yīng)的數(shù)據(jù),按照各自的類(lèi)別在相應(yīng)的計(jì)算資源上進(jìn)行計(jì)算。其計(jì)算過(guò)程如算法1所示。

ML-FrameWork 是ML框架的主函數(shù),也是PS服務(wù)器所在的節(jié)點(diǎn)。ML-FrameWork首先得到CPU-GPU集群中的CPU資源數(shù)量和GPU資源數(shù)量(s1),然后進(jìn)入迭代過(guò)程中(s2~s8)。(s3)獲得各個(gè)數(shù)據(jù)分片任務(wù)計(jì)算的梯度值,進(jìn)行聚合計(jì)算;(s4)根據(jù)CPU和GPU數(shù)量、訓(xùn)練數(shù)據(jù)大小以及CPU任務(wù)與GPU任務(wù)之間的加速系數(shù),將數(shù)據(jù)劃分為大小不同的數(shù)據(jù)塊;(s5)對(duì)于較小的數(shù)據(jù)塊,產(chǎn)生CPU任務(wù)描述,放入CPU執(zhí)行隊(duì)列;(s6)對(duì)于較大的數(shù)據(jù)塊,產(chǎn)生GPU任務(wù)描述,放入GPU執(zhí)行隊(duì)列;(s7)是ML-FrameWork等待CPU任務(wù)隊(duì)列和GPU任務(wù)隊(duì)列的執(zhí)行同步。

WorkerIterate運(yùn)行在各個(gè)工作節(jié)點(diǎn)的執(zhí)行器上,是計(jì)算局部梯度的函數(shù)。它可以使用CPU資源或GPU資源進(jìn)行局部梯度計(jì)算。(s1)更新并保存來(lái)自PS服務(wù)器的新的模型參數(shù);(s2)計(jì)算梯度值,其中最為關(guān)鍵的是獲得數(shù)據(jù)的分片信息,然后讀取對(duì)應(yīng)的訓(xùn)練數(shù)據(jù),通過(guò)分片信息中包含的計(jì)算資源信息,使用不同的計(jì)算資源計(jì)算出新的局部梯度值;(s3)將計(jì)算出的局部梯度值按照一定的標(biāo)準(zhǔn)格式組織起來(lái)并返回給ML-FrameWork。

算法1梯度優(yōu)化的分布式機(jī)器學(xué)習(xí)框架算法

Begin ML-FrameWork:

(s1)x=cpus,y=gpus

(s2) for iterationt=0,1,…,Tdo

(s7) sync

(s8) end for

End ML-FrameWork

Begin WorkerIterate(t):

End WorkerIterate

Schedule函數(shù)描述從隊(duì)列中取出任務(wù)并提交到工作節(jié)點(diǎn)的過(guò)程,如算法2所示。任務(wù)調(diào)度器從隊(duì)列取出一個(gè)任務(wù)描述,根據(jù)任務(wù)的類(lèi)型,如果是GPU任務(wù),執(zhí)行(s1),根據(jù)任務(wù)描述中的IP地址,將任務(wù)的分片ID、數(shù)據(jù)分片的起始位置和數(shù)據(jù)長(zhǎng)度發(fā)送到對(duì)應(yīng)工作節(jié)點(diǎn)的GPU執(zhí)行器(s2),請(qǐng)求GPU執(zhí)行器執(zhí)行;反之,執(zhí)行(s3),發(fā)送任務(wù)到CPU執(zhí)行器(s4)。

算法2任務(wù)調(diào)度算法

Begin Schedule

(s1) while(Task=gpu-queue.deque())

(s2) launchTask to GPU

(s3) while(Task=cpu-queue.deque())

(s4) launchTask to CPU

End Schedule

3 實(shí)驗(yàn)評(píng)價(jià)

系統(tǒng)在一個(gè)集群上進(jìn)行實(shí)驗(yàn),集群中包含6臺(tái)NF5468M5服務(wù)器,作為計(jì)算節(jié)點(diǎn);1臺(tái)中科曙光服務(wù)器620/420,作為參數(shù)服務(wù)器節(jié)點(diǎn)。每個(gè)服務(wù)器節(jié)點(diǎn)包含2顆Xeon2.1處理器,每個(gè)處理器包含8個(gè)核(相當(dāng)于一個(gè)服務(wù)器節(jié)點(diǎn)具有16個(gè)CPU核),32 GB DDR4內(nèi)存,2塊RTX2080TI GPU卡,10 GB顯存。集群包含1臺(tái)AS2150G2磁盤(pán)陣列。服務(wù)器操作系統(tǒng)為Ubuntu 7.5.0,CUDA版本為10.1.105,采用C++11作為編程語(yǔ)言,軟件編寫(xiě)采用NVIDIA CUDA工具和C++。

3.1 實(shí)驗(yàn)任務(wù)

考慮使用一種通用的數(shù)據(jù)分析算法K-Means進(jìn)行實(shí)驗(yàn)驗(yàn)證和分析。K-Means算法是一個(gè)迭代求解的聚類(lèi)算法,是實(shí)驗(yàn)分析中常用算法,且具有代表性。實(shí)現(xiàn)了一個(gè)CPU版本和GPU版本的K-Means程序,使用C++語(yǔ)言來(lái)編寫(xiě)程序的CPU版本,NVIDIA CUDA來(lái)編寫(xiě)程序的GPU版本。調(diào)度框架和執(zhí)行器使用C++語(yǔ)言編寫(xiě)。調(diào)度框架和執(zhí)行器通過(guò)實(shí)現(xiàn)上述算法,完成對(duì)K-Means分布式機(jī)器學(xué)習(xí)作業(yè)的執(zhí)行。

3.2 算法執(zhí)行效率評(píng)價(jià)分析

使用3種資源分配策略來(lái)比較K-Means算法的梯度計(jì)算的過(guò)程,圖3為使用3種策略的作業(yè)執(zhí)行時(shí)間比較。

圖3 使用不同調(diào)度算法的K-Means作業(yè)執(zhí)行時(shí)間

1) 每個(gè)計(jì)算節(jié)點(diǎn)采用16個(gè)CPU核來(lái)計(jì)算數(shù)據(jù)的梯度,在任務(wù)調(diào)度過(guò)程中,數(shù)據(jù)均勻分片,1個(gè)任務(wù)綁定1個(gè)CPU核,即當(dāng)1個(gè)計(jì)算節(jié)點(diǎn)有1個(gè)CPU核處于空閑狀態(tài)時(shí),分配1個(gè)數(shù)據(jù)分片對(duì)應(yīng)的任務(wù)到該空閑CPU核。稱(chēng)該算法為CPU算法(KM-CPU)。

2) 每個(gè)計(jì)算節(jié)點(diǎn)使用1個(gè)CPU核以及1個(gè)GPU設(shè)備,GPU設(shè)備綁定該CPU核。這時(shí)稱(chēng)被綁定的CPU核處于非自由狀態(tài),反之為自由狀態(tài)。在任務(wù)調(diào)度過(guò)程中,數(shù)據(jù)均勻分片,1個(gè)任務(wù)綁定1個(gè)GPU設(shè)備,即當(dāng)該節(jié)點(diǎn)GPU設(shè)備空閑時(shí),分配1個(gè)數(shù)據(jù)分片對(duì)應(yīng)的任務(wù)到該空閑GPU設(shè)備,稱(chēng)該算法為GPU算法(KM-GPU)。

3) 每個(gè)計(jì)算節(jié)點(diǎn)使用16個(gè)CPU核及1個(gè)GPU設(shè)備,將每個(gè)節(jié)點(diǎn)中的GPU設(shè)備綁定1個(gè)CPU核。這時(shí),1個(gè)計(jì)算節(jié)點(diǎn)上擁有1個(gè)非自由狀態(tài)的CPU核和15個(gè)自由狀態(tài)的CPU核。ML框架按照本文提出的算法進(jìn)行數(shù)據(jù)的不均勻分片,1個(gè)分片對(duì)應(yīng)的任務(wù)綁定1個(gè)自由狀態(tài)的CPU核或者1個(gè)GPU設(shè)備,當(dāng)自由狀態(tài)的CPU核空閑時(shí),提交1個(gè)具有較小的數(shù)據(jù)分片的任務(wù),當(dāng)GPU設(shè)備空閑時(shí),提交1個(gè)具有較大的數(shù)據(jù)分片的任務(wù)。該算法稱(chēng)為混合資源調(diào)度算法(KM-Hybrid)。

圖3包含3組數(shù)據(jù),分別代表使用KM-CPU算法、KM-GPU算法和KM-Hybrid算法對(duì)應(yīng)的作業(yè)執(zhí)行時(shí)間。每個(gè)節(jié)點(diǎn)測(cè)試3次,取平均值進(jìn)行統(tǒng)計(jì)。其中,橫坐標(biāo)代表集群節(jié)點(diǎn)數(shù)目,縱坐標(biāo)代表使用各算法的作業(yè)執(zhí)行時(shí)間。從實(shí)驗(yàn)中可以得到2個(gè)結(jié)論:①使用KM-GPU和KM-Hybrid算法的作業(yè)執(zhí)行時(shí)間明顯少于KM-CPU算法,這是因?yàn)镚PU設(shè)備的運(yùn)算能力遠(yuǎn)高于CPU設(shè)備,說(shuō)明使用GPU計(jì)算資源可以明顯降低K-Means作業(yè)的執(zhí)行時(shí)間;②隨著節(jié)點(diǎn)增加,計(jì)算設(shè)備增加,3種算法用時(shí)逐漸減少,性能提升逐漸變慢,這是由于每一個(gè)分片包含的數(shù)據(jù)量變少,且當(dāng)節(jié)點(diǎn)數(shù)目過(guò)多時(shí),節(jié)點(diǎn)通信開(kāi)銷(xiāo)成為影響算法性能提升的重要因素。因此,使用本文提出的算法執(zhí)行分布式機(jī)器學(xué)習(xí)作業(yè),能夠加快作業(yè)的執(zhí)行,且能夠有效提高CPU-GPU集群中CPU計(jì)算資源的利用率,不再只是將CPU計(jì)算資源閑置。

考慮到上述實(shí)驗(yàn)并未說(shuō)明KM-Hybrid相較于KM-GPU算法的具體優(yōu)勢(shì),下面探究隨著節(jié)點(diǎn)增加,KM-GPU和KM-Hybrid算法加速比。加速比是衡量算法性能常用指標(biāo),表示為s(n,p)=Tserial(n)/Tparallel(n,p),其中n表示數(shù)據(jù)處理規(guī)模,Tserial(n)表示作業(yè)串行計(jì)算用時(shí),Tparallel(n,p)表示作業(yè)并行計(jì)算用時(shí)。圖4為KM-GPU和KM-Hybrid加速比對(duì)比情況。其中橫坐標(biāo)代表節(jié)點(diǎn)個(gè)數(shù),縱坐標(biāo)代表加速比。比值越大,說(shuō)明并行計(jì)算加速效果越好。在圖4中可以得出結(jié)論:隨著節(jié)點(diǎn)數(shù)目增加,2種算法均表現(xiàn)出較好的加速;但隨著節(jié)點(diǎn)數(shù)目增加,KM-GPU加速比增長(zhǎng)逐漸緩慢,KM-Hybrid加速比增長(zhǎng)緩慢并出現(xiàn)回落現(xiàn)象,分析后得出原因:隨著節(jié)點(diǎn)增加,通信延遲和調(diào)度處理開(kāi)銷(xiāo)增加,2種算法的加速比增長(zhǎng)緩慢,且KM-Hybrid算法對(duì)通信和調(diào)度延遲更敏感。

圖4 KM-GPU和KM-Hybrid加速比

為了進(jìn)一步探究本文中提出的不均勻數(shù)據(jù)分片策略為分布式機(jī)器學(xué)習(xí)作業(yè)帶來(lái)的性能提升情況,現(xiàn)對(duì)KM-GPU和KM-Hybrid算法單次梯度計(jì)算時(shí)間進(jìn)行了統(tǒng)計(jì),其結(jié)果如圖5所示。在圖5中,橫坐標(biāo)為集群節(jié)點(diǎn)數(shù)目,縱坐標(biāo)為單次梯度計(jì)算平均值。隨著計(jì)算節(jié)點(diǎn)增加,2種算法單次梯度計(jì)算任務(wù)的平均時(shí)間均呈現(xiàn)非線性減少,主要原因是:①數(shù)據(jù)分片規(guī)模對(duì)梯度計(jì)算用時(shí)有很大的影響。隨著節(jié)點(diǎn)增加,并行任務(wù)數(shù)目增加,單個(gè)分片數(shù)據(jù)量變少,計(jì)算設(shè)備計(jì)算時(shí)間減少;②節(jié)點(diǎn)的增加會(huì)造成分布式機(jī)器學(xué)習(xí)中I/O通信開(kāi)銷(xiāo)增加,特別是通過(guò)網(wǎng)絡(luò)傳輸?shù)拇鷥r(jià)會(huì)增加,導(dǎo)致單次梯度計(jì)算用時(shí)減少的速度越來(lái)越緩慢?;谝陨蟽牲c(diǎn),KM-GPU算法和KM-Hybrid算法單次梯度計(jì)算的平均時(shí)間會(huì)呈非線性減少。

圖5 梯度計(jì)算任務(wù)平均時(shí)間

上述實(shí)驗(yàn)過(guò)程主要探究了集群內(nèi)CPU計(jì)算設(shè)備和GPU計(jì)算設(shè)備之間對(duì)作業(yè)調(diào)度的影響,但是還沒(méi)有探究集群中不同數(shù)量GPU對(duì)作業(yè)調(diào)度的影響。為了更加明確GPU數(shù)量對(duì)分布式機(jī)器學(xué)習(xí)作業(yè)的影響,針對(duì)不同數(shù)量的GPU進(jìn)行了K-Means算法附加實(shí)驗(yàn),實(shí)驗(yàn)共測(cè)試4種不同情況:

1) 每個(gè)節(jié)點(diǎn)使用1個(gè)GPU設(shè)備和1個(gè)CPU核,GPU設(shè)備綁定該CPU核,該算法記為KM-1-GPU,相當(dāng)于上述KM-GPU算法。

2) 每個(gè)節(jié)點(diǎn)使用2個(gè)GPU設(shè)備和2個(gè)CPU核,1個(gè)GPU設(shè)備綁定1個(gè)CPU核。該算法記為KM-2-GPU,其任務(wù)分配方式與步驟1)中相同,但計(jì)算資源量是步驟1)的2倍。

3) 每個(gè)節(jié)點(diǎn)使用1個(gè)GPU設(shè)備和16個(gè)CPU核,16個(gè)CPU核中有1個(gè)非自由狀態(tài)核和15個(gè)自由狀態(tài)核,數(shù)據(jù)按照自由狀態(tài)的CPU核以及GPU處理能力來(lái)分片,將較大的數(shù)據(jù)分片分配給GPU,較小的數(shù)據(jù)分片分給CPU。該算法記為KM-1-Hybrid,相當(dāng)于上述KM-Hybrid算法。

4) 每個(gè)節(jié)點(diǎn)使用2個(gè)GPU設(shè)備和16個(gè)CPU核,16個(gè)CPU核中包含2個(gè)非自由狀態(tài)核和14個(gè)自由狀態(tài)核。任務(wù)分配方式同步驟3)。該算法記為KM-2-Hybrid。

圖6為不同GPU數(shù)量下K-Means算法作業(yè)執(zhí)行時(shí)間的測(cè)試結(jié)果。可以得到如下結(jié)論:①由于節(jié)點(diǎn)數(shù)目增加,CPU和GPU計(jì)算資源增多,4種算法性能均有提升。②KM-2-GPU比KM-1-GPU算法作業(yè)執(zhí)行時(shí)間少,KM-2-Hybrid比KM-1-Hybrid算法作業(yè)執(zhí)行時(shí)間少,即GPU設(shè)備越多,作業(yè)執(zhí)行越快,算法性能越好。③KM-1-Hybrid比KM-2-GPU算法作業(yè)執(zhí)行時(shí)間少,說(shuō)明集群內(nèi)單純?cè)黾覩PU計(jì)算資源帶來(lái)的作業(yè)性能提升不如將集群中已有的閑置CPU利用起來(lái)對(duì)作業(yè)的性能提升大,因此可以考慮使用不均勻數(shù)據(jù)分片策略,將集群中空閑或部分空閑的CPU利用起來(lái)。

圖6 不同GPU數(shù)量時(shí)的作業(yè)執(zhí)行時(shí)間對(duì)比

為了進(jìn)一步驗(yàn)證論文提出的不均勻數(shù)據(jù)分片策略對(duì)分布式學(xué)習(xí)帶來(lái)的性能提升,使用Rodinia[19]基準(zhǔn)測(cè)試套件驗(yàn)證實(shí)驗(yàn)效果,該套件包含huffman、K-Means等單節(jié)點(diǎn)基準(zhǔn)程序。圖7為Rodinia K-Means基準(zhǔn)測(cè)試用時(shí)和KM-Hybrid用時(shí)對(duì)比情況,橫坐標(biāo)表示實(shí)驗(yàn)次數(shù),縱坐標(biāo)表示作業(yè)運(yùn)行時(shí)間。如圖所示,R-16-CPU表示在單節(jié)點(diǎn)上使用16個(gè)線程進(jìn)行K-Means計(jì)算,R-1-GPU表示在單節(jié)點(diǎn)上使用1塊GPU進(jìn)行K-Means計(jì)算,KM-Hrbrid表示在單節(jié)點(diǎn)上使用1塊GPU,15塊CPU進(jìn)行K-Means計(jì)算。數(shù)據(jù)規(guī)模為819 200×100,3組數(shù)據(jù)平均值分別為:33.87,29.83,23.8 s,方差分別為1.079,0.224,3.443??梢缘玫饺缦陆Y(jié)論:①使用GPU進(jìn)行加速的效果比使用多線程加速的效果好;②KM-Hybrid算法比上述2種算法效果更好,這是由于在節(jié)點(diǎn)上既使用了GPU進(jìn)行計(jì)算加速,又利用了閑置的CPU;③KM-Hybrid算法的穩(wěn)定性不如Rodinia基準(zhǔn)測(cè)試,這和數(shù)據(jù)規(guī)模及程序運(yùn)行時(shí)CPU、GPU設(shè)備的性能相關(guān),可以對(duì)其進(jìn)一步探究。

圖7 基準(zhǔn)測(cè)試用時(shí)對(duì)比

3.3 算法執(zhí)行質(zhì)量評(píng)價(jià)分析

上述實(shí)驗(yàn)可以得出,本文提出的算法可以實(shí)現(xiàn)對(duì)作業(yè)的加速并提高異構(gòu)集群資源利用率,但是其執(zhí)行效果受到CPU和GPU實(shí)時(shí)性能的影響,穩(wěn)定性較差。

為了進(jìn)一步分析算法對(duì)作業(yè)質(zhì)量的影響,使用輪廓系數(shù)[20]作為衡量KM-Hybrid作業(yè)質(zhì)量的標(biāo)準(zhǔn)。數(shù)據(jù)規(guī)模為8 192×100,每項(xiàng)測(cè)試進(jìn)行10次,取平均值作為作業(yè)質(zhì)量評(píng)估值。輪廓系數(shù)越接近1,算法執(zhí)行質(zhì)量越好。經(jīng)計(jì)算,R-16-CPU算法輪廓系數(shù)均值為0.567 996,R-1-GPU算法輪廓系數(shù)均值為0.540 185,KM-Hybrid算法輪廓系數(shù)均值為0.538 466,3種算法輪廓系數(shù)相近,由此可以得出結(jié)論:本文基于不均勻數(shù)據(jù)分片策略的機(jī)器學(xué)習(xí)方法對(duì)作業(yè)質(zhì)量沒(méi)有顯著影響。

4 結(jié) 論

通過(guò)CPU-GPU混合異構(gòu)集群進(jìn)行分布式機(jī)器學(xué)習(xí)訓(xùn)練已經(jīng)成為一個(gè)趨勢(shì),但是在這個(gè)過(guò)程中經(jīng)常存在集群資源得不到充分利用的現(xiàn)象。為此,論文提出了一種不均勻分片的資源調(diào)度算法,并證實(shí)該算法能夠加快分布式機(jī)器學(xué)習(xí)訓(xùn)練,提高集群系統(tǒng)資源利用率。但是,考慮到算法受制于CPU和GPU資源的任務(wù)分配方式,如何更加精確合理地對(duì)CPU與GPU任務(wù)進(jìn)行資源分配,是今后的研究方向。

猜你喜歡
分片計(jì)算資源執(zhí)行器
上下分片與詞的時(shí)空佈局
詞學(xué)(2022年1期)2022-10-27 08:06:12
基于模糊規(guī)劃理論的云計(jì)算資源調(diào)度研究
分片光滑邊值問(wèn)題的再生核方法
CDN存量MP4視頻播放優(yōu)化方法
改進(jìn)快速稀疏算法的云計(jì)算資源負(fù)載均衡
基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
雙級(jí)執(zhí)行器系統(tǒng)的離散滑??刂?/a>
基于Wi-Fi與Web的云計(jì)算資源調(diào)度算法研究
耦合分布式系統(tǒng)多任務(wù)動(dòng)態(tài)調(diào)度算法
飛機(jī)裝配預(yù)連接緊固件自動(dòng)化安裝末端執(zhí)行器設(shè)計(jì)
太仓市| 涞水县| 固安县| 治多县| 通许县| 辽阳县| 马边| 金华市| 翁牛特旗| 宁陕县| 新河县| 桐城市| 绵阳市| 虹口区| 封丘县| 琼海市| 平武县| 光山县| 常州市| 固阳县| 巴楚县| 毕节市| 类乌齐县| 陆川县| 田阳县| 中牟县| 清丰县| 唐海县| 那曲县| 台州市| 岳池县| 河间市| 宜州市| 桃园县| 巩义市| 双桥区| 修武县| 东阿县| 淮北市| 三河市| 聂拉木县|