眾所周知,并非所有進(jìn)程都能在CPU上高效運(yùn)行。游戲和視頻處理需要專門的硬件——圖形處理器(GPU),信號(hào)處理則需要像數(shù)字信號(hào)處理器(DSP)等其它獨(dú)立的架構(gòu)。人們一直在設(shè)計(jì)用于學(xué)習(xí)(learning)的專用硬件,例如,2016年3月與李世石對(duì)陣的AlphaGo計(jì)算機(jī)使用了由1920個(gè)CPU和280個(gè)GPU組成的分布式計(jì)算模塊。而隨著英偉達(dá)發(fā)布新一代的Pascal GPU,人們也開(kāi)始對(duì)深度學(xué)習(xí)的軟件和硬件有了同等的關(guān)注。接下來(lái),讓我們重點(diǎn)來(lái)看深度學(xué)習(xí)的硬件架構(gòu)。
對(duì)深度學(xué)習(xí)硬件平臺(tái)的要求
要想明白我們需要怎樣的硬件,必須了解深度學(xué)習(xí)的工作原理。首先在表層上,我們有一個(gè)巨大的數(shù)據(jù)集,并選定了一種深度學(xué)習(xí)模型。每個(gè)模型都有一些內(nèi)部參數(shù)需要調(diào)整,以便學(xué)習(xí)數(shù)據(jù)。而這種參數(shù)調(diào)整實(shí)際上可以歸結(jié)為優(yōu)化問(wèn)題,在調(diào)整這些參數(shù)時(shí),就相當(dāng)于在優(yōu)化特定的約束條件。 百度的硅谷人工智能實(shí)驗(yàn)室(SVAIL)已經(jīng)為深度學(xué)習(xí)硬件提出了DeepBench基準(zhǔn),這一基準(zhǔn)著重衡量的是基本計(jì)算的硬件性能,而不是學(xué)習(xí)模型的表現(xiàn)。這種方法旨在找到使計(jì)算變慢或低效的瓶頸。 因此,重點(diǎn)在于設(shè)計(jì)一個(gè)對(duì)于深層神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基本操作執(zhí)行效果最佳的架構(gòu)。那么基本操作有哪些呢?現(xiàn)在的深度學(xué)習(xí)算法主要包括卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)?;谶@些算法,DeepBench提出以下四種基本運(yùn)算:
矩陣相乘(Matrix MulTIplicaTIon)——幾乎所有的深度學(xué)習(xí)模型都包含這一運(yùn)算,它的計(jì)算十分密集。
卷積(ConvoluTIon)——這是另一個(gè)常用的運(yùn)算,占用了模型中大部分的每秒浮點(diǎn)運(yùn)算(浮點(diǎn)/秒)。
循環(huán)層(Recurrent Layers )——模型中的反饋層,并且基本上是前兩個(gè)運(yùn)算的組合。
All Reduce——這是一個(gè)在優(yōu)化前對(duì)學(xué)習(xí)到的參數(shù)進(jìn)行傳遞或解析的運(yùn)算序列。在跨硬件分布的深度學(xué)習(xí)網(wǎng)絡(luò)上執(zhí)行同步優(yōu)化時(shí)(如AlphaGo的例子),這一操作尤其有效。
除此之外,深度學(xué)習(xí)的硬件加速器需要具備數(shù)據(jù)級(jí)別和流程化的并行性、多線程和高內(nèi)存帶寬等特性。 另外,由于數(shù)據(jù)的訓(xùn)練時(shí)間很長(zhǎng),所以硬件架構(gòu)必須低功耗。 因此,效能功耗比(Performance per Watt)是硬件架構(gòu)的評(píng)估標(biāo)準(zhǔn)之一。
當(dāng)前趨勢(shì)與未來(lái)走向 英偉達(dá)的GPU在深度學(xué)習(xí)硬件市場(chǎng)上一直處于領(lǐng)先地位。圖片:英偉達(dá)
英偉達(dá)以其大規(guī)模的并行GPU和專用GPU編程框架CUDA主導(dǎo)著當(dāng)前的深度學(xué)習(xí)市場(chǎng)。但是越來(lái)越多的公司開(kāi)發(fā)出了用于深度學(xué)習(xí)的加速硬件,比如谷歌的張量處理單元(TPU/Tensor Processing Unit)、英特爾的Xeon Phi Knight‘s Landing,以及高通的神經(jīng)網(wǎng)絡(luò)處理器(NNU/Neural Network Processor)。像Teradeep這樣的公司現(xiàn)在開(kāi)始使用FPGA(現(xiàn)場(chǎng)可編程門陣列),因?yàn)樗鼈兊哪苄П菺PU的高出10倍。 FPGA更靈活、可擴(kuò)展、并且效能功耗比更高。 但是對(duì)FPGA編程需要特定的硬件知識(shí),因此近來(lái)也有對(duì)軟件層面的FPGA編程模型的開(kāi)發(fā)。
此外,一直以來(lái)廣為人所接受的理念是,適合所有模型的統(tǒng)一架構(gòu)是不存在的,因?yàn)椴煌哪P托枰煌挠布幚砑軜?gòu)。 而研究人員正在努力,希望FPGA的廣泛使用能夠推翻這一說(shuō)法。
大多數(shù)深度學(xué)習(xí)軟件框架(如TensorFlow、Torch、Theano、CNTK)是開(kāi)源的,而Facebook最近也開(kāi)放其 Big Sur 深度學(xué)習(xí)硬件平臺(tái),因此在不久的將來(lái),我們應(yīng)該會(huì)看到更多深度學(xué)習(xí)的開(kāi)源硬件架構(gòu) 。