根據(jù)百度(Baidu)深度學(xué)習(xí)(deep learning)資深研究人員針對(duì)最新加速器進(jìn)行的測(cè)試結(jié)果顯示,現(xiàn)有的加速器芯片和軟件仍然存在一些美中不足之處,應(yīng)該盡快迎頭趕上。
這些結(jié)果有一部份來自于使用DeepBench測(cè)試。DeepBench是使用32位浮點(diǎn)數(shù)學(xué)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的開放來源基準(zhǔn)。號(hào)稱“中國(guó)Google”的百度于2016年9月發(fā)布DeepBench,并在去年6月進(jìn)行了更新,使其涵蓋推論工作以及使用16位數(shù)學(xué)運(yùn)算。 20180206-deepbench-1DeepBench利用神經(jīng)網(wǎng)絡(luò)庫(kù)測(cè)試不同硬件的基本運(yùn)算效能(來源:Baidu)
百度硅谷人工智能實(shí)驗(yàn)室(Silicon Valley AI Lab)資深研究員Greg Daimos解釋。在一些像矩陣乘法這樣的底層作業(yè)中,具有專用硬件的芯片(例如Nvidia Volta GPU的張量核心)能夠提供“數(shù)百TeraFlops (每秒1兆次浮點(diǎn)運(yùn)算)...比前一代的5-10TFLOPS更快幾個(gè)數(shù)量級(jí)。”
然而,他說:“在實(shí)際應(yīng)用中所使用的一些底層作業(yè)并沒有足夠的(數(shù)據(jù))區(qū)域性,讓這些專用處理器充份發(fā)揮效能,所以我們必須為其適度地加速,或者改變算法。”
百度研究小組目前正探索兩種方式使用新芯片獲得更大回報(bào)。一方面,研究人員在其算法中開啟控制功能,以便同時(shí)接收饋入數(shù)據(jù),期望能提高10倍的資料平行性。
另一條途徑是讓所有的模型看起來更像一般用于成像應(yīng)用的卷積神經(jīng)網(wǎng)絡(luò)(CNN)。Daimos說,CNN比一般用于文本或音頻應(yīng)用(app)等循序數(shù)據(jù)的遞歸神經(jīng)網(wǎng)絡(luò)(RNN)具有更多區(qū)域性。 GregDiamosBaiduwcap 研究人員在從文本產(chǎn)生音頻的百度模型中,“以CNN層取代RNN層堆棧”,使得“運(yùn)算密度提高了40倍”,從而帶來了更好的新硬件利用率。他強(qiáng)調(diào),“我們必須透過編寫的所有應(yīng)用程序來檢視是否可以普遍使用這種方法,或只是將其用于語(yǔ)音合成。”
目前尚不清楚這兩種方法的研究成果何時(shí)可用于生產(chǎn)系統(tǒng)。同時(shí),Daimos也分享了硬件測(cè)試的其它觀察結(jié)果。
編程、內(nèi)存與靈活性
雖然百度取得將近90%的Nvidia Volta最佳利用率,但編程GPU并非易事。Diamos說,該芯片“有著成千上萬(wàn)個(gè)線程,你必須在一個(gè)問題上進(jìn)行協(xié)調(diào)和同步......編寫這樣的程序代碼并不容易,而當(dāng)面對(duì)的是像張量核心這樣的對(duì)象時(shí)就更困難了。”
的確,Diamos表示,“讓這些任務(wù)變得更易于編程,正是我們面臨的最大挑戰(zhàn)......而其中最大的問題就出在內(nèi)存。我們想要執(zhí)行更大的神經(jīng)網(wǎng)絡(luò),但內(nèi)存比預(yù)期地更快耗盡,這并不是透過打造更好的處理器就能解決的問題。”
他補(bǔ)充說,該問題的一部份答案在于尋找能與新興內(nèi)存搭配作業(yè)的技術(shù),例如許多最新加速器所使用的高帶寬內(nèi)存(HBM)芯片堆棧等。
在百度的測(cè)試中,英特爾(Intel)多核心x86處理器Xeon Phi的利用率甚至高于Nvidia Volta。然而,英特爾的芯片還沒有任何張量專用核心,因此該芯片在神經(jīng)網(wǎng)絡(luò)作業(yè)上的性能不若Volta。 20180206-nvidia-volta-1Nvidia Volta配備640個(gè)Tensor核心,每秒提供超過100TFLOPS的深度學(xué)習(xí)效能(來源:Nvidia)
直接進(jìn)行比較并不容易,因?yàn)椴煌男酒ǔJ褂貌煌倪\(yùn)算格式。例如,Xeon Phi采用定點(diǎn)數(shù)學(xué),而Volta則混合使用16位和32位浮點(diǎn)運(yùn)算。
Diamos說:“英特爾芯片的測(cè)試結(jié)果顯示,對(duì)于一些CNN來說,定點(diǎn)數(shù)學(xué)運(yùn)算沒問題。然而Nvidia發(fā)布的結(jié)果顯示在影像和語(yǔ)音應(yīng)用上表現(xiàn)良好,所以我們?nèi)〉昧艘恍?shù)據(jù),但還需要進(jìn)行更多研究。”
他稱贊AMD最新的GPU及其新的機(jī)器學(xué)習(xí)開放軟件是正確的發(fā)展方向,但指出他們也缺乏張量核心。他表示,對(duì)于英特爾Nirvana和Graphcore Colossus等芯片“沒啥可分享的消息”,也許是因?yàn)榘俣瓤赡苓€在測(cè)試其預(yù)先發(fā)布的樣片。
擁有大量的矩陣乘法單元通常是一件好事。但是,Volta、Nervana和Colossus處理器則以充滿矩陣乘法數(shù)組的芯片將其性能指針推進(jìn)到或接近其工藝節(jié)點(diǎn)所能實(shí)現(xiàn)的極限。
他說:“最終你的收益會(huì)遞減......讓你不得不放棄靈活度,以便為更多不同的工作負(fù)載進(jìn)行更精密的運(yùn)算。因此,我們應(yīng)該找到曲線的轉(zhuǎn)折點(diǎn),讓芯片不僅在CNN上運(yùn)作良好,在其它方面也表現(xiàn)出色。”
神經(jīng)網(wǎng)絡(luò)軟件架構(gòu)各執(zhí)一端
除了底層數(shù)學(xué)之外,加速器還可能缺少優(yōu)化,因?yàn)樗鼈儾⒉煌耆私馍疃葘W(xué)習(xí)應(yīng)用的所有范圍。
當(dāng)今用于設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)的競(jìng)爭(zhēng)軟件架構(gòu)各執(zhí)一端,可能會(huì)讓情況變得復(fù)雜。遺憾的是,跨不同架構(gòu)建立標(biāo)準(zhǔn)規(guī)格的努力也是各自為政,Diamos指出他的團(tuán)隊(duì)注意到目前有11種開發(fā)中規(guī)格分別處于不同的完善階段。
他說,由Facebook和微軟(Microsoft)發(fā)起的開放神經(jīng)網(wǎng)絡(luò)交換格式(ONNX)“正朝著正確的方向發(fā)展,但仍缺乏一些像是如何表達(dá)控制流程和反向傳播的特性。”
最近有20多家廠商(主要是半導(dǎo)體供應(yīng)商)宣布了神經(jīng)網(wǎng)絡(luò)交換格式(Neural Network Exchange Format),他們認(rèn)為該格式對(duì)芯片廠商來說更好。Diamos說:“要搞清這些格式中是否有些能成功實(shí)施可能還為時(shí)過早,但我們正踏上一條更好的發(fā)展道路,確實(shí)也需要其中某一種規(guī)格勝出。”
他補(bǔ)充說:“在2014年,我當(dāng)時(shí)認(rèn)為未來將會(huì)看到人工智能(AI)架構(gòu)的融合,就像如今在繪圖API中所看到的,但人們?nèi)匀辉诎l(fā)明新的神經(jīng)網(wǎng)絡(luò)類型,有時(shí)還會(huì)創(chuàng)造新的原型,所以它可能會(huì)像編程語(yǔ)言的多樣性一樣不斷地與時(shí)俱進(jìn)。”
也就是說,Daimos仍然看好深度學(xué)習(xí)。在今年稍早時(shí),他的團(tuán)隊(duì)發(fā)表研究指出,這一領(lǐng)域尚未成熟,預(yù)計(jì)接下來將會(huì)看到更多的突破。