華文網

深度學習的異構加速技術(三):互聯網巨頭們“心水”這些 AI 計算平臺

作者簡介:kevinxiaoyu,高級研究員,隸屬騰訊TEG-架構平臺部,主要研究方向為深度學習異構計算與硬體加速、FPGA雲、高速視覺感知等方向的構架設計和優化。

“深度學習的異構加速技術”系列共有三篇文章,主要在技術層面,對學術界和工業界異構加速的構架演進進行分析。

在前面的論述中,主要在解決頻寬這一核心問題的層面,對學術界湧現的典型架構進行討論。在本篇中,將走進工業界,看一看半導體廠商和互聯網巨頭在AI計算中的不同選擇。

一、半導體廠商的抉擇

不同廠商有不同的應用場景,而適合構架和解決方案也各不相同,如雲側和端側處理構架的設計導向差別較大。對於半導體領域,只要市場規模足夠大,有足夠多的客戶買單,那麼就有足夠的動力去做相應的硬體定制。下面對以Nvidia和Intel為代表的半導體廠商方案進行論述。

1.1、NVIDIA

NVIDIA的應用場景是圖像計算和海量資料平行計算。GPU是異構計算的主力,AI的興起之源,

生態發展得非常成熟,從開發流程到各種庫的支援都非常完善。針對深度學習,NVIDIA的思路是延續其一直以來的GPU構架,並在兩個方向發力,即豐富生態,和提升深度學習領域的定制性。對於前者,推出cuDNN等針對神經網路的優化庫,提升易用性並針對GPU的底層結構進行優化;對於後者,一方面不再堅持32位浮點運算,增加對更多資料類型的支持,如16位浮點和8位元定點等;另一方面通過添加深度學習專用模組(如V100中的TensorCore)強化定制性,
來大幅提升在深度學習應用中的性能。其2017年5月發佈的Volta V100在深度學習的應用中可達120TFlops的強悍算力,參數和構架分別如圖3.1、圖3.2所示。

圖3.1 Volta GPU參數對比,與TensorCore的計算結構

圖3.2 Volta GPU構架

GPU的問題在於:延遲大、能耗比低、成本較高。

為了解決大量內核同時運行導致的頻寬問題,一方面GPU採用類似CPU片內多級緩存的方案,構成臨近存儲;另一方面,採用最先進的記憶體技術,從而在計算時可以跑滿更多的Core。當眾多Core同時訪問顯存時,佇列機制導致對每個Core的請求無法第一時間回應,從而增大了任務處理的延遲。

從定制性和計算細微性上看,GPU的應用物件為通用平行計算,為了相容前期構架和更多應用,

在設計上存在一定的平衡和冗餘。例如在圖3.1圖3.2中,Tensor Core專為AI計算而設計,其他的5120個計算內核更多是為了相容通用平行計算。因此在同等晶片面積和電晶體數量下,其性能功耗比AI專用處理器並不佔優勢。

從成本上看,目前Tesla V100的單卡成本估計為10萬以上,其他型號也在幾千到數萬,在雲端大規模部署時成本過於昂貴。

由於歷史設計的延續性,NVIDIA的GPU主要針對伺服器和桌面機,即使推出了低功耗的TX、TK系列,也是主要針對功耗不太敏感的高性能終端應用,如無人駕駛等。當新興領域出現,為了保證在計算平臺領域產品線的完整,嵌入式市場的競爭力不可或缺。對此,NVIDIA的做法讓人眼前一亮——開源了一套全新的算力可伸縮的深度學習處理器構架:DLA(Deep Learning Accelerator)。通常,開源的方式在羽量級開發的軟體層面比較普遍。由於投入大、門檻高、容錯性差等原因,硬體架構的開源還處於起步階段。DLA成為NVIDIA將生態擴展到嵌入式端的有力武器,避開了和AI計算眾多創業公司的正面對抗,老黃的魄力和想像空間令人讚歎。DLA的RTL構架詳見https://github.com/nvdla/

1.2、Intel

作為通用計算平臺供應商,Intel更不會放棄任何一個大規模的計算平臺市場。在第一篇中提到,用CPU來做進行大規模深度學習計算是低效的。面對GPU可相容深度學習,可羽量級切入的優勢,Intel開始了“買買買”的戰略。在異構計算方面,收購了第二大FPGA公司Altera;在雲端深度學習的應用場景,收購了Nervana;在低功耗嵌入式前端的深度學習應用場景,收購了Movidius;在無人/輔助駕駛的終端應用,收購了Mobileye。

在Intel的預期中,FPGA/AI ASIC可通過QPI介面與至強處理器進行晶片級互聯(頻寬可達PCIE4.0的2倍),甚至集成在同一晶片上。儘管目前合封難度較大而延期,但並不妨礙評估其設計的收益:對於雲端和桌面機這種計算類型不斷變化的場景,一個高頻寬、低延遲、可重構的輔助處理器總是令人期待的,如圖3.3所示:

圖3.3 Intel在Datacenter中的異構計算佈局

Intel-Lake Crest:Intel在2017年10月推出的Lake Crest深度學習晶片,同樣屬於第二階段,算力可伸縮的AI處理器。具備32GB的片上HBM2,同時具備DNN加速和晶片級互聯能力。由於HBM2取代了片外DDR,極大提升了板級的集成度,同時降低了功耗,可適用單卡多片、一機多卡、晶片池化的系統構架。Lake Crest的內部構架如圖3.4所示。

圖3.4 Intel ASIC Lake Crest 內部結構

Movidius:針對低功耗的嵌入式前端應用。這部分市場規模相當大,包括機器人、無人機/車、安防,甚至個人可擕式加速設備。例如,Movidius已推出神經計算棒,針對便攜個人深度學習開發,實現1W功耗下100GFlops的性能。這裡注意一下,這裡的能耗是指可擕式設備的整體能耗。在深度學習定制晶片本身實現100GFlops/W相對容易,但算上供電、控制、片外存儲等晶片後,這個性能就相當不易了,如圖3.5所示。

