致力逼真角色,Meta為Codec Avatar解碼提出硬件加速器框架F-CAD
查看引用/信息源請點(diǎn)擊:映維網(wǎng)
Codec Avatar
(映維網(wǎng)?2021年12月23日)Meta一直致力于名為Codec Avatar的虛擬化身項(xiàng)目,從而幫助克服人與人之間,以及人與機(jī)會之間的物理距離挑戰(zhàn)。借助突破性的3D捕獲技術(shù)和人工智能系統(tǒng),Codec Avatar可以幫助人們在未來快速輕松地創(chuàng)建逼真的虛擬化身,令虛擬現(xiàn)實(shí)中的社交聯(lián)系變得如同現(xiàn)實(shí)世界般自然和常見。盡管虛擬角色多年來一直是游戲和應(yīng)用的主要元素,但這家公司相信逼真的虛擬表現(xiàn)將會改變一切。
對于這個(gè)項(xiàng)目,團(tuán)隊(duì)早前已經(jīng)多次分享過相關(guān)的研究進(jìn)展。日前,Meta又通過名為《F-CAD: A Framework to Explore Hardware Accelerators for Codec Avatar Decoding》的論文介紹了用于為Codec Avatar解碼探索硬件加速器的框架F-CAD。

整個(gè)系統(tǒng)如圖1所示,其中發(fā)射機(jī)(TX)的所有信息(例如扭曲的微笑和皺眉)將在到達(dá)接收機(jī)(RX)后進(jìn)行編碼、發(fā)送和解碼,以生成用于高保真社交臨場感的Codec Avatar。其中,解碼器是最復(fù)雜的模塊,占整個(gè)系統(tǒng)所需計(jì)算量的90%。如果沒有有效的優(yōu)化,它將輕易成為瓶頸,阻礙虛擬現(xiàn)實(shí)臨場感的順利實(shí)現(xiàn)。隨著VR/AR耳機(jī)的普及,社會需求不斷增加,對實(shí)時(shí)和高質(zhì)量編解碼器-化身解碼的要求也越來越高。然而,在虛擬現(xiàn)實(shí)耳機(jī)上部署編解碼器-化身解碼器帶來了重大挑戰(zhàn)。
最先進(jìn)的解碼器屬于計(jì)算和內(nèi)存密集型,例如它可以包含超過13.6個(gè)GOP和720萬個(gè)參數(shù)。同時(shí),大多數(shù)頭顯只能提供有限的計(jì)算、內(nèi)存和電源預(yù)算。為了防止暈動(dòng)癥,并提供實(shí)時(shí)響應(yīng)以支持流暢用戶交互,VR相較于非VR應(yīng)用(30 FPS)要求更高的刷新率(90 FPS,甚至120 FPS)。
它要求硬件在不使用大batch size的情況下提供高吞吐量,因?yàn)槭占痓atch輸入的額外延遲可能無法滿足實(shí)時(shí)要求。另外,新興解碼器開始采用具有定制神經(jīng)網(wǎng)絡(luò)層的復(fù)雜多分支DNN來生成Codec Avatar的不同組件,例如一個(gè)用于面部幾何結(jié)構(gòu)的分支和另一個(gè)用于紋理的分支,并且所述分支可能具有非常不同的要求。
上述獨(dú)特的挑戰(zhàn)令現(xiàn)有硬件加速器難以有效處理Codec Avatar解碼器。另外,先進(jìn)的商用SoC處理器(驍龍865)和學(xué)術(shù)界最近發(fā)布的兩款DNN加速器(DNNBuilder和HybridDNN)未能提供令人滿意的性能和效率。
針對這個(gè)問題,Meta和伊利諾伊大學(xué)厄巴納-香檳分校的研究人員提出了F-CAD。這個(gè)全新的自動(dòng)化工具用于加速具有復(fù)雜層依賴關(guān)系的多分支DNN。在論文中,團(tuán)隊(duì)關(guān)注Codec Avatar解碼,將其作為F-CAD的一個(gè)重要和實(shí)際用例,并通過在資源預(yù)算下滿足特定性能目標(biāo)來提供優(yōu)化的硬件加速器。

