《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > FPGA與深度學習的關(guān)系究竟是什么

FPGA與深度學習的關(guān)系究竟是什么

2018-07-04
關(guān)鍵詞: 微軟 芯片 人工智能 FPGA

  人工智能的風潮從技術(shù)一路蔓延到硬件,,讓“芯片”成為今年行業(yè)里盛極一時的主題。人們關(guān)注通用芯片領(lǐng)域里CPU和GPU不斷刷新的基準(benchmark),,更對專用芯片(ASIC)領(lǐng)域不同場景下不斷問世的解決方案表示出了空前的熱情。

  而眾所周知,,在專用芯片與通用芯片中間,,還有一個更為靈活,也更為神秘的領(lǐng)域:FPGA,。無論是英特爾天價的收購還是微軟與 IBM 雄心勃勃的計劃,,都讓人對其更加好奇。而“萬能芯片”的名稱,,以及多樣化的職責范圍:它可以是智能手機里不起眼的一個小組件,,也可以是數(shù)千美金一塊的開發(fā)板,也讓人對其真面目更加疑惑,。

  FPGA 與深度學習的關(guān)系究竟是什么,?它適合加速何種類型的運算,?適合應用于何種場景,?6 月,機器之心采訪了美國伊利諾伊大學香檳分校電氣與計算機工程系(UIUC ECE)教授,、深度學習算法硬件加速解決方案創(chuàng)業(yè)公司 Inspirit IoT 創(chuàng)始人陳德銘,,與他聊了聊“萬能芯片”FPGA 在深度學習領(lǐng)域的用法。陳教授于近期宣布兼任國內(nèi)計算機視覺領(lǐng)域創(chuàng)業(yè)公司觸景無限的首席科學家,。

  以下為采訪實錄,。

  機器之心:從算法的角度,F(xiàn)PGA 適合于加速哪些運算,?

  FPGA 的優(yōu)勢在于可定制化的并行,。它可以為了特定算法專門定制邏輯單元。例如,,算法中需要完成一個開三次方的運算,,在通用芯片上需要一長串指令實現(xiàn)它,但是在 FPGA 上可以為這個特定運算設(shè)計一個單元,。

  定制化的一個“極限”的例子是,,如果能夠把神經(jīng)網(wǎng)絡(luò)中的參數(shù)全部二值化、特征圖(feature map)也全部二值化,,那么甚至可以不用乘法器,,而是用異或門(XOR gate)完成計算,會有異常強大的表現(xiàn),。即使不全部二值化,,因為全部二值化會讓準確度明顯下降,只要合理使用各種低位寬的運算,,仍可以讓 FPGA 大放異彩,。比如在我們最近和 IBM 合作的 ELB-NN 項目中,,我們可以在功耗低于 5 瓦的情形下,讓神經(jīng)網(wǎng)絡(luò)在 FPGA 上的算力達到 10.3 TOPS,,同時依然維持非常高的準確度,。

  另一個例子是微軟的 Brainwave FPGA 項目,通過使用特殊的 8-bit 的浮點運算,,可以在高容量的 FPGA 上達到 40 TOPS,。

  值得一提的是,LSTM 等神經(jīng)網(wǎng)絡(luò)每一步操作都很相似,,這種整體運算過程是序列的算法也非常適用于用 FPGA 進行加速,。FPGA 非常擅長處理流數(shù)據(jù),可以設(shè)計流水線機制,,使得在運算過程中不需要將中間數(shù)據(jù)存入內(nèi)存而是直接送到下一步進行操作,。

  機器之心:相比于其他芯片,F(xiàn)PGA 在實現(xiàn)深度學習模型時有哪些結(jié)構(gòu)帶來的優(yōu)勢,?

  FPGA 的引腳比一般的芯片多,,同時它的邏輯單元可以完全根據(jù)算法要求來重組從而產(chǎn)生定制化的數(shù)據(jù)通路(datapath),因此非常適合處理大批量流數(shù)據(jù),。它不像 GPU 一樣需要反復調(diào)取片外存儲中的數(shù)據(jù),,理想狀態(tài)時,只要數(shù)據(jù)一次性流進去再流出來,,算法就完成了,,因此,F(xiàn)PGA 非常適合具有低延遲需求的任務(wù),。

  另外 FPGA 的速度快,、功率低的特點也讓它在能耗方面相比于 CPU、GPU 也有很大優(yōu)勢,。

  比如我們在 FPGA 上實現(xiàn)了長期循環(huán)卷積網(wǎng)絡(luò)(Long-term Recurrent ConvoluTIonal Network),,它的速度 ( latency ) 比 GPU 快 3.1 倍,F(xiàn)PGA 的功率比 GPU 小 5.6 倍,,最終整體能耗降低 17 倍左右,。

  機器之心:從行業(yè)的角度,F(xiàn)PGA 都能夠用于哪些機器學習與深度學習任務(wù)的加速,?

  在終端,,有些自動駕駛公司的車上系統(tǒng)中就采用了 FPGA 完成一些實時檢測識別任務(wù)。例如,,我曾經(jīng)代表 UIUC 與小鵬汽車的副總裁,、機器學習專家谷俊麗女士交流,她提到,,F(xiàn)PGA 可以憑借信號處理和低能耗方面的優(yōu)勢,,成為一個可靠的第二系統(tǒng),,在汽車的第一系統(tǒng)出現(xiàn)失誤的時候,作為安全模式介入進來,。IoT 方面的應用就更多了,,無論是安防還是智能家居,F(xiàn)PGA 都會有機會進入市場,。

  在云端,,也有結(jié)合 FPGA 的巨大空間。之前,,微軟的 Project Catapult 就搭建起了大規(guī)模的 FPGA 云服務(wù)器?,F(xiàn)在 Catapult 正在運行搜索和數(shù)據(jù)存儲方面的運算,同時,,他們也在積極地思考如何把機器學習運算部署在上面,,包括是否能將 FPGA 作為其 Azure 云的后端支持。亞馬遜 AWS 的 FPGA 云計算已經(jīng)很有規(guī)模了,,并且一直在大力推動之中,。最近,國內(nèi)創(chuàng)業(yè)公司深鑒也開始結(jié)合華為的云端 FPGA 來進行深度學習算法的加速,,特別在基于 LSTM 的語音識別上非常有優(yōu)勢,。

  機器之心:能否介紹一下使用高層次綜合(HLS)自動生成寄存器級(RTL)實現(xiàn)與手工用硬件描述語言(HDL)進行實現(xiàn)的區(qū)別,?

  對于深度學習相關(guān)算法來說,,HLS 是有優(yōu)勢的。

  當你閱讀用高層語言描述的深度學習模型時,,你會發(fā)現(xiàn)模型是有規(guī)律的,。比如,卷積操作在 C 語言里就是一個六層的嵌套循環(huán),。此時我就可以針對這個循環(huán)開發(fā)一個 IP 核,,確定如何進行流水線設(shè)計(pipelining),如何分配存儲等,,然后再將 IP 核用在 FPGA 上,,進而讓神經(jīng)網(wǎng)絡(luò)中的所有卷積層來共享 IP 核即可。

  此時設(shè)計的優(yōu)化要點是 IP 核的大小,、是否需要多個 IP 核并行運算等,。這是一個非常適用 HLS 的場景,因為 HLS 可以自動化地,、快速地探索不同的解決方案,。如果采用 RTL,則需要很多工程師,,組成多個團隊,,每個團隊根據(jù)工程師過去的設(shè)計經(jīng)驗著重探索一個方向,,這是一個成本非常高的過程。

  RTL 是一種描述硬件的空間的關(guān)系和邏輯時序等邏輯關(guān)系的硬件描述語言,。這是一門難學的語言,,能夠熟練掌握的從業(yè)者也不多,開發(fā)和測試都很慢,??鋸堻c說,如果 HLS 開發(fā)周期以天和周來計算,,那么 RTL 通常是以月和年,。

  從最終結(jié)果角度講,RTL 完全手工調(diào)制的解決方案是很可能比 HLS 自動生成的方案效果好的,。我們曾經(jīng)做過比較,,在深度學習的情境下,HLS 和 RTL 方法的差距在 10% 左右,。

  因此,,問題在于是否愿意花 3-5 倍的時間獲得額外 10% 的效果。

  機器之心:在簡化 FPGA 開發(fā)過程這一任務(wù)上,,研究者做了哪些工作,?

  我們的團隊開發(fā)了一個研究工具,是一個 C 語言的模板庫,,能夠根據(jù) Caffe 和 TensorFlow 的代碼自動生成 C 語言的表達,。然后研究者可以將 C 語言的代碼再交給 HLS 工具生成 RTL 代碼。

  C 語言是軟件工程師普遍掌握的語言,,這樣的工具讓軟件工程師也具有 FPGA 開發(fā)能力,,而且讓開發(fā)者更專注于算法,而不用過多考慮底層硬件,。

  而且,,這個過程中的中間結(jié)果都可以導出,專業(yè)人員也可以在自動生成的基礎(chǔ)上再進行優(yōu)化,,總而言之,,整個開發(fā)的效率都得到了極大的提高。

  這只是舉一個例子,。還有其它很多的研究人員在做相關(guān)的提升深度學習設(shè)計效率和質(zhì)量的各類工具和平臺,。工業(yè)和學術(shù)屆的都有。學術(shù)屆比如 UCLA 的叢京生老師,,以及 Cornell 的張志汝老師等,。工業(yè)屆比較領(lǐng)先的是賽靈思和英特爾自己設(shè)計的一些工具。

  機器之心:各個大公司在 FPGA 的應用方面都進行了哪些工作,?拓展市場的思路都有哪些,?

  IBM 和賽靈思正在 Power 系列上進行合作,,致力于在 FPGA 上加更多的存儲,在最新的原型機上,,把存儲加到了 64G,,相比于市面上現(xiàn)在常見的最大 8 或 16G,極大擴展了數(shù)據(jù)帶寬,,來進行和大數(shù)據(jù)相關(guān)的處理,。

  英特爾收購了 Altera,并且致力于幫助 Altera 進行編譯等工具的開發(fā),。這是一個 FPGA 商品化的思路,,就像 GPU 一樣,說不定未來的 PC 里就會有一個 FPGA 協(xié)處理器在 CPU 旁邊完成工作,?;蛘咴谛酒瑢用嫔希珻PU 片上就有一塊 FPGA,??偠灾坏┕ぞ咦龊?,整合的機會會有很多,。英特爾在智能城市、智慧制造方面都有很多的構(gòu)想,,并且希望借由 FPGA 實現(xiàn),。

  再就是微軟。它的思路主要就是云計算,,除了 Bing 之外,,也希望在進行機器學習任務(wù)的 Azure 云中使用 FPGA。

  機器之心:能否介紹一下 Inspirit IoT 通過哪些產(chǎn)品實現(xiàn)了深度學習算法在 FPGA 上的加速,?

