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

?

分布式深度學(xué)習(xí)通信架構(gòu)的性能分析*

2021-04-06 10:48張立志冉浙江賴志權(quán)
計算機工程與科學(xué) 2021年3期
關(guān)鍵詞:可擴展性分布式架構(gòu)

張立志,冉浙江,賴志權(quán),劉 鋒

(國防科技大學(xué)計算機學(xué)院并行與分布處理國防科技重點實驗室,湖南 長沙 410073)

1 引言

最近幾年,分布式深度學(xué)習(xí)在語音識別[1,2]、 圖像識別[3,4]、自然語言處理[5,6]和機器翻譯等領(lǐng)域都取得了豐碩的成果。分布式深度學(xué)習(xí)在多節(jié)點上并行運行深度學(xué)習(xí)任務(wù)的能力,能夠有效應(yīng)對海量數(shù)據(jù)和超大神經(jīng)網(wǎng)絡(luò)模型的挑戰(zhàn),高效地訓(xùn)練出可用的模型,對人工智能的發(fā)展有極大的推動作用,因此對分布式深度學(xué)習(xí)加速大數(shù)據(jù)、大模型訓(xùn)練的研究是目前人工智能領(lǐng)域的主流方向之一。

大規(guī)模的深度學(xué)習(xí)任務(wù)往往要充分利用“大數(shù)據(jù)”并且有效訓(xùn)練“大模型”,但是隨著海量數(shù)據(jù)和龐大模型規(guī)模的發(fā)展,訓(xùn)練數(shù)據(jù)的容量和模型參數(shù)的規(guī)模已經(jīng)超出單節(jié)點的處理能力[7],逐漸成為深度學(xué)習(xí)發(fā)展的瓶頸。目前,更主流的解決方案是使用多機器、多GPU進行分布式深度學(xué)習(xí)的訓(xùn)練,即通過將大數(shù)據(jù)集和大規(guī)模深度學(xué)習(xí)問題分解到多臺機器和設(shè)備上并行地處理這些問題。這種方案同時利用多個工作節(jié)點,采用分布式技術(shù)來執(zhí)行訓(xùn)練任務(wù),提高了深度學(xué)習(xí)模型的訓(xùn)練效率,減少了訓(xùn)練時間。為了提供所需的計算能力,通常需要幾十甚至上百個GPU,在這個背景下,涌現(xiàn)出許多新的軟硬件技術(shù),包括GPU的興起和大規(guī)模計算機集群的廣泛使用。然而,當(dāng)GPU節(jié)點數(shù)量增多時,協(xié)調(diào)GPU之間的通信也是一個復(fù)雜的問題。當(dāng)只有2個GPU和幾兆字節(jié)的參數(shù)時,GPU通信的方式影響較小;但是當(dāng)模型有幾十億個參數(shù)時,就會占用千兆字節(jié)的空間,并且還要同時協(xié)調(diào)幾十個GPU,可能會帶來巨大的開銷,成為分布式訓(xùn)練性能提升的瓶頸,此時GPU之間的通信機制就非常重要。

本文利用天河GPU集群的硬件條件實現(xiàn)和部署帶寬優(yōu)化架構(gòu)Ring Allreduce和傳統(tǒng)的參數(shù)服務(wù)器PS(Parameter Server)架構(gòu),基于這2個架構(gòu)和經(jīng)典的數(shù)據(jù)集訓(xùn)練典型圖像分類神經(jīng)網(wǎng)絡(luò)AlexNet和ResNet-50,獲取模型訓(xùn)練效率的結(jié)果,分析Ring Allreduce架構(gòu)和PS架構(gòu)相比在單個GPU性能和整體架構(gòu)可擴展性上的差異,實驗結(jié)果表明Ring Allreduce可以有效加快大規(guī)模數(shù)據(jù)集的訓(xùn)練。

2 背景

2.1 相關(guān)工作

