隨著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ì)其擦除重寫,運(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ù)雜,開發(fā)周期較長(zhǎng)。RTL的開發(fā)包括了架構(gòu)設(shè)計(jì),RTL代碼,仿真驗(yàn)證,上板調(diào)試。一個(gè)項(xiàng)目的周期往往是軟件開發(fā)的幾倍,團(tuán)隊(duì)規(guī)模也較大。這些既提高了開發(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的開發(fā)效率,但是相比于純軟件開發(fā)語(yǔ)言還是存在一定復(fù)雜性。而相對(duì)于RTL語(yǔ)言來(lái)說(shuō),HLS語(yǔ)言的硬件描述性不夠鮮明。所以硬件開發(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)注
1664文章
22509瀏覽量
639524 -
云計(jì)算
+關(guān)注
關(guān)注
39文章
8044瀏覽量
144805 -
高帶寬
+關(guān)注
關(guān)注
0文章
52瀏覽量
7961 -
邊緣計(jì)算
+關(guān)注
關(guān)注
22文章
3564瀏覽量
53712
原文標(biāo)題:FPGA在microsoft azure的應(yīng)用
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
英超聯(lián)賽攜手微軟借助AI技術(shù)革新球迷體驗(yàn)
微軟Azure數(shù)據(jù)中心國(guó)際版全面對(duì)接NVIDIA Rubin平臺(tái)
微軟Microsoft Copilot Studio智能體平臺(tái)全面升級(jí)
使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構(gòu)建高性能AI應(yīng)用
Microsoft Azure Cobalt 200 開啟AI時(shí)代Arm架構(gòu)計(jì)算新紀(jì)元
Esri推出適用于Microsoft Fabric的最新ArcGIS集成功能
如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫測(cè)試
如何使用 NuMaker 板和 Mbed OS 上的連接字符串連接到 Azure IoT?
舵機(jī)原理簡(jiǎn)述!
微軟正式發(fā)布Microsoft行星計(jì)算機(jī)專業(yè)版
Microsoft Edge瀏覽器iOS端插件功能上線
微軟 Build 2025大會(huì):筑牢智能體時(shí)代的安全新防線
微軟Microsoft Azure AI Foundry國(guó)際版的十大技術(shù)突破
如何從 Microsoft Visual C++ 應(yīng)用程序 (CyAPI.h) 訪問(wèn) CYUSB3014 芯片組的 i2c 接口?
DXC攜手SAP與Microsoft,簡(jiǎn)化并加速企業(yè)轉(zhuǎn)型
簡(jiǎn)述FPGA在microsoft azure的應(yīng)用
評(píng)論