百度聯(lián)合英偉達(dá)發(fā)布最新論文:如何讓深度學(xué)習(xí)效率事半功倍?

雷鋒網(wǎng)消息,在10月10日-11日在加拿大蒙特利爾召開的Rework Deep Learning Summit會(huì)議上,百度高級(jí)研究員Greg Diamos介紹了由百度硅谷AI實(shí)驗(yàn)室(SVAIL)與NVIDIA合作的最新成果:一種名為“混合精度訓(xùn)練”(Mixed Precision Training,簡(jiǎn)稱MPT)的深度學(xué)習(xí)模型。

百度聯(lián)合英偉達(dá)發(fā)布最新論文:使深度學(xué)習(xí)效率事半功倍的混合精度訓(xùn)練

Greg Diamos在Rework Deep Learning Summit上演講中。

據(jù)了解,大多數(shù)的深度學(xué)習(xí)模型使用的是32位單精度浮點(diǎn)數(shù)(FP32)來(lái)進(jìn)行訓(xùn)練,而混合精度訓(xùn)練的方法則通過(guò)16位浮點(diǎn)數(shù)(FP16)進(jìn)行深度學(xué)習(xí)模型訓(xùn)練,從而減少了訓(xùn)練深度學(xué)習(xí)模型所需的內(nèi)存,同時(shí)由于FP16的運(yùn)算比FP32運(yùn)算更快,從而也進(jìn)一步提高了硬件效率。

通過(guò)用半精度運(yùn)算替代全精度運(yùn)算來(lái)提高效率,這一技術(shù)原理聽起來(lái)很簡(jiǎn)單明了,但將其付諸實(shí)施并不像聽起來(lái)那么簡(jiǎn)單。此前也有團(tuán)隊(duì)嘗試過(guò)使用更低精度進(jìn)行混合計(jì)算(如二進(jìn)制,甚至4-bit),但問(wèn)題在于這往往不可避免地造成結(jié)果的準(zhǔn)確性和在主要網(wǎng)絡(luò)變換上的損失,而百度的MPT模型不僅解決了這一問(wèn)題,更重要的是MPT無(wú)需改變網(wǎng)絡(luò)超參數(shù)(雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))注:超參數(shù)指Bayes統(tǒng)計(jì)理論先驗(yàn)分布的參數(shù), 它不像其他的參數(shù)可以用統(tǒng)計(jì)量估計(jì)),并保持與單精度相同的準(zhǔn)確性。

在百度研究院博客中,百度進(jìn)一步解釋了這一模型的原理:

深度學(xué)習(xí)模型由各種層(Layer)組成,包括完全連接的層,卷積層和反復(fù)層。層與層之間的轉(zhuǎn)換可以通過(guò)通用矩陣乘法(GEMM)來(lái)實(shí)現(xiàn),而對(duì)深度學(xué)習(xí)訓(xùn)練的過(guò)程其實(shí)很大程度是GEMM計(jì)算的過(guò)程。

如下圖所示,GEMM操作可以分解為若干個(gè)幾個(gè)乘法運(yùn)算和后續(xù)的加法運(yùn)算。

百度聯(lián)合英偉達(dá)發(fā)布最新論文:使深度學(xué)習(xí)效率事半功倍的混合精度訓(xùn)練

當(dāng)使用FP16代表神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)時(shí),GEMM操作的輸入矩陣由16位數(shù)組成。我們需要可以使用16位計(jì)算執(zhí)行乘法的硬件,但是需要使用32位計(jì)算和存儲(chǔ)來(lái)執(zhí)行加法。使用少于32位的加法操作訓(xùn)練大型深度學(xué)習(xí)模型會(huì)非常困難。

為此,百度不僅與NVIDIA共同解決了硬件支持的問(wèn)題,雙方還對(duì)訓(xùn)練流程進(jìn)行了一些修改,模型中的輸入,權(quán)重,梯度和激活以FP16格式表示。但是如之前介紹,與FP32數(shù)字相比,半精度數(shù)字的范圍有限,只是通過(guò)簡(jiǎn)單地更改存儲(chǔ)格式,某些模型無(wú)法達(dá)到與單精度相同的精度。為此,NVIDIA和百度采用了兩種關(guān)鍵技術(shù):

第一項(xiàng)關(guān)鍵技術(shù)被稱為“混合精密鑰匙”(mixed precision key)。如下圖所示,在MT模型中仍然保留FP32格式的主副本,將FP16用于正向和反向傳播,優(yōu)化器中的梯度更新將被添加到主FP32副本當(dāng)中,該FP32副本被簡(jiǎn)化為一個(gè)FP16副本在訓(xùn)練期間使用,這個(gè)過(guò)程在每次訓(xùn)練迭代中重復(fù),直至模型收斂且足以恢復(fù)損失的精度,從而達(dá)到較低內(nèi)存使用、內(nèi)存帶寬壓力更低和更快速執(zhí)行的優(yōu)點(diǎn)。

百度聯(lián)合英偉達(dá)發(fā)布最新論文:使深度學(xué)習(xí)效率事半功倍的混合精度訓(xùn)練

深度學(xué)習(xí)模型的混合精度訓(xùn)練示意圖

第二種關(guān)鍵技術(shù)則是“損耗縮放”(loss-scaling)。該技術(shù)可以夠恢復(fù)一些小數(shù)值的梯度。在訓(xùn)練期間,一些權(quán)重梯度具有非常小的指數(shù),其FP16格式可能會(huì)變?yōu)榱?。為了克服這個(gè)問(wèn)題,我們使用縮放因子在反向傳播開始時(shí)縮放損失,通過(guò)連鎖規(guī)則,梯度也逐漸擴(kuò)大,并在FP16中可表示。在將其更新應(yīng)用于權(quán)重之前,梯度確實(shí)需要縮?。欢鵀榱嘶謴?fù)某些型號(hào)的精度損失,必須進(jìn)行損耗調(diào)整。關(guān)于這兩種技術(shù)的更多細(xì)節(jié)可以在我們的論文中找到。

百度已使用這種方法使用FP16訓(xùn)練其DeepSpeech 2模型。結(jié)果表明,對(duì)于英文和普通話模型和數(shù)據(jù)集和使用相同的超參數(shù)、模型架構(gòu)進(jìn)行混合精度訓(xùn)練實(shí)驗(yàn),可以得到到FP32訓(xùn)練的精度。

同時(shí),使用FP16訓(xùn)練減少了深度學(xué)習(xí)模型的內(nèi)存需求,使得百度能夠使用一半的處理器來(lái)訓(xùn)練這些模型,從而有效地加倍了集群大小。此外,F(xiàn)P16算術(shù)的峰值性能(如上所述)通常高于單精度計(jì)算。

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2017-10-13
百度聯(lián)合英偉達(dá)發(fā)布最新論文:如何讓深度學(xué)習(xí)效率事半功倍?
雷鋒網(wǎng)消息,在10月10日-11日在加拿大蒙特利爾召開的Rework Deep Learning Summit會(huì)議上,百度高級(jí)研究員Greg Diamos介紹了

長(zhǎng)按掃碼 閱讀全文