DMS嵌入式加速器和神經(jīng)網(wǎng)絡(luò)(一)
繼續(xù)Seeing Machines對(duì)DMS商業(yè)化落地所遇到的挑戰(zhàn)的總結(jié)。
嵌入式NPU
在傳統(tǒng)CPU上執(zhí)行NN的尷尬適配,加上較小的晶體管設(shè)計(jì)節(jié)點(diǎn)的制造成本呈指數(shù)級(jí)上升(在可預(yù)見的未來(lái),在對(duì)成本敏感的汽車領(lǐng)域,摩爾定律似乎已總結(jié)),導(dǎo)致了過(guò)去幾年中NPU加速器設(shè)計(jì)的寒武紀(jì)大爆發(fā)。
這些新的NPU協(xié)處理器有晶體管分組和內(nèi)存安排,試圖優(yōu)化執(zhí)行任何類別的NN,芯片設(shè)計(jì)者認(rèn)為這將受到算法開發(fā)人員的歡迎。不同的設(shè)計(jì)因產(chǎn)品所尋求的定位而不同。一些NPU作為獨(dú)立的協(xié)處理芯片出售,另一些是可授權(quán)的內(nèi)核。有些采用新的芯片技術(shù),如使用納米級(jí)電阻的內(nèi)存計(jì)算。
現(xiàn)在的嵌入式NPU設(shè)計(jì)在數(shù)學(xué)運(yùn)算符的數(shù)量和種類、這些運(yùn)算符的精度、網(wǎng)絡(luò)執(zhí)行時(shí)數(shù)據(jù)塊的排列、獲取、緩存和傳播方式,以及在不需要DDR內(nèi)存訪問(wèn)或大量數(shù)據(jù)傳輸的情況下可在NPU內(nèi)核內(nèi)進(jìn)行本地處理的最大網(wǎng)絡(luò)規(guī)模方面存在差異。一些設(shè)計(jì)還結(jié)合了多個(gè)處理pipeline,以增加并行性和吞吐量(當(dāng)然,這是以額外的芯片面積為代價(jià)的)。
嵌入式NPU的設(shè)計(jì)目的是在低成本、小尺寸、低功耗的“邊緣”設(shè)備上執(zhí)行NN。與云數(shù)據(jù)中心或工作站的設(shè)計(jì)相比,低成本、尺寸和功率的限制對(duì)NPU的能力有很大的限制,因此,嵌入式NPU必須根據(jù)具體應(yīng)用的需要做出妥協(xié)。
產(chǎn)品能夠在本地設(shè)備中部署NPU的優(yōu)勢(shì)和吸引力給SoC公司帶來(lái)了壓力,使其提供帶有NPU加速選項(xiàng)的設(shè)備。然而,這正是這些公司的困難所在。問(wèn)題是,SoC的設(shè)計(jì)周期從概念到發(fā)布通常是2-3年,而NN的最新技術(shù)每幾個(gè)月就會(huì)發(fā)生變化。
芯片設(shè)計(jì)者面臨的風(fēng)險(xiǎn)是,他們可以非常容易地鎖定一個(gè)不能充分預(yù)見最新技術(shù)發(fā)展的處理架構(gòu)。因此,當(dāng)芯片發(fā)布時(shí)(要記住,芯片還需要為市場(chǎng)服務(wù)多年),NPU的設(shè)計(jì)在開發(fā)人員希望部署的加速NN方面可能幾乎毫無(wú)用處。在這里,我們?cè)谇皫坠?jié)描述的關(guān)于內(nèi)存帶寬和ISP限制的問(wèn)題同樣適用;處理pipeline要么遇到效率瓶頸,要么根本無(wú)法執(zhí)行開發(fā)者所需的網(wǎng)絡(luò)。兩種結(jié)果都不好。
在今天的市場(chǎng)上,有兩種明顯的NN加速方法。(i)設(shè)計(jì)和構(gòu)建自己的定制NPU的公司,或者(ii)那些重新標(biāo)記和重新利用不同類型的處理加速器IP的公司,以更符合NN的處理需要。后者主要是通過(guò)重構(gòu)工具鏈來(lái)實(shí)現(xiàn)的,使它們能夠吸收NN模型。例如,DSP、GPU或矢量處理器經(jīng)常被包裝在“AI”的營(yíng)銷方案中,并被定位為成熟的NPU。
不過(guò)我們必須提醒自己,加速器(一般來(lái)說(shuō))是SoC公司區(qū)分其產(chǎn)品的主要方式之一。因此,當(dāng)然可以理解為什么半導(dǎo)體公司采用這些“包裝”策略。然而,對(duì)于終端客戶和算法開發(fā)人員來(lái)說(shuō),要想看穿營(yíng)銷的迷霧,可能非常困難。這是一個(gè)充滿陷阱的領(lǐng)域,有很多誤導(dǎo)性的統(tǒng)計(jì)數(shù)字和沒(méi)提及的內(nèi)容,直到被開發(fā)人員發(fā)現(xiàn)時(shí)已經(jīng)太晚了,此時(shí),不幸的客戶發(fā)現(xiàn)自己身處經(jīng)典的“圍墻花園”,在這里,他們的財(cái)務(wù)支出、培訓(xùn)和代碼承諾已經(jīng)決定使用選定的SoC進(jìn)行開發(fā),這意味著更換設(shè)備太昂貴且風(fēng)險(xiǎn)太大。
當(dāng)像Seeing Machines這樣的開發(fā)者需要跟上最先進(jìn)的技術(shù)并開發(fā)新的網(wǎng)絡(luò)時(shí),需要NPU(或任何加速器)無(wú)法支持的運(yùn)營(yíng)商或網(wǎng)絡(luò)連接架構(gòu)時(shí),其結(jié)果是開發(fā)者無(wú)法將一流的算法實(shí)現(xiàn)到生產(chǎn)中,或者由于處理效率低下而必須在性能上做出妥協(xié),這需要在pipeline的其他地方加以考慮。
為了說(shuō)明這一點(diǎn),下圖顯示了一些SoC對(duì)我們開發(fā)的視線追蹤任務(wù)(觀察駕駛員或前座乘客的一只或兩只眼睛,并確定這個(gè)人最有可能盯著哪里)執(zhí)行相同的加速功能。值得注意的是,視線追蹤任務(wù)包含了一個(gè)具有非正統(tǒng)架構(gòu)的NN。作為參考,圖中還包括在A53 CPU(代碼完全優(yōu)化)上執(zhí)行的相同任務(wù),以及在FOVIO芯片上運(yùn)行的Occula NPU。
各種SoC中視線追蹤的加速實(shí)現(xiàn)
執(zhí)行延遲顯示了加速器硬件的不同設(shè)計(jì)是如何對(duì)處理效率結(jié)果產(chǎn)生巨大影響的。請(qǐng)注意,在這個(gè)表格中,我們顯示了以毫秒為單位的延遲,作為最關(guān)鍵的衡量標(biāo)準(zhǔn),而不是TOPS。我們有意顯示了不同的NN加速器的TOPS數(shù)字的變化,以強(qiáng)調(diào)假設(shè)可以單獨(dú)使用這個(gè)數(shù)字進(jìn)行任何有意義的和實(shí)際的資源規(guī)劃的危險(xiǎn)。前面也提高過(guò)“吞吐量(或TOPS)可以買到,但延遲必須去爭(zhēng)取”。
例如,60Hz的處理速率要求在16.6ms內(nèi)完成所有的計(jì)算任務(wù);同樣,30Hz要求在33.2ms內(nèi)完成。為了把視線追蹤任務(wù)放到一個(gè)更廣泛的角度,下圖顯示了在60Hz和30Hz處理期限以虛線疊加的情況下,我們的pipeline中視線追蹤的總體時(shí)間分配情況。
視線追蹤與未分配的計(jì)算帶寬的例子
在這個(gè)圖中,每個(gè)黃條表示在視線追蹤之后可用于調(diào)度pipeline中所有其他任務(wù)的剩余時(shí)隙。這說(shuō)明盡可能快地(和有效地)完成任務(wù)的目標(biāo)才是永遠(yuǎn)重要的。這都是為了確保黃條越大越好,以最大限度地保留足夠的資源來(lái)執(zhí)行DMS功能堆棧的其余部分,在設(shè)備選擇時(shí),可能還包含尚未開發(fā)的客戶特定功能。
比較表明,有一些加速器和芯片架構(gòu)與我們的pipeline的這一特定部分非常不匹配,其中兩個(gè)明顯不能使用,第三個(gè)不比CPU好。還要注意的是,A53+NEON內(nèi)核在運(yùn)行這個(gè)特定的處理任務(wù)時(shí)是相當(dāng)有效的,這主要是因?yàn)橐暰€追蹤工作負(fù)載在Seeing Machines為ARM處理器進(jìn)行了徹底的優(yōu)化(這在很大程度上得益于ARM指令集中的NEON SIMD擴(kuò)展)。
在任何單機(jī)DMS嵌入式系統(tǒng)設(shè)計(jì)中,分配給整個(gè)DMS引擎的處理預(yù)算可能只有一個(gè)A53 CPU核,要求完整的算法堆??偸窃?3ms以下執(zhí)行(考慮的不是平均而是最壞情況下的執(zhí)行路徑)。因此,為這項(xiàng)任務(wù)分配9.5ms的時(shí)間可能不會(huì)很好地利用可用帶寬(9.5ms/33.3ms=29%的CPU利用率)。因此,對(duì)加速器的需求很明顯,盡可能地從CPU上卸載處理任務(wù)。
上圖中的數(shù)據(jù),以及前面介紹的關(guān)于RGB-IR處理的內(nèi)存帶寬的數(shù)據(jù),顯示了不同的SoC對(duì)于特定任務(wù)的相對(duì)性能,目的是強(qiáng)調(diào)芯片營(yíng)銷并不反映現(xiàn)實(shí)。事實(shí)是,不同的芯片設(shè)計(jì)以非常不同的方式處理NN處理需求,有很大的潛在結(jié)果范圍。在某些情況下,芯片設(shè)計(jì)者或算法開發(fā)者可能會(huì)很幸運(yùn),創(chuàng)造出一個(gè)良好的匹配,但在嵌入式世界中,這樣的偶然結(jié)果是非常罕見的。
總之,嵌入式性能在很大程度上是關(guān)于軟件和硬件之間的匹配,或匹配程度。對(duì)于嵌入式NPU來(lái)說(shuō),NPU的設(shè)計(jì)如何與特定的NN技術(shù)相匹配才是至關(guān)重要的。
協(xié)同設(shè)計(jì)的方法在這一點(diǎn)上,我們很自然地會(huì)問(wèn),一個(gè)NN是否可以被重新開發(fā)以更好地匹配特定的加速器設(shè)計(jì)?在某種程度上,答案是肯定的,NN可以被機(jī)器學(xué)習(xí)專家重新設(shè)計(jì)以更好地適應(yīng)特定的加速器設(shè)計(jì)。然而,這條道路絕非易事,也不便宜,而且結(jié)果也很難提前預(yù)測(cè)。
一個(gè)更好的方法是軟硬件協(xié)同設(shè)計(jì)。在這個(gè)過(guò)程中,NPU和NN同步開發(fā),兩個(gè)設(shè)計(jì)團(tuán)隊(duì)緊密合作,構(gòu)建一個(gè)由硬件和軟件組成的單一優(yōu)化“系統(tǒng)”。請(qǐng)注意,這是與前面討論的通用NPU方法相相反的。
這種方法的一個(gè)問(wèn)題是,NPU的設(shè)計(jì)需要頻繁迭代,以跟上NN的發(fā)展。Seeing Machines為它的FOVIO芯片選擇了FPGA技術(shù),以便能夠快速探索DMS解決方案的成本與性能空間,我們知道所涉及的市場(chǎng)時(shí)間框架,也知道我們需要深入優(yōu)化嵌入,以便使單機(jī)DMS解決方案具有競(jìng)爭(zhēng)力。
FPGA技術(shù)允許采用“算法優(yōu)先”的設(shè)計(jì)方法來(lái)應(yīng)對(duì)嵌入的挑戰(zhàn),并在某種程度上使我們的AI開發(fā)人員能夠?qū)⒆顝?qiáng)大的NN技術(shù)整合進(jìn)來(lái),并使這些網(wǎng)絡(luò)仍能非常有效地運(yùn)行。
特定應(yīng)用的NPU
“特定應(yīng)用(application specific)”指的是旨在為有限和特定目的服務(wù)的芯片設(shè)計(jì),因此能夠避免因試圖支持其他未知應(yīng)用而導(dǎo)致的設(shè)計(jì)臃腫。采取協(xié)同設(shè)計(jì)的方法自然會(huì)導(dǎo)致解決方案只做他們需要做的事情,因此傾向于與他們的目標(biāo)應(yīng)用領(lǐng)域匹配得很好。
相比之下,“通用”的NPU將被設(shè)計(jì)為服務(wù)于廣泛的(通常是不同的)網(wǎng)絡(luò)架構(gòu)和運(yùn)營(yíng)商。當(dāng)芯片制造商決定他們的通用NPU的需求時(shí),他們最終采用的特征和功能是由研究領(lǐng)域的技術(shù)水平和他們的終端客戶在該時(shí)間點(diǎn)上使用的流行網(wǎng)絡(luò)所引導(dǎo)的。當(dāng)涉及到NN時(shí),沒(méi)有任何“標(biāo)準(zhǔn)”本身可以使他們的需求捕獲成為一個(gè)簡(jiǎn)單的過(guò)程,但在研究和創(chuàng)新方面肯定有一些長(zhǎng)期運(yùn)行的線索,它們針對(duì)某些應(yīng)用領(lǐng)域,如資源有限的嵌入式系統(tǒng)。最近的兩個(gè)例子是谷歌的MobileNetV3 和Meta(前Facebook)的RegNet。
當(dāng)定義一個(gè)通用的NPU架構(gòu)時(shí),面臨的挑戰(zhàn)是建立一個(gè)小而高效的芯片設(shè)計(jì),能夠預(yù)測(cè)NN的未來(lái),盡管在工業(yè)界和學(xué)術(shù)界的研究和開發(fā)領(lǐng)域仍然是一個(gè)快速發(fā)展的領(lǐng)域,具有高度的不確定性。鑒于NN創(chuàng)新周期處于早期階段,芯片供應(yīng)商被迫廣撒網(wǎng),以確保在2-3年后,當(dāng)他們出樣時(shí),應(yīng)用領(lǐng)域沒(méi)有發(fā)生地震式的變化。這當(dāng)然會(huì)導(dǎo)致相當(dāng)大的容量和能力,而這些容量和能力必然是次優(yōu)的和低效的。
另一方面,特定應(yīng)用的NPU可以以一種非常狹窄和有針對(duì)性的方式來(lái)定義。圍繞包括什么和排除什么的關(guān)鍵決定是由算法設(shè)計(jì)驅(qū)動(dòng)的。這通常意味著對(duì)數(shù)學(xué)運(yùn)算符集進(jìn)行刪減,使之盡可能地與專有算法相匹配。我們?nèi)匀恍枰恍┛臻g和靈活性,以適應(yīng)未來(lái)的變化,但在采取共同設(shè)計(jì)方法時(shí),這是一個(gè)完全可行的權(quán)衡,這也是我們?cè)赟eeing Machines多年來(lái)一直在做的。一個(gè)簡(jiǎn)單的例子是,特定應(yīng)用的NPU的運(yùn)行參數(shù)可以在不增加芯片面積的情況下實(shí)現(xiàn)運(yùn)行時(shí)可編程。