在深度學(xué)習(xí)的背景下,大多數(shù)人專注于對網(wǎng)絡(luò)模型的探索,AlexNet在卷積神經(jīng)網(wǎng)絡(luò)中首次使用了局部響應(yīng)歸一化等技術(shù),提高了模型訓(xùn)練的速度和精度,減少了過擬合[8]。ResNet在輸出和輸入之間引入了一種快捷連接,當(dāng)網(wǎng)絡(luò)加深時,梯度在傳播過程中不會消失。因此,當(dāng)使用ResNet網(wǎng)絡(luò)進行特征提取時,網(wǎng)絡(luò)的深度可以大大增加[9]。目前對于網(wǎng)絡(luò)模型的優(yōu)化已經(jīng)達到了很高的水準,但是在模型的訓(xùn)練速度上還有很大的提升空間。一些學(xué)者關(guān)注在單個機器上進行優(yōu)化,訓(xùn)練較小的模型,但是這并不能解決海量數(shù)據(jù)帶來的問題。還有許多學(xué)者探索了通過并行優(yōu)化來擴展機器學(xué)習(xí)的算法[10,11]。大部分研究集中在分布式梯度計算上,忽略了對通信問題的探索。

在分布式深度學(xué)習(xí)訓(xùn)練中要實現(xiàn)多機協(xié)作就必須要通信。通信的內(nèi)容主要是參數(shù)或參數(shù)的更新,以實現(xiàn)全局信息共享;通信的步調(diào)可以是同步或者異步;通信的拓撲架構(gòu)有樹形、星形、環(huán)形和中心式等方式,用以確定哪些節(jié)點之間需要進行通信。傳統(tǒng)的參數(shù)服務(wù)器架構(gòu)(PS)把工作節(jié)點和模型存儲節(jié)點在邏輯上區(qū)分開來,參數(shù)服務(wù)器和工作節(jié)點之間進行交互,各工作節(jié)點之間的交互過程被隔離開,可以獲得較高的容錯性。模型參數(shù)可以劃分到多個參數(shù)服務(wù)器上存儲,能夠維護較大的模型?;贖adoop和Spark的分布式深度學(xué)習(xí)訓(xùn)練架構(gòu)采用的是迭代式MapReduce架構(gòu)[12,13],Map操作完成數(shù)據(jù)分發(fā)和并行處理,Reduce操作完成數(shù)據(jù)的全局同步和聚合,這樣能夠保持迭代之間的狀態(tài),并且執(zhí)行策略也更加優(yōu)化。但是,MapReduce架構(gòu)中運算節(jié)點和模型存儲節(jié)點沒有很好地邏輯隔離,因此只能支持同步通信模式。而且MapReduce對于中間數(shù)據(jù)處理的靈活性和效率比較低,在有大量中間數(shù)據(jù)生成的迭代式機器學(xué)習(xí)任務(wù)中效率低下。另一種實現(xiàn)分布式機器學(xué)習(xí)的方法是消息通信接口(MPI),該方法主要使用AllReduce算法來同步信息。這種傳統(tǒng)的規(guī)約運算是星型AllReduce架構(gòu)的算法基礎(chǔ),在并行計算的過程中會受到帶寬瓶頸的制約。分布式機器學(xué)習(xí)中基本的模型聚合方法主要是加和、平均等,這些可以使用AllReduce的算法實現(xiàn)有效的處理。傳統(tǒng)的基于AllReduce算法實現(xiàn)的架構(gòu)對于同步的并行訓(xùn)練有重要作用,也是現(xiàn)在很多深度學(xué)習(xí)分布式訓(xùn)練中實現(xiàn)通信功能的基礎(chǔ)。百度的DeepSpeech系統(tǒng)[14]和Uber的Horovod[15]基于AllReduce算法實現(xiàn)了Ring Allreduce的架構(gòu),可以避免星型Allreduce和PS架構(gòu)造成的通信瓶頸問題。

