中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

谷歌大腦提出“數(shù)據(jù)回送”算法,神經(jīng)網(wǎng)絡(luò)訓(xùn)練速度提升 4 倍

2019-07-23    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

作者:Maglish

在摩爾定律的暮色中,GPU 和其他硬件加速器極大地加速了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。但是,訓(xùn)練過程的前期階段(如磁盤讀寫和數(shù)據(jù)預(yù)處理)并不在加速器上運行。隨著加速器的不斷改進(jìn),這些前期階段所花費的時間將逐漸成為訓(xùn)練速度的瓶頸。谷歌大腦團(tuán)隊提出了“數(shù)據(jù)回送(data echoing)”算法,它減少了訓(xùn)練前期階段的總計算量,并在加速器上游的計算占用訓(xùn)練時間時加快訓(xùn)練速度。“數(shù)據(jù)回送”復(fù)用訓(xùn)練前期階段的中間輸出,以利用閑置的計算空間。作者研究了在不同任務(wù)、不同數(shù)量的回送以及不同批尺寸時數(shù)據(jù)回送算法的表現(xiàn)。在所有的情況下,至少有一種數(shù)據(jù)回送算法可以用更少的上游計算達(dá)到模型的基線性能。在部分情況下,數(shù)據(jù)回送甚至可以將訓(xùn)練速度提升 4 倍。本文是 AI 前線第 85 篇論文導(dǎo)讀。

論文原文:Faster Neural Network Training with Data Echoing

1 引言

在過去的十年中,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度得到了極大的提升。研究人員能夠使用更大的數(shù)據(jù)集訓(xùn)練更大的模型,并更快地探索新的想法,顯著提高了模型的表現(xiàn)性能。隨著摩爾定律的失效,通用處理器的速度已經(jīng)不能滿足要求,但特定的加速器通過優(yōu)化特定操作得到顯著的加速。例如,GPU 和 TPU 優(yōu)化了高度并行的矩陣運算,而矩陣運算正是神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法的核心組成部分。

然而,訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)需要的不僅僅是在加速器上運行的操作。訓(xùn)練程序需要讀取和解壓縮訓(xùn)練數(shù)據(jù),對其進(jìn)行打亂(shuffle)、批處理,甚至轉(zhuǎn)換或增強(qiáng)操作。這些步驟需要用到多個系統(tǒng)組件,包括 CPU、磁盤、網(wǎng)絡(luò)帶寬和內(nèi)存帶寬。這些通用操作涉及的組件太多,為它們設(shè)計專用的加速硬件是不切實際的。同時,加速器的改進(jìn)遠(yuǎn)遠(yuǎn)超過了通用計算的改進(jìn),并且在加速器上運行的代碼只占用整個訓(xùn)練時間的一小部分。因此,如果想使神經(jīng)網(wǎng)絡(luò)訓(xùn)練地更快,有以下兩個方法:(1)使非加速器工作地更快,或(2)減少非加速器所需的工作量。選項(1)可能需要大量的工程工作或技術(shù)探索,給系統(tǒng)增加太多的復(fù)雜性。因此,作者將重點放在選項(2)上,探索減少訓(xùn)練前期階段的工作量的方法。

神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程可以看作是一個數(shù)據(jù)流程,需要對計算進(jìn)行緩沖和重疊。例如,圖 1 顯示了小批次隨機(jī)梯度下降(SGD)及其變體的典型訓(xùn)練流程,這是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的標(biāo)準(zhǔn)算法。訓(xùn)練程序首先讀取和解碼輸入數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行 shuffle,應(yīng)用一組轉(zhuǎn)換操作來增加數(shù)據(jù),并將數(shù)據(jù)分成不同批次。最后,通過迭代更新網(wǎng)絡(luò)參數(shù)降低損失函數(shù)值;此階段稱為“SGD 更新”。由于任何流程階段的輸出都可以緩沖,因此不同階段的計算互相重疊,最慢的階段將占用主要的訓(xùn)練時間。

 

 

圖 1 經(jīng)典神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程圖

圖 2 數(shù)據(jù)回送插入點的上游和下游的覆蓋計算時間。

在這篇論文中,作者研究如何通過減少訓(xùn)練前期部分的時間來加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練(圖 2a)。作者將訓(xùn)練過程中第一部分的輸出重復(fù)用于多個 SGD 更新,以利用空閑計算能力。這類算法稱為 **“數(shù)據(jù)回送”(data echoing)**,每個中間輸出被使用的次數(shù)稱為 ** 回送因子(echoing factor)**。 數(shù)據(jù)回送算法在訓(xùn)練流程中的某個位置(SGD 更新之前)插入重復(fù)階段。如果上游任務(wù)(重復(fù)階段之前)花費的時間超過下游任務(wù)(重復(fù)階段之后)花費的時間,算法將回收下游閑置的計算能力,并提高模型的 SGD 更新率(圖 2b)。通過改變插入點、回送因子和 shuffle 程度,可以得到不同的數(shù)據(jù)回送算法。