圖3.5Movidius 的神經計算棒

二、互聯網巨頭的抉擇

2.1、Google

Google非常重視對前沿領域的探索和佈局。早在2013年即意識到AI在業務上將有爆發式增長,不僅內部業務開發需要大量計算資源,對外也需要提供多種AI場景的服務,若使用GPU則成本過高,也不利於豐富AI生態的上下游。完整的從深度學習框架到計算平臺的產品線,更有利於掌握主動權,並實現端到端的應用模式。因此,一方面開始TPU的研製,以其實現與GPU相同性能下成本降低10倍;另一方面開發TensorFlow以及TensorFlow到TPU的編譯環境,借助TF和深度學習雲服務的推行而推動TPU的應用,從而進一步提升TPU的使用量來均攤設計成本。目前,TPU已推出第二代(後文中稱為TPU2),對內應用於搜索、地圖、語音等業務;對外向研究機構開放TPU2的使用申請,營造深度學習端到端的生態鏈。在深度學習領域,如何將搶到並利用先機,完善生態,快速產品化,是Google關注的核心。因此,AI+硬體,或者說應用+硬體的深度結合成為Google IO大會主題“AI First”走向落地,從生態走向應用的關鍵。如雲端的TPU,嵌入式應用端的智慧音箱Google Home、Pixel2手機中的IPU等,都是貫穿這一思路的具體體現。

2.1.1 計算特性與構架變遷——TPU1[1]

Google的TPU經過了TPU1、TPU2兩代,屬於典型的AI晶片從第一階段解決頻寬到第二階段算力伸縮的過度,從鬆散分佈走向算力密集的集群,從傳統網路的資料交互走向超低延遲的晶片級互聯。

TPU1的構架和板級結構分別如圖3.6、圖3.7所示。TPU1僅實現Inference功能,可支援16bit/8bit運算,主要完成矩陣-矩陣乘、矩陣-向量乘、向量-向量乘等功能,來支援MLP(多層感知機)、LSTM和CNN等深度學習演算法。為了快速部署減少資料中心的構架變動,TPU1的硬體以PCIE卡的方式與伺服器通信,板卡上配置了兩組DDR3記憶體。

從內部來看,其構架特點是超大規模的脈動陣列(65536個8bit DSP,對應FPGA VU9P DSP數量為68402,Tesla P40 為38404)和24MB片上緩存-片外DDR的存儲構架,工作頻率為700MHz,峰值計算能力為655360.7Ghz2/1000=91.75Tops,功耗僅40W。之所以能達到如此高的性能而避免了頻寬瓶頸,關鍵在於脈動陣列的計算過程具有極高的資料複用特性,詳見第二篇的2.1節。

圖3.6 TPU1內部結構和片內佈局

圖3.7 TPU1的板級結構和部署

TPU1具有相當強悍的峰值計算能力,然而在實際應用中卻出現了問題:

1 TPU1論文中提到,經統計,Datacenter上更多的客戶關注的是處理延遲 (Latency),而不是更大的輸送量 (Throughput)。TPU推出後,客戶在使用中常常將延遲選項設為最高優先順序。

2 CNN、LSTM和MLP在應用中,對應的計算效率分別為78.2%,8.2%和12.7%,這得益於CNN可以在片上實現較高的資料複用率。Google給出其資料中心上述三者的應用比例分別為5%,29%,61%。儘管TPU高達65536個DSP單元可以在CNN應用中獲得很高的計算效率,然而CNN在Google資料中心的應用比例只有5%,大規模的DSP單元佔用了較大的矽片面積,降低了良品率,增加了成本,僅對5%的應用有較高收益,其性價比值得商榷。

3 PCIE卡的方式使TPU的調用依賴於伺服器,在機架上算力的部署密度也相對較低。

上述問題的核心是計算細微性的問題,脈動矩陣的規模太大了,一方面在LSTM和MLP這種較低資料複用率的場景,頻寬依然是瓶頸;另一方面在延遲優先於吞吐,batchsize較小時,很難跑滿性能,相對較小的計算細微性更適合。因此Google開始了TPU2的開發。

2.1.2 計算特性與構架變遷——TPU2[2]

TPU2為典型的第二階段的AI晶片,應用了16GB的HBM從而獲得600GB/s的片上頻寬,主要解決兩個問題:計算細微性問題和算力伸縮問題。

1 計算細微性:將脈動矩陣規模從256256縮減至雙128128,如圖3.8所示,這樣每次控制和調度單位為原來的四分之一,減少資料導入匯出延遲的同時,更有利於提升單片的計算效率;

2 算力伸縮:將TPU1的PCIE通信模式轉變為板級通信模式,實現多板互聯和高密度算力集群,採用類似晶片級分散式的方式實現算力擴展,降低任務分配、同步的難度和通信成本。例如目前TensorFlow Research Cloud由1024片TUP2構成,估計每個任務至多可以調用256片TPU2。板級互聯避開了傳統伺服器低效的PCIE-乙太網通路,直接在板間實現200GB的通信頻寬,大大降低了板間的通信延遲,有利於跨晶片模型的高效計算,和資料中心7ms的回應速度。

其他改進:

1 片上HBM的應用取代了片外DDR3,減少了板上面積,從而可以在單板上部署4片TPU2;

2 單片性能為45Tops,單板180Tops;

3 支持32bit浮點運算;

4 同時支持training和inference。

圖3.8 TPU2的板級部署和內部結構,包括:單板4晶片(圖中A),2組25GB/s私人網路絡(圖中B),2個OPA(Omni-Path Architecture)介面(圖中C),電源介面(圖中D)。