1.加速器設(shè)計(jì)挑戰(zhàn)
Codec Avatar解碼器獨(dú)特的多分支功能和自定義層帶來了推理過程中復(fù)雜的數(shù)據(jù)流和高計(jì)算和內(nèi)存需求,這使得現(xiàn)有的DNN加速器難以應(yīng)對。挑戰(zhàn)包括巨大的和不均勻分布的計(jì)算和大量內(nèi)存占用。對于資源有限,但以高吞吐量性能實(shí)時(shí)響應(yīng)為目標(biāo)的硬件加速器而言,這變得更具挑戰(zhàn)性。團(tuán)隊(duì)從業(yè)界(驍龍865 SoC)和學(xué)術(shù)界(DNNBuilder,HybridDNN)中選擇了三個(gè)現(xiàn)有加速器來加速Codec Avatar解碼。
對于865 SoC,研究人員運(yùn)行表I中所示的目標(biāo)解碼器。由于DNNBuilder和HybridDNN不支持定制的Conv,他們通過將定制的Conv替換為傳統(tǒng)的Conv來創(chuàng)建模擬解碼器,同時(shí)保持其余網(wǎng)絡(luò)結(jié)構(gòu)不變。模擬解碼器具有高度相似的結(jié)構(gòu),但計(jì)算量減少了3.7%。這可以提供一定的洞察,以確定現(xiàn)有加速器設(shè)計(jì)的瓶頸。在評估過程中,團(tuán)隊(duì)使用了兩個(gè)性能指標(biāo):FPS(表示吞吐量)和效率(實(shí)際和理論峰值吞吐量之間的比率,如等式3所示)。在下面的等式中,β表示一個(gè)multiplier在一個(gè)時(shí)鐘周期內(nèi)處理的操作數(shù)。

如表II所示,865 SoC只實(shí)現(xiàn)了35.8 FPS,整體效率勉強(qiáng)達(dá)到16.9%。DNNBuilder的吞吐量稍微更慢(30.5 FPS),但效率更高(81.6),而HybridDNN則數(shù)據(jù)則更差,吞吐量為12.1 FPS,而效率為(77.5%)。

2. F-CAD自動(dòng)化設(shè)計(jì)流程
為了應(yīng)對上述的問題,團(tuán)隊(duì)提出了F-CAD,通過它設(shè)計(jì)和開發(fā)用于多分支DNN的定制硬件加速器。如圖4所示,F(xiàn)-CAD直接連接到流行的機(jī)器學(xué)習(xí)框架,并將開發(fā)的解碼器模型作為輸入,以實(shí)現(xiàn)更精細(xì)的定制。在Analysis步驟中,F(xiàn)-CAD不僅通過提取分層信息(例如層類型、層配置),而且通過提取分支信息(例如,分支編號、每個(gè)分支中的層數(shù)和層依賴關(guān)系)來開始分析目標(biāo)網(wǎng)絡(luò)。然后,profiler開始計(jì)算每一層的計(jì)算和內(nèi)存需求,并提供關(guān)于分支需求的統(tǒng)計(jì)信息,以幫助將目標(biāo)解碼器映射到提出的加速器架構(gòu)。輸入同時(shí)包含資源預(yù)算和分支優(yōu)先級,以設(shè)置資源界限。

