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

微軟Microsoft Azure AI Foundry國際版的十大技術突破
如何從 Microsoft Visual C++ 應用程序 (CyAPI.h) 訪問 CYUSB3014 芯片組的 i2c 接口?
DXC攜手SAP與Microsoft,簡化并加速企業轉型

諾基亞擴展與微軟Azure的數據中心網絡供應協議
微軟發布Azure AI Foundry,推動云服務增長
NVIDIA邀您相約微軟Ignite技術大會
基于Arm Neoverse的微軟全新Azure虛擬機上線
印孚瑟斯與微軟擴大戰略合作,加速客戶云與AI轉型
微軟Azure首獲英偉達GB200 AI服務器
Splashtop 加入 Microsoft 智能安全協會

評論