要點

1. 在不同的數(shù)據(jù)集和模型結(jié)構(gòu)上,數(shù)據(jù)回送在取得競爭性表現(xiàn)的同時減少了上游計算量;

2. 支持大范圍的回送因子;

3. 有效性取決于訓(xùn)練流程中的插入點;

4. 數(shù)據(jù)回送可以從回送后的 shuffle 中獲益;

5. 數(shù)據(jù)回送與調(diào)優(yōu)的基線模型取得相同的錯誤率。

2 數(shù)據(jù)回送

數(shù)據(jù)回送指在訓(xùn)練流程中插入一個重復(fù)階段,回送前一階段的輸出。如果重復(fù)數(shù)據(jù)的計算可以忽略不計,并且回送兩側(cè)的階段是并行執(zhí)行的,則數(shù)據(jù)回送完成一個上游步驟和 e 個下游步驟的平均時間為:

 

 

其中 tupstream 是回送上游所有階段所用的時間,tdownstream 是回送下游所有階段所用的時間,e 是回送因子。假設(shè) tupstream≥tdownstream,這是使用數(shù)據(jù)回送的主要動機(jī)。如果用 R=tupstream/tdownstream 表示上下游處理時間之比,那么完成一個上游步驟和 e 個下游步驟的時間對于從 e 到 R 的所有回送因子都是相同的。換句話說,額外的下游步驟是“無消耗的”,因為它們使用的是空閑的下游計算能力。

使用數(shù)據(jù)回送時,減少的訓(xùn)練時間取決于上游步驟和下游步驟之間的比重。一方面,由于重復(fù)數(shù)據(jù)的價值可能低于新鮮的數(shù)據(jù),數(shù)據(jù)回送可能需要更多的下游 SGD 更新才能達(dá)到預(yù)期的表現(xiàn)。另一方面,每個下游步驟只需要 1/e(而不是 1)個上游步驟的時間。如果下游步驟增加的數(shù)量小于 e,上游步驟的總數(shù)(以及總訓(xùn)練時間)將減少。R 代表數(shù)據(jù)回送的最大可能加速,如果 e=R,并且重復(fù)數(shù)據(jù)和新數(shù)據(jù)價值相同,則可以實現(xiàn)最大加速。

考慮到訓(xùn)練過程中的每個操作都需要一些時間來執(zhí)行,如果在 SGD 更新之前應(yīng)用數(shù)據(jù)回送,R 能取最大值,但這將導(dǎo)致每個 epoch 多次使用同一批數(shù)據(jù)。然而,如果想在上游步驟和下游步驟之間找到更有利的權(quán)衡,更好的方式是較早的插入回送數(shù)據(jù)。

不同插入點的數(shù)據(jù)回送:

批處理前或批處理后的回送:批處理前的回送是指數(shù)據(jù)在樣本級別而不是批級別進(jìn)行重復(fù)。這樣增加了相鄰批次不同的可能性,但代價是不能復(fù)制一批內(nèi)的樣本。批處理前回送的算法稱為樣本回送(example echoing),批處理后回送的算法稱為批回送(batch echoing)。

數(shù)據(jù)增強(qiáng)前或數(shù)據(jù)增強(qiáng)后的回送:數(shù)據(jù)增強(qiáng)前的回送允許重復(fù)數(shù)據(jù)進(jìn)行不同的轉(zhuǎn)換,能使重復(fù)數(shù)據(jù)更接近新數(shù)據(jù)。

數(shù)據(jù)回送的表現(xiàn)也受回送階段后 shuffle 程度的影響。在適用的情況下,作者將 shuffle 作為緩沖區(qū)。緩沖區(qū)越大,shuffle 程度越高,訓(xùn)練算法能夠近似于將整個訓(xùn)練集加載到內(nèi)存中。

3 實驗

作者在兩個語言建模任務(wù)、兩個圖像分類任務(wù)和一個目標(biāo)檢測任務(wù)上驗證了數(shù)據(jù)回送的效果。對于語言建模任務(wù),作者在 LM1B 和 Common Crawl 數(shù)據(jù)集上訓(xùn)練了 Transformer 模型。對于圖像分類任務(wù),作者在 CIFAR-10 數(shù)據(jù)集上訓(xùn)練了 ResNet-32 模型,在 ImageNet 數(shù)據(jù)集上訓(xùn)練了 ResNet-50 模型。對于目標(biāo)檢測任務(wù),作者在 COCO 數(shù)據(jù)集上訓(xùn)練了 SSD 模型。