PS和Ring Allreduce是2種廣泛應(yīng)用的分布式深度學(xué)習(xí)訓(xùn)練架構(gòu),這2種架構(gòu)自提出以來就得到了分布式機器學(xué)習(xí)領(lǐng)域的普遍重視?,F(xiàn)在很多分布式訓(xùn)練的架構(gòu)都是基于這兩者實現(xiàn)的,TensorFlow、PyTorch和MXNet等都把PS和Ring Allreduce作為主要的分布式訓(xùn)練架構(gòu)。

傳統(tǒng)PS分布式訓(xùn)練架構(gòu)中GPU之間的通信方式為:多個GPU分別發(fā)送數(shù)據(jù)到主GPU,然后分別從主GPU接收數(shù)據(jù)[16]。當(dāng)GPU數(shù)量增加時,通信數(shù)據(jù)量超過單個GPU帶寬,會造成通信瓶頸,影響分布式深度學(xué)習(xí)的可擴展性。Ring Allreduce架構(gòu)中每個節(jié)點只與相鄰的2個節(jié)點通信,不需要中心主GPU節(jié)點,所有節(jié)點都參與計算和存儲[17]。PS模型同步架構(gòu)的通信成本隨架構(gòu)中的GPU數(shù)量線性增長。但是,Ring Allreduce架構(gòu)中通信成本是恒定的,與系統(tǒng)中的GPU的數(shù)量無關(guān),整體性能提升與GPU數(shù)量的增加成正比。

2.2 數(shù)據(jù)并行和模型并行

本文在進行分布式深度學(xué)習(xí)通信架構(gòu)性能分析中使用的神經(jīng)網(wǎng)絡(luò)模型規(guī)模不是主要限制因素,但數(shù)據(jù)集卻相當(dāng)大,F(xiàn)acebook[18]和Berkeley[19]等大規(guī)模數(shù)據(jù)集的分布式訓(xùn)練方法采用的是數(shù)據(jù)并行[20,21],這種并行訓(xùn)練方法更高效。如圖1所示,對整個數(shù)據(jù)集進行劃分,不同節(jié)點用分配到的數(shù)據(jù)更新本地模型。在同步更新模式下,首先在每個節(jié)點上分別計算不同批次數(shù)據(jù)的梯度,之后對所有節(jié)點上的梯度求平均值,最后使用平均后的梯度更新每個節(jié)點中的模型參數(shù)。

Figure 1 Data parallelism

模型并行是指將機器學(xué)習(xí)模型切分成若干子模型,每個節(jié)點負責(zé)一個子模型的計算,節(jié)點之間存在依賴關(guān)系,工作節(jié)點之間需要相互等待信息完成計算;為保證子模型的聯(lián)系和依賴,相鄰的2個工作節(jié)點需要同時存儲子模型中的部分重復(fù)參數(shù),這會造成數(shù)據(jù)的冗余,在模型參數(shù)沒有達到超大規(guī)模級別時,模型并行比數(shù)據(jù)并行低效。而且現(xiàn)在的機器內(nèi)存普遍增加,足夠加載整個神經(jīng)網(wǎng)絡(luò)模型,神經(jīng)網(wǎng)絡(luò)的復(fù)雜度不是性能的主要瓶頸。因此,大多數(shù)分布式機器學(xué)習(xí)采用的是數(shù)據(jù)并行。

2.3 分布式深度學(xué)習(xí)的基本過程

從整個數(shù)據(jù)處理過程來看,并行分布式深度學(xué)習(xí)主要包括劃分訓(xùn)練數(shù)據(jù)、分配訓(xùn)練任務(wù)、分配訓(xùn)練資源和整合分布式訓(xùn)練結(jié)果,以實現(xiàn)訓(xùn)練速度和訓(xùn)練精度的完美平衡。其基本過程如圖2所示,可以分為4個步驟:數(shù)據(jù)和模型劃分[22]、單機優(yōu)化[23]、節(jié)點之間的通信[24]以及數(shù)據(jù)和模型匯總[25]。

