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