圖3.9 TPU2在資料中心的部署,其中A、D為CPU機架,B、C為TPU2機架;其中藍線為UPS,紅色虛線為供電電源,綠色虛線為機架的網路切換配置。

2.2、Microsoft

相比於Google選擇自己研製ASIC,微軟的BrainWave計畫[3]則採用可重構的FPGA,推測原因在於:

1 應用場景決定架構。相比於TensorFlow,CNTK的影響力和對硬體的反哺能力較弱;

2 微軟更側重一個可程式設計的異構分散式平臺,以適用於雲端服務類型和規模的多變,以及對延遲敏感的計算密集型應用,而不局限於深度學習。異構分散式平臺成型後,可在FPGA內部劃分固定邏輯(靜態區域)和針對任務的可配置邏輯(動態區域)。其中靜態區域配置為分散式節點框架和資料介面,動態區域可按需更換,如圖3.10、3.11所示。

圖3.10BrainWave計畫的大規模可重構雲構架

圖3.11 Microsoft伺服器端的FPGA池及其智慧網卡結構(第三代)

圖3.11中,FPGA以智慧網卡的方式,與伺服器通過PCIE介面通信。FPGA與FPGA之間採用晶片級互聯方式,具有40Gb的頻寬和超低的通信延遲,且通信過程無需CPU參與。該結構不僅可通過多片FPGA聯合將DNN計算模型完全載入到片上緩存進行超低延遲的計算,也可相容多種加速場景的超低延遲處理,如搜索、視頻、感測器資料流程等[4]。其應用可歸納為以下兩種:

A、規模可伸縮的低延遲任務:當晶片級互聯的FPGA數量成千上萬後,可構成FPGA池,其間的通信和資料交互擺脫PCIE-伺服器的對話模式,直接在晶片級進行任務分派和交互,可構成具備最高1Exa-ops/s的性能,如以78,120,000頁/秒的速度進行機器翻譯;對於LSTM這類頻寬為瓶頸的場景,則通過將模型拆分,並部署到多片上,使計算時權值無需從片外DDR導入,規避了頻寬的限制,實現算力的釋放;

B、本地加速器:類似TPU1的加速方式,作為伺服器本地加速器,通過PCIE進行資料交互和任務分配。不僅可用於DNN的主要計算單元,也可作為專注預處理的輔助處理器,以智慧網卡的方式置於伺服器網路介面與交換機之間,降低高吞吐下CPU的載荷,使CPU專注於更擅長的任務環節,例如雲服務的資料流程即時編解碼、加密、解密等。

圖3.11是微軟的第三代FPGA池化的構架。第一代為單卡多片,一機四卡為一個計算細微性,如圖3.12所示。第二代為單機單卡,保證伺服器的同構性。

圖3.12 Microsoft伺服器端的FPGA加速卡與任務分配(第一代)

2.3、IBM

IBM也有推出類腦ASIC TrueNorth[5],早在2006年即開始立項,將時鐘頻率降低至1KHz,以注重低功耗應用。其晶片內節點的互聯方式可程式設計實現,在學術界和國防專案的嵌入式前端的視覺識別上有相關應用,且可以海量晶片互聯以實現更大規模的任務,如圖3.13所示。

圖3.13 TrueNorth晶片構架與互聯

2.4、資料中心的應用綜述小結與對比

在Datacenter端,FPGA與ASIC的對比可歸納為以下幾個方面:

A、業務範圍與靈活性:相比於TPU等雲端加速ASIC,FPGA的單卡性能有限,基於FPGA構架是否具有優勢取決於DataCenter加速業務的覆蓋範圍。當以雲服務為代表的主流加速業務並不局限於DNN等矩陣運算,而需要應對不同客戶的多種加速或大資料處理應用時,具備可重構、深度定制能力的FPGA將是一個不錯的選擇。ASIC主要針對某一特定領域或特定應用。針對應用越具體,構架越有針對性,其計算效率越高,覆蓋的業務範圍也越窄。

B、峰值計算能力:峰值計算能力取決於兩個方面,運算單元數量和工作頻率。對於前者,在不考慮頻寬和功耗的約束下,ASIC可按需定制運算單元數量和物理上的空間分佈,理論上沒有上限,從而達到更高的計算性能和能耗效率,如TPU高達92Tops/s;FPGA為了保持一定通用性和可程式設計能力,只能通過型號區分DSP數量,且DSP上限由FPGA廠商決定。FPGA的工作頻率並不固定,取決於製造工藝(如TPU@28nm,寒武紀DianNao@65nm)和設計的邏輯延遲。為了相容多種設計,FPGA的邏輯單元、DSP(FPGA內部的乘加運算單元)、RAM等資源在實體層面的空間分佈近似均勻分佈,DSP與DSP、RAM與RAM之間的整合存在固有的路徑延遲,大規模邏輯的頻率上限通常在500M以下,DSP等硬核在1GHz以下。ASIC可定製片內的資源分佈而不存在固有路徑延遲,從而達到更高的頻率(如NVIDIA P4@1.5GHz,Intel i7 4790@3.6GHz)。另外,實際運行的性能是否能逼近峰值計算能力,取決於針對性的定制程度。FPGA的深度定制可以保證每個DSP的利用率,在一定程度上彌補DSP數量不如ASIC的劣勢。

C、計算效率:取決於計算細微性于構架調度方式的平衡。當計算細微性較大,如TPU1 256*256規模的脈動陣列,要跑滿性能需要極大的頻寬和高度的資料複用率支援,在多樣化的場景下很難保證較高的計算效率。因此更多的構架中,採用中小規模的處理結構(如256個DSP)構成一個PE(Processing Element),多PE構成PE陣列,通過多層結構的任務分配和調度保證計算效率(如寒武紀的DaDianNao)。

