朱傳家 劉 鑫* 方佳瑞
1(江南計(jì)算技術(shù)研究所 江蘇 無錫 214083) 2(清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系 北京 100084)
隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,深度學(xué)習(xí)技術(shù)廣泛應(yīng)用于語音識別[1]、圖像識別[2]、自然語言處理[3]等領(lǐng)域。深度神經(jīng)網(wǎng)絡(luò)的成功源于深度神經(jīng)網(wǎng)絡(luò)模型具有從大量數(shù)據(jù)中學(xué)習(xí)復(fù)雜特征的能力。越來越大的數(shù)據(jù)集和網(wǎng)絡(luò)模型可以提高訓(xùn)練的性能。然而,隨著數(shù)據(jù)規(guī)模的增長和深度神經(jīng)網(wǎng)絡(luò)模型日益復(fù)雜,訓(xùn)練時(shí)間越來越長,訓(xùn)練需要的內(nèi)存越來越多。提高深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效率成為一大挑戰(zhàn)。
深度神經(jīng)網(wǎng)絡(luò)模型種類繁多,不同的網(wǎng)絡(luò)模型具有不同的特點(diǎn)。對不同的神經(jīng)網(wǎng)絡(luò)模型需要采用不同的并行優(yōu)化方法。在一些卷積神經(jīng)網(wǎng)絡(luò)模型中,卷積層持有約10%的參數(shù)量和約90%的計(jì)算量,而全連接層持有約90%的參數(shù)量和約10%的計(jì)算量。因此,可以對卷積層采用數(shù)據(jù)并行的并行方法,對全連接層采用模型并行的并行方法。
本文基于國產(chǎn)超級計(jì)算機(jī)系統(tǒng)和深度學(xué)習(xí)框架Caffe[4],對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行并行方法研究,提出一種對卷積層使用數(shù)據(jù)并行、對全連接層使用模型并行的并行方法。
卷積神經(jīng)網(wǎng)絡(luò)是經(jīng)典的深度學(xué)習(xí)網(wǎng)絡(luò),主要由卷積層、全連接層等組成。卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,用于從輸入層或較低層級的特征圖中進(jìn)行特征提?。蝗B接層的作用為連接所有的特征,將輸出值送給分類器進(jìn)行輸出,如圖1所示。
圖1 AlexNet網(wǎng)絡(luò)結(jié)構(gòu)圖[5]
訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)使用反向傳播算法對網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化。反向傳播算法包括正向計(jì)算和反向計(jì)算。正向計(jì)算順著網(wǎng)絡(luò)結(jié)構(gòu)依次計(jì)算,最終得到網(wǎng)絡(luò)的輸出結(jié)果;反向計(jì)算計(jì)算損失函數(shù)相對于網(wǎng)絡(luò)參數(shù)權(quán)重的梯度,并利用梯度更新網(wǎng)絡(luò)參數(shù)?;谕降碾S機(jī)梯度下降算法[6]具有結(jié)構(gòu)簡單、收斂性好的優(yōu)點(diǎn),廣泛應(yīng)用于網(wǎng)絡(luò)參數(shù)優(yōu)化。分布式系統(tǒng)中使用分布式隨機(jī)梯度下降算法,在不同的工作節(jié)點(diǎn)間進(jìn)行梯度的歸約和平均,公式如下:
Wt+1=Wt-ηE(ΔWt)
(1)
式中:Wt為第t次迭代的權(quán)重值;η為學(xué)習(xí)率;ΔWt為第t次迭代W關(guān)于損失函數(shù)的梯度;E(ΔWt)為第t次迭代各節(jié)點(diǎn)W關(guān)于損失函數(shù)的梯度的均值。
Caffe[7]是加州大學(xué)伯克利視覺和學(xué)習(xí)中心(BVLC)推出的一款深度學(xué)習(xí)框架,廣泛應(yīng)用于工業(yè)界。它完全基于C++開發(fā),具有結(jié)構(gòu)清晰、層次分明、效率高和可移植性好的優(yōu)點(diǎn);采用模塊化架構(gòu),易于擴(kuò)展新的數(shù)據(jù)格式、網(wǎng)絡(luò)層和損失函數(shù)等。
Caffe框架由Solver、Net、Layer和Blob定義[8]。Solver是求解器,負(fù)責(zé)協(xié)調(diào)模型的優(yōu)化和測試;Net、Layer和Blob組成具體的模型。Net是網(wǎng)絡(luò),從下到上逐層定義整個(gè)模型,一次迭代可以看作Net的一次正向傳播和反向傳播。Layer是計(jì)算的基本單元,定義具體的運(yùn)算,比如卷積、池化、全連接等。Blob是Caffe的標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu),提供了統(tǒng)一的內(nèi)存接口。
運(yùn)行于國產(chǎn)超級計(jì)算機(jī)系統(tǒng)的Caffe不僅實(shí)現(xiàn)了應(yīng)用程序的移植,還針對國產(chǎn)超級計(jì)算機(jī)系統(tǒng)的體系結(jié)構(gòu)進(jìn)行了深度優(yōu)化,使用了專門開發(fā)的數(shù)學(xué)庫[9]。Caffe繼承了BVLC版Caffe的優(yōu)點(diǎn),并且在國產(chǎn)超級計(jì)算機(jī)系統(tǒng)上具有運(yùn)行效率高、可進(jìn)行大規(guī)模分布式擴(kuò)展的優(yōu)點(diǎn)。
隨著深度學(xué)習(xí)技術(shù)的發(fā)展,出現(xiàn)了很多深度神經(jīng)網(wǎng)絡(luò)并行方法的研究。常見的并行方法有數(shù)據(jù)并行和模型并行。數(shù)據(jù)并行[10]方法中,每臺機(jī)器在小批量的數(shù)據(jù)上訓(xùn)練網(wǎng)絡(luò)并計(jì)算梯度,采用同步或異步方式對網(wǎng)絡(luò)參數(shù)進(jìn)行同步;模型并行[11]方法中,將計(jì)算進(jìn)行劃分并分配到不同的機(jī)器上。
Google的DistBelief[12]和微軟的Adams[13]都使用了數(shù)據(jù)并行和模型并行訓(xùn)練大規(guī)模模型。Coates等[14]提出了基于GPU集群的模型并行系統(tǒng),Li等[15]提出了基于異步交互的參數(shù)服務(wù)器方式的數(shù)據(jù)并行。
然而,現(xiàn)有的對深度神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)并行和模型并行方法的研究大多基于商用平臺如GPU等,與國產(chǎn)超級計(jì)算機(jī)系統(tǒng)的體系結(jié)構(gòu)相比具有比較大的差異。因此,針對國產(chǎn)超級計(jì)算機(jī)系統(tǒng),本文研究并提出一種適合卷積神經(jīng)網(wǎng)絡(luò)的并行方法。
對卷積層進(jìn)行數(shù)據(jù)并行,對全連接層進(jìn)行模型并行。圖2展示了一個(gè)含有3個(gè)卷積層和2個(gè)全連接層的卷積神經(jīng)網(wǎng)絡(luò),4個(gè)計(jì)算單元(進(jìn)程)。卷積層的所有參數(shù)在每個(gè)計(jì)算單元上均有一個(gè)副本,全連接層的網(wǎng)絡(luò)參數(shù)按照計(jì)算單元數(shù)進(jìn)行切分,并按順序分布在不同的計(jì)算單元上。
圖2 卷積神經(jīng)網(wǎng)絡(luò)并行方法示意圖
一次訓(xùn)練迭代優(yōu)化過程包括前向傳播過程和后向傳播過程。前向傳播過程中,卷積層利用計(jì)算單元持有的全部網(wǎng)絡(luò)參數(shù)和輸入數(shù)據(jù)計(jì)算預(yù)測輸出。全連接層利用計(jì)算單元持有的部分網(wǎng)絡(luò)參數(shù)和所有的計(jì)算單元的數(shù)據(jù)進(jìn)行計(jì)算,得到部分預(yù)測輸出,所有計(jì)算單元的預(yù)測輸出進(jìn)行整合后再按順序分配到計(jì)算單元上。后向傳播過程中全連接層對預(yù)測輸出進(jìn)行反向整合,再計(jì)算梯度并對梯度信息進(jìn)行整合;卷積層正常計(jì)算梯度。最后,對每層的梯度信息采用同步隨機(jī)梯度下降算法進(jìn)行更新。
卷積層數(shù)據(jù)并行采用去中心化的系統(tǒng)架構(gòu)。去中心化的系統(tǒng)架構(gòu)由多個(gè)工作節(jié)點(diǎn)組成,每個(gè)工作節(jié)點(diǎn)擁有相同的網(wǎng)絡(luò)參數(shù),自主進(jìn)行參數(shù)更新,如圖3所示。在每次優(yōu)化迭代過程中,每個(gè)工作節(jié)點(diǎn)在網(wǎng)絡(luò)正向傳播過程中計(jì)算損失;在反向傳播過程中計(jì)算梯度信息,并對梯度信息進(jìn)行聚集平均操作,利用得到的梯度信息自主進(jìn)行參數(shù)更新。
圖3 去中心化方式數(shù)據(jù)并行架構(gòu)圖
去中心化數(shù)據(jù)并行方法的算法設(shè)計(jì)如下:
1) 網(wǎng)絡(luò)初始化時(shí):
所有工作節(jié)點(diǎn)同步卷積層的網(wǎng)絡(luò)參數(shù)。
2) 在每次優(yōu)化迭代過程中:
(1) 工作節(jié)點(diǎn)從下向上對卷積層進(jìn)行特征計(jì)算;
(2) 工作節(jié)點(diǎn)從上向下對卷積層計(jì)算權(quán)重梯度、偏差梯度和數(shù)據(jù)梯度;
(3) 所有網(wǎng)絡(luò)層梯度計(jì)算完成后,所有工作節(jié)點(diǎn)對權(quán)重梯度信息和偏差梯度信息進(jìn)行聚集平均操作,使所有進(jìn)程持有相同的梯度信息;
(4) 所有工作節(jié)點(diǎn)利用更新后的梯度信息自主更新網(wǎng)絡(luò)參數(shù)。
約定網(wǎng)絡(luò)自下而上進(jìn)行正向傳播,自上而下進(jìn)行反向傳播。如圖4所示,正向計(jì)算時(shí),layer_i的輸出top_data為layer_i+1的輸入bottom_data;反向計(jì)算時(shí),layer_i+1的輸出bottom_diff為layer_i的輸入top_diff。layer_i持有該層的權(quán)重weight、權(quán)重梯度weight_diff、偏差bias_data、偏差權(quán)重bias_weight和偏差權(quán)重梯度bias_diff。
圖4 網(wǎng)絡(luò)層數(shù)據(jù)結(jié)構(gòu)說明圖
1) 網(wǎng)絡(luò)層參數(shù)切分。全連接層模型并行時(shí),對網(wǎng)絡(luò)參數(shù)按照輸出維度進(jìn)行切分,需要切分的網(wǎng)絡(luò)參數(shù)有網(wǎng)絡(luò)權(quán)重、權(quán)重梯度、偏差權(quán)重、偏差權(quán)重梯度等。由于工作節(jié)點(diǎn)的計(jì)算能力均衡,因此選擇等量切分方式。在正向特征計(jì)算中,每個(gè)工作節(jié)點(diǎn)的數(shù)據(jù)需要所有工作節(jié)點(diǎn)的網(wǎng)絡(luò)參數(shù)才能計(jì)算出其相應(yīng)的特征輸出;在反向梯度計(jì)算中,每個(gè)工作節(jié)點(diǎn)需要所有工作節(jié)點(diǎn)的數(shù)據(jù)才能計(jì)算出其相應(yīng)的梯度信息。
2) 正向傳播過程。單節(jié)點(diǎn)全連接層正向傳播時(shí),特征輸入bottom_data和權(quán)重weight的乘積加上偏差bias_data和偏差權(quán)重bias_weight的乘積為特征輸出top_data。模型并行時(shí),weight、bias_data、bias_weight切分后分布在不同的工作節(jié)點(diǎn)上,每個(gè)工作節(jié)點(diǎn)持有自己的bottom_data。以四個(gè)工作節(jié)點(diǎn)為例,進(jìn)程號分別為0、1、2、3;相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)為xx_0、xx_1、xx_2、xx_3。如2號進(jìn)程的特征輸入為bottom_data_2。
具體算法如下:
(1) 所有工作節(jié)點(diǎn)向其他工作節(jié)點(diǎn)廣播自己的bottom_data_x,工作節(jié)點(diǎn)收到其他工作節(jié)點(diǎn)的bottom_data后按順序進(jìn)行拼接,如圖5所示。
圖5 bottom_data輸入拼接圖
(2) 所有工作節(jié)點(diǎn)使用拼接后的bottom_data和其持有的weight、bias_data進(jìn)行計(jì)算,得到top_data_x,如圖6所示。
圖6 top_data輸出計(jì)算圖
(3) 所有工作節(jié)點(diǎn)向其他工作節(jié)點(diǎn)廣播自己的偏差bias_data,工作節(jié)點(diǎn)收到其他工作節(jié)點(diǎn)的bias_data后按順序進(jìn)行拼接。然后使用拼接好的bias_data和偏差權(quán)重bias_weight的乘積與(2)中得到的top_data_x相加,得到新的top_data_x,如圖7所示。
圖7 top_data偏移計(jì)算圖
(4) 所有工作節(jié)點(diǎn)向其他工作節(jié)點(diǎn)廣播自己的top_data_x,工作節(jié)點(diǎn)收到其他工作節(jié)點(diǎn)的top_data后按順序進(jìn)行拼接,每個(gè)工作節(jié)點(diǎn)按新的順序讀取其最終的top_data_x,如圖8所示。
圖8 top_data讀取分布圖
3) 反向傳播過程。單節(jié)點(diǎn)全連接層反向傳播時(shí),特征輸出梯度top_diff和特征輸入bottom_data的乘積為權(quán)重梯度weight_diff;偏差bias_data和特征輸出梯度top_diff的乘積為偏差梯度bias_diff;輸出特征梯度top_diff和權(quán)重weight的乘積為特征輸入梯度bottom_diff。模型并行時(shí),對網(wǎng)絡(luò)參數(shù)進(jìn)行了切分,需要先進(jìn)行數(shù)據(jù)的同步變換,再進(jìn)行計(jì)算。同前向傳播一樣,以四個(gè)工作節(jié)點(diǎn)為例,進(jìn)程號分別為0、1、2、3;相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)為xx_0、xx_1、xx_2、xx_3。如2號進(jìn)程的特征輸出梯度為top_diff_2。
具體算法如下:
(1) 所有工作節(jié)點(diǎn)向其他工作節(jié)點(diǎn)廣播自己的top_diff_x,工作節(jié)點(diǎn)收到其他工作節(jié)點(diǎn)的top_diff后按順序進(jìn)行拼接,并按新的順序讀取該工作節(jié)點(diǎn)對應(yīng)的top_diff_x,如圖9所示。
圖9 top_diff拼接變換圖
(2) 所有工作節(jié)點(diǎn)向其他工作節(jié)點(diǎn)廣播自己的bottom_data_x,工作節(jié)點(diǎn)收到其他工作節(jié)點(diǎn)的bottom_data后按順序進(jìn)行拼接,如圖10所示。
圖10 權(quán)重梯度計(jì)算圖
(3) 工作節(jié)點(diǎn)使用獲得的top_diff_x和bottom_data計(jì)算權(quán)重梯度weight_diff,如圖10所示。
(4) 所有工作節(jié)點(diǎn)使用獲得的top_diff_x和weight計(jì)算bottom_diff_x,如圖11所示;計(jì)算完成后所有的工作節(jié)點(diǎn)對bottom_diff_x進(jìn)行歸約操作;歸約操作完成后,所有工作節(jié)點(diǎn)讀取其對應(yīng)的bottom_diff_x,如圖12所示。
圖11 bottom_diff計(jì)算圖
圖12 bottom_diff歸約圖
(5) 所有工作節(jié)點(diǎn)向其他工作節(jié)點(diǎn)廣播自己的bias_data_x,工作節(jié)點(diǎn)收到其他工作節(jié)點(diǎn)的bias_data后按順序進(jìn)行拼接,如圖13所示。
圖13 bias_diff計(jì)算圖
(6) 工作節(jié)點(diǎn)使用top_diff_x和bias_data計(jì)算bias_diff,如圖13所示。
數(shù)據(jù)并行和模型并行都基于同步梯度更新的分布式隨機(jī)梯度下降算法對網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化,因而兩者的計(jì)算量是相等的。數(shù)據(jù)并行和模型并行的性能取決于不同工作節(jié)點(diǎn)之間的數(shù)據(jù)同步效率,在硬件性能和網(wǎng)絡(luò)聚集算法一定的前提下,不同工作節(jié)點(diǎn)之間的數(shù)據(jù)同步效率有兩部分影響因素,分別是同步數(shù)據(jù)量和網(wǎng)絡(luò)同步時(shí)延。
全連接層數(shù)據(jù)并行時(shí),同步的數(shù)據(jù)為網(wǎng)絡(luò)權(quán)重梯度和偏差梯度,數(shù)據(jù)量大小為K×N+N,K和N為網(wǎng)絡(luò)權(quán)重矩陣的行數(shù)和列數(shù);全連接層模型并行時(shí),數(shù)據(jù)傳輸量為正向傳輸數(shù)據(jù)量和反向傳輸數(shù)據(jù)量之和,大小為3×M×K×rankcount+2M×N×rankcount,M表示Batchsize,rankcount表示工作節(jié)點(diǎn)數(shù)量。
當(dāng)M×rankcount<(K+1)×N/(3×K+2×N)時(shí),全連接層模型并行同步的數(shù)據(jù)量少于數(shù)據(jù)并行同步的數(shù)據(jù)量。在卷積神經(jīng)網(wǎng)絡(luò)中,K和N的值是確定的,因此,當(dāng)M和rankcount變大時(shí),模型并行同步的數(shù)據(jù)量越大,其優(yōu)勢相比于數(shù)據(jù)并行變小。
對相同的傳輸數(shù)據(jù)量,網(wǎng)絡(luò)同步時(shí)延與網(wǎng)絡(luò)傳輸次數(shù)成正比。全連接層進(jìn)行數(shù)據(jù)并行時(shí),整個(gè)網(wǎng)絡(luò)采用數(shù)據(jù)并行,可以將分散的梯度信息內(nèi)存整理成連續(xù)的一段內(nèi)存,從而可以在一次網(wǎng)絡(luò)聚集平均操作中完成梯度信息的同步。全連接層進(jìn)行模型并行時(shí),需要對運(yùn)算矩陣、計(jì)算結(jié)果等進(jìn)行同步操作,增加了網(wǎng)絡(luò)同步次數(shù)。具體網(wǎng)絡(luò)聚集次數(shù)如表1所示。
表1 全連接層數(shù)據(jù)并行和模型并行網(wǎng)絡(luò)聚集次數(shù)對比
對全連接層不同并行方法的同步數(shù)據(jù)量和網(wǎng)絡(luò)同步時(shí)延分析可以發(fā)現(xiàn),當(dāng)全連接層網(wǎng)絡(luò)參數(shù)量較少時(shí),采用數(shù)據(jù)并行效率更高。
在卷積神經(jīng)網(wǎng)絡(luò)中,當(dāng)有多個(gè)全連接層時(shí),不同全連接層的網(wǎng)絡(luò)參數(shù)往往分布不均勻,如表2所示。因此,可以對參數(shù)量較少的全連接層采用數(shù)據(jù)并行。
表2 卷積神經(jīng)網(wǎng)絡(luò)全連接層參數(shù)分布表 MB
選擇國產(chǎn)超級計(jì)算機(jī)系統(tǒng)和深度學(xué)習(xí)框架Caffe進(jìn)行實(shí)驗(yàn)。每個(gè)處理器作為一個(gè)工作節(jié)點(diǎn)。設(shè)計(jì)兩個(gè)實(shí)驗(yàn),分別驗(yàn)證CNN并行方法的正確性和性能。
選用Cifar10-quick網(wǎng)絡(luò)模型和Cifar10數(shù)據(jù)集,在單節(jié)點(diǎn)、網(wǎng)絡(luò)數(shù)據(jù)并行、卷積層數(shù)據(jù)并行、全連接層模型并行的情況下對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。訓(xùn)練結(jié)果如表3所示。
表3 數(shù)據(jù)并行和模型并行正確性驗(yàn)證表
可以看出,三種情況下訓(xùn)練網(wǎng)絡(luò)均能有效收斂,驗(yàn)證了卷積層數(shù)據(jù)并行、全連接層模型并行方法的有效性。
選用VGG-16網(wǎng)絡(luò)模型和Imagenet數(shù)據(jù)集進(jìn)行性能測試。實(shí)驗(yàn)中,卷積層采用數(shù)據(jù)并行方式,每層全連接層分別進(jìn)行數(shù)據(jù)并行和模型并行,并對性能進(jìn)行對比。實(shí)驗(yàn)選擇的并行力度為2、4、8;Batch size范圍為1~128。實(shí)驗(yàn)結(jié)果如圖14-圖16所示。
圖14 FC1層數(shù)據(jù)并行和模型并行通信時(shí)間對比圖
圖15 FC2層數(shù)據(jù)并行和模型并行通信時(shí)間對比圖
圖16 FC3層數(shù)據(jù)并行和模型并行通信時(shí)間對比圖
圖14-圖16中,MP2、MP4、MP8代表該全連接層模型并行,并行粒度分別為2、4、8;DP2、DP、DP8代表該全連接層數(shù)據(jù)并行,并行粒度分別為2、4、8。FC1、FC2、FC3表示網(wǎng)絡(luò)中第一到第三全連接層,含有的參數(shù)量分別為102.76、 16.78、4.10 MB。
由圖14可以看出,對第一個(gè)全連接層,在并行粒度為2到8,Batch size為1到128時(shí),模型并行所用時(shí)間均少于數(shù)據(jù)并行所用時(shí)間。在并行粒度一定時(shí),模型并行相對于數(shù)據(jù)并行的優(yōu)勢隨著Batch size的增大而逐漸變小。在Batch size一定時(shí),模型并行相對于數(shù)據(jù)并行的優(yōu)勢隨著并行粒度的增大而變小。在Batch size=1,并行粒度為2時(shí),模型并行相比數(shù)據(jù)并行對FC6層的加速可達(dá)33倍。
由圖15可以看出,對第二個(gè)全連接層,在并行粒度為2到4,Batch size為1到128時(shí),模型并行所用時(shí)間少于數(shù)據(jù)并行所用時(shí)間。并行粒度為8時(shí),Batch size為1到64時(shí),模型并行所用時(shí)間少于數(shù)據(jù)并行所用時(shí)間。Batch size為128時(shí),模型并行所用時(shí)間比數(shù)據(jù)并行多,對第二全連接層采用數(shù)據(jù)并行效率更高。在Batch size=1,并行粒度為2時(shí),模型并行相比數(shù)據(jù)并行對FC2層的數(shù)據(jù)加速可達(dá)6倍。
由圖16可以看出,對第三個(gè)全連接層,在并行粒度為2,Batch size為1到64時(shí),模型并行所用時(shí)間少于數(shù)據(jù)并行所用時(shí)間;在Batch size為1,并行粒度為2和4時(shí),模型并行所用時(shí)間少于數(shù)據(jù)并行所用時(shí)間;其他情況下,模型并行所用時(shí)間大于數(shù)據(jù)并行所用時(shí)間,對該全連接層采用數(shù)據(jù)并行效率更高。
本文基于國產(chǎn)超級計(jì)算機(jī)系統(tǒng)對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行并行方法研究,根據(jù)卷積神經(jīng)網(wǎng)絡(luò)參數(shù)量分布不均勻的特點(diǎn),對卷積層進(jìn)行數(shù)據(jù)并行,對參數(shù)量較多的全連接層進(jìn)行模型并行,對參數(shù)量較少的全連接層進(jìn)行數(shù)據(jù)并行。實(shí)驗(yàn)結(jié)果表明,對全連接層采用模型并行相比對該層采用數(shù)據(jù)并行在訓(xùn)練效率上最大加速可達(dá)33倍。