隨著5G通信技術(shù)的發(fā)展,云計(jì)算和邊緣計(jì)算業(yè)務(wù)也將快速增長(zhǎng)。由于云計(jì)算多樣性和邊緣環(huán)境復(fù)雜性的特點(diǎn),將決定了在CPU,GPU,FPGA,ASIC中,不會(huì)只有一種芯片存在。所以FPGA一定可以尋找到它的應(yīng)用方向。相較于其它幾種芯片,F(xiàn)PGA具有以下幾種優(yōu)勢(shì):
1 靈活可編程。FPGA是以LUT作為基本結(jié)構(gòu)的器件,可以根據(jù)需求的變化對(duì)其擦除重寫(xiě),運(yùn)行新的程序。
2 高帶寬。FPGA芯片有很多高速管腳,可以連接多顆DRAM,產(chǎn)生較高的帶寬。
3 復(fù)雜的數(shù)據(jù)處理能力。FPGA能夠有針對(duì)性的處理邏輯關(guān)系復(fù)雜的程序,這相比于CPU,GPU等依賴指令處理數(shù)據(jù)的芯片有優(yōu)勢(shì),因?yàn)樗軌蜃龅礁偷难舆t。
FPGA也存在以下劣勢(shì)限制了它的發(fā)展:
1 編程復(fù)雜,開(kāi)發(fā)周期較長(zhǎng)。RTL的開(kāi)發(fā)包括了架構(gòu)設(shè)計(jì),RTL代碼,仿真驗(yàn)證,上板調(diào)試。一個(gè)項(xiàng)目的周期往往是軟件開(kāi)發(fā)的幾倍,團(tuán)隊(duì)規(guī)模也較大。這些既提高了開(kāi)發(fā)成本,又沒(méi)法適應(yīng)不斷迭代的產(chǎn)品需求。
2 粗粒度硬件結(jié)構(gòu)導(dǎo)致資源利用率低。FPGA達(dá)不到100%的資源利用率,這是對(duì)資源的一種浪費(fèi),體現(xiàn)在經(jīng)濟(jì)上是提高了成本。
以上兩方面都可以歸結(jié)到成本這一點(diǎn)上,但是如果能夠解決1問(wèn)題,那么2問(wèn)題也就迎刃而解了。因?yàn)槿绻鸉PGA的市場(chǎng)應(yīng)用多了,那么其制造成本也會(huì)下降。1問(wèn)題的解決一直在路上,但是一直沒(méi)有解決。HLS等類似軟件編程語(yǔ)言的出現(xiàn)可以提高FPGA的開(kāi)發(fā)效率,但是相比于純軟件開(kāi)發(fā)語(yǔ)言還是存在一定復(fù)雜性。而相對(duì)于RTL語(yǔ)言來(lái)說(shuō),HLS語(yǔ)言的硬件描述性不夠鮮明。所以硬件開(kāi)發(fā)人員更多的會(huì)選擇硬件描述清晰的verilog,system Verilog等語(yǔ)言。
這些缺點(diǎn)并不意味著我們對(duì)FPGA在未來(lái)AI應(yīng)用中抱著悲觀的想法,一個(gè)是未來(lái)場(chǎng)景的復(fù)雜性和多樣性,一個(gè)是FPGA也在尋求改進(jìn)和發(fā)展。第一個(gè)決定了FPGA一定能夠在AI中活下去,第二個(gè)決定了FPGA在AI中活的怎么樣。
接下來(lái)我們來(lái)了解一下FPGA在微軟云azure中的應(yīng)用。
Azure stack edge
微軟在邊緣做了產(chǎn)品布局,依據(jù)邊緣的規(guī)模,提供了兩類產(chǎn)品。一類是針對(duì)計(jì)算任務(wù)繁重的企業(yè)用戶,其提供了基于GPU和FPGA的Pro設(shè)備,能夠?qū)崿F(xiàn)邊緣端的數(shù)據(jù)預(yù)處理,包括聚合數(shù)據(jù),修改數(shù)據(jù)等,以及運(yùn)行ML模型。另外一類是針對(duì)隨時(shí)移動(dòng)的用戶,提供了小而便攜的設(shè)備。這些設(shè)備使用了intel針對(duì)視覺(jué)處理專門研發(fā)的VPU芯片。
雖然在2024年基于FPGA的pro設(shè)備將停用,而遷移到基于GPU的設(shè)備上。但是VPU芯片的出現(xiàn),反映了在邊緣計(jì)算應(yīng)用中,F(xiàn)PGA所發(fā)生的可能轉(zhuǎn)變。在多變的邊緣目標(biāo)上,小芯片能夠更有針對(duì)性的保留有效的計(jì)算資源,這樣精簡(jiǎn)了結(jié)構(gòu),降低了功耗。
Intel VPU是集成了Leon處理器,12個(gè)SHAVE計(jì)算核以及一個(gè)DRAM的SoC結(jié)構(gòu)。SHAVE是一個(gè)向量處理器,能夠進(jìn)行大量的向量運(yùn)算。所以VPU能夠適合運(yùn)行ML模型,以及進(jìn)行一些圖像處理方面的工作。目前VPU能夠支持21種神經(jīng)網(wǎng)絡(luò)算子,包括conv,relu等。這些神經(jīng)網(wǎng)絡(luò)可以通過(guò)其編譯器工具NCAPI轉(zhuǎn)化為可以在VPU中執(zhí)行的指令。目前能夠支持inception,mobilenet,googlenet,ssd,alexnet等很多卷積和LSTM網(wǎng)絡(luò)。
超算中心的FPGA
微軟在數(shù)據(jù)中心系統(tǒng)性的構(gòu)建了一個(gè)FPGA集群,這個(gè)FPGA集群能夠?qū)崿F(xiàn)內(nèi)部和外部server的互聯(lián)。在頂層軟件的分配調(diào)度下,可以執(zhí)行多種不同的任務(wù),包括web search ranking, deep neural networks, expensive compression等。
FPGA集群的基本結(jié)構(gòu)如上圖所示:包括了兩塊CPU和一塊altera的FPGA芯片。FPGA通過(guò)PCIE和一個(gè)NIC來(lái)和兩塊CPU進(jìn)行通信。NIC保證了FPGA可以實(shí)現(xiàn)原位處理網(wǎng)絡(luò)數(shù)據(jù)包。FPGA之間還通過(guò)ToR實(shí)現(xiàn)互聯(lián),ToR保證了一個(gè)任務(wù)能夠被分割為多個(gè)子任務(wù),然后分配給多個(gè)FPGA處理。
在邏輯層面,F(xiàn)PGA定義了Lightweight Transport Layer(LTL)和Elastic Router(ER)。LTL實(shí)現(xiàn)了不同的FPGA芯片之間的互聯(lián),這樣保證了遠(yuǎn)程FPGA之間的通信,使得整個(gè)FPGA集群處于一個(gè)整體中。ER是用于同一個(gè)FPGA芯片中不同任務(wù)的互聯(lián)。LTL和ER的混合使用能夠靈活的為FPGA分配不同任務(wù),滿足數(shù)據(jù)中心任務(wù)多樣性需求。
ToR形成了三層結(jié)構(gòu),L0層連接了24個(gè)FPGA設(shè)備,L1連接了960個(gè)設(shè)備,L2級(jí)可能連接了超過(guò)幾百萬(wàn)的設(shè)備。L0級(jí)的round-trip延時(shí)大概在2.8us,L1級(jí)平均在7.7us,而L2級(jí)在22us。
FPGA架構(gòu)
微軟的神經(jīng)網(wǎng)絡(luò)加速器主要是針對(duì)單batch低延遲來(lái)設(shè)計(jì)的,其所期望的是能夠最大限度的將weight緩存在片上,通過(guò)將一個(gè)大的網(wǎng)絡(luò)進(jìn)行分割,分配到多個(gè)FPGA芯片上實(shí)現(xiàn)。其分割的子網(wǎng)絡(luò)的權(quán)重大小可以適配一顆FPGA芯片上weight的緩存空間。架構(gòu)將計(jì)算重點(diǎn)放在矩陣-向量乘法上,這個(gè)也是合理的,因?yàn)長(zhǎng)STM,CNN網(wǎng)絡(luò)大部分計(jì)算量都由矩陣乘法承擔(dān)。
其它函數(shù)運(yùn)算,包括向量加法,乘法,sigmoid,tanh等函數(shù),則統(tǒng)一到同一個(gè)多功能函數(shù)模塊中。這樣做的好處是簡(jiǎn)化了FPGA架構(gòu),同時(shí)也簡(jiǎn)化了數(shù)據(jù)流。因此其整個(gè)架構(gòu)中沒(méi)有多端口共享的memory,不存在對(duì)多數(shù)據(jù)訪問(wèn)沖突的處理。同時(shí)也簡(jiǎn)化了指令,消除了對(duì)指令依賴關(guān)系的判斷和檢測(cè)。FPGA架構(gòu)中有對(duì)指令的進(jìn)一步分解和處理,所以軟件端的指令非常簡(jiǎn)單,就是通過(guò)C語(yǔ)言的宏定義實(shí)現(xiàn)的。
其矩陣向量乘法結(jié)構(gòu)是由多個(gè)dot-product結(jié)構(gòu)組成的,多個(gè)dot-product和累加器形成了一個(gè)tile,然后多個(gè)tile就構(gòu)成了一個(gè)大的矩陣向量乘法。
軟件結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)加速器的工具鏈包括:CNTK(微軟自定義的一個(gè)指令級(jí)描述),tensorflow或者caffe的圖文件作為輸入,然后通過(guò)前端轉(zhuǎn)化為IR表示,然后依據(jù)網(wǎng)絡(luò)大小以及FPGA中資源情況對(duì)圖進(jìn)行分割和優(yōu)化,然后產(chǎn)生硬件可執(zhí)行指令。如果網(wǎng)絡(luò)較大,那么網(wǎng)絡(luò)可以被分割成多個(gè)子圖,部署到不同F(xiàn)PGA上。如果一個(gè)矩陣乘法過(guò)大,那么可以被分割成多塊來(lái)實(shí)現(xiàn)。對(duì)于不可實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)算子,工具鏈可以將多個(gè)不可實(shí)現(xiàn)算子組合成一個(gè)子圖,在CPU上完成。
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603421 -
云計(jì)算
+關(guān)注
關(guān)注
39文章
7808瀏覽量
137412 -
高帶寬
+關(guān)注
關(guān)注
0文章
13瀏覽量
7707 -
邊緣計(jì)算
+關(guān)注
關(guān)注
22文章
3092瀏覽量
48965
原文標(biāo)題:FPGA在microsoft azure的應(yīng)用
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論