當前位置:
首頁 > 新聞 > 智慧雲中的FPGA

智慧雲中的FPGA

雷鋒網按:本文來源 StarryHeavensAbove,作者 : 唐杉,雷鋒網授權轉載。


人工智慧大熱之前,Cloud或Data Center已經開始使用FPGA做各種加速了。而隨著Deep Learning的爆發,這種需求越來越強勁。本文主要討論Cloud巨頭Amazon和Microsoft的FPGA策略。

在Microsoft Build 2017大會上,微軟Azure雲計算平台CTO Mark Russinovich做了一個名為 「Inside Microsoft"s FPGA-Based Configurable Cloud」的演講,介紹了Azure平台中使用FPGA的情況(大家可以點擊文末的閱讀原文收看視頻);另外,在Amazon的「Amazon EC2 F1 Instances」網站,有一個Webinar視頻,介紹AWS的FPGA服務。本文將結合這兩個講座展開討論,以下分別簡稱MS和AWS。

智能雲對數據處理的需求

智慧雲中的FPGA

從需求層面來看,雲端智能對數據處理有了更高的要求,體現在巨大的規模,低時延和高吞吐率幾個方面。而從這幾個角度來說,FPGA都有自己獨特的優勢。

智慧雲中的FPGA

AWS在雲端部署FPGA所針對的應用主要包括:Real Time Video Processing,Financial Analysis, Genomic Research, Big Data Search and Analytics, and Seurity。這裡雖然沒有專門提到AI和Deep Learning,但這些應用實際上也都和AI技術有關。而他們預期實現的目標如下:

智慧雲中的FPGA

FPGA背景知識

FPGA全稱是「可編輯門陣列」(Field Programmable Gate Array),其基本原理是在晶元內集成大量的數字電路基本門電路,存儲器以及互連線資源,而用戶可以通過對FPGA進行「編程」(燒寫配置文件)來定義這些門電路的功能以及模塊之間的連線。這種「編程」不是一次性的,你可以把FPGA設計成一個編解碼器,只要更改配置文件,就可以變成一個CPU,這也是所謂的re-Configurable的概念。當然,FPGA在給我們提供了隨意實現硬體電路的靈活性的同時,也要求設計者具有硬體設計的知識和能力。這一點和CPU,GPU的軟體編程方法有很大的差別,或者說是有更高的應用門檻。

目前主要的FPGA晶元廠商是Xilinx和Intel(Altera),AWS主要使用Xilinx的FPGA,MS則使用Intel的FPGA。在具體看FPGA的內部結構之前,我們還是通過對比來看看它的特點。

智慧雲中的FPGA

其實最近這種對比很多,我之前的文章也提到過。MS把CPU,GPU,FPGA和ASIC放在Flexibility VS Efficiency的角度進行對比,這個也是我們經常使用的方法。再次強調,靈活性(通用性)一定意味著效率的損失,反之亦然

另外,在MS的圖中可以看出,他們認為FPGA主要還是用在Evaluation(或者我們經常說的Inference)。而有趣的是,他們認為ASIC方案在Training和Evaluation中都還是「under investigation」,好像把Google的TPU給忘了。

智慧雲中的FPGA

AWS給出了另外一個視角的比較,CPU為了實現最大的靈活和通用,晶元中的很大一部分晶元面積用來提供控制功能(也包括複雜的存儲架構,比如Cache);而在GPU當中,用作運算的晶元面積比例大大提高,能夠支持大規模的並行處理;而到了FPGA,已經沒有預先定義的指令集概念,也沒有確定的數據位寬。這些你都可以根據應用來自己設計。你可以設計一個只支持幾條指令的處理器;也可以只設計數據通道和簡單的控制邏輯,根本不用指令。

下圖來自MS的講座,對比了CPU和FPGA進行數據處理的特點。

智慧雲中的FPGA

CPU可以看作是一種時間計算模型,指令順序進入,每條指令處理一定的數據。FPGA可以看作是空間計算模型,大量數據可以並行的進行處理。Deep Learning的處理,比如CNN的卷積運算,就是非常適合空間計算模型的例子。這一點我在之前的文章「深度神經網路的模型·硬體聯合優化」中已有介紹。下面我們具體看看FPGA的內部結構。

FPGA內部結構

FPGA中幾個比較重要的基本模塊包括(按照Xilinx的說法):

