Meta一直致力於名為Codec Avatar的虛擬化身專案,從而幫助克服人與人之間,以及人與機會之間的物理距離挑戰。藉助突破性的3D捕獲技術和人工智慧系統,Codec Avatar可以幫助人們在未來快速輕鬆地建立逼真的虛擬化身,令虛擬現實中的社交聯絡變得如同現實世界般自然和常見。儘管虛擬角色多年來一直是遊戲和應用的主要元素,但這家公司相信逼真的虛擬表現將會改變一切。
對於這個專案,團隊早前已經多次分享過相關的研究進展。日前,Meta又透過名為《F-CAD: A Framework to Explore Hardware Accelerators for Codec Avatar Decoding》的論文介紹了用於為Codec Avatar解碼探索硬體加速器的框架F-CAD。
整個系統如圖1所示,其中發射機(TX)的所有資訊(例如扭曲的微笑和皺眉)將在到達接收機(RX)後進行編碼、傳送和解碼,以生成用於高保真社交臨場感的Codec Avatar。其中,解碼器是最複雜的模組,佔整個系統所需計算量的90%。如果沒有有效的最佳化,它將輕易成為瓶頸,阻礙虛擬現實臨場感的順利實現。隨著VR/AR耳機的普及,社會需求不斷增加,對實時和高質量編解碼器-化身解碼的要求也越來越高。然而,在虛擬現實耳機上部署編解碼器-化身解碼器帶來了重大挑戰。
最先進的解碼器屬於計算和記憶體密集型,例如它可以包含超過13.6個GOP和720萬個引數。同時,大多數頭顯只能提供有限的計算、記憶體和電源預算。為了防止暈動症,並提供實時響應以支援流暢使用者互動,VR相較於非VR應用(30 FPS)要求更高的重新整理率(90 FPS,甚至120 FPS)。
它要求硬體在不使用大batch size的情況下提供高吞吐量,因為收集batch輸入的額外延遲可能無法滿足實時要求。另外,新興解碼器開始採用具有定製神經網路層的複雜多分支DNN來生成Codec Avatar的不同元件,例如一個用於面部幾何結構的分支和另一個用於紋理的分支,並且所述分支可能具有非常不同的要求。
上述獨特的挑戰令現有硬體加速器難以有效處理Codec Avatar解碼器。另外,先進的商用SoC處理器(驍龍865)和學術界最近釋出的兩款DNN加速器(DNNBuilder和HybridDNN)未能提供令人滿意的效能和效率。
針對這個問題,Meta和伊利諾伊大學厄巴納-香檳分校的研究人員提出了F-CAD。這個全新的自動化工具用於加速具有複雜層依賴關係的多分支DNN。在論文中,團隊關注Codec Avatar解碼,將其作為F-CAD的一個重要和實際用例,並透過在資源預算下滿足特定效能目標來提供最佳化的硬體加速器。
1.加速器設計挑戰
Codec Avatar解碼器獨特的多分支功能和自定義層帶來了推理過程中複雜的資料流和高計算和記憶體需求,這使得現有的DNN加速器難以應對。挑戰包括巨大的和不均勻分佈的計算和大量記憶體佔用。對於資源有限,但以高吞吐量效能實時響應為目標的硬體加速器而言,這變得更具挑戰性。團隊從業界(驍龍865 SoC)和學術界(DNNBuilder,HybridDNN)中選擇了三個現有加速器來加速Codec Avatar解碼。
對於865 SoC,研究人員執行表I中所示的目標解碼器。由於DNNBuilder和HybridDNN不支援定製的Conv,他們透過將定製的Conv替換為傳統的Conv來建立模擬解碼器,同時保持其餘網路結構不變。模擬解碼器具有高度相似的結構,但計算量減少了3.7%。這可以提供一定的洞察,以確定現有加速器設計的瓶頸。在評估過程中,團隊使用了兩個效能指標:FPS(表示吞吐量)和效率(實際和理論峰值吞吐量之間的比率,如等式3所示)。在下面的等式中,β表示一個multiplier在一個時鐘週期內處理的運算元。
如表II所示,865 SoC只實現了35.8 FPS,整體效率勉強達到16.9%。DNNBuilder的吞吐量稍微更慢(30.5 FPS),但效率更高(81.6),而HybridDNN則資料則更差,吞吐量為12.1 FPS,而效率為(77.5%)。
2. F-CAD自動化設計流程
為了應對上述的問題,團隊提出了F-CAD,透過它設計和開發用於多分支DNN的定製硬體加速器。如圖4所示,F-CAD直接連線到流行的機器學習框架,並將開發的解碼器模型作為輸入,以實現更精細的定製。在Analysis步驟中,F-CAD不僅透過提取分層資訊(例如層型別、層配置),而且透過提取分支資訊(例如,分支編號、每個分支中的層數和層依賴關係)來開始分析目標網路。然後,profiler開始計算每一層的計算和記憶體需求,並提供關於分支需求的統計資訊,以幫助將目標解碼器對映到提出的加速器架構。輸入同時包含資源預算和分支優先順序,以設定資源界限。
在Construction步驟中,執行層融合以減少層數量,其中輕量層(例如啟用層)聚合到其相鄰的主要層,例如控制計算或記憶體消耗的Conv-like和up-sampling層。然後分離具有共享部分的分支以建立單獨的資料流,相應的層被重新組織並分配給計算需求最高的流。這個策略有助於避免硬體冗餘,因為它不會例項化重複的硬體單元,並且會從共享分支建立一個清晰的臨界流(計算量最大),並確保該流在Optimization步驟中得到足夠的關注。
在融合和重組後,F-CAD分別根據層和分支編號沿X和Y維度匯入和擴充套件擬議的彈性架構。最終,這將生成一個基本加速器,並在步驟3中進行最佳化。
在Optimization步驟中,首先確定加速器設計空間。解碼器的層和分支構成了更高維的設計空間,因此搜尋最佳化設計變得複雜。F-CAD引入了DSE引擎以利用跨分支和分支內最佳化。然後,將隨機搜尋應用於跨分支最佳化,探索跨分支的資源分配方案,並透過考慮設計空間和可用資源為每個分支尋找最佳加速器候選。最後,根據效能、效率和定製需求對候選加速器進行評估。DSE引擎最終透過迭代過程生成全域性最佳化設計。
3. 加速器架構
A.基於層的多管道加速器範例
團隊提出的加速器的設計範例如圖5(A)所示。每個分支的輸入以管道方式處理,並透過屬於所述分支的所有管道階段。對於具有共享部分的分支,按照層重組策略將相應的階段分配給其中一個分支。例如,Branch2和3共享前兩層,所以階段1∼ 2被分配給Branch 2,而後續階段分別執行。第2階段的結果分佈到兩個不同的分支。研究人員同時採用了fine-grained管道設計,以降低管道初始延遲。
B.具有二維擴充套件能力的彈性架構
為了實現擬議的加速器範例,F-CAD引入了彈性架構,以便在二維以下靈活擴充套件加速器。在圖5(b)中,所述彈性架構由基本架構單元組成,其佈置在反映層重組結果的二維平面中,每個單元負責一個管道階段。例如,在X軸之後的擴充套件意味著在這個分支中需要處理更多的階段(本例為三個階段),而沿Y軸的擴充套件表示在目標解碼器中使用更多分支。在本例中,F-CAD生成一個加速器,其中有三條管道對應於Branch 1.∼ 3。
在基本架構單元內有三種類型的資源:計算(黃色區域)、片上記憶體(藍色和綠色區域)和外部記憶體(紅色區域)資源。上一層的輸入特徵圖從左側水平傳遞,其中一部分儲存在輸入緩衝區(InBuf)中,從而提供及時的資料供應。同時,DNN引數從外部儲存器中提取,並按照計算順序儲存在權重緩衝區(WeightBuf)中。
為滿足不同層階段的各種需,每個基本架構單元都是高度可配置。它支援建議的3D並行性,包括沿輸出和輸入通道的兩個展開因子(核心並行因子kpf和通道並行因子cpf)和輸入特徵圖的分割槽因子(H分割槽)。配置後,計算引擎的H分割槽數被例項化,每個引擎包含kpf流程元素(PE)來處理計算。提出的基本架構單元同時允許定製輸入特徵(DW)、權重(WW)和外部儲存器匯流排(MW)的位寬度。
C.具有3D並行性的基本架構
圖5(C)提供了擬議3D並行性的詳細說明。假設一個具有4×6×3輸入特徵對映(InFM)和兩個4×2×2核心的Conv類層。最大輸入並行因子為cpf max=4,最大輸出並行因子為kpf max=2,因為該層包含四個可並行處理的輸入通道和兩個輸出通道。在這種情況下,將輸入和輸出並行因子配置為2(cpf=kpf=2),因此每個計算引擎將例項化兩個PE,每個PE並行執行兩個MAC。由於來自輸入/輸出通道的並行性可能不足以用於Codec Avatar解碼,研究人員透過沿高度維度劃分InFM來新增一個額外的並行性。因此,所有InFM子部分都可以並行處理。本例的總並行因子為cpf×kpf×H-partition=8,例項化了四個PE。
在實驗測試中,研究人員針對三個嵌入式FPGA平臺(Xilinx Z7045、ZU17EG和ZU9CG)演示F-CAD加速Codec Avatar解碼的能力和可擴充套件性。由於目標平臺是FPGA,團隊將資源預算Cmax和Mmax設定為目標FPGA中的可用DSP和BRAM,將BWmax設定為DDR3記憶體頻寬。所有平臺的時鐘頻率均設定為200MHz。
表I中描述了目標解碼器,其中定製的batch size{1,2,2}對應於Branch 1.∼ 3。大多數VR虛擬化身應用都會考慮這種定製,其中Branch 2和3需要渲染兩眼都能看到鏡面反射效果的兩個HD紋理,而Branch 1僅輸出一個可由雙眼共享的面部幾何圖形。
表IV列出了實驗結果,其中F-CAD按照建議的彈性架構生成了五個加速器。為了評估搜尋速度,團隊對每種情況執行10次獨立搜尋,其中N=20(意味著搜尋包含20次迭代)和P=200(意味著初始化了200個候選資源分佈),所有搜尋都使用2.6 GHz的Intel i7 CPU在幾分鐘內收斂。收斂的平均迭代次數為9.2次(最小值:6.8;最大值:13.6)。最終,F-CAD透過考慮定製和資源約束生成最佳化設計。特別是,案例4的加速器達到最高122.1 FPS,完全滿足VR要求;而案例5的加速器提供了最高的效率峰值96.7%。
團隊將F-CAD生成的加速器與表V中的現有設計進行比較,以相同的ZU9CG FPGA為目標,配備2520個DSP和1824個BRAM。DNNBuilder的效能和效率受到並行性不足的限制,因此分配的資源沒有得到充分利用。
另一方面,HybridDNN無法分配更多的DSP,並且留下超過一半的可用DSP未分配。原因是coarse-grained配置需要兩倍大小的加速器例項才能繼續擴充套件,但BRAM預算不足,成為瓶頸。在研究人員的設計中,F-CAD在相同的資源預算下提供最高的FPS和效率。與DNNBuilder相比,其實現了4.0倍更高的吞吐量和62.5%更高的效率。與HybridDNN相比,在執行16位模型時,其只需多分配2.2倍的DSP,就能提供2.8倍的吞吐量,效率提高21.2%。
總的來說,團隊在論文中介紹了F-CAD。為了解決特殊的DNN結構和苛刻的效能要求所帶來的獨特挑戰,研究人員提出了支援多分支DNN的可擴充套件彈性架構和高度可配置的基本架構單元,以提供靈活和可擴充套件的並行處理。
然後,其引入了一個多分支動態設計空間來描述硬體配置,並引入了一個高效的DSE引擎,透過考慮各種定製約束和可用資源預算來探索最佳化的加速器。在實驗中,F-CAD提供了非常高的吞吐量和效率,峰值達到122.1 FPS和91.6%。與最先進的加速器相比,在針對同一FPGA時,F-CAD的吞吐量分別比DNNBuilder和HybridDNN高4.0倍和2.8倍,效率分別高62.5%和21.2%。
文章來源:映維網