由騰訊云基礎(chǔ)產(chǎn)品中心、騰訊架構(gòu)平臺(tái)部組成的騰訊云FPGA聯(lián)合團(tuán)隊(duì),在這里介紹國(guó)內(nèi)首款FPGA云服務(wù)器的工程實(shí)現(xiàn)深度學(xué)習(xí)算法(AlexNet),討論深度學(xué)習(xí)算法FPGA硬件加速平臺(tái)的架構(gòu)。
背景是這樣的:在1月20日,騰訊云推出國(guó)內(nèi)首款高性能異構(gòu)計(jì)算基礎(chǔ)設(shè)施——FPGA云服務(wù)器,將以云服務(wù)方式將大型公司才能長(zhǎng)期支付使用的FPGA普及到更多企業(yè),企業(yè)只需支付相當(dāng)于通用CPU約40%的費(fèi)用,性能可提升至通用CPU服務(wù)器的30倍以上。具體分享內(nèi)容如下:
1.綜述
2016年3月份AI圍棋程序AlphaGo戰(zhàn)勝人類棋手李世石,點(diǎn)燃了業(yè)界對(duì)人工智能發(fā)展的熱情,人工智能成為未來的趨勢(shì)越來越接近。人工智能包括三個(gè)要素:算法,計(jì)算和數(shù)據(jù)。人工智能算法目前最主流的是深度學(xué)習(xí)。計(jì)算所對(duì)應(yīng)的硬件平臺(tái)有:CPU、GPU、FPGA、ASIC。由于移動(dòng)互聯(lián)網(wǎng)的到來,用戶每天產(chǎn)生大量的數(shù)據(jù)被入口應(yīng)用收集:搜索、通訊。我們的QQ、微信業(yè)務(wù),用戶每天產(chǎn)生的圖片數(shù)量都是數(shù)億級(jí)別,如果我們把這些用戶產(chǎn)生的數(shù)據(jù)看成礦藏的話,計(jì)算所對(duì)應(yīng)的硬件平臺(tái)看成挖掘機(jī),挖掘機(jī)的挖掘效率就是各個(gè)計(jì)算硬件平臺(tái)對(duì)比的標(biāo)準(zhǔn)。
最初深度學(xué)習(xí)算法的主要計(jì)算平臺(tái)是CPU,因?yàn)镃PU通用性好,硬件框架已經(jīng)很成熟,對(duì)于程序員來說非常友好。然而,當(dāng)深度學(xué)習(xí)算法對(duì)運(yùn)算能力需求越來越大時(shí),人們發(fā)現(xiàn)CPU執(zhí)行深度學(xué)習(xí)的效率并不高。CPU為了滿足通用性,芯片面積有很大一部分都用于復(fù)雜的控制流和Cache緩存,留給運(yùn)算單元的面積并不多。這時(shí)候,GPU進(jìn)入了深度學(xué)習(xí)研究者的視野。GPU原本的目的是圖像渲染,圖像渲染算法又因?yàn)橄袼嘏c像素之間相對(duì)獨(dú)立,GPU提供大量并行運(yùn)算單元,可以同時(shí)對(duì)很多像素進(jìn)行并行處理,而這個(gè)架構(gòu)正好能用在深度學(xué)習(xí)算法上。
GPU運(yùn)行深度學(xué)習(xí)算法比CPU快很多,但是由于高昂的價(jià)格以及超大的功耗對(duì)于給其在IDC大規(guī)模部署帶來了諸多問題。有人就要問,如果做一個(gè)完全為深度學(xué)習(xí)設(shè)計(jì)的專用芯片(ASIC),會(huì)不會(huì)比GPU更有效率?事實(shí)上,要真的做一塊深度學(xué)習(xí)專用芯片面臨極大不確定性,首先為了性能必須使用最好的半導(dǎo)體制造工藝,而現(xiàn)在用最新的工藝制造芯片一次性成本就要幾百萬美元。去除資金問題,組織研發(fā)隊(duì)伍從頭開始設(shè)計(jì),完整的設(shè)計(jì)周期時(shí)間往往要到一年以上,但當(dāng)前深度學(xué)習(xí)算法又在不斷的更新,設(shè)計(jì)的專用芯片架構(gòu)是否適合最新的深度學(xué)習(xí)算法,風(fēng)險(xiǎn)很大??赡苡腥藭?huì)問Google不是做了深度學(xué)習(xí)設(shè)計(jì)的專用芯片TPU?從Google目前公布的性能功耗比提升量級(jí)(十倍以上的提升)上看,還遠(yuǎn)未達(dá)到專用處理器的提升上限,因此很可能本質(zhì)上采用是數(shù)據(jù)位寬更低的類GPU架構(gòu),可能還是具有較強(qiáng)的通用性。這幾年,F(xiàn)PGA就吸引了大家的注意力,亞馬遜、facebook等互聯(lián)網(wǎng)公司在數(shù)據(jù)中心批量部署了FPGA來對(duì)自身的深度學(xué)習(xí)以云服務(wù)提供硬件平臺(tái)。
FPGA全稱「可編輯門陣列」(FieldProgrammableGateArray),其基本原理是在FPGA芯片內(nèi)集成大量的數(shù)字電路基本門電路以及存儲(chǔ)器,而用戶可以通過燒寫FPGA配置文件來來定義這些門電路以及存儲(chǔ)器之間的連線。這種燒入不是一次性的,即用戶今天可以把FPGA配置成一個(gè)圖像編解碼器,明天可以編輯配置文件把同一個(gè)FPGA配置成一個(gè)音頻編解碼器,這個(gè)特性可以極大地提高數(shù)據(jù)中心彈性服務(wù)能力。所以說在FPGA可以快速實(shí)現(xiàn)為深度學(xué)習(xí)算法開發(fā)的芯片架構(gòu),而且成本比設(shè)計(jì)的專用芯片(ASIC)要便宜,當(dāng)然性能也沒有專用芯片(ASIC)強(qiáng)。ASIC是一錘子買賣,設(shè)計(jì)出來要是發(fā)現(xiàn)哪里不對(duì)基本就沒機(jī)會(huì)改了,但是FPGA可以通過重新配置來不停地試錯(cuò)知道獲得最佳方案,所以用FPGA開發(fā)的風(fēng)險(xiǎn)也遠(yuǎn)遠(yuǎn)小于ASIC。
2.Alexnet算法分析
2.1Alexnet模型結(jié)構(gòu)
Alexnet模型結(jié)構(gòu)如下圖2.1所示。圖2.1Alexnet模型
模型的輸入是3x224x224大小圖片,采用5(卷積層)+3(全連接層)層模型結(jié)構(gòu),部分層卷積后加入Relu,Pooling和Normalization層,最后一層全連接層是輸出1000分類的softmax層。如表1所示,全部8層需要進(jìn)行1.45GFLOP次乘加計(jì)算,計(jì)算方法參考下文。