Figure 2 Process of distributed deep learning

3 分布式深度學(xué)習(xí)通信架構(gòu)

3.1 參數(shù)服務(wù)器架構(gòu)

PS架構(gòu)主要由2個部分組成:參數(shù)服務(wù)器PS節(jié)點和工作(worker)節(jié)點,其整體架構(gòu)如圖3所示。PS節(jié)點中的灰色方塊表示全局參數(shù),worker節(jié)點中的黑色方塊表示模型參數(shù)副本。在PS架構(gòu)中,PS節(jié)點維持一個全局的共享參數(shù),共同完成所有參數(shù)的更新。每個工作節(jié)點被分配部分數(shù)據(jù)和處理任務(wù),負責(zé)處理本地的訓(xùn)練任務(wù)。工作節(jié)點之間沒有通信,只通過客戶端接口與PS節(jié)點進行通信,從PS節(jié)點獲取最新的模型參數(shù),并且將本地產(chǎn)生的模型更新發(fā)送到PS節(jié)點。PS節(jié)點必須從所有工作節(jié)點接收參數(shù),并將更新后的參數(shù)發(fā)送到工作節(jié)點[26]。

Figure 3 PS architecture

假設(shè)工作節(jié)點數(shù)量為N,每個節(jié)點中的數(shù)據(jù)量為K,PS節(jié)點從所有N個工作節(jié)點接收數(shù)據(jù),總共接收到的數(shù)據(jù)量為K*N。在梯度聚合之后,PS節(jié)點需要把數(shù)據(jù)發(fā)送給所有N個工作節(jié)點,數(shù)據(jù)量也是K*N。則整個過程數(shù)據(jù)的傳輸次數(shù)為2*N次,傳輸?shù)臄?shù)據(jù)量為2*N*K。

3.2 Ring Allreduce架構(gòu)

Ring Allreduce架構(gòu)是一種基于環(huán)形拓撲實現(xiàn)的通信架構(gòu),圖4展示了這種架構(gòu)的總體工作流程,其中Rank表示每個GPU所屬的進程號,梯度同時在Rank之間傳遞。Ring Allreduce架構(gòu)中每個機器都是一個工作節(jié)點,并且在邏輯上呈環(huán)狀布局。該架構(gòu)舍棄了中心參數(shù)聚合節(jié)點,使數(shù)據(jù)在節(jié)點間環(huán)形流動。在分布式深度學(xué)習(xí)過程中,可采用后向傳播法來計算梯度,后面層的梯度先計算,前面層的梯度后計算。Ring Allreduce架構(gòu)可以充分利用這個特點,在前面層梯度計算的同時進行后面層梯度的傳遞,從而進一步減少訓(xùn)練時間。

Figure 5 Data transmission and calculation in Scatter-Reduce stage

Figure 4 The topological architecture of Ring Allreduce

Ring Allreduce架構(gòu)的工作流程分為2個階段,分別是Scatter-Reduce和Allgather。Scatter-Reduce階段完成數(shù)據(jù)的分發(fā)和并行處理,各個工作節(jié)點將交換數(shù)據(jù),最后每個節(jié)點上會有部分最終結(jié)果;Allgather階段完成數(shù)據(jù)的全局同步和規(guī)約,每個工作節(jié)點交換包含的部分最終結(jié)果,使所有節(jié)點都有完整的最終結(jié)果。

(1)Scatter-Reduce階段:假設(shè)此過程的目標是求和,系統(tǒng)中有N個工作節(jié)點,每個節(jié)點都有同樣包含K個元素的數(shù)組,在Scatter-Reduce的最后階段每個節(jié)點都應(yīng)該有一個包含原始數(shù)組和的并且尺寸大小相同的數(shù)組。如圖5步驟?所示,首先每個節(jié)點將本地數(shù)組分為N塊,其中N是Ring Allreduce架構(gòu)中工作節(jié)點的數(shù)量。然后在步驟?中,第1次迭代發(fā)送和接收完成后,每個節(jié)點上有1個塊被累加,該塊是由2個節(jié)點的同樣位置的塊組成的和。這種數(shù)據(jù)傳遞方式一直持續(xù)到Scatter- Reduce階段結(jié)束,每個節(jié)點上都有1個塊包含部分最終結(jié)果,如步驟?中深色塊所示,該塊是所有節(jié)點對應(yīng)位置塊的和。