D、設計週期與上線時間:FPGA採用可程式設計方式,將設計與流片過程解耦,大規模邏輯的開發週期通常為半年;ASIC不僅設計過程更複雜,流片、封裝等過程的排期也受制于廠商,開發週期通常為18-24個月。即使以Google TPU團隊的規模和投入,從設計到部署也經歷了15個月。3倍滯後時間使FPGA更適合快速反覆運算,以快速切入不斷更新的演算法模型。

(1)

上式中,Ct為晶片設計和加工的總成本,Cd為設計成本,Cm為加工中的光罩(Mask)成本,Cp為每片晶元(Wafer)的加工成本,V為總產量,y為成品率,n為每個晶元上可切割出的晶片數量。從上式可知,ASIC在確定製造工藝時,ASIC的單位成本取決於部署數量V。當部署萬片以上,單價可降至幾百元。同時,ASIC的成本與加工工藝的關係密切。採用更高精度的工藝可有效提升晶片的工作頻率,並降低功耗,但總成本也大幅度增加。

上述對比僅僅是對晶片本身優劣的分析。有時,在一個完整的產業鏈條下,ASIC的價值並不限於其本身,而是一個領域擴張之後,走向上下游的必經之路。相比于未來幾年整個產業鏈和生態的繁榮和壟斷,ASIC的流片成本就顯得微不足道了。可以說,TPU只是Google主導深度學習領域,並向上下游邁進時,在雲端的佈局。相比於正在逐漸展開的嵌入式端AI硬體的應用,僅僅是一個開局而已。

三、Datacenter與雲端低延遲FPGA與ASIC的必經之路

隨著深度學習與大資料的結合,和多種應用的落地,計算平臺的演進終究還是生態的競爭。性能、延遲、吞吐是關鍵指標,但有時易用性、普適性和運營方式才是勝負的關鍵。整體來看,GPU、FPGA和ASIC更擅勝場。GPU生態最好,多年的經營使其在庫的完備性、演算法與硬體的端到端的易用性、開發群體社區營造都是無可比擬的。FPGA靈活性最好,可在新興計算初期,ASIC出現之前快速切入應用市場,搶佔先機,且不受ASIC應用規模和成本的約束,適合雲端這種多變場景下的可重構的異構計算。ASIC的定制性可控,在解決頻寬的前提下幾乎可以實現於GPU和FPGA 10倍~100倍的物理計算規模,成為資料中心的終極武器。

儘管對於某一個較窄的領域,FPGA和ASIC可以做到比GPU更深入的定制,但在AI模型不斷更新的今天,想趕超GPU必須解決兩個問題,一是反覆運算週期,二是端到端的生態營造。

3.1、FPGA與ASIC的問題——反覆運算週期

FPGA與ASIC的開發週期和門檻一直為人所詬病。即使反覆運算較快的FPGA,一個Datacenter的項目從立項到上線也要近半年,在新機遇出現時無法迅速佔領市場。為此,目前業界有兩種解決方案,即高層次綜合和AI輔助處理器。

1)高層次綜合,即使用C等高層次語言進行開發,而後通過高層次綜合工具直接將其轉化為可直接應用於FPGA或ASIC的RTL級結構,將開發效率提升4倍以上。典型的代表如Xilinx主推的HLS和Altera主推的OpenCL等。然而HLS生成的結構相比于直接RTL開發,在執行效率、邏輯規模上有較大差距,會降低約30%的性能。對此,一些廠商在高層次綜合中加入針對AI演算法的優化,即使用RTL開發常用的AI模組構成硬體IP庫,如CNN中的Conv、Pooling、RELU等,取代一部分高層次綜合自動生成的模組,尋求定制性和易用性的平衡,來提升最終系統的性能。

2)AI輔助處理器,即開發具有部分通用性的FPGA或ASIC。為了尋求通用性與定制性之間的平衡,保證輔助處理器的計算效率,僅將演算法模型中耗時最長、計算密度最高的任務放到輔助處理器中,其他部分由CPU完成,從而降低通用性帶來的性能損失。同時,輔助處理器支援相應的指令集,CPU通過傳輸指令的方式調用輔助處理器,以應對不同應用場景。當邏輯結構固化後,將RTL開發的長週期反覆運算轉化為指令序列的開發,甚至不需要FPGA工程的重新編譯和佈局布 線,極大降低了切入時間。不同於DianNao系列和TPU,寒武紀的Cambricon處理器是一種以指令為導向的處理器,指令集最為完備[6],如圖3.14所示。當然,FPGA上也可以實現通用AI輔助處理器,但由於資源受限,在大批量的應用場景出現之後最終也將走向ASIC。

圖3.14 寒武紀Cambricon處理器的指令集與晶片整體構架

3.2、FPGA與ASIC的問題——端到端的生態營造

端到端是指,從TensorFlow、Torch、Caffe等深度學習演算法框架到硬體的無縫連接,使開發者在不具備硬體知識和優化方法的前提下,完全依靠由編譯器來完成計算資源的調用和優化,甚至使用了硬體加速而不自知。在這一點上,GPU走在了異構計算的最前列。當FPGA和ASIC以AI輔助處理器的方式參與計算時,需要在深度學習框架中提供相應介面,由編譯器將框架中的代碼轉化為符合硬體指令集的指令序列,從而實現FPGA或ASIC的頂層調用。其中,編譯器實現指令序列的過程中,要符合硬體資源的最優配置,如支援單卡單片、單卡多片、多卡單片、多卡多片等硬體實際配置模式。另外,用戶的側重點也不同,尤其對Inference服務,使用者需求在吞吐、延遲、資源配給等各個方面差異性非常大。動態的協調硬體資源和計算拓撲,甚至從單機、多機走向分散式,編譯器的角色至關重要。

四、結語

在FPGA、ASIC甚至量子計算等全新的計算模式的選擇中,無論是以應用場景為設計導向,還是把握通用與定制、性能與頻寬的平衡,其根本在於對Datacenter業務需求和行業走向的深刻理解,構架和方案的分歧也在於此,而這也是我們對異構計算架構中探索的動力源泉。

