如何使用FPGA加速機(jī)器學(xué)習(xí)算法?
當(dāng)前,AI因?yàn)槠銫NN(卷積神經(jīng)網(wǎng)絡(luò))算法出色的表現(xiàn)在圖像識(shí)別領(lǐng)域占有舉足輕重的地位?;镜腃NN算法需要大量的計(jì)算和數(shù)據(jù)重用,非常適合使用FPGA來(lái)實(shí)現(xiàn)。上個(gè)月,Ralph Wittig(Xilinx CTO Office的卓越工程師) 在2016年OpenPower峰會(huì)上發(fā)表了約20分鐘時(shí)長(zhǎng)的演講并討論了包括清華大學(xué)在內(nèi)的中國(guó)各大學(xué)研究CNN的一些成果。
在這項(xiàng)研究中出現(xiàn)了一些和CNN算法實(shí)現(xiàn)能耗相關(guān)的幾個(gè)有趣的結(jié)論:
①限定使用片上Memory;
②使用更小的乘法器;
③進(jìn)行定點(diǎn)匹配:相對(duì)于32位定點(diǎn)或浮點(diǎn)計(jì)算,將定點(diǎn)計(jì)算結(jié)果精度降為16位。如果使用動(dòng)態(tài)量化,8位計(jì)算同樣能夠產(chǎn)生很好的結(jié)果。
在演講中Wittig還提到了CNN相關(guān)的兩款產(chǎn)品:CAPI-compatible Alpha DataADM-PCIE-8K5 PCIe加速卡和Auviz Systems提供的AuvizDNN(深度神經(jīng)網(wǎng)絡(luò))開(kāi)發(fā)庫(kù)。
ADM-PCIE-8K5 PCIe加速卡
Alpha DataADM-PCIE-8K5 PCIe加速卡用于X86和IBM Power8/9數(shù)據(jù)中心和云服務(wù),加速卡基于Xilinx Kintex UltraScale KU115 FPGA,支持Xilinx SDAcess基于OpenCL、C/C++的開(kāi)發(fā)和基于Vivado HLx的HDL、HLS設(shè)計(jì)流程。
圖1 Alpha DataADM-PCIE-8K5 PCIe加速卡
Alpha DataADM-PCIE-8K5 PCIe加速卡片上帶32GB DDR4-2400內(nèi)存(其中16GB含ECC),雙通道SFP+支持雙通道10G以太網(wǎng)接入。提供包括高性能PCIe/DMA在內(nèi)的板級(jí)支持包(BSP) 、OpenPOWER架構(gòu)的CAPI、FPGA參考設(shè)計(jì)、即插即用的O/S驅(qū)動(dòng)和成熟的API等設(shè)計(jì)資源。
AuvizDNN開(kāi)發(fā)庫(kù)
深度學(xué)習(xí)技術(shù)使用大量的已知數(shù)據(jù)來(lái)找出一組權(quán)重和偏置值來(lái)匹配預(yù)期結(jié)果。處理被稱(chēng)之為訓(xùn)練,訓(xùn)練的結(jié)果是大量的模型,這一事實(shí)促使工程師們尋求使用GPU之類(lèi)的專(zhuān)用硬件來(lái)進(jìn)行訓(xùn)練和分類(lèi)計(jì)算。
隨著未來(lái)數(shù)據(jù)量的巨幅增長(zhǎng),機(jī)器學(xué)習(xí)將會(huì)搬到云端完成。這樣就急需一種既可以加速算法,又不會(huì)大規(guī)模增加功耗的處理平臺(tái),在這種情況下,F(xiàn)PGA開(kāi)始登場(chǎng)。
隨著一些列的先進(jìn)開(kāi)發(fā)環(huán)境投入使用,軟件開(kāi)發(fā)工程師將他們的設(shè)計(jì)在Xilinx FPGA上實(shí)現(xiàn)變得更加容易。Auviz Systems開(kāi)發(fā)的AuvizDNN庫(kù)為用戶(hù)提供優(yōu)化的函數(shù)接口,用戶(hù)可以針對(duì)不同的應(yīng)用創(chuàng)建自定義的CNN。這些函數(shù)可以方便的通過(guò)Xilinx SDAcess這樣的集成開(kāi)發(fā)環(huán)境調(diào)用。在創(chuàng)建對(duì)象和數(shù)據(jù)池后,就會(huì)調(diào)用函數(shù)創(chuàng)建每一個(gè)卷積層、然后是致密層,最后是 softmax層,如下圖2所示。
圖2 實(shí)現(xiàn)CNN的函數(shù)調(diào)用順序