(2)Allgather階段:每個工作節(jié)點交換包含最終結(jié)果的塊,使得所有節(jié)點獲得全部的最終結(jié)果。Allgather階段包含N-1次數(shù)據(jù)發(fā)送和接收,不同的是,Allgather階段不需要累加接收到的值,而是用接收到的數(shù)值代替原來塊中的數(shù)值。第1次迭代完成后,每個節(jié)點有2個包含最終結(jié)果的塊。在接下來的迭代中,會繼續(xù)這個過程直到結(jié)束,最終每個節(jié)點都會包含全部數(shù)組加和的結(jié)果。圖6展示了整個Allgather過程,可以看到所有數(shù)據(jù)傳輸和中間結(jié)果的值。

Figure 6 Data transmission in Allgather stage

整個Ring Allreduce工作過程中,在Scatter-Reduce階段每個工作節(jié)點同時發(fā)送和接收數(shù)據(jù),每次發(fā)送和接收的數(shù)據(jù)大小為K/N個,傳輸N-1次;在Allgather階段每個節(jié)點也是發(fā)送并且接收K/N個數(shù)據(jù)N-1次。所以,每個節(jié)點傳輸數(shù)據(jù)的總次數(shù)為2*(N-1)次,數(shù)據(jù)總量為2*K*(N-1)/N,由于所有節(jié)點的數(shù)據(jù)傳輸同時進行,當(dāng)整個系統(tǒng)的數(shù)據(jù)傳輸量為2*K*(N-1)時,單個節(jié)點傳輸?shù)臄?shù)據(jù)量只有:

T=2*K*(N-1)/N

(1)

由式(1)可知,在Ring Allreduce架構(gòu)中,當(dāng)工作節(jié)點數(shù)量增加時,單個節(jié)點數(shù)據(jù)傳輸量近似為2*K,與系統(tǒng)中節(jié)點數(shù)量無關(guān)。

3.3 Ring Allreduce和PS關(guān)鍵特點對比

總的來說,Ring Allreduce和PS的關(guān)鍵特點對比如表1所示。其中N是節(jié)點數(shù)量,K是每個節(jié)點的數(shù)據(jù)量。Ring Allreduce是環(huán)形拓撲架構(gòu),每個節(jié)點的數(shù)據(jù)傳輸量隨著工作節(jié)點的增加近似保持不變,因此通信量并不會隨著節(jié)點增加而增加,可擴展性較好。但是,由于只支持同步的并行方式,當(dāng)有節(jié)點出現(xiàn)故障時會影響整個的訓(xùn)練過程,因此容錯性較差。PS是中心式的拓撲架構(gòu),其數(shù)據(jù)傳輸量隨著節(jié)點的增加線性增長,受傳輸帶寬的限制,可擴展性較差,但是PS支持異步通信的方式,可以不受慢速或故障節(jié)點限制,因此容錯率較高。

綜上所述,Ring Allreduce架構(gòu)比傳統(tǒng)的參數(shù)服務(wù)器架構(gòu)更有效,通過在所有節(jié)點上分發(fā)計算和通信,消除了通信的瓶頸,有助于分布式深度學(xué)習(xí)在大規(guī)模集群上的應(yīng)用。

Table 1 Key features comparison between Ring Allreduce and PS

4 實驗設(shè)置

4.1 實驗環(huán)境

本文實驗利用天河機集群的計算資源,在集群上部署分布式計算架構(gòu),統(tǒng)一調(diào)度和管理GPU。集群硬件環(huán)境的具體信息如表2所示。

