云計(jì)算已經(jīng)成為了一種新的計(jì)算范式。對(duì)于云計(jì)算而言,虛擬化是一項(xiàng)必不可少的技術(shù),通過將硬件資源虛擬化,我們可以實(shí)現(xiàn)用戶之間的隔離、系統(tǒng)的靈活可擴(kuò)展,提升安全性,使得硬件資源可被充分利用。
從2018年起,因?yàn)?a href="http://m.xsypw.cn/soft/data/30-91/" target="_blank">FPGA的高可編程性、低延遲、高能效等特點(diǎn),越來越多的云服務(wù)提供商,如Amazon、阿里云、微軟Azure,都開始在云端提供了Xilinx FPGA實(shí)例,邁入了云計(jì)算發(fā)展的重要一步。但到目前為止,F(xiàn)PGA云服務(wù)都還是以物理卡的形式、面向于單一的靜態(tài)任務(wù),還沒有很好的針對(duì)于云端FPGA虛擬化的解決方案。
為了解決這一問題,清華大學(xué)汪玉教授研究小組提出了針對(duì)深度學(xué)習(xí)加速的FPGA虛擬化方案,通過多核硬件資源池、基于分塊 (tilling) 的指令封裝、兩級(jí)靜態(tài)與動(dòng)態(tài)編譯的方式,來實(shí)現(xiàn)任務(wù)間的分離,同時(shí)保證快速的在線重編程;深度學(xué)習(xí)加速器的基礎(chǔ)設(shè)計(jì)則基于汪玉教授小組2017年的Angel-Eye工作。相關(guān)論文也將在5月初舉辦的FPGA領(lǐng)域頂級(jí)會(huì)議FCCM2020進(jìn)行在線報(bào)告。
如果想親手測(cè)試的小伙伴,也可以根據(jù)github中的說明,連接服務(wù)器進(jìn)行體驗(yàn):
https://github.com/annoysss123/FPGA-Virt-Exp-on-Aliyun-f3
總體介紹
如圖1 (a) 所示,云端的FPGA一般為VU9P等資源比較多的FPGA芯片,可以同時(shí)支持多路的計(jì)算,因而是可以虛擬化的。公有云的虛擬化一般采用物理資源隔離,或者性能隔離的方式給不同用戶分配計(jì)算資源,前者給不同用戶分配完全不同的計(jì)算資源,后者使用動(dòng)態(tài)重配置等方式使得多用戶與多任務(wù)的情況下總體性能最大化。本項(xiàng)研究中,作為對(duì)照的基本設(shè)計(jì),是在FPGA上部署一個(gè)大核,以時(shí)分復(fù)用 (TDM) 的方式讓多個(gè)用戶使用;而虛擬化設(shè)計(jì)則是選擇空分復(fù)用 (SDM) 的方式來共享同一塊FPGA的計(jì)算資源。
圖1:基于指令集的虛擬化方法:(a) 針對(duì)公有云的硬件架構(gòu);(b) 針對(duì)私有云的編譯器設(shè)計(jì)
而如圖1 (b) 所示,在私有云的情況下,我們希望使得系統(tǒng)總的性能最優(yōu)。如果FPGA允許多個(gè)用戶使用,在新的用戶申請(qǐng)資源后,系統(tǒng)需要給新用戶分配硬件資源——如果需要重新燒寫FPGA,或者重新編譯生成指令,則切換的時(shí)間成本很高。為了讓云端的虛擬化FPGA,可以更加靈活快速的支持動(dòng)態(tài)的深度學(xué)習(xí)推理應(yīng)用,本項(xiàng)虛擬化設(shè)計(jì)的編譯器上分為了靜態(tài)與動(dòng)態(tài)的兩個(gè)階段:首先在離線部署階段,先生成一些列指令的打包 (instruction frame package, IFP) ; 在運(yùn)行時(shí),則根據(jù)不同用戶硬件資源分配的需求,給不同的核分配IFP,來實(shí)現(xiàn)快速的在線重配置。在這種情況下,在線編譯器只需要處理較少的運(yùn)行時(shí)信息,可以將重配置的時(shí)間降低到1ms左右。
圖2. 基于FPGA的虛擬化深度學(xué)習(xí)加速器硬件架構(gòu)
硬件與編譯器設(shè)計(jì)
為了實(shí)現(xiàn)虛擬化方案,如圖2所示,在硬件方面也需要和傳統(tǒng)的深度學(xué)習(xí)加速器有很大的不同。為了能夠?qū)崿F(xiàn)FPGA的空分復(fù)用,該設(shè)計(jì)采用了多核資源池的設(shè)計(jì),每個(gè)用戶會(huì)被分配并且獨(dú)占一定數(shù)量的小計(jì)算核。傳統(tǒng)的指令分發(fā)模塊 (IDM) 只是用來實(shí)現(xiàn)單核的指令分發(fā)與依賴性管理,為了能支持虛擬化,需要將IDM分為兩級(jí):
第一級(jí)IDM包括Instr Mem, Instr Decoder,Content-Switch Controller, 以及Multi-Core Sync. Controller四個(gè)模塊。Instr Mem從DDR中取指并且緩存在片上,Instr decoder將指令分發(fā)到各個(gè)第二級(jí)IDM。Content-Switch Controller可以記錄當(dāng)前神經(jīng)網(wǎng)絡(luò)運(yùn)行到哪一層,可以在任務(wù)切換時(shí)讓計(jì)算核直接在已有的中間結(jié)果上運(yùn)算。而Multi-Core Sync. Controller則是產(chǎn)生同步信號(hào),讓同一個(gè)用戶分配的多個(gè)核的計(jì)算同步。
第二級(jí)IDM則負(fù)責(zé)每個(gè)核內(nèi)的計(jì)算調(diào)度,Context-SwitchController模塊根據(jù)上下文信息控制計(jì)算的重新開始,System Sync. Controller則在多核的計(jì)算同一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),獲取全局同步信號(hào),用來控制該計(jì)算核與其他核的計(jì)算是同步的。
圖3. 基于FPGA的虛擬化深度學(xué)習(xí)加速任務(wù)編譯流程,左為靜態(tài)編譯,右為動(dòng)態(tài)編譯
為了讓同一個(gè)神經(jīng)網(wǎng)絡(luò)可以動(dòng)態(tài)分配到不同計(jì)算核上計(jì)算,需要將總的計(jì)算任務(wù)切成塊(Tilling),這也是神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)中的一個(gè)重要思路。我們可以從多個(gè)不同維度去對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行切塊,比如feature map的height維度,但是這會(huì)讓指令之間的依賴性更加復(fù)雜,因此,本項(xiàng)研究中選擇了feature map的width和outputchannel兩個(gè)維度去進(jìn)行切塊。
如圖3所示,左側(cè)就展示了,我們對(duì)于一個(gè)神經(jīng)網(wǎng)絡(luò)的第i層,在height和outputchannel兩個(gè)維度進(jìn)行切塊,每一塊的一系列指令封裝成一個(gè)IFP;經(jīng)過一個(gè)簡(jiǎn)單的latency simulator,可以得到每一塊的指令總執(zhí)行時(shí)間T_1到T_N (或T_M) 。Allocator模塊則會(huì)根據(jù)不同切塊的計(jì)算延時(shí),將計(jì)算任務(wù)均勻地分配到當(dāng)前用戶所有的多個(gè)計(jì)算核上,實(shí)現(xiàn)負(fù)載均衡,從而使得總體延遲最短。
實(shí)驗(yàn)結(jié)果
為了衡量本虛擬化方案的效果,研究小組分別使用了Xilinx Alveo U200板卡、Xilinx VU9P FPGA (阿里云上實(shí)例)、以及nVidia TeslaV100 GPU運(yùn)行Inception v3, VGG16, MobileNet, ResNet50等四種不同的神經(jīng)網(wǎng)絡(luò)作為測(cè)試。硬件資源使用情況如Table 1所示。
首先,我們需要衡量虛擬化方案帶來的額外編譯與任務(wù)切換的成本。如Table2所示,可以看到,靜態(tài)編譯大約耗費(fèi)14.7-46.8秒,而運(yùn)行時(shí)的動(dòng)態(tài)編譯大約耗時(shí)0.4-1.5ms。再加上下發(fā)指令文件到計(jì)算核并開始計(jì)算的時(shí)間,總體的動(dòng)態(tài)重構(gòu)成本在0.45-1.70ms,相對(duì)于靜態(tài)編譯可以忽略不計(jì),實(shí)時(shí)的切換成本很低。
一個(gè)好的虛擬化方案,應(yīng)該讓用戶獲得的性能和計(jì)算資源的多少成線性。一方面,我們希望不同用戶在分配到了同樣的計(jì)算資源,可以獲得同樣的計(jì)算性能。另一方面,我們希望同樣的用戶,在獲得更多的計(jì)算資源時(shí),獲得的性能能夠隨著計(jì)算資源數(shù)量線性增長(zhǎng)。
圖4.FPGA平臺(tái)與GPU平臺(tái)在不同神經(jīng)網(wǎng)絡(luò)下性能隔離與理想情況的偏離
假設(shè)有4個(gè)用戶,每個(gè)用戶在獲得25%,50%, 75%, 或者100%的計(jì)算資源情況下,我們希望性能與獲得資源的是成比例的。圖4展示了不同計(jì)算資源情況下,每個(gè)用戶獲得的計(jì)算性能相對(duì)于線性關(guān)系的偏離,如對(duì)于ResNet50,在分配50%計(jì)算資源的情況下,4個(gè)用戶在采用GPU虛擬化方案實(shí)際性能有10.3%的差異,而FPGA方案則只有0.1%的性能差異。可以看到,F(xiàn)PGA虛擬化方案的性能隔離明顯更好,同樣計(jì)算資源可以獲得一致的計(jì)算性能。
圖5. 在不同tilling策略下,計(jì)算性能隨著并行度的增長(zhǎng)情況
由于FPGA虛擬化方案是由多個(gè)小核實(shí)現(xiàn)的,我們也會(huì)關(guān)心性能是否隨著分配的計(jì)算核的數(shù)量可以線性增長(zhǎng)。圖5展示了使用FPGA虛擬化方案,在不同神經(jīng)網(wǎng)絡(luò)、在不同tilling策略下,隨著計(jì)算核數(shù)量增加的計(jì)算性能提升情況。紅線表示,如果直接使用一個(gè)大核,可以取得的性能,而“Multi-core-opt”表示從width和output channel兩個(gè)維度根據(jù)延遲進(jìn)行優(yōu)化選擇的策略。對(duì)于Inception v3和VGG16網(wǎng)絡(luò),多核的性能損失相對(duì)于單個(gè)大核只有 0.95%和3.93%;而對(duì)于MobileNet,多核性能則與單個(gè)大核性能有了31.64%的損失,主要原因是對(duì)于MobileNet,存儲(chǔ)帶寬影響更大,多核還是增加了帶寬需求。我們也可以發(fā)現(xiàn)在如VGG16這樣可并行程度較高的神經(jīng)網(wǎng)絡(luò)上,該方案取得了良好的線性度。而對(duì)于Inceptionv3以及MobileNet這樣瓶頸主要在存儲(chǔ)帶寬的情況,哪怕是單個(gè)大核的情況,相對(duì)于純線性增加,性能還是會(huì)有一定的損失,原因也是存儲(chǔ)帶寬的限制。
圖6. 不同方案在多任務(wù)情況下的總吞吐量
最后,研究也測(cè)試了多用戶、多任務(wù)的情況,性能以整個(gè)芯片總的throughput來衡量。如圖6所示,從淺到深的柱狀圖分別代表虛擬化方案、計(jì)算核為單獨(dú)任務(wù)優(yōu)化的虛擬化方案、每個(gè)任務(wù)單獨(dú)一個(gè)計(jì)算核、整芯片部署一個(gè)大核四種情況,在同時(shí)支持不同數(shù)量任務(wù)下的總性能。FPGA上共部署了16個(gè)計(jì)算核、因而可以支持最多16個(gè)任務(wù)同時(shí)運(yùn)行。可以看到,在任務(wù)不多的時(shí)候 (1,2,4個(gè)) ,每個(gè)任務(wù)單獨(dú)一個(gè)計(jì)算核沒辦法充分利用總的計(jì)算資源,因而總的性能較弱,而虛擬化方案可以實(shí)現(xiàn)好得多的性能,在任務(wù)數(shù)多起來以后,單個(gè)大核因?yàn)橥瑫r(shí)只能運(yùn)行一個(gè)任務(wù),總的性能得不到提升。而兩種虛擬化方案,隨著總?cè)蝿?wù)數(shù)的提升,性能在穩(wěn)步提升,在同時(shí)運(yùn)行16個(gè)任務(wù)時(shí),性能與每個(gè)core支持一個(gè)任務(wù)相同,都達(dá)到芯片的最大吞吐。
可以看到,該項(xiàng)研究提出的虛擬化方案,在性能隔離、性能scalability、多任務(wù)擴(kuò)展等情況都有不錯(cuò)的表現(xiàn),任務(wù)切換成本只有大約1ms的情況,單任務(wù)的性能損失在1%-4%左右,多任務(wù)的情況相對(duì)于靜態(tài)的單核方案與靜態(tài)的多核方案,分別可以實(shí)現(xiàn)1.07-1.69倍與1.88-3.12倍的性能提升。該篇論文也已經(jīng)刊登在在arxiv平臺(tái):https://arxiv.org/abs/2003.12101,歡迎感興趣的讀者點(diǎn)擊“查看原文”下載。
在未來,Xilinx技術(shù)社區(qū)也將帶來更多最新的FPGA領(lǐng)域的研究進(jìn)展。
-
FPGA
+關(guān)注
關(guān)注
1634文章
21818瀏覽量
607235 -
封裝
+關(guān)注
關(guān)注
127文章
8078瀏覽量
143653 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5523瀏覽量
121733
原文標(biāo)題:搶先目睹 | 清華大學(xué)汪玉團(tuán)隊(duì)FCCM20最新研究解析
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
清華大學(xué)鯤鵬昇騰科教創(chuàng)新卓越中心專項(xiàng)合作啟動(dòng),引領(lǐng)高校科研和人才培養(yǎng)新模式
清華大學(xué)與華為啟動(dòng)“卓越中心”專項(xiàng)合作
清華大學(xué)自動(dòng)化系學(xué)子走進(jìn)華礪智行研學(xué)交流
清華大學(xué)DeepSeek指南:從入門到精通

理想汽車與清華大學(xué)深化智能汽車領(lǐng)域合作
美光科技一行走進(jìn)清華大學(xué)電子工程系
清華大學(xué)師生到訪智行者科技交流學(xué)習(xí)
博世與清華大學(xué)續(xù)簽人工智能研究合作協(xié)議
英諾達(dá)與清華大學(xué)攜手,共促國(guó)產(chǎn)EDA進(jìn)步
FPGA加速深度學(xué)習(xí)模型的案例
FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?
熱烈歡迎清華大學(xué)電子工程系學(xué)子來武漢六博光電交流實(shí)踐!

評(píng)論