在深度學(xué)習(xí)領(lǐng)域,GPU加速是應(yīng)用的主流。當(dāng)然還有一些人會(huì)獨(dú)辟蹊徑的選擇一些“非主流”的產(chǎn)品,比如FPGA。
作為新興的加速代表,F(xiàn)PGA與人工智能這個(gè)名字緊緊的捆綁在一起,業(yè)界對(duì)于FPGA的前景也充滿期待。去年5月,英特爾宣布以167億美元收購(gòu)FPGA生產(chǎn)商Altera,這也說(shuō)明了這個(gè)芯片巨頭對(duì)于FPGA市場(chǎng)發(fā)展的強(qiáng)大信心。
但是,對(duì)于許多人來(lái)說(shuō),F(xiàn)PGA的意義何在,F(xiàn)PGA能夠應(yīng)用于生產(chǎn)場(chǎng)景中,這些問(wèn)題都是他們存在于心底的疑惑。而對(duì)于FPGA的許多,筆者日前有幸聆聽了英特爾PSG BDM部門劉斌博士的演講,對(duì)于FPGA的認(rèn)識(shí)有了進(jìn)一步的加深。
FPGA存在的意義是什么?
用戶可以從Caffe或者從TensorFlow開始Machine Learning的設(shè)計(jì),開始神經(jīng)網(wǎng)絡(luò)CNN的設(shè)計(jì),在設(shè)計(jì)之后不需要真的了解FPGA是怎么開發(fā)的,F(xiàn)PGA的板卡是怎么開發(fā)的,F(xiàn)PGA用什么樣的硬件描述語(yǔ)言,你就可以把你的神經(jīng)網(wǎng)絡(luò)放進(jìn)FPGA里,得到FPGA的速度和功耗上的優(yōu)勢(shì),這個(gè)是我們戰(zhàn)略里面,F(xiàn)PGA所扮演的角色。
為什么FPGA比較適合用于深度學(xué)習(xí)
首先FPGA是一個(gè)可編程的硬件,和我們大部分的處理器不同。因?yàn)樘幚砥鞯挠布Y(jié)構(gòu)是固定的。FPGA雖然有非常穩(wěn)定的底層結(jié)構(gòu)但是我們可以組合成非常多類型的數(shù)字電路,并且在里面可以利用一些硬核構(gòu)成一些相對(duì)比較高層的計(jì)算結(jié)構(gòu)。
首先FPGA的能效比非常好,其次FPGA有非常好的可編程性,即使在線的情況下,你可以更新你的硬件結(jié)構(gòu)。最后,F(xiàn)PGA本身因?yàn)榫邆漕愃艻/O或者說(shuō)片上系統(tǒng)的部分功能,可以提供一些基礎(chǔ)架構(gòu)上的靈活性。
英特爾的FPGA相關(guān)產(chǎn)品
英特爾(Altera)傳統(tǒng)來(lái)講是一個(gè)半導(dǎo)體的廠商,所以在FPGA這個(gè)產(chǎn)品線里面我們其實(shí)包括以下幾種類型產(chǎn)品。半導(dǎo)體這一側(cè)我們主要有叫Max的CPLD系列,Cyclone, Arria 和Stratix的FPGA產(chǎn)品系列,這個(gè)是從低到高的。
Cyclone是比較低端的,Arria在中間,Stratix是比較高端的產(chǎn)品系列。每個(gè)產(chǎn)品系列里面又有自己的不同的具體的型號(hào), 按照規(guī)模來(lái)劃分,那應(yīng)用的場(chǎng)景會(huì)不太一樣。
Cyclone可能是應(yīng)用在更工業(yè)化的更嵌入設(shè)備應(yīng)用的場(chǎng)景里,Arria是一個(gè)功耗成本和性能的一個(gè)平衡產(chǎn)品,Stratix是一個(gè)超強(qiáng)的計(jì)算能力的產(chǎn)品。我們今年年底正在推出Statix 10的工程樣片,第一個(gè)工程樣片它的浮點(diǎn)計(jì)算能力達(dá)到9.2個(gè)Tflop,9個(gè)Tflops的產(chǎn)品。
Enpirion是我們另外一條產(chǎn)品線,主要是支持一個(gè)非常小尺寸的電源的工作,在server或者是在計(jì)算領(lǐng)域有很大應(yīng)用。但產(chǎn)品來(lái)講除了器件以外,我們包括了開發(fā)工具,也包括板卡和IP。
如何利用一顆FPGA實(shí)現(xiàn)CNN加速
我們選擇CNN作為第一個(gè)切入點(diǎn),因?yàn)镃NN的網(wǎng)絡(luò)運(yùn)用非常廣泛;另外CNN的網(wǎng)絡(luò)也是深度學(xué)習(xí)一個(gè)典型的情況,會(huì)不停地往前演進(jìn)。
FPGA效率達(dá)到最高的基本原則是,我里面剛剛講到的乘加單元、存儲(chǔ)器單元,他們能夠盡可能的被使用到。
FPGA在CNN領(lǐng)域面臨的3大挑戰(zhàn)
因?yàn)镕PGA還很新,那進(jìn)入這個(gè)市場(chǎng)第一個(gè)挑戰(zhàn)是怎么樣讓FPGA工作起來(lái)。
第二個(gè)挑戰(zhàn)是機(jī)器學(xué)習(xí)是一個(gè)快變的一個(gè)技術(shù)領(lǐng)域,所以他的生態(tài)壞境、社區(qū)、軟件都是非常重要的一個(gè)方面。那我們作為后來(lái)者,特別是跟這種FPGA的團(tuán)隊(duì)
第三個(gè)是FPGA還有一些原生的特點(diǎn),比如開發(fā)周期是比較長(zhǎng)。
在演講的最后,在談到為何今天應(yīng)該采用英特爾FPGA來(lái)實(shí)現(xiàn)深度學(xué)習(xí)的時(shí)候,劉斌表示:“英特爾FPGA是技術(shù)和價(jià)值之選;英特爾機(jī)器學(xué)習(xí)戰(zhàn)略將先進(jìn)的器件(包括FPGA)與優(yōu)化的軟件庫(kù),高階的框架,以及數(shù)據(jù)分析平臺(tái)整合在一起;英特爾FPGA支持高效的OpenCL編程。”