Table 2 Hardware environment

實驗中安裝的軟件和分布式深度學(xué)習(xí)框架如表3所示。

Table 3 Software environment

4.2 PS框架部署

實現(xiàn)PS對比測試架構(gòu),進行分布式深度學(xué)習(xí)訓(xùn)練,需要將TensorFlow中Cluster、Job和Task定義的計算集群映射到硬件上。Cluster、Job和Task基本功能如圖7所示,其中Task是進程,屬于特定的作業(yè),一般一個GPU節(jié)點對應(yīng)一個Task[27]。Job劃分為PS Job和worker Job,PS Job用于完成參數(shù)的存儲、管理和更新工作;worker Job用來執(zhí)行操作。Cluster 集群系統(tǒng)是PS和worker的集合,包含任務(wù)運行的完整設(shè)置。

Figure 7 Schematic diagram of PS architecture cluster implemented by TensorFlow

4.3 Ring Allreduce分布式深度學(xué)習(xí)框架的部署

Ring Allreduce架構(gòu)可以高效管理、調(diào)度大量的設(shè)備和節(jié)點,極大減少通信負載并且可擴展到更多的節(jié)點。其中Horovod是對Ring Allreduce架構(gòu)的有效實現(xiàn)。

Horovod是一個開源的高性能深度學(xué)習(xí)分布式訓(xùn)練架構(gòu)[15]。Horovod能夠運行在TensorFlow環(huán)境實現(xiàn)底層的通信。Horovod實現(xiàn)的框架如圖8所示,在數(shù)據(jù)并行方式下,每一個基于TensorFlow實現(xiàn)的模型從數(shù)據(jù)集中取得一份數(shù)據(jù),計算完成后通過底層Horovod進行通信,更新全局模型。

Figure 8 Implementation of Ring Allreduce based on Horovod

Horovod是使用MPI進行通信,允許MPI在集群中創(chuàng)建進程并訪問資源。MPI是消息傳遞接口,是一個可用于進程間通信的函數(shù)庫[28,29]。如圖9所示,MPI啟動所有進程并為每個進程分配Rank(Rank是Horovod框架中每個進程的編號,0號為主進程,負責(zé)保存檢查點和廣播全局變量等)后,Horovod在相鄰的GPU節(jié)點之間建立通信鏈路,并將所有GPU節(jié)點在邏輯上按環(huán)狀組織,完成 Ring Allreduce集群通信架構(gòu)的創(chuàng)建。每個GPU對應(yīng)一個本地的Rank,并將其添加到TensorFlow設(shè)備列表中,組成并行工作的多個進程。

Figure 9 Diagram of MPI start process assigning Rank and binding GPUs

4.4 數(shù)據(jù)集

本文使用圖像領(lǐng)域中的經(jīng)典數(shù)據(jù)集Image- Net[30]、Cifar-10和Cifar-100[31]進行實驗,3個數(shù)據(jù)集的具體參數(shù)如表4所示。

Table 4 Description of three datasets used in the experiment

Figure 10 Throughput of training data on PS architecture

Figure 11 Throughput of training data on Ring Allreduce architecture

5 實驗評估

5.1 Parameter Server架構(gòu)上的實驗結(jié)果

圖10是在PS架構(gòu)上使用Cifar-10、Cifar-100和ImageNet訓(xùn)練模型的實驗結(jié)果,展示了訓(xùn)練AlexNet和ResNet-50過程中,訓(xùn)練數(shù)據(jù)的吞吐量,PS架構(gòu)的設(shè)置中使用了1個PS節(jié)點,PS節(jié)點和worker節(jié)點處于同步參數(shù)更新模式。當(dāng)GPU數(shù)量為1~8時,隨著GPU數(shù)量的線性增加,圖像的吞吐量也是線性增加的。當(dāng)GPU數(shù)量在8~32時,處理圖像的吞吐量不再與GPU數(shù)量的增加成線性關(guān)系,其增大倍數(shù)小于GPU的增大倍數(shù)。

