繼續(xù)Seeing Machines對DMS商業(yè)化落地所遇到的挑戰(zhàn)的總結(jié)。
神經(jīng)網(wǎng)絡(luò)簡介
機(jī)器學(xué)習(xí)領(lǐng)域,如今也被稱為深度學(xué)習(xí),對于許多類算法尤其是計(jì)算機(jī)視覺領(lǐng)域的算法來說,其性能已經(jīng)發(fā)生了一步步的變化。“深度學(xué)習(xí)”這一術(shù)語最終包含了有效發(fā)現(xiàn)數(shù)據(jù)中存在的關(guān)系并將其編碼為神經(jīng)網(wǎng)絡(luò)(NN)“模型”的技術(shù)。這些模型是由一組節(jié)點(diǎn)(或人工神經(jīng)元)和節(jié)點(diǎn)之間的連接(或人工突觸)組成的數(shù)學(xué)構(gòu)造。每個(gè)節(jié)點(diǎn)實(shí)現(xiàn)一個(gè)簡單的數(shù)學(xué)函數(shù)(或“激活”函數(shù)),應(yīng)用于輸入并通過輸出傳遞給下一個(gè)節(jié)點(diǎn)。網(wǎng)絡(luò)的結(jié)構(gòu)通常是共享一個(gè)共同激活函數(shù)的節(jié)點(diǎn)層。分層方法適合于這樣的實(shí)現(xiàn):各層作為處理pipeline中的離散階段進(jìn)行處理,從輸入層到“隱藏”層,再到最后的輸出層。
深度學(xué)習(xí)網(wǎng)絡(luò)的“深度”是指可能有幾十個(gè)隱藏層。更奇特的網(wǎng)絡(luò)結(jié)構(gòu)允許超越相鄰層的連接,或者可能有遞歸(或循環(huán))連接,允許反饋循環(huán)和有狀態(tài)的記憶效應(yīng)。
網(wǎng)絡(luò)的設(shè)計(jì)維度包括:(i)每層激活函數(shù)的類型,(ii)應(yīng)用于每個(gè)節(jié)點(diǎn)的輸入和激活函數(shù)的縮放和閾值系數(shù),(iii)整體節(jié)點(diǎn)和層的連接(或拓?fù)浣Y(jié)構(gòu)),(iv)每層的節(jié)點(diǎn)數(shù)和整體層數(shù)。這些設(shè)計(jì)維度是算法開發(fā)和訓(xùn)練過程中的“自由變量”。深度學(xué)習(xí)技術(shù)的神奇之處在于訓(xùn)練算法能夠搜索這些自由變量的所有組合的廣闊空間,并且只用一點(diǎn)數(shù)據(jù)就能迅速收斂到網(wǎng)絡(luò)設(shè)計(jì),將數(shù)據(jù)中的關(guān)系納入到NN模型中。因此,“訓(xùn)練環(huán)境”往往是最先進(jìn)的深度學(xué)習(xí)技術(shù)的關(guān)鍵成分,并被認(rèn)為是任何技術(shù)公司的寶貴IP。
今天,有許多眾所周知的網(wǎng)絡(luò)“類別”。這些網(wǎng)絡(luò)拓?fù)?/a>結(jié)構(gòu)已經(jīng)被研究證明優(yōu)于其他傳統(tǒng)類別(當(dāng)與該類別的專門訓(xùn)練環(huán)境相配時(shí))。網(wǎng)絡(luò)類別被賦予了一些名稱,這些名稱在機(jī)器學(xué)習(xí)界是眾所周知的(例如,LSTM、MobileNet、ResNet和其他許多名稱)。
在過去的十年里,網(wǎng)絡(luò)類別一直是研究熱點(diǎn),并迅速發(fā)展。這種演變是由于網(wǎng)絡(luò)面臨的壓力:(i)在更少的計(jì)算周期內(nèi)進(jìn)行訓(xùn)練,使用更少或更低質(zhì)量的訓(xùn)練數(shù)據(jù),(ii)為現(xiàn)有類別提供卓越的性能結(jié)果,同時(shí)(iii)產(chǎn)生更小和執(zhí)行更快的網(wǎng)絡(luò),從而減少嵌入式處理成本。這構(gòu)成了Seeing Machines JGEP優(yōu)化周期的一個(gè)關(guān)鍵部分。
雖然深度學(xué)習(xí)和NN在學(xué)術(shù)界有很長的歷史,但它們大約在十年前開始進(jìn)入商業(yè)產(chǎn)品。這是經(jīng)典的技術(shù)顛覆“S曲線”的開始,它開始于自然語言理解和互聯(lián)網(wǎng)搜索引擎的圖像分類領(lǐng)域。緊隨其后的是用于數(shù)據(jù)中心(云)的定制NPU加速,包括主要由英偉達(dá)的GPU發(fā)展而來的設(shè)計(jì)、谷歌的定制ASIC解決方案,以及微軟的FPGA實(shí)現(xiàn)。這些有助于推動(dòng)“深度學(xué)習(xí)AI”在許多日常(在線)產(chǎn)品中的最初的大規(guī)模應(yīng)用。
如今,深度學(xué)習(xí)的AI已經(jīng)在很大程度上取代了計(jì)算機(jī)視覺領(lǐng)域中最好的經(jīng)典技術(shù)。“AI”算法正在為許多新型產(chǎn)品提供動(dòng)力,不僅在云端,而且在“邊緣”,在本地運(yùn)行的智能手機(jī)和一些物聯(lián)網(wǎng)設(shè)備上。用于高效開發(fā)NN的工具包(如TensorFlow、Torch、ONNX和其他)現(xiàn)在已經(jīng)非常成熟,并催生了一個(gè)巨大的開發(fā)者社區(qū),從而產(chǎn)生了一個(gè)通常被稱為“AI驅(qū)動(dòng)”的全新產(chǎn)品類別。
雖然這些產(chǎn)品不是真正的智能(它們只是很好地檢測模式),但它們也許因?yàn)槟軌蛟趶膹?fù)雜和嘈雜的數(shù)據(jù)中快速提取有意義和可操作的信息的任務(wù)中勝過人類而獲得“AI”的稱號(hào)。然而,大多數(shù)網(wǎng)絡(luò)仍然高度專業(yè)化,只執(zhí)行“有限”的任務(wù),如人臉識(shí)別。因此,它們被更準(zhǔn)確地稱為“狹義AI”,或者對那些老派的人來說,只是非常好的“專家系統(tǒng)”。
處理成本的挑戰(zhàn)盡管在算法領(lǐng)域有上述的優(yōu)勢,然而,NN并不是沒有缺點(diǎn)的,最重要的是與經(jīng)典技術(shù)相比,處理需求很高。
我們將處理成本(COP)定義為產(chǎn)品成本結(jié)構(gòu)中由算法處理需求直接或間接驅(qū)動(dòng)的那部分。在沒有實(shí)際建立競爭解決方案的情況下,COP可能是一個(gè)難以估計(jì)的數(shù)值,因?yàn)樗粌H包括專門用于執(zhí)行數(shù)字計(jì)算的額外芯片的成本,還包括諸如額外的PCB空間、熱和電源管理方面的成本,如電容、電感、電源管理IC、額外的板層、更多的引腳、更大的散熱片、外包裝材料,以及任何額外的IP許可(如第三方加速器設(shè)計(jì))。
COP是一個(gè)主要障礙,它限制了NN的尺寸、性能,以及最終NN向低功耗、低成本產(chǎn)品的擴(kuò)散。這一障礙是由于以下事實(shí):(i)NN有數(shù)據(jù)流和運(yùn)算符,無法在傳統(tǒng)的馮諾依曼CPU設(shè)計(jì)(如ARM或英特爾x86內(nèi)核)上有效執(zhí)行,以及(ii)通用NPU不一定是良方,可能會(huì)給任何SoC增加成本和功率需求。
內(nèi)存帶寬和神經(jīng)網(wǎng)絡(luò)
現(xiàn)在讓我們把前一章的內(nèi)存帶寬數(shù)字作為處理成本的主要維度之一來看。我們將考慮嵌入式系統(tǒng)中使用的一些常見的NN,并了解從內(nèi)存帶寬的角度來看,在給定的處理速度下運(yùn)行一個(gè)量化模型(8位)需要什么。請注意,我們將在下一節(jié)中更詳細(xì)地探討NN的執(zhí)行加速問題。
在沒有本地/內(nèi)部緩存的情況下,使用INT8量化模型的普通NN對不同處理速率的原始內(nèi)存帶寬要求
上圖代表了最壞的情況,因?yàn)樗僭O(shè)一個(gè)加速器沒有本地緩存可以被調(diào)用以減輕DDR內(nèi)存的訪問。如果能巧妙地利用本地緩存,這些數(shù)字可以減少很多,有時(shí)至少減少50%或更多。當(dāng)然,情況并不總是如此。事實(shí)上,除非整個(gè)網(wǎng)絡(luò)可以在緩存外執(zhí)行,否則這種緩存有時(shí)是無法使用的。很多時(shí)候,考慮到DMS在30fps(有時(shí)更高)下的實(shí)時(shí)處理的性質(zhì),網(wǎng)絡(luò)需要謹(jǐn)慎地調(diào)度,以滿足DMS結(jié)果的33ms的周期性限制(或當(dāng)處理速率更高時(shí),甚至更短的周期性期限)。這嚴(yán)重限制了在連續(xù)區(qū)塊中 “批量”運(yùn)行網(wǎng)絡(luò)的可能性,而許多可用的加速器已經(jīng)為此進(jìn)行了優(yōu)化。理解這一點(diǎn)的另一種方式就是那句常被說的“吞吐量可以買到,但延遲必須去爭取”。加速器的設(shè)計(jì)是為了最大限度地提高吞吐量,但在這樣做的過程中,它們可能會(huì)延長實(shí)時(shí)任務(wù)的延遲,并經(jīng)常無法按時(shí)完成任務(wù)。
拋開板載緩存對DDR帶寬的改善,可以很容易地看到,以更高的處理速度運(yùn)行任何這些網(wǎng)絡(luò),很快就會(huì)開始需要大量的內(nèi)存帶寬。雖然Seeing Machines的算法并不完全是基于這個(gè)表格中列出的網(wǎng)絡(luò),但它有助于說明在這些較高的處理速度下是多么容易迅速消耗這類設(shè)備的資源預(yù)算(這就是Occula NPU和我們開發(fā)在Occula上運(yùn)行的定制網(wǎng)絡(luò)的原因)。有很多網(wǎng)絡(luò)(實(shí)際上是大多數(shù))不需要運(yùn)行任何接近“跟蹤”算法所需的速率。例如,一些DMS設(shè)計(jì)需要實(shí)現(xiàn)10個(gè)或更多的網(wǎng)絡(luò),這些網(wǎng)絡(luò)以截然不同的速率并發(fā)執(zhí)行。
在不同的處理速度下分配給各種網(wǎng)絡(luò)的相對帶寬大小
上圖所示的是一個(gè)直觀的例子,每個(gè)框的大小代表了可用內(nèi)存帶寬對不同網(wǎng)絡(luò)的相對分配(不同顏色)和它們所需的處理速率(不同層)。對于任何給定的任務(wù),NN的類型不在本文的討論范圍之內(nèi),只是說不同的NN具有不同的性能特征,因此與所需特征的KPI直接相關(guān)。算法要求和性能將決定網(wǎng)絡(luò)的類型和所需的最低處理速率。處理pipeline必須確保每個(gè)網(wǎng)絡(luò)的執(zhí)行速度不低于其要求的處理速度,并始終能夠滿足其周期的時(shí)限(即批處理不是一個(gè)自動(dòng)選項(xiàng))。