論文研究的主要問題是數(shù)據(jù)回送是否能夠加速訓(xùn)練。作者用達(dá)到訓(xùn)練目標(biāo)所需的“新鮮”樣本數(shù)量衡量訓(xùn)練時間。因為新樣本的數(shù)量與訓(xùn)練流程中上游步驟的數(shù)量成正比,因此,在回送因子小于或等于 r 時,新樣本的數(shù)量與實際時間亦成正比。

 

 

表 1 任務(wù)總結(jié)

對于任務(wù),作者運行了一組沒有數(shù)據(jù)回送的初始實驗,并且調(diào)整參數(shù)以在實際計算預(yù)算內(nèi)獲得最佳的性能。作者選擇了比初始實驗中觀察到的最佳值稍差的目標(biāo)值。目標(biāo)的微小變化并不會影響結(jié)論。表 1 總結(jié)了實驗中使用的模型和目標(biāo)值。 對每個實驗,作者獨立調(diào)整學(xué)習(xí)速率、動量和其它控制學(xué)習(xí)速率的參數(shù)。作者使用準(zhǔn)隨機(jī)搜索來調(diào)整元參數(shù)。然后選擇使用最少的新樣本達(dá)到目標(biāo)值的試驗。作者在每個搜索空間重復(fù)這個元參數(shù)搜索 5 次。實驗結(jié)果中的所有圖都顯示了這 5 次實驗所需的新樣本的平均數(shù),用誤差條表示最小和最大值。 實驗評估了在標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程中添加數(shù)據(jù)回送的效果。作者實驗了三種不同的數(shù)據(jù)回送:數(shù)據(jù)增強(qiáng)前的樣本回送,增強(qiáng)后的樣本回送,以及批回送。

3.1 數(shù)據(jù)回送可減少訓(xùn)練所需的新樣本數(shù)量。

圖 3 顯示了表 1 中所有任務(wù)的數(shù)據(jù)回送效果,回送因子為 2。除一種情況外,所有情況下數(shù)據(jù)回送達(dá)到目標(biāo)性能所需要的新樣本數(shù)更少。唯一的例外(ResNet-50 上的批回送)需要與基線相同數(shù)量的新樣本——說明數(shù)據(jù)回送雖然沒有帶來好處,但也不會損害訓(xùn)練。在訓(xùn)練中插入回送越早,所需的新樣本就越少:與批回送相比,樣本回送需要的新樣本更少,并且數(shù)據(jù)增強(qiáng)之前的回送需要的新樣本比增強(qiáng)之后回送需要的新樣本更少。對于 ResNet-50 或 SSD,沒有觀察到數(shù)據(jù)回送和批歸一化之間的任何負(fù)交互作用。

 

 

圖 3 回送因子為 2 時,數(shù)據(jù)回送降低或不改變需要達(dá)到目標(biāo)性能的新樣本數(shù)量。點劃線表示重復(fù)樣本與新樣本價值相同時的期望值。

3.2 數(shù)據(jù)回送可以縮短訓(xùn)練時間

圖 4 顯示了不同的 R 值(上下游處理時間的比例)對應(yīng)不同的回送因子 e 的訓(xùn)練時間變化。如果 R=1,數(shù)據(jù)回送會增加,或不像預(yù)期的那樣顯著縮短訓(xùn)練時間。如果 R>1,e≤r 的任何設(shè)置都能縮短訓(xùn)練時間,設(shè)置 e=R 可以最大程度地縮短訓(xùn)練時間。設(shè)置 e>R 不會縮短 LM1B 數(shù)據(jù)集上 Transformer 的訓(xùn)練時間,但它確實為 ImageNet 上的 ResNet-50 提供了加速。這些結(jié)果表明,圍繞 e=R 的最佳值附近的回送因子,數(shù)據(jù)回送可以縮短訓(xùn)練時間,尤其是 e≤R 的設(shè)置。

 

 

圖 4 不同 R 值對訓(xùn)練時間變化的影響。

3.3 在回送因子的合理上限內(nèi),數(shù)據(jù)回送是有效的

圖 5 顯示了 Transformer 在 LM1B 上訓(xùn)練時,回送因子高達(dá) 16 的影響。批尺寸為 1024 時,最大有效回送因子介于 4 和 8 之間;超過此值,所需新樣本的數(shù)量就會大于較小回送因子所需的樣本數(shù)量。隨著回送因子的增加,所需的新樣本數(shù)量最終會超過基線,但即使是一個大于 16 的回送因子,所需的新樣本仍然比基線少得多。批尺寸為 4096 時,最大有效回送因子甚至大于 16,這表明較大的批尺寸支持更大的回送因子。

 

 

圖 5 回送因子上限為 16 時,樣本回送減少了所需新樣本的數(shù)量。點劃線表示重復(fù)樣本與新樣本價值相同時的期望值。

3.4 批尺寸的增加對數(shù)據(jù)回送的影響