參考文獻

[1] Jouppi N P, Young C, Patil N, et al. In-datacenter performance analysis of a tensor processing unit[J]. arXiv preprint arXiv:1704.04760, 2017.

[2] Jeff Dean. Recent Advances in Artificial Intelligence and the Implications for Computer System Design[C]. Hot Chips 2017.

[3] Eric Chung, Jeremy Fowers, Kalin Ovtcharov, et al. Accelerating Persistent Neural Networks at Datacenter Scale[C]. Hot Chips 2017.

[4] Caulfield A M, Chung E S, Putnam A, et al. A cloud-scale acceleration architecture[C]//Microarchitecture (MICRO), 2016 49th Annual IEEE/ACM International Symposium on. IEEE, 2016: 1-13.

[5] Merolla P A, Arthur J V, Alvarez-Icaza R, et al. A million spiking-neuron integrated circuit with a scalable communication network and interface[J]. Science, 2014, 345(6197): 668-673.

[6] Liu S, Du Z, Tao J, et al. Cambricon: An Instruction Set Architecture for Neural Networks[C]// International Symposium on Computer Architecture. IEEE Press, 2016:393-405.

關於電子創新網

電子創新網及時發佈有關創新設計的最新全球半導體產業資訊、半導體供應商最新動態、展會研討會資訊、技術趨勢資訊以及人物訪談等相關新聞,關注公眾號獲取更多資訊。

掃描二維碼,關注更多精彩

也是主要針對功耗不太敏感的高性能終端應用,如無人駕駛等。當新興領域出現,為了保證在計算平臺領域產品線的完整,嵌入式市場的競爭力不可或缺。對此,NVIDIA的做法讓人眼前一亮——開源了一套全新的算力可伸縮的深度學習處理器構架:DLA(Deep Learning Accelerator)。通常,開源的方式在羽量級開發的軟體層面比較普遍。由於投入大、門檻高、容錯性差等原因,硬體架構的開源還處於起步階段。DLA成為NVIDIA將生態擴展到嵌入式端的有力武器,避開了和AI計算眾多創業公司的正面對抗,老黃的魄力和想像空間令人讚歎。DLA的RTL構架詳見https://github.com/nvdla/

1.2、Intel

作為通用計算平臺供應商,Intel更不會放棄任何一個大規模的計算平臺市場。在第一篇中提到,用CPU來做進行大規模深度學習計算是低效的。面對GPU可相容深度學習,可羽量級切入的優勢,Intel開始了“買買買”的戰略。在異構計算方面,收購了第二大FPGA公司Altera;在雲端深度學習的應用場景,收購了Nervana;在低功耗嵌入式前端的深度學習應用場景,收購了Movidius;在無人/輔助駕駛的終端應用,收購了Mobileye。

在Intel的預期中,FPGA/AI ASIC可通過QPI介面與至強處理器進行晶片級互聯(頻寬可達PCIE4.0的2倍),甚至集成在同一晶片上。儘管目前合封難度較大而延期,但並不妨礙評估其設計的收益:對於雲端和桌面機這種計算類型不斷變化的場景,一個高頻寬、低延遲、可重構的輔助處理器總是令人期待的,如圖3.3所示:

圖3.3 Intel在Datacenter中的異構計算佈局

Intel-Lake Crest:Intel在2017年10月推出的Lake Crest深度學習晶片,同樣屬於第二階段,算力可伸縮的AI處理器。具備32GB的片上HBM2,同時具備DNN加速和晶片級互聯能力。由於HBM2取代了片外DDR,極大提升了板級的集成度,同時降低了功耗,可適用單卡多片、一機多卡、晶片池化的系統構架。Lake Crest的內部構架如圖3.4所示。

圖3.4 Intel ASIC Lake Crest 內部結構

Movidius:針對低功耗的嵌入式前端應用。這部分市場規模相當大,包括機器人、無人機/車、安防,甚至個人可擕式加速設備。例如,Movidius已推出神經計算棒,針對便攜個人深度學習開發,實現1W功耗下100GFlops的性能。這裡注意一下,這裡的能耗是指可擕式設備的整體能耗。在深度學習定制晶片本身實現100GFlops/W相對容易,但算上供電、控制、片外存儲等晶片後,這個性能就相當不易了,如圖3.5所示。

圖3.5Movidius 的神經計算棒

二、互聯網巨頭的抉擇

2.1、Google

Google非常重視對前沿領域的探索和佈局。早在2013年即意識到AI在業務上將有爆發式增長,不僅內部業務開發需要大量計算資源,對外也需要提供多種AI場景的服務,若使用GPU則成本過高,也不利於豐富AI生態的上下游。完整的從深度學習框架到計算平臺的產品線,更有利於掌握主動權,並實現端到端的應用模式。因此,一方面開始TPU的研製,以其實現與GPU相同性能下成本降低10倍;另一方面開發TensorFlow以及TensorFlow到TPU的編譯環境,借助TF和深度學習雲服務的推行而推動TPU的應用,從而進一步提升TPU的使用量來均攤設計成本。目前,TPU已推出第二代(後文中稱為TPU2),對內應用於搜索、地圖、語音等業務;對外向研究機構開放TPU2的使用申請,營造深度學習端到端的生態鏈。在深度學習領域,如何將搶到並利用先機,完善生態,快速產品化,是Google關注的核心。因此,AI+硬體,或者說應用+硬體的深度結合成為Google IO大會主題“AI First”走向落地,從生態走向應用的關鍵。如雲端的TPU,嵌入式應用端的智慧音箱Google Home、Pixel2手機中的IPU等,都是貫穿這一思路的具體體現。

2.1.1 計算特性與構架變遷——TPU1[1]

