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