5.2 Ring Allreduce架構(gòu)上的實驗結(jié)果

Ring Allreduce架構(gòu)上用Cifar-10、Cifar-100和ImageNet訓(xùn)練模型的實驗結(jié)果如圖11所示。由于AlexNet網(wǎng)絡(luò)層數(shù)比ResNet-50的少很多,因此在處理同樣的數(shù)據(jù)集時,AlexNet模型的圖像處理速度要明顯大于ResNet-50的速度。ImageNet中的圖像大小是Cifar-10/Cifar-100中的圖像大小的50倍左右,因此處理ImageNet圖像的速度明顯比處理Cifar-10和Cifar-100圖像的速度要慢。從實驗數(shù)據(jù)可以看出,隨著GPU數(shù)量的成倍增加,在不同模型下,每秒處理的圖像數(shù)也在不斷增加,基本上與GPU數(shù)量的增加成正比。

5.3 GPU性能

圖12展示了在Ring Allreduce和PS架構(gòu)上處理Cifar-10、Cifar-100和ImageNet數(shù)據(jù)集時單個GPU的性能。由實驗數(shù)據(jù)可以看出,隨著GPU數(shù)量的增加,PS架構(gòu)中單個GPU的性能逐漸下降,而在Ring Allreduce架構(gòu)中單個GPU的性能沒有明顯變化,維持在一個穩(wěn)定水平。但是,在GPU數(shù)量較少時,PS架構(gòu)中單個GPU的性能要優(yōu)于Ring Allreduce中單個GPU的性能,這是由于實驗中使用的PS架構(gòu)將一個CPU當(dāng)作PS節(jié)點,將GPU當(dāng)作工作節(jié)點,在工作節(jié)點較少時,PS和工作節(jié)點間的通信不是影響性能的瓶頸,而CPU和GPU的組合能夠帶來性能上的提升。

Figure 12 Single GPU changes throughput on Ring Allreduce and PS architecture

5.4 PS和Ring Allreduce架構(gòu)可擴展性對比

實驗結(jié)果分析采用GPU加倍時模型訓(xùn)練速度的增加倍數(shù)來顯示架構(gòu)的可擴展性。圖13展示了與理想加速效果相比,Ring Allreduce和PS架構(gòu)的加速比。使用32個GPU時,Ring Allreduce的加速比最高可達31,而PS架構(gòu)的加速比最高只有24。理想情況下增加的GPU性能不會有損失,擴展效率是100%。表5分析了在Ring Allreduce和PS架構(gòu)下,使用AlexNet和ResNet-50模型處理Cifar-10、Cifar-100和ImageNet數(shù)據(jù)集的可擴展性,其中Ring Allreduce架構(gòu)的可擴展性最高達到97.2%,而PS架構(gòu)的可擴展性最高只有78%。

Table 5 Scalability of Ring Allreduce and PS architecture

5.5 實驗結(jié)果分析

多組實驗結(jié)果表明,Ring Allreduce架構(gòu)在實驗研究的幾個項目上比傳統(tǒng)的PS架構(gòu)更有優(yōu)勢。在深度學(xué)習(xí)分布式訓(xùn)練中使用的GPU數(shù)量較多時,Ring Allreduce架構(gòu)中單個GPU的性能明顯優(yōu)于PS架構(gòu)中的GPU的;Ring Allreduce的可擴展性更好,能支持更多的GPU并行計算而不損失性能。