Google的TPU經過了TPU1、TPU2兩代,屬於典型的AI晶片從第一階段解決頻寬到第二階段算力伸縮的過度,從鬆散分佈走向算力密集的集群,從傳統網路的資料交互走向超低延遲的晶片級互聯。

TPU1的構架和板級結構分別如圖3.6、圖3.7所示。TPU1僅實現Inference功能,可支援16bit/8bit運算,主要完成矩陣-矩陣乘、矩陣-向量乘、向量-向量乘等功能,來支援MLP(多層感知機)、LSTM和CNN等深度學習演算法。為了快速部署減少資料中心的構架變動,TPU1的硬體以PCIE卡的方式與伺服器通信,板卡上配置了兩組DDR3記憶體。

從內部來看,其構架特點是超大規模的脈動陣列(65536個8bit DSP,對應FPGA VU9P DSP數量為68402,Tesla P40 為38404)和24MB片上緩存-片外DDR的存儲構架,工作頻率為700MHz,峰值計算能力為655360.7Ghz2/1000=91.75Tops,功耗僅40W。之所以能達到如此高的性能而避免了頻寬瓶頸,關鍵在於脈動陣列的計算過程具有極高的資料複用特性,詳見第二篇的2.1節。

圖3.6 TPU1內部結構和片內佈局

圖3.7 TPU1的板級結構和部署

TPU1具有相當強悍的峰值計算能力,然而在實際應用中卻出現了問題:

1 TPU1論文中提到,經統計,Datacenter上更多的客戶關注的是處理延遲 (Latency),而不是更大的輸送量 (Throughput)。TPU推出後,客戶在使用中常常將延遲選項設為最高優先順序。

2 CNN、LSTM和MLP在應用中,對應的計算效率分別為78.2%,8.2%和12.7%,這得益於CNN可以在片上實現較高的資料複用率。Google給出其資料中心上述三者的應用比例分別為5%,29%,61%。儘管TPU高達65536個DSP單元可以在CNN應用中獲得很高的計算效率,然而CNN在Google資料中心的應用比例只有5%,大規模的DSP單元佔用了較大的矽片面積,降低了良品率,增加了成本,僅對5%的應用有較高收益,其性價比值得商榷。

3 PCIE卡的方式使TPU的調用依賴於伺服器,在機架上算力的部署密度也相對較低。

上述問題的核心是計算細微性的問題,脈動矩陣的規模太大了,一方面在LSTM和MLP這種較低資料複用率的場景,頻寬依然是瓶頸;另一方面在延遲優先於吞吐,batchsize較小時,很難跑滿性能,相對較小的計算細微性更適合。因此Google開始了TPU2的開發。

2.1.2 計算特性與構架變遷——TPU2[2]

TPU2為典型的第二階段的AI晶片,應用了16GB的HBM從而獲得600GB/s的片上頻寬,主要解決兩個問題:計算細微性問題和算力伸縮問題。

1 計算細微性:將脈動矩陣規模從256256縮減至雙128128,如圖3.8所示,這樣每次控制和調度單位為原來的四分之一,減少資料導入匯出延遲的同時,更有利於提升單片的計算效率;

2 算力伸縮:將TPU1的PCIE通信模式轉變為板級通信模式,實現多板互聯和高密度算力集群,採用類似晶片級分散式的方式實現算力擴展,降低任務分配、同步的難度和通信成本。例如目前TensorFlow Research Cloud由1024片TUP2構成,估計每個任務至多可以調用256片TPU2。板級互聯避開了傳統伺服器低效的PCIE-乙太網通路,直接在板間實現200GB的通信頻寬,大大降低了板間的通信延遲,有利於跨晶片模型的高效計算,和資料中心7ms的回應速度。

其他改進:

1 片上HBM的應用取代了片外DDR3,減少了板上面積,從而可以在單板上部署4片TPU2;

2 單片性能為45Tops,單板180Tops;

3 支持32bit浮點運算;

4 同時支持training和inference。

圖3.8 TPU2的板級部署和內部結構,包括:單板4晶片(圖中A),2組25GB/s私人網路絡(圖中B),2個OPA(Omni-Path Architecture)介面(圖中C),電源介面(圖中D)。

圖3.9 TPU2在資料中心的部署,其中A、D為CPU機架,B、C為TPU2機架;其中藍線為UPS,紅色虛線為供電電源,綠色虛線為機架的網路切換配置。

2.2、Microsoft

相比於Google選擇自己研製ASIC,微軟的BrainWave計畫[3]則採用可重構的FPGA,推測原因在於:

1 應用場景決定架構。相比於TensorFlow,CNTK的影響力和對硬體的反哺能力較弱;

2 微軟更側重一個可程式設計的異構分散式平臺,以適用於雲端服務類型和規模的多變,以及對延遲敏感的計算密集型應用,而不局限於深度學習。異構分散式平臺成型後,可在FPGA內部劃分固定邏輯(靜態區域)和針對任務的可配置邏輯(動態區域)。其中靜態區域配置為分散式節點框架和資料介面,動態區域可按需更換,如圖3.10、3.11所示。

圖3.10BrainWave計畫的大規模可重構雲構架

圖3.11 Microsoft伺服器端的FPGA池及其智慧網卡結構(第三代)

圖3.11中,FPGA以智慧網卡的方式,與伺服器通過PCIE介面通信。FPGA與FPGA之間採用晶片級互聯方式,具有40Gb的頻寬和超低的通信延遲,且通信過程無需CPU參與。該結構不僅可通過多片FPGA聯合將DNN計算模型完全載入到片上緩存進行超低延遲的計算,也可相容多種加速場景的超低延遲處理,如搜索、視頻、感測器資料流程等[4]。其應用可歸納為以下兩種:

A、規模可伸縮的低延遲任務:當晶片級互聯的FPGA數量成千上萬後,可構成FPGA池,其間的通信和資料交互擺脫PCIE-伺服器的對話模式,直接在晶片級進行任務分派和交互,可構成具備最高1Exa-ops/s的性能,如以78,120,000頁/秒的速度進行機器翻譯;對於LSTM這類頻寬為瓶頸的場景,則通過將模型拆分,並部署到多片上,使計算時權值無需從片外DDR導入,規避了頻寬的限制,實現算力的釋放;

B、本地加速器:類似TPU1的加速方式,作為伺服器本地加速器,通過PCIE進行資料交互和任務分配。不僅可用於DNN的主要計算單元,也可作為專注預處理的輔助處理器,以智慧網卡的方式置於伺服器網路介面與交換機之間,降低高吞吐下CPU的載荷,使CPU專注於更擅長的任務環節,例如雲服務的資料流程即時編解碼、加密、解密等。

圖3.11是微軟的第三代FPGA池化的構架。第一代為單卡多片,一機四卡為一個計算細微性,如圖3.12所示。第二代為單機單卡,保證伺服器的同構性。

圖3.12 Microsoft伺服器端的FPGA加速卡與任務分配(第一代)

2.3、IBM

IBM也有推出類腦ASIC TrueNorth[5],早在2006年即開始立項,將時鐘頻率降低至1KHz,以注重低功耗應用。其晶片內節點的互聯方式可程式設計實現,在學術界和國防專案的嵌入式前端的視覺識別上有相關應用,且可以海量晶片互聯以實現更大規模的任務,如圖3.13所示。

圖3.13 TrueNorth晶片構架與互聯

2.4、資料中心的應用綜述小結與對比

在Datacenter端,FPGA與ASIC的對比可歸納為以下幾個方面:

A、業務範圍與靈活性:相比於TPU等雲端加速ASIC,FPGA的單卡性能有限,基於FPGA構架是否具有優勢取決於DataCenter加速業務的覆蓋範圍。當以雲服務為代表的主流加速業務並不局限於DNN等矩陣運算,而需要應對不同客戶的多種加速或大資料處理應用時,具備可重構、深度定制能力的FPGA將是一個不錯的選擇。ASIC主要針對某一特定領域或特定應用。針對應用越具體,構架越有針對性,其計算效率越高,覆蓋的業務範圍也越窄。

B、峰值計算能力:峰值計算能力取決於兩個方面,運算單元數量和工作頻率。對於前者,在不考慮頻寬和功耗的約束下,ASIC可按需定制運算單元數量和物理上的空間分佈,理論上沒有上限,從而達到更高的計算性能和能耗效率,如TPU高達92Tops/s;FPGA為了保持一定通用性和可程式設計能力,只能通過型號區分DSP數量,且DSP上限由FPGA廠商決定。FPGA的工作頻率並不固定,取決於製造工藝(如TPU@28nm,寒武紀DianNao@65nm)和設計的邏輯延遲。為了相容多種設計,FPGA的邏輯單元、DSP(FPGA內部的乘加運算單元)、RAM等資源在實體層面的空間分佈近似均勻分佈,DSP與DSP、RAM與RAM之間的整合存在固有的路徑延遲,大規模邏輯的頻率上限通常在500M以下,DSP等硬核在1GHz以下。ASIC可定製片內的資源分佈而不存在固有路徑延遲,從而達到更高的頻率(如NVIDIA P4@1.5GHz,Intel i7 4790@3.6GHz)。另外,實際運行的性能是否能逼近峰值計算能力,取決於針對性的定制程度。FPGA的深度定制可以保證每個DSP的利用率,在一定程度上彌補DSP數量不如ASIC的劣勢。

C、計算效率:取決於計算細微性于構架調度方式的平衡。當計算細微性較大,如TPU1 256*256規模的脈動陣列,要跑滿性能需要極大的頻寬和高度的資料複用率支援,在多樣化的場景下很難保證較高的計算效率。因此更多的構架中,採用中小規模的處理結構(如256個DSP)構成一個PE(Processing Element),多PE構成PE陣列,通過多層結構的任務分配和調度保證計算效率(如寒武紀的DaDianNao)。

D、設計週期與上線時間:FPGA採用可程式設計方式,將設計與流片過程解耦,大規模邏輯的開發週期通常為半年;ASIC不僅設計過程更複雜,流片、封裝等過程的排期也受制于廠商,開發週期通常為18-24個月。即使以Google TPU團隊的規模和投入,從設計到部署也經歷了15個月。3倍滯後時間使FPGA更適合快速反覆運算,以快速切入不斷更新的演算法模型。

(1)

上式中,Ct為晶片設計和加工的總成本,Cd為設計成本,Cm為加工中的光罩(Mask)成本,Cp為每片晶元(Wafer)的加工成本,V為總產量,y為成品率,n為每個晶元上可切割出的晶片數量。從上式可知,ASIC在確定製造工藝時,ASIC的單位成本取決於部署數量V。當部署萬片以上,單價可降至幾百元。同時,ASIC的成本與加工工藝的關係密切。採用更高精度的工藝可有效提升晶片的工作頻率,並降低功耗,但總成本也大幅度增加。

上述對比僅僅是對晶片本身優劣的分析。有時,在一個完整的產業鏈條下,ASIC的價值並不限於其本身,而是一個領域擴張之後,走向上下游的必經之路。相比于未來幾年整個產業鏈和生態的繁榮和壟斷,ASIC的流片成本就顯得微不足道了。可以說,TPU只是Google主導深度學習領域,並向上下游邁進時,在雲端的佈局。相比於正在逐漸展開的嵌入式端AI硬體的應用,僅僅是一個開局而已。

三、Datacenter與雲端低延遲FPGA與ASIC的必經之路

