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