5b3b0dc3689f6-thumb.jpg

  我們公司主要有三個產(chǎn)品,按照層次分別是 DNN 優(yōu)化器,、高層次綜合加速編譯器(HLS compiler),,以及整體 FPGA 解決方案。

  DNN 優(yōu)化器的目標是定制一個 FPGA 友好的模型,,把訓練好的模型中對于推理來說冗余的部分去掉,。例如,訓練時使用的浮點數(shù)可以被替換為定點數(shù),,訓練時每層有非常多的單元,,但是在推理的時候可以進行剪枝(Pruning),等等,。DNN 優(yōu)化器就是以各種高層框架的模型為基礎(chǔ),,根據(jù)硬件的特性和場景的特性進行自動的優(yōu)化,。

  高層次綜合編譯器讓開發(fā)者得以繞開寫 Verilog 硬件描述語言,將 C,、 C++,、CUDA 等代碼直接編成 FPGA,旨在降低硬件開發(fā)的門檻,,提高軟件工程師的生產(chǎn)力,。我們的特色是這個編譯器可以自然結(jié)合深度學習算法中的各種 IP 核,從而可以最好的優(yōu)化各種深度學習算法在 FPGA 上的高速及高質(zhì)量的實現(xiàn),。

  除此之外,,我們也有嵌入 FPGA 的開發(fā)板,用于聲音相關(guān)的應用場景,。其上嵌入了 FPGA 和 4 個麥克風,,可以檢測聲音來源、提高聲音質(zhì)量,,也可以和攝像頭等其他設(shè)備連用,。例如,捕捉到車輛撞擊聲,、尖叫聲等特定聲音之后,,能夠調(diào)轉(zhuǎn)攝像頭,收錄相關(guān)的視頻等,,希望獲得一個「1+1>3」的效果,。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。