隨著深度學習與大資料的結合,和多種應用的落地,計算平臺的演進終究還是生態的競爭。性能、延遲、吞吐是關鍵指標,但有時易用性、普適性和運營方式才是勝負的關鍵。整體來看,GPU、FPGA和ASIC更擅勝場。GPU生態最好,多年的經營使其在庫的完備性、演算法與硬體的端到端的易用性、開發群體社區營造都是無可比擬的。FPGA靈活性最好,可在新興計算初期,ASIC出現之前快速切入應用市場,搶佔先機,且不受ASIC應用規模和成本的約束,適合雲端這種多變場景下的可重構的異構計算。ASIC的定制性可控,在解決頻寬的前提下幾乎可以實現於GPU和FPGA 10倍~100倍的物理計算規模,成為資料中心的終極武器。

儘管對於某一個較窄的領域,FPGA和ASIC可以做到比GPU更深入的定制,但在AI模型不斷更新的今天,想趕超GPU必須解決兩個問題,一是反覆運算週期,二是端到端的生態營造。

3.1、FPGA與ASIC的問題——反覆運算週期

FPGA與ASIC的開發週期和門檻一直為人所詬病。即使反覆運算較快的FPGA,一個Datacenter的項目從立項到上線也要近半年,在新機遇出現時無法迅速佔領市場。為此,目前業界有兩種解決方案,即高層次綜合和AI輔助處理器。

1)高層次綜合,即使用C等高層次語言進行開發,而後通過高層次綜合工具直接將其轉化為可直接應用於FPGA或ASIC的RTL級結構,將開發效率提升4倍以上。典型的代表如Xilinx主推的HLS和Altera主推的OpenCL等。然而HLS生成的結構相比于直接RTL開發,在執行效率、邏輯規模上有較大差距,會降低約30%的性能。對此,一些廠商在高層次綜合中加入針對AI演算法的優化,即使用RTL開發常用的AI模組構成硬體IP庫,如CNN中的Conv、Pooling、RELU等,取代一部分高層次綜合自動生成的模組,尋求定制性和易用性的平衡,來提升最終系統的性能。

2)AI輔助處理器,即開發具有部分通用性的FPGA或ASIC。為了尋求通用性與定制性之間的平衡,保證輔助處理器的計算效率,僅將演算法模型中耗時最長、計算密度最高的任務放到輔助處理器中,其他部分由CPU完成,從而降低通用性帶來的性能損失。同時,輔助處理器支援相應的指令集,CPU通過傳輸指令的方式調用輔助處理器,以應對不同應用場景。當邏輯結構固化後,將RTL開發的長週期反覆運算轉化為指令序列的開發,甚至不需要FPGA工程的重新編譯和佈局布 線,極大降低了切入時間。不同於DianNao系列和TPU,寒武紀的Cambricon處理器是一種以指令為導向的處理器,指令集最為完備[6],如圖3.14所示。當然,FPGA上也可以實現通用AI輔助處理器,但由於資源受限,在大批量的應用場景出現之後最終也將走向ASIC。

圖3.14 寒武紀Cambricon處理器的指令集與晶片整體構架

3.2、FPGA與ASIC的問題——端到端的生態營造

端到端是指,從TensorFlow、Torch、Caffe等深度學習演算法框架到硬體的無縫連接,使開發者在不具備硬體知識和優化方法的前提下,完全依靠由編譯器來完成計算資源的調用和優化,甚至使用了硬體加速而不自知。在這一點上,GPU走在了異構計算的最前列。當FPGA和ASIC以AI輔助處理器的方式參與計算時,需要在深度學習框架中提供相應介面,由編譯器將框架中的代碼轉化為符合硬體指令集的指令序列,從而實現FPGA或ASIC的頂層調用。其中,編譯器實現指令序列的過程中,要符合硬體資源的最優配置,如支援單卡單片、單卡多片、多卡單片、多卡多片等硬體實際配置模式。另外,用戶的側重點也不同,尤其對Inference服務,使用者需求在吞吐、延遲、資源配給等各個方面差異性非常大。動態的協調硬體資源和計算拓撲,甚至從單機、多機走向分散式,編譯器的角色至關重要。

四、結語

在FPGA、ASIC甚至量子計算等全新的計算模式的選擇中,無論是以應用場景為設計導向,還是把握通用與定制、性能與頻寬的平衡,其根本在於對Datacenter業務需求和行業走向的深刻理解,構架和方案的分歧也在於此,而這也是我們對異構計算架構中探索的動力源泉。

參考文獻

[1] Jouppi N P, Young C, Patil N, et al. In-datacenter performance analysis of a tensor processing unit[J]. arXiv preprint arXiv:1704.04760, 2017.

[2] Jeff Dean. Recent Advances in Artificial Intelligence and the Implications for Computer System Design[C]. Hot Chips 2017.

[3] Eric Chung, Jeremy Fowers, Kalin Ovtcharov, et al. Accelerating Persistent Neural Networks at Datacenter Scale[C]. Hot Chips 2017.

[4] Caulfield A M, Chung E S, Putnam A, et al. A cloud-scale acceleration architecture[C]//Microarchitecture (MICRO), 2016 49th Annual IEEE/ACM International Symposium on. IEEE, 2016: 1-13.

[5] Merolla P A, Arthur J V, Alvarez-Icaza R, et al. A million spiking-neuron integrated circuit with a scalable communication network and interface[J]. Science, 2014, 345(6197): 668-673.

[6] Liu S, Du Z, Tao J, et al. Cambricon: An Instruction Set Architecture for Neural Networks[C]// International Symposium on Computer Architecture. IEEE Press, 2016:393-405.

關於電子創新網

電子創新網及時發佈有關創新設計的最新全球半導體產業資訊、半導體供應商最新動態、展會研討會資訊、技術趨勢資訊以及人物訪談等相關新聞,關注公眾號獲取更多資訊。

掃描二維碼,關注更多精彩