上海交大:基于近似随机Dropout的LSTM训练加速
機(jī)器之心發(fā)布
作者:宋卓然、王儒、茹棟宇、彭正皓、蔣力
上海交通大學(xué)
在這篇文章中,作者利用 Dropout 方法在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中產(chǎn)生大量的稀疏性進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練加速。該論文已經(jīng)被 Design Automation and Test in Europe Conference 2019 接收。
論文:Approximate Random Dropout for DNN training acceleration in GPGPU
論文鏈接:https://arxiv.org/abs/1805.08939?
1. 簡(jiǎn)介
目前,有大量關(guān)于深度神經(jīng)網(wǎng)絡(luò)壓縮的方法,利用神經(jīng)網(wǎng)絡(luò)的稀疏性通過如剪枝、正則化等方式使網(wǎng)絡(luò)中的神經(jīng)突觸權(quán)值為零。
以剪枝(Pruning)[1] 為例,那些零權(quán)值經(jīng)過編碼后存在片上存儲(chǔ)器中,由于零的位置很隨機(jī),需要在神經(jīng)網(wǎng)絡(luò)加速器中加入特殊的解碼器來跳過那些涉及零操作數(shù)的運(yùn)算。因此剪枝類方法僅使用 ASIC/FPGA 等平臺(tái);而且由于編碼器解碼器設(shè)計(jì)過于復(fù)雜,很少有加速器采用。
一些結(jié)構(gòu)化稀疏性 [2] 的方法通過刪除 CNN 中過濾器和通道來獲得加速,比上述方法更加容易實(shí)現(xiàn)。然而,至今為止,很少有方法能利用神經(jīng)網(wǎng)絡(luò)的稀疏性來加速深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程。即使在分布式訓(xùn)練場(chǎng)景下,通過梯度壓縮等方式可以減少通信帶寬,但單 GPU 卡上的訓(xùn)練過程仍然難以有效加速。其主要原因是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程涉及對(duì)權(quán)重的更新,不存在大規(guī)模的稀疏性。
本文利用了 Dropout 方法在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中產(chǎn)生大量的稀疏性進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練加速。
Dropout 技術(shù)在網(wǎng)絡(luò)訓(xùn)練中被用來防止過擬合。它會(huì)在每輪的訓(xùn)練過程中隨機(jī)地臨時(shí)刪除部分神經(jīng)元(30%-70%)及其相關(guān)連接。理論上來說,我們理應(yīng)跳過(省去)Dropout 中被臨時(shí)刪除的神經(jīng)元和神經(jīng)突觸的相關(guān)計(jì)算,從而加速訓(xùn)練過程。
然而,所有的訓(xùn)練框架(如 Caffe,Tensorflow,Pytortch 等)不約而同地忽視了這一點(diǎn),保留了 Dropout 帶來的冗余計(jì)算,僅僅在訓(xùn)練結(jié)果中掩蓋(Mask)了被刪除的神經(jīng)元的結(jié)果。其主要原因是 Dropout 帶來的冗余計(jì)算(刪除的神經(jīng)元和突觸)的位置完全隨機(jī),GPU 這種單指令多線程架構(gòu)(Single Instruction Multiple Thread)難以進(jìn)行如此細(xì)粒度的控制。
因此,本文提出一種方法,在訓(xùn)練過程中在線產(chǎn)生有規(guī)律的結(jié)構(gòu)化的 Dropout pattern,使 GPU 在其控制粒度上可以靈活地跳過 Dropout 帶來的冗余計(jì)算。進(jìn)一步,我們提出了一種 Dropout Pattern 的在線生成(搜索)算法,來補(bǔ)償 Dropout 過程中隨機(jī)性的損失。
我們?cè)?MLP 及 LSTM 的訓(xùn)練任務(wù)中測(cè)試了我們的方法,在僅有細(xì)微精確度下降的情況下,取得了很高的加速比。具體而言,在 Dropout Rate 為 0.3 至 0.7 的情況下,MLP 訓(xùn)練過程加速了 30% 至 120%,LSTM 訓(xùn)練過程加速了 20% 至 60%。
2. Dropout 原理
目前應(yīng)用最廣泛的 Dropout 技術(shù)主要分為兩種:Hinton et al. [3] 提出的單元 Dropout 和 Wan et al. [4] 提出的權(quán)值 Dropout。
單元 Dropout 會(huì)在每輪訓(xùn)練過程中隨機(jī)刪除神經(jīng)元,因此它能降低單元之間的相互依賴關(guān)系,從而防止過擬合。權(quán)值 Dropout 在每一次更新中都會(huì)隨機(jī)刪除權(quán)值矩陣中的權(quán)值。
對(duì)于全連接層,假設(shè)輸入向量為 I、權(quán)值矩陣為 W、輸出向量為 Y、Mask 掩碼 M 服從伯努利分布,那么可以定義上述兩種方法分別為:
單元 Dropout:
權(quán)值 Dropout:
以單元 Dropout 為例,在每輪訓(xùn)練中每個(gè)神經(jīng)元以一定概率被忽略,其實(shí)現(xiàn)方式為在矩陣上逐元素地與一個(gè)服從 Bernoulli 分布的 0-1 掩碼矩陣相乘(如圖 1(a)所示)。
如果想真正地跳過 Dropout 引入的冗余運(yùn)算,就需要額外的 if-else 條件判斷細(xì)粒度控制 GPU。然而,由于 GPU 的 SIMT(單指令多線程)特性,GPU 中的一些處理單元會(huì)處于空閑,GPU 的運(yùn)算資源無法得到充分利用。
如圖 1(b)所示,一條指令將同時(shí)控制 32 個(gè)線程的數(shù)據(jù)流,里面可能有判斷為真的線程,也有判斷為假的線程。一旦 GPU 沿著判斷為真的指令流執(zhí)行,那么所有的線程都會(huì)執(zhí)行乘加運(yùn)算。那些判斷為假的線程的運(yùn)算結(jié)果會(huì)被掩蓋(masked)而不提交;GPU 會(huì)重新執(zhí)行判斷為假的指令流,那么所有線程會(huì)執(zhí)行跳過計(jì)算。那些判斷為真的線程結(jié)果被掩蓋。兩次執(zhí)行結(jié)果最終通過 Mask 合并,提交給存儲(chǔ)器。
圖 1(a)單元 Dropout 的實(shí)現(xiàn)過程;(b)直接避免單元 Dropout 帶來的冗余計(jì)算時(shí),GPU 出現(xiàn) divergence 問題
這種現(xiàn)象在 SIMT 架構(gòu)中被稱為 Divergence,會(huì)帶來額外性能的損失。正因?yàn)?SIMT 架構(gòu)處理分支時(shí)的低效率,在主流的深度學(xué)習(xí)框架中都不對(duì)冗余計(jì)算進(jìn)行跳過運(yùn)算的處理。
3. 方法
本文定義了 Dropout Pattern 的概念。Dropout Pattern 為人為設(shè)計(jì)的有規(guī)律的和結(jié)構(gòu)化的 Mask。若在計(jì)算時(shí)讓 GPU 提前知曉哪些神經(jīng)元或連接將會(huì)被 Drop,在實(shí)際計(jì)算過程中,我們通過告知 GPU 已經(jīng)決定好的 Dropout Patten,讓其不讀取和計(jì)算被 Drop 的有關(guān)數(shù)據(jù)。以此來跳過冗余計(jì)算而不引起 Divergence。
下面我們先在 3.1 和 3.2 節(jié)介紹兩類 Dropout Pattern。結(jié)構(gòu)稀疏性必然導(dǎo)致 Dropout 的隨機(jī)性受損,為此我們?cè)?3.3 節(jié)介紹了一種產(chǎn)生關(guān)于 Dropout Pattern 的概率分布的算法,以此來保證隨機(jī)性。在 3.4 節(jié),我們證明了我們提出的近似隨機(jī) Dropout 與傳統(tǒng)的隨機(jī) Dropout 在統(tǒng)計(jì)學(xué)意義上是等價(jià)的。
3.1 基于行的 Dropout Pattern——Row-based Dropout (RBD)
RDB 是近似傳統(tǒng)的 Dropout 的一種 Pattern。它有規(guī)律的 drop 掉某些神經(jīng)元,并以行為單位對(duì)權(quán)值矩陣進(jìn)行有規(guī)律地刪除,從而減小參與運(yùn)算的矩陣大小。
我們定義兩個(gè)結(jié)構(gòu)參數(shù) dp 和offset 來有規(guī)律地進(jìn)行 Dropout。
dp 表示每隔 dp 行保留一行權(quán)值(每隔 dp 個(gè)神經(jīng)元保留一個(gè),其余的 drop 掉)。offset 表示當(dāng)選定了 dp 后,從第 offset 行開始,按照每隔 dp 行保留一行的規(guī)律,執(zhí)行刪除權(quán)值的操作。
如圖 2 所示,dp=3,offset=1,所以該矩陣從第一行開始每隔三行保留一行。在 DRAM 中保存了完整的權(quán)值矩陣,片上共享存儲(chǔ)(shared memory)可以通過指定取數(shù)的規(guī)律將未被刪除的行被取入,之后運(yùn)算單元(PE)對(duì)取入的數(shù)據(jù)進(jìn)行運(yùn)算,達(dá)到加速的目的。從 GPU 的角度,基于行的 dropout pattern 有利于 GPU 索引數(shù)據(jù),便于加速優(yōu)化。值得注意的是,dp 和 offset 在每輪訓(xùn)練時(shí)都會(huì)變化,詳見 3.3 節(jié)。
圖 2 基于行的 dropout pattern
3.2 基于塊的 dropout pattern——Tile-based Dropout (TBD)
TBD 以塊為單位對(duì)權(quán)值矩陣進(jìn)行刪除,對(duì)應(yīng)的神經(jīng)元間的連接被忽略掉。類似 RBD,我們?nèi)匀欢x兩個(gè)結(jié)構(gòu)參數(shù) dp 和 offset。如圖 3 所示,dp=4,offset=1,該矩陣從第一個(gè)塊開始每隔三個(gè)塊保留一個(gè)塊。基于塊的 dropout pattern 保證了數(shù)據(jù)的規(guī)律性,有助于對(duì) GPU 進(jìn)行優(yōu)化加速。
圖 3 基于塊的 dropout pattern
3.3 基于 SGD 的 Dropout Pattern 查找算法
首先,我們定義了 Global Dropout Rate,它在本文中指的是在一個(gè)訓(xùn)練迭代中有多少比例的神經(jīng)元被 drop 了。其與在隨機(jī) Dropout 中指代每個(gè)神經(jīng)元被 drop 的伯努利分布的概率有一些不同,但是我們證明了在我們的方法中 Global Dropout Rate 等價(jià)于每個(gè)神經(jīng)元的 Dropout Rate。
其次,我們定義了一個(gè)向量,其中第 i 個(gè)元素為結(jié)構(gòu)參數(shù) dp=i 的 Dropout Pattern 中,被 drop 的神經(jīng)元的比例,即。因?yàn)樵?Dropout Pattern 中每隔 dp 個(gè)神經(jīng)元(或權(quán)重矩陣行向量/權(quán)重矩陣的塊)保留一個(gè),因此向量 p_u?的第 i 個(gè)元素為 (i-1) / i。
為了彌補(bǔ)引入 Dropout Pattern 后對(duì) Dropout 隨機(jī)性的損失,我們希望每次訓(xùn)練迭代中采用不同的結(jié)構(gòu)參數(shù)(dp 和 offset)來產(chǎn)生更多的隨機(jī)性,并盡可能地使每個(gè)神經(jīng)元/突觸被 drop 的概率等于原本隨機(jī) Dropout 時(shí)的概率。
為此,本文采用 SGD 梯度下降進(jìn)行局部搜索來獲取關(guān)于結(jié)構(gòu)參數(shù)(dp)的概率密度函數(shù)。是一個(gè)向量,第 i 個(gè)元素表示 dp=i 的 Dropout Pattern 被選中的概率。
因此,為了使得 Global Dropout Rate 逼近隨機(jī) dropout 的 Dropout Rate:p,我們?cè)O(shè)置的 SGD 算法的一個(gè) loss 函數(shù)為。式中 p 為算法的傳入?yún)?shù),表示我們希望的 Global Dropout Rate 是多少。
其次,為了使結(jié)構(gòu)參數(shù)組合盡可能多元化,SGD 算法的另一個(gè)優(yōu)化目標(biāo)為,即概率分布的負(fù)信息熵。
為了同時(shí)實(shí)現(xiàn)上述兩個(gè)優(yōu)化目標(biāo),我們定義 SGD 的最終損失函數(shù)為。其中λ平衡因子。
3.4 統(tǒng)計(jì)學(xué)意義上的等價(jià)性
為了證明近似隨機(jī) Dropout 與傳統(tǒng)的隨機(jī) Dropout 是從統(tǒng)計(jì)學(xué)的角度上等價(jià)的,我們給出了如下證明。
下式是使用近似隨機(jī) dropout 方案時(shí),任意神經(jīng)元被 Drop 的概率(即傳統(tǒng)意義上的 Dropout Rate)。給定一個(gè) Dropout Pattern,一個(gè)神經(jīng)元被選中的概率為該 Dropout Pattern 被選中的概率與該神經(jīng)元在該 Dropout Pattern 下被 Drop 的概率的乘積。根據(jù)全概率公式,對(duì)于所有的 Dropout Pattern 求和,得到每個(gè)神經(jīng)元被 Drop 的概率:
另一方面,從全體上看被 Drop 的神經(jīng)元所占的比例(即 Global Dropout Rate)為每個(gè) Dropout Pattern(由結(jié)構(gòu)參數(shù) dp 決定)被選中的概率與該 Dropout Pattern 下被 Drop 的神經(jīng)元的比例的乘積。由于 Dropout Pattern 分布概率的搜索算法會(huì)令,那么有 Global Dropout Rate:
可以看出,Global Dropout Rate 與單個(gè)神經(jīng)元的 Dropout Rate 相等,且均等于我們 Dropout Pattern 概率分布生成算法的輸入?yún)?shù) p。因此,我們說我們的 Dropout 機(jī)制在整個(gè)訓(xùn)練過程中,在統(tǒng)計(jì)學(xué)意義上和隨機(jī) Dropout 機(jī)制是等價(jià)的。
4. 實(shí)驗(yàn)
我們將此方法運(yùn)用在一個(gè)四層 MLP 網(wǎng)絡(luò)的訓(xùn)練中,使用 MNIST 數(shù)據(jù)集測(cè)試該方法的性能。表 1 為實(shí)驗(yàn)結(jié)果,隨著網(wǎng)絡(luò)尺寸的增大,加速比逐漸提高。與傳統(tǒng)方法相比,最高的加速比可達(dá)到 2.2X 左右。所有的準(zhǔn)確率損失都保持在 0.5% 之內(nèi)。
表 1 不同網(wǎng)絡(luò)的準(zhǔn)確率及加速比
我們還將此方法運(yùn)用在 LSTM 的訓(xùn)練中,使用 Penn Treebank 數(shù)據(jù)集訓(xùn)練語言模型。圖 4 為使用三層 LSTM+MLP 的實(shí)驗(yàn)結(jié)果。在 dropout rate 為 0.7 的情況下,RBD 下的 test perplexity 只增加了 0.04,訓(xùn)練速度加速了 1.6 倍,極大地降低了訓(xùn)練所消耗的時(shí)間。
圖 4 基于 PTB 數(shù)據(jù)集,LSTM 網(wǎng)絡(luò)的準(zhǔn)確率及加速比
5. 結(jié)語
我們提出了近似隨機(jī) Dropout 以替代傳統(tǒng)的隨機(jī) Dropout。通過減小 DNN 訓(xùn)練中實(shí)際參與運(yùn)算的參數(shù)與輸入矩陣的尺寸,減少了 GPU 的運(yùn)算量和數(shù)據(jù)搬移,從而達(dá)到加速 DNN 訓(xùn)練過程的目的。同時(shí)我們提出了基于 SGD 的 Dropout Pattern 搜索算法,使每個(gè)神經(jīng)元的 dropout rate 近似的等于預(yù)設(shè)值,從而保證了準(zhǔn)確率和收斂性。
Reference
Han S, Mao H, Dally W J. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding[J]. arXiv preprint arXiv:1510.00149, 2015.
Wen W, Wu C, Wang Y, et al. Learning structured sparsity in deep neural networks[C]. Advances in Neural Information Processing Systems. 2016: 2074-2082.
N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskever, and R. Salakhut- dinov,「Dropout: a simple way to prevent neural networks from overfit- ting,」Journal of Machine Learning Research, vol. 15, no. 1, pp. 1929– 1958, 2014.?
L. Wan, M. D. Zeiler, S. Zhang, Y. Lecun, and R. Fergus,「Regulariza- tion of neural networks using dropconnect,」in International Conference on Machine Learning, pp. 1058–1066, 2013.?
本文為機(jī)器之心發(fā)布,轉(zhuǎn)載請(qǐng)聯(lián)系本公眾號(hào)獲得授權(quán)。
?------------------------------------------------
加入機(jī)器之心(全職記者 / 實(shí)習(xí)生):hr@jiqizhixin.com
投稿或?qū)で髨?bào)道:content@jiqizhixin.com
廣告 & 商務(wù)合作:bd@jiqizhixin.com
總結(jié)
以上是生活随笔為你收集整理的上海交大:基于近似随机Dropout的LSTM训练加速的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Geoff Hinton:我反对谷歌军事
- 下一篇: 评审不给钱,看论文还要涨价?UCLA:我