CLB(Configurable Logic Block):FPGA最基本的組成單元,可以實現基本的組合邏輯和時序電路。其中,LUT(Lookup Tables)是實現組合邏輯的部分,可以實現n個輸入的任意組合邏輯運算(不同型號的FPGA有所不同,下圖的例子中為6個輸入)。而在CLB的輸出位置,還有一個寄存器,提供時序電路的功能。

DSP Slice:是比CLB粒度更粗的運算單元,直接實現乘法,累加等功能。它比較類似與我們在DSP處理器中使用的MAC單元,如下圖所示:

智慧雲中的FPGA

此外,一般FPGA中還提供片上Memory模塊(Block RAM,UltraRAM),各種高速介面,IP和很多輔助電路。根據應用需求不同,有的型號的FPGA本身也是一個SoC,還集成了處理器核(比如ARM),甚至視頻編解碼等功能。

下表中列出的Xilinx Virtex UltraScale+ FPGA系列的具體參數。後面要介紹的AWS F1 instance用的就是VU9P。

智慧雲中的FPGA

在這裡,我們觀察CLB Flip-Flops,CLB LUT和DSP Slices的數量,以及memory的數量,基本就可以了解該FPGA的規模,也就是在這個FPGA上可以實現多大規模的數字電路。

在雲端部署FPGA

首先,作為加速功能,FPGA需要配合Host CPU來工作。比如在下圖中,一個應用中有一個濾波器功能,需要大量的運算,比較合適放到FPGA來處理;而其它部分功能,主要和控制相關,則放在CPU來運行。

智慧雲中的FPGA

由於FPGA應用往往都需要支持很大的數據吞吐量,這對於Memory帶寬和I/O互連帶寬要求很高。如果數據傳輸的帶寬受限,則FPGA提供的巨大的並行計算能力根本發揮不了作用。在雲端部署FPGA的另一個重要挑戰是如何把FPGA的運算能力融合到雲端的大規模彈性計算架構當中。

下面我們就分別看看MS和AWS的FPGA部署情況。值得注意的是,目前MS的Azure中的FPGA主要還是內部使用,並沒有作為一項公有的服務;而AWS則已經提供了EC2 F1 實例(instance)的FPGA服務了。

MS Azure Catapult V2架構

我們先看看MS的Catapult V2架構,如下圖:

智慧雲中的FPGA

在一塊Catapult V2的板卡上,有一顆Altera Stratix FPGA和本地的DRAM,這塊卡上有三個和外部連接的介面,一個PCIe,兩個QSFP。這種架構中,FPGA和WCS Server Blade的連接非常靈活,同時也支持很大的吞吐率。FPGA可以支持對網路應用(從NIC到Switch的channel),存儲應用(CPU到Switch的channel)以及運算應用(CPU和FPGA)的加速。而這種架構也具有高度的伸縮性,如下圖所示。

智慧雲中的FPGA

連接在一起的FPGA可以構成一個獨立的運算層。多個FPGA可以組合在一起實現不同的加速功能,比如Deep neural network,Web search ranking,SQL,SDN offload等等。

MS還提出一個HW Microservices的概念:「A hardware-only self-contained service that can be distributed and accessed from across the datacenter compute fabric」。使用這個Microservices有如下優勢:

智慧雲中的FPGA

總的來說,就是有更多的靈活性,可以更有效的分享和利用FPGA資源。而針對DNN應用,MS也提出了一個專門的架構。首先,在FPGA上提供DNN Engine,包括了Neural FU(數據通道)和Instruction Decoder&control(控制面功能)。而多個FPGA可以部署為一個大規模的HW microservices,實現分布式處理。

智慧雲中的FPGA

而相應的,MS正在研發一套「編譯」工具,可以把在常見的Deep Learning Framework中訓練好的model自動部署到一個或多個FPGA(也包括GPU,CPU)中。

智慧雲中的FPGA

不過,這些看起來不錯的設計和功能我們現在還用不了,只能等MS準備好公開發布的時候才能使用。所以,Mark Russinovich最後說,「We look forward to eventually making this available to you, a major step toward democratizing AI with the power of FPGA」。希望這個時間不會太遠吧。

AWS F1 Instance

相對而言,AWS的FPGA雲服務離我們更近。它的規格如下圖所示:

智慧雲中的FPGA

其中f1.16xlarge由8個FPGA組成,配合64個vCPUs,接近1T的Memory,規模相當大。其中每個FPGA連接4個DDR。FPGA之間則有兩種互連方式,第一種是FPGA Link,這是一種雙向環狀連接,用於支持Streaming方式串聯多個FPGA的應用;另一種是FPGA Direct,這是點到點的PCIe鏈路,可以從一個FPGA連接到任意一個其它FPGA。另外,為了簡化FPGA I/O的設計,AWS還提出FPGA Shell的概念。如下圖所示:

智慧雲中的FPGA

這裡Shell的概念我看的不是很清楚,感覺就是把FPGA的I/O封裝起來了。FPGA的內部邏輯通過AXI4介面和Shell連接,Shell提供對外的PCIe和一個DDR介面;而前面提到的FPGA Link(FPGA間互連)和其它三個DDR介面好像還是在Core Logic中的。如果我看的不對,還請指正。

AWS F1的開發流程和使用的工具如下圖所示:

智慧雲中的FPGA

這個流程和我們常見的FPGA開發流程類似。不過還是需要使用FPGA Developer AMI(AWS提供的工具image)和Hardware Developer Kit(HDK),最終需要生成Amazon FPGA Image(AFI)。FPGA設計和實現工具使用的就是Xilinx自家的工具Vivado。

目前,AWS似乎並沒提供專門針對Deep Learning Inferece的工具和硬體架構(比如前面MS提到的DNN Engine和相應的軟體工具)。因此,對於做相關工作的同學來說,還是必須自己設計在相應的軟硬體系統。

阿里雲和騰訊雲

最後,我們看看國內的玩家。目前阿里雲和騰訊雲也都推出了FPGA服務,不過都在申請試用階段。其中,阿里雲的F1實例已經有比較清楚的Spec和工具鏈的介紹:

FPGA 計算型實例規格族(f1)

規格族特點:

採用 INTEL ARRIA 10 GX 1150 計算卡

CPU 和 Memory 配比為 1:7.5

處理器:2.5 GHz 主頻的 Intel Xeon E5-2682 v4 (Broadwell)

高性能本地 SSD 盤存儲

實例網路性能與計算規格對應(規格越高網路性能強)

適用場景:

1.適用於深度學習推理

2.基因組學研究、金融分析

3.時視頻處理及安全等計算工作負載

智慧雲中的FPGA

其工具鏈使用Altera FPGA自家的工具,方法和AWS類似。而騰訊雲公開的信息比較少,這裡就不再討論了。


總結:

本文簡單分析了一下Amazon和Microsoft在Cloud中使用FPGA加速的實現方法。相比Google的TPU(ASIC)針對Deep Learning的設計,FPGA雖然在效率上有差距,但在靈活性方面有自己的優勢。不管是在AWS和Azure中,FPGA可以更廣泛用於不同的加速任務當中。如果能夠配合更好的開發環境,形成完整的生態,相信未來它在雲端會有更大的發展空間。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

自從安了智能門鎖,家裡鬧妖精?
沃爾沃宣布打造新型自動駕駛汽車,2021年上市
免費公開人工智慧開發軟體,索尼要追趕 AI 巨頭企業?
英偉達放出三響炮:攜手大眾、沃爾沃、采埃孚和海拉展開自動駕駛合作
AR硬體公司Cast被迫關閉,曾獲安卓創始人1500萬美元投資

TAG:雷鋒網 |

您可能感興趣

華為雲中國唯一全平台全節點全服務通過PCI-DSS安全認證
Apache OpenWhisk 缺陷可導致攻擊者在 IBM 雲中覆寫代碼
新鵬折翼:GK慘遭eStarPro零封 雲中君迅速跌落神壇
Azure Stack在美國政府雲中採取何種路線?
雲中游
蘋果用戶懵了 iCloud照片實際存儲在谷歌雲中?
星雲中現巨大蝙蝠影子 NASA:它比太陽系大200倍
震撼實拍!隱秘在雲中的巨大飛碟UFO !
Python 詞雲中/英小白簡單入門教程
NASA:金星上可能有「外星人」,外星生命生活在硫酸雲中!
WibuKey雲中存在漏洞,可執行代碼
谷歌I/O大會談及Stadia 如何保證雲中心低延遲體驗?
IDC:阿里雲中國第一 市場份額為2到9名總和
IDC:今年用於雲中部署的IT基礎設施支出將增長10.9%
原以為OPPO Reno 只是拍得遠,不料還能「揪」出雲中的月亮
雲中君BUG級躲岩石!阿軻沒脾氣,韓信干著急,用她完美克制!
馬雲中國擁有核心技術的大公司太少 BAT都不算太大
學習考察系列之景寧-「雲中大漈」
華為雲中國區新任總裁洪方明:華為雲要做智慧城市的底座
大麥雲中的寶藏