從前面的實驗結(jié)果可以很容易看出,Ring Allreduce架構(gòu)在所有模型上都有較好的擴展性。因為Ring Allreduce是一種帶寬優(yōu)化架構(gòu),這是其良好擴展性基礎(chǔ)的作用。PS架構(gòu)受到帶寬的限制,GPU需要花費較多的時間和資源用于通信,計算所占時間相對較少,導(dǎo)致GPU利用率降低。當(dāng)PS架構(gòu)中GPU數(shù)據(jù)越來越多時,通信的代價會更高,整個訓(xùn)練性能的提升會越來越慢,而不是線性增長。Ring Allreduce架構(gòu)中梯度通信占用GPU的資源較少,GPU資源被更多地用于模型計算,因此GPU利用率更高,GPU數(shù)量的增加不會影響到其帶寬,其計算性能提升與GPU數(shù)量的增加成線性關(guān)系,因而Ring Allreduce架構(gòu)的可擴展性更高。

從實驗結(jié)果還可以看出,對于同樣的通信架構(gòu),訓(xùn)練ResNet-50的加速比要普遍高于訓(xùn)練AlexNet的加速比。這是因為ResNet-50相比于AlexNet有更多的卷積層和計算量,ResNet-50計算和通信占比高,根據(jù)阿姆達爾定律[32]可知,其分布并行的加速比上限更高。由于深度神經(jīng)網(wǎng)絡(luò)屬于計算密集型網(wǎng)絡(luò),其計算量占比大,參數(shù)量相對較少,因此通信占比相對較少,使用2種分布式訓(xùn)練方法都可以取得一定的加速效果。但是,由于深層神經(jīng)網(wǎng)絡(luò)參數(shù)量會更大,需要進行通信的數(shù)據(jù)更多,采用PS架構(gòu)會更快到達帶寬的性能瓶頸,使其加速比和Ring Allreduce架構(gòu)的加速比差別更大。

Figure 13 Ring Allreduce and PS architecture model tranining time speedup

6 結(jié)束語

本文針對集中式的PS和去中心化的Ring Allreduce通信架構(gòu)進行了性能分析,并且在大型GPU集群上部署了PS架構(gòu),實現(xiàn)了基于Horovod的Ring Allreduce架構(gòu)。此外,還對比了訓(xùn)練AlexNet和ResNet-50模型時,Ring Allreduce和PS架構(gòu)中單個GPU的圖像處理速度和整體的可擴展性。實驗結(jié)果表明,Ring Allreduce架構(gòu)的最大擴展效率為97.2%,而PS架構(gòu)的最大擴展效率僅為78%。通過對2個通信架構(gòu)的性能分析可知,基于Ring Allreduce的集群通信架構(gòu)可以用來進行大規(guī)模深度學(xué)習(xí)訓(xùn)練,能夠有效地利用集群中GPU的資源,并且保持高效的可擴展性。

猜你喜歡
可擴展性分布式架構(gòu)
基于FPGA的RNN硬件加速架構(gòu)
功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實踐
分布式光伏熱錢洶涌
恩智浦推出全新i.MX 8X 處理器,為工業(yè)應(yīng)用帶來更高的安全性、可靠性和可擴展性
分布式光伏:爆發(fā)還是徘徊
WebGIS架構(gòu)下的地理信息系統(tǒng)構(gòu)建研究
電力監(jiān)控軟件的可擴展性設(shè)計
基于微軟技術(shù)的高可擴展性中小企業(yè)系統(tǒng)解決方案研究
構(gòu)建高可擴展性的物流裝備管理系統(tǒng)
基于DDS的分布式三維協(xié)同仿真研究
武乡县| 军事| 汶川县| 沙雅县| 清苑县| 嘉荫县| 沙湾县| 乳山市| 河东区| 永胜县| 海盐县| 凭祥市| 聂拉木县| 建瓯市| 荥经县| 鄂托克旗| 汤阴县| 夹江县| 红河县| 绥阳县| 仁怀市| 乐至县| 济源市| 鹰潭市| 沧州市| 静海县| 河西区| 乐至县| 永嘉县| 神池县| 开江县| 富裕县| 留坝县| 长泰县| 成都市| 阜新市| 遂平县| 乐昌市| 郑州市| 饶平县| 确山县|