智慧雲中的FPGA

人工智能大熱之前,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都有自己獨特的優勢。



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






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

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



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


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


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



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


在雲端部署FPGA


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





在一塊Catapult V2的板卡上,有一顆Altera Stratix FPGA和本地的DRAM,這塊卡上有三個和外部連接的接口,一個PCIe,兩個QSFP。這種架構中,FPGA和WCS Server Blade的連接非常靈活,同時也支持很大的吞吐率。FPGA可以支持對網絡應用(從NIC到Switch的channel),存儲應用(CPU到Switch的channel)以及運算應用(CPU和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資源。而針對DNN應用,MS也提出了一個專門的架構。首先,在FPGA上提供DNN Engine,包括了Neural FU(數據通道)和Instruction Decoder&control(控制面功能)。而多個FPGA可以部署爲一個大規模的HW microservices,實現分佈式處理。



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



不過,這些看起來不錯的設計和功能我們現在還用不了,只能等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雲服務離我們更近。它的規格如下圖所示:



其中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的概念。如下圖所示:




這裏Shell的概念我看的不是很清楚,感覺就是把FPGA的I/O封裝起來了。


FPGA的內部邏輯通過AXI4接口和Shell連接,Shell提供對外的PCIe和一個DDR接口;而前面提到的FPGA Link(FPGA間互連)和其它三個DDR接口好像還是在Core Logic中的。如果我看的不對,還請指正。


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




規格族特點:
  • 採用 INTEL ARRIA 10 GX 1150 計算卡

  • CPU 和 Memory 配比爲 1:7.5

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

  • 高性能本地 SSD 盤存儲

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


  • 適用場景:

    • 適用於深度學習推理

    • 基因組學研究、金融分析

    • 實時視頻處理及安全等計算工作負載




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


總結


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


發佈了34 篇原創文章 · 獲贊 92 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章