在Construction步驟中,執(zhí)行層融合以減少層數(shù)量,其中輕量層(例如激活層)聚合到其相鄰的主要層,例如控制計(jì)算或內(nèi)存消耗的Conv-like和up-sampling層。然后分離具有共享部分的分支以創(chuàng)建單獨(dú)的數(shù)據(jù)流,相應(yīng)的層被重新組織并分配給計(jì)算需求最高的流。這個(gè)策略有助于避免硬件冗余,因?yàn)樗粫?shí)例化重復(fù)的硬件單元,并且會從共享分支創(chuàng)建一個(gè)清晰的臨界流(計(jì)算量最大),并確保該流在Optimization步驟中得到足夠的關(guān)注。
在融合和重組后,F(xiàn)-CAD分別根據(jù)層和分支編號沿X和Y維度導(dǎo)入和擴(kuò)展擬議的彈性架構(gòu)。最終,這將生成一個(gè)基本加速器,并在步驟3中進(jìn)行優(yōu)化。
在Optimization步驟中,首先確定加速器設(shè)計(jì)空間。解碼器的層和分支構(gòu)成了更高維的設(shè)計(jì)空間,因此搜索優(yōu)化設(shè)計(jì)變得復(fù)雜。F-CAD引入了DSE引擎以利用跨分支和分支內(nèi)優(yōu)化。然后,將隨機(jī)搜索應(yīng)用于跨分支優(yōu)化,探索跨分支的資源分配方案,并通過考慮設(shè)計(jì)空間和可用資源為每個(gè)分支尋找最佳加速器候選。最后,根據(jù)性能、效率和定制需求對候選加速器進(jìn)行評估。DSE引擎最終通過迭代過程生成全局優(yōu)化設(shè)計(jì)。
3. 加速器架構(gòu)
A.基于層的多管道加速器范例
團(tuán)隊(duì)提出的加速器的設(shè)計(jì)范例如圖5(A)所示。每個(gè)分支的輸入以管道方式處理,并通過屬于所述分支的所有管道階段。對于具有共享部分的分支,按照層重組策略將相應(yīng)的階段分配給其中一個(gè)分支。例如,Branch2和3共享前兩層,所以階段1~ 2被分配給Branch 2,而后續(xù)階段分別執(zhí)行。第2階段的結(jié)果分布到兩個(gè)不同的分支。研究人員同時(shí)采用了fine-grained管道設(shè)計(jì),以降低管道初始延遲。
B.具有二維擴(kuò)展能力的彈性架構(gòu)
為了實(shí)現(xiàn)擬議的加速器范例,F(xiàn)-CAD引入了彈性架構(gòu),以便在二維以下靈活擴(kuò)展加速器。在圖5(b)中,所述彈性架構(gòu)由基本架構(gòu)單元組成,其布置在反映層重組結(jié)果的二維平面中,每個(gè)單元負(fù)責(zé)一個(gè)管道階段。例如,在X軸之后的擴(kuò)展意味著在這個(gè)分支中需要處理更多的階段(本例為三個(gè)階段),而沿Y軸的擴(kuò)展表示在目標(biāo)解碼器中使用更多分支。在本例中,F(xiàn)-CAD生成一個(gè)加速器,其中有三條管道對應(yīng)于Branch 1.~ 3。
在基本架構(gòu)單元內(nèi)有三種類型的資源:計(jì)算(黃色區(qū)域)、片上內(nèi)存(藍(lán)色和綠色區(qū)域)和外部內(nèi)存(紅色區(qū)域)資源。上一層的輸入特征圖從左側(cè)水平傳遞,其中一部分保存在輸入緩沖區(qū)(InBuf)中,從而提供及時(shí)的數(shù)據(jù)供應(yīng)。同時(shí),DNN參數(shù)從外部存儲器中提取,并按照計(jì)算順序存儲在權(quán)重緩沖區(qū)(WeightBuf)中。
為滿足不同層階段的各種需,每個(gè)基本架構(gòu)單元都是高度可配置。它支持建議的3D并行性,包括沿輸出和輸入通道的兩個(gè)展開因子(內(nèi)核并行因子kpf和通道并行因子cpf)和輸入特征圖的分區(qū)因子(H分區(qū))。配置后,計(jì)算引擎的H分區(qū)數(shù)被實(shí)例化,每個(gè)引擎包含kpf流程元素(PE)來處理計(jì)算。提出的基本架構(gòu)單元同時(shí)允許定制輸入特征(DW)、權(quán)重(WW)和外部存儲器總線(MW)的位寬度。
C.具有3D并行性的基本架構(gòu)