對于較大的批尺寸,批回送的性能更好,但樣本回送有時需要更多的 shuffle 操作。圖 6 顯示了回送因子為 2 時,不同批尺寸的效果。隨著批尺寸的增加,批回送的性能相對于基線保持不變或有所提高。這種影響是有道理的,因為隨著批尺寸接近訓(xùn)練集的大小,重復(fù)的批數(shù)據(jù)會接近新的批數(shù)據(jù),因此,在限制范圍內(nèi),批回送必須通過回送因子減少所需的新樣本數(shù)量。另一方面,圖 6 顯示了隨著批尺寸增加,樣本回送的性能相對于基線的要么保持不變,要么變差。這是由于隨著批尺寸的增加,每批中重復(fù)樣本的比例也隨之增加,因此實際中,批尺寸較大的樣本回送的表現(xiàn)可能更像較小的批尺寸的表現(xiàn)。較小的批尺寸可能會增加所需的 SGD 更新步數(shù),這可以解釋圖 6 中的樣本回送結(jié)果。增加重復(fù)樣本的亂序數(shù)量(以增加內(nèi)存為代價)可以提升較大批尺寸時樣本回送的性能,因為降低了每批中重復(fù)樣本的概率。

 

 

圖 6 隨批尺寸增加,批回送的表現(xiàn)相對于基線保持不變或有所提升,而樣本回送的表現(xiàn)相對于基線保持不變或有所降低。點劃線表示重復(fù)樣本與新樣本價值相同時的期望值。

3.5 Shuffle 程度越高,數(shù)據(jù)回送表現(xiàn)更好

圖 7 顯示了增加數(shù)據(jù)回送的 shuffle 緩沖區(qū)大小(以增加內(nèi)存為代價)的效果。雖然之前的所有批回送實驗中沒有 shuffle 操作,但如果重復(fù)批處理被打亂,批回送的性能會提高,而更多的亂序數(shù)量會帶來更好的性能。同樣,樣本回送的性能也隨著 shuffle 緩沖區(qū)大小的增加而提高,即使它對基線沒有幫助。這是因為如第 3.4 節(jié)所述,更多的亂序數(shù)量降低了每批數(shù)據(jù)中重復(fù)樣本的可能性。

 

 

圖 7 shuffle 程度越高,數(shù)據(jù)回送的效果越好。

3.6 數(shù)據(jù)回送不損害表現(xiàn)性能

盡管人們可能擔(dān)心重復(fù)使用數(shù)據(jù)可能會損害最終的表現(xiàn)性能,但實驗中沒有觀察到任何類似情況。為了進(jìn)一步證明數(shù)據(jù)回送不會降低解決方案的質(zhì)量,作者在 LM1B 上使用 Transformer 進(jìn)行了實驗,在 ImageNet 上使用 Resnet-50 進(jìn)行了實驗,在固定新樣本數(shù)量下找到最佳可實現(xiàn)性能。圖 8 顯示了在每個實驗的訓(xùn)練過程中,數(shù)據(jù)回送在任何一點上都達(dá)到了最佳的性能。所有的數(shù)據(jù)回送變體都至少實現(xiàn)了與兩個任務(wù)的基線相同的性能。

 

 

圖 8 訓(xùn)練中的獨立試驗達(dá)到了最佳效果。

4 結(jié)論

數(shù)據(jù)回送是提高硬件利用率的一種簡單策略。盡管先前研究人員擔(dān)心重復(fù)數(shù)據(jù)的 SGD 更新是無用的,甚至是有害的。但是對于實驗中的每一項任務(wù),至少有一種數(shù)據(jù)回送方法能夠減少需要從磁盤讀取的樣本數(shù)量。

數(shù)據(jù)回送是優(yōu)化訓(xùn)練流程或額外上游數(shù)據(jù)處理的有效替代方案。盡管訓(xùn)練加速取決于模型結(jié)構(gòu)、數(shù)據(jù)集、批尺寸以及重復(fù)數(shù)據(jù)的 shuffle 程度,但將回送因子設(shè)置為上下游處理時間的比率可以最大限度地提高潛在的加速速度,并在實驗中取得了良好的效果。隨著專業(yè)加速器(如 GPU 和 TPU)的改進(jìn)速度繼續(xù)超過通用計算的改進(jìn)速度,數(shù)據(jù)回送以及類似的策略將成為神經(jīng)網(wǎng)絡(luò)訓(xùn)練工具包中越來越重要的組成部分。

標(biāo)簽: 數(shù)據(jù)回送 神經(jīng)網(wǎng)絡(luò)訓(xùn)練

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Python 3.8 即將到來,這是你需要關(guān)注的幾大新特性

下一篇:2019騰訊廣告算法大賽完美收官,算法達(dá)人鵝廠“出道”