圖5(C)提供了擬議3D并行性的詳細(xì)說明。假設(shè)一個(gè)具有4×6×3輸入特征映射(InFM)和兩個(gè)4×2×2內(nèi)核的Conv類層。最大輸入并行因子為cpf max=4,最大輸出并行因子為kpf max=2,因?yàn)樵搶影膫€(gè)可并行處理的輸入通道和兩個(gè)輸出通道。在這種情況下,將輸入和輸出并行因子配置為2(cpf=kpf=2),因此每個(gè)計(jì)算引擎將實(shí)例化兩個(gè)PE,每個(gè)PE并行執(zhí)行兩個(gè)MAC。由于來自輸入/輸出通道的并行性可能不足以用于Codec Avatar解碼,研究人員通過沿高度維度劃分InFM來添加一個(gè)額外的并行性。因此,所有InFM子部分都可以并行處理。本例的總并行因子為cpf×kpf×H-partition=8,實(shí)例化了四個(gè)PE。
在實(shí)驗(yàn)測試中,研究人員針對三個(gè)嵌入式FPGA平臺(Xilinx Z7045、ZU17EG和ZU9CG)演示F-CAD加速Codec Avatar解碼的能力和可擴(kuò)展性。由于目標(biāo)平臺是FPGA,團(tuán)隊(duì)將資源預(yù)算Cmax和Mmax設(shè)置為目標(biāo)FPGA中的可用DSP和BRAM,將BWmax設(shè)置為DDR3內(nèi)存帶寬。所有平臺的時(shí)鐘頻率均設(shè)置為200MHz。
表I中描述了目標(biāo)解碼器,其中定制的batch size{1,2,2}對應(yīng)于Branch 1.~ 3。大多數(shù)VR虛擬化身應(yīng)用都會考慮這種定制,其中Branch 2和3需要渲染兩眼都能看到鏡面反射效果的兩個(gè)HD紋理,而Branch 1僅輸出一個(gè)可由雙眼共享的面部幾何圖形。

表IV列出了實(shí)驗(yàn)結(jié)果,其中F-CAD按照建議的彈性架構(gòu)生成了五個(gè)加速器。為了評估搜索速度,團(tuán)隊(duì)對每種情況執(zhí)行10次獨(dú)立搜索,其中N=20(意味著搜索包含20次迭代)和P=200(意味著初始化了200個(gè)候選資源分布),所有搜索都使用2.6 GHz的Intel i7 CPU在幾分鐘內(nèi)收斂。收斂的平均迭代次數(shù)為9.2次(最小值:6.8;最大值:13.6)。最終,F(xiàn)-CAD通過考慮定制和資源約束生成優(yōu)化設(shè)計(jì)。特別是,案例4的加速器達(dá)到最高122.1 FPS,完全滿足VR要求;而案例5的加速器提供了最高的效率峰值96.7%。
團(tuán)隊(duì)將F-CAD生成的加速器與表V中的現(xiàn)有設(shè)計(jì)進(jìn)行比較,以相同的ZU9CG FPGA為目標(biāo),配備2520個(gè)DSP和1824個(gè)BRAM。DNNBuilder的性能和效率受到并行性不足的限制,因此分配的資源沒有得到充分利用。
另一方面,HybridDNN無法分配更多的DSP,并且留下超過一半的可用DSP未分配。原因是coarse-grained配置需要兩倍大小的加速器實(shí)例才能繼續(xù)擴(kuò)展,但BRAM預(yù)算不足,成為瓶頸。在研究人員的設(shè)計(jì)中,F(xiàn)-CAD在相同的資源預(yù)算下提供最高的FPS和效率。與DNNBuilder相比,其實(shí)現(xiàn)了4.0倍更高的吞吐量和62.5%更高的效率。與HybridDNN相比,在運(yùn)行16位模型時(shí),其只需多分配2.2倍的DSP,就能提供2.8倍的吞吐量,效率提高21.2%。
相關(guān)論文:F-CAD: A Framework to Explore Hardware Accelerators for Codec Avatar Decoding
總的來說,團(tuán)隊(duì)在論文中介紹了F-CAD。為了解決特殊的DNN結(jié)構(gòu)和苛刻的性能要求所帶來的獨(dú)特挑戰(zhàn),研究人員提出了支持多分支DNN的可擴(kuò)展彈性架構(gòu)和高度可配置的基本架構(gòu)單元,以提供靈活和可擴(kuò)展的并行處理。
然后,其引入了一個(gè)多分支動(dòng)態(tài)設(shè)計(jì)空間來描述硬件配置,并引入了一個(gè)高效的DSE引擎,通過考慮各種定制約束和可用資源預(yù)算來探索優(yōu)化的加速器。在實(shí)驗(yàn)中,F(xiàn)-CAD提供了非常高的吞吐量和效率,峰值達(dá)到122.1 FPS和91.6%。與最先進(jìn)的加速器相比,在針對同一FPGA時(shí),F(xiàn)-CAD的吞吐量分別比DNNBuilder和HybridDNN高4.0倍和2.8倍,效率分別高62.5%和21.2%。
---
原文鏈接:https://news.nweon.com/92811