鄭重聲明:原文參見標題,若有侵權,請聯繫做者,將會撤銷發佈! 如下是對本文關鍵部分的摘抄翻譯,詳情請參見原文。程序員
Abstract算法
能量收集技術爲將來的物聯網應用提供了一個頗有前景的平臺。然而,因爲這些設備中的通訊很是昂貴,應用程序將須要「超出邊緣」的推理,以免在無心義的通訊上浪費寶貴的能量。咱們的結果代表,應用程序性能對推理精度很是敏感。不幸的是,精確的推理須要大量的計算和內存,而能量收集系統的資源嚴重受限。此外,能量收集系統間歇運行,常常發生電力故障,這會破壞結果,阻礙前進。編程
本文克服了這些困難,在能量搜索系統上首次給出了DNN推理的全面演示。咱們設計並實現了SONIC,這是一個間歇感知的軟件系統,專門支持DNN推理。SONIC引入了循環延續(loop continuation),這是一種新的技術,它大大下降了保證像DNN推斷這樣的循環繁重代碼正確間歇執行的成本。爲了構建一個完整的系統,咱們進一步介紹了GENESIS,一個自動壓縮網絡以最佳平衡推理精度和能量的工具,以及TAILS,它利用一些微控制器中可用的SIMD硬件來提升能量效率。SONIC和TAILS都保證了正確的間歇執行,而不會在不一樣的電源系統中出現任何手動微調或性能損失。在商用微控制器上運行三個神經網絡,SONIC和TAILS比最新技術分別減小了6.9和12.2倍的推理能量。後端
1. Introduction緩存
能量收集技術的成熟和最近出現的可行的間歇計算模型爲創建具備現有電池供電系統的大部分計算、傳感和通訊能力的複雜無電池系統提供了機會。許多將來的物聯網應用須要頻繁的決策,例如什麼時候觸發電池耗盡的攝像頭,而且由於與其餘設備通訊一般是不切實際的昂貴,因此這些決策必須在本地作出。將來的物聯網應用須要對原始傳感器數據進行本地推理,推理精度將決定其性能。利用最新最早進系統的能量數據,咱們代表這種本地推理能夠將端到端應用程序性能提升400倍或更多。安全
近年來,深度神經網絡(deep neural networks,DNNs)[44,66,69]在推理精度方面取得了長足的進步。DNNs依靠從許多例子中學習到的豐富模型,使用有限的、有噪聲的輸入實現複雜的推理。不幸的是,雖然DNNs比傳統的替代方案[29,55]精確得多,但它們對計算的要求也更高。網絡
典型的神經網絡使用數千萬的權值,須要數十億的計算操做[44,66,69]。這些網絡的目標是高性能、吞吐量優化的處理器,如GPU或谷歌的TPU,它每秒執行高達9萬億次的操做,同時消耗大約40瓦的功率[42]。即便是一個小的DNN(例如LeNet[46])也有超過一百萬的權重和數百萬的操做。最有效的DNN加速器優化性能和能源效率,消耗數百mW[11,12,26,31]。數據結構
挑戰:與這些高性能系統造成鮮明對比的是,能量收集設備使用的是專爲極低功耗操做而設計的簡單微控制器(MCUs)。這些MCUs系統運行在低頻(1-16MHz)下,具備很是小的內存(幾萬或幾十萬字節)。他們簡單的架構限制了他們每秒執行幾百萬次操做,同時只消耗1-3mW的功率,比最近的DNN加速器低兩個數量級。架構
對這些設備的DNN推斷還沒有探索,必須克服幾個挑戰,才能使新興物聯網應用於由商品組件構建的能量收集系統。最重要的是,隨着電力供應的增長,能量收集系統會間歇性地運行,使高效、正確的軟件開發變得複雜。操做週期取決於電力系統的特性,但一般較短——大約100000條指令。所以,現有DNN推理實現不能容忍間歇操做。框架
最近的工做提出了一種軟件系統,它保證了任意程序在間歇電源上的正確執行[16,36,37,51,52,74]。這些系統增長了大量的運行時開銷以確保正確性,在咱們的實驗中,將DNN推理速度平均下降了10倍。這些系統錯過了利用計算結構下降保證正確性成本的機會。對於像DNN推理這樣高度結構化和循環繁重的計算,這種錯過的機會尤爲昂貴。
咱們的方法和貢獻:本文首次展現了在一個普遍可用的能量收集系統上運行的現實世界神經網絡上的間歇DNN推理。咱們作出如下貢獻:
咱們使用射頻能量採集器[4,5]在TI MSP430微控制器[2]上評估SONIC & TAILS(第8、九章)。在三個真實世界的DNNs上[39,46,64],SONIC比Alpaca[52]平均提升了6.9倍的推理效率,Alpaca是一個最早進的間歇系統。TAILS利用DMA和SIMD進一步將效率平均提升12.2倍。
咱們總結了並行間歇結構的將來研究方向,避免了當前能量收集MCUs的侷限性,並提供了新的特性來有效地支持間歇(第十章)。
2. Background
能量收集裝置使用從其環境中提取的能量進行操做。收集到的能量不是連續可用的,所以能量收集設備在能量容許的狀況下間歇工做。先前的研究代表,間歇性執行會致使內存不一致,影響進程,並遭受不終止條件的影響。此外,典型的能量收集裝置是嚴重的資源緊張的,增長了資源管理的複雜性。爲了激發SONIC&TAILS的貢獻,咱們總結了資源受限設備上間歇執行的挑戰,並描述了先前間歇執行模型的低效性。
2.1. Intermittent execution on energy-harvesting devices
當環境中的可收穫功率低於裝置的工做功率時,能量收集裝置間歇工做。爲了在電力不足或週期性不可用的狀況下運行,設備在硬件緩衝器(如電容器)中緩慢地積累能量,並在緩衝器滿時運行。該裝置在工做時耗盡緩衝區的能量,而後斷電,等待緩衝區再次充滿。
軟件在能量收集裝置的間歇執行模型中執行[10,41,51,53,54,62]。在間歇執行中,軟件以突發的方式進行,在頻繁的電源故障時重置。現有設備[2,72]混合易失性狀態(例如,寄存器和SRAM)和非易失性存儲器(例如,FRAM)。當非易失性存儲器持續存在時,電源故障清除易失性狀態。重複的電源故障阻礙了進程[62],而且可能因爲部分或重複應用的非易失性內存更新而致使內存不一致[51]。這些進度和一致性問題會致使不正確的行爲,從而偏離任何持續供電的執行[15]。
先前的工做使用軟件檢查點[37,51,74]和基於原子任務的編程模型[16,36,52]來解決進度和內存一致性問題。基於任務的系統在斷電後從新啓動,在最近的任務或檢查點使用一致的內存。咱們關注基於任務的模型,由於以前的工做代表,它們比檢查點模型更有效[16,52]。
基於任務的間歇執行模型:基於任務的間歇執行模型經過在斷電後從新啓動任務來避免頻繁的檢查點,此時必須從新初始化全部寄存器和堆棧狀態。爲了確保內存一致性,任務確保部分任務執行的效果對後續的從新執行不可見。具體地說,讀取而後寫入的數據(即依賴於WAR)可能會暴露中斷任務的結果。基於任務的系統經過重作日誌記錄(redo-logging)[52]和靜態重複數據(static data duplication)[16]避免了「the WAR problem」。
基於任務的系統保證了正確的執行,但運行時開銷很大。重作日誌記錄和靜態複製都會根據寫入的數據量按比例增長內存和計算。從一個任務過渡到下一個任務須要時間,所以任務很短,所以過渡經常會致使性能降低。長任務能夠更好地分攤過渡成本,但在斷電後會從新執行更多的工做。更糟糕的是,若是任務太長,須要的能量超過設備能夠緩衝的能量,則任務將面臨不終止。
咱們用SONIC&TAILS解決的一個關鍵挑戰是確保DNN推理的正確執行,同時避免之前基於任務的系統開銷。咱們經過SONIC循環延續來實現這一點,它經過容許WAR依賴性來循環索引變量,安全地「打破現有任務系統的規則」(第六章)。這是安全的,由於SONIC確保每一個循環迭代都是等冪的。循環延續產生了巨大的收益,由於它有效地消除了重作日誌記錄、任務轉換和浪費的工做。
資源約束:間歇系統資源嚴重受限。在本文中,咱們研究了使用TI MSP430微控制器(MCU)構建的間歇系統,它是現有間歇系統中最經常使用的處理器〔17,33,34,35,65〕。這種MCU的頻率一般爲1-16MHz,與成熟的、基於2GHz Xeon的系統相比,留下了至關大的性能差距。間歇式系統的MCU一般還包含系統可用的全部內存,包括易失性的嵌入式SRAM和非易失性的嵌入式FRAM。嵌入式存儲器體積小,容量因設備而異。典型的MSP430低功耗MCU包括1–4KB的SRAM和32–256KB的FRAM。雖然連續供電的嵌入式系統可能包括經過串行總線(i2c或SPI)可訪問的更大內存,但大多數間歇式系統並非因爲其高訪問能量和延遲。間歇系統的典型工做功率約爲1mW。
2.2. Efficient DNN inference
深度神經網絡(DNN)正成爲從理解語音到圖像識別等推理應用的標準[44,66,69]。架構界已經用加速器來響應,這些加速器能夠提升推理和訓練的性能,並下降功耗。一些架構關注密集計算[11,12,13],另外一些關注稀疏計算[26,31,45,75],還有一些關注CNN加速[6,7,23,60,63,67]。工業界一直遵循這一趨勢,爲DNNs提供定製硅[42]。
最近的其餘工做集中在下降DNN推理成本的算法技術上。接近零的權重一般能夠「剪枝」而不會損失太多的精度[32,57]。推理也不須要全精度浮點運算,而權重精度的下降[22,31]下降了存儲和計算成本。存儲和計算的額外減小來自於對DNN計算的因子分解[9,14,40,59,68,70,71]。
儘管作出了這些努力,但對於能量收集系統來講,功耗仍然保持很高的數量級。即便在最有效的加速器上,DNN推斷也會消耗數百毫瓦的能量[3,12,31]。最近電路界的節能DNN工做[27,61]在必定程度上下降了功耗,但在可編程性上有所妥協。
更重要的是,在全部這些先前的努力中,間歇操做仍然沒有獲得解決。這是本工做要解決的關鍵問題。
二值神經網絡:爲了進一步減小推理能量,一些系統將權值壓縮到一個或幾個位[18,24,43,49,50]。二值神經網絡可能看起來很適合於能量收集系統,但因爲幾個緣由,它們是有問題的。二值網絡須要比等效DNN更多的參數來保持精度。所以,它們的內存佔用常常超過咱們設備的不足內存:例如,一個99%-accurate的MNIST二值網絡須要4.4MB的權重[18],將其壓縮到360KB會損失近10%的精度[8]。相比之下,GENESIS只有192KB,準確率達到99%。此外,商用微控制器缺少下降精度模型所依賴的體系結構支持,如「人口計數」指令和本機下降精度算法[24,43]。在軟件中模擬這些操做的成本將壓倒較小權重帶來的任何潛在好處。基於這些緣由,咱們得出結論,二值網絡不太適合商業能量收集系統,儘管咱們認爲它們值得在將來的專門架構中考慮(第十章)。
3. Motivation for intermittent inference
若是沒有「超越邊緣」的智能,許多有吸引力的物聯網應用將不切實際。這些設備上的通訊成本過高,雲計算等解決方案不太實用。取而代之的是,能量收集設備必須在本地決定如何消耗能量,例如什麼時候傳送傳感器讀數或什麼時候激活昂貴的傳感器,例如高分辨率相機。
本節說明了對能量收集、間歇操做裝置的推斷。咱們展現了通訊如何主宰能源,即便是最早進的低功耗網絡,使得雲計算不切實際。咱們分析了能量消耗的位置,並代表,在一階上,推理精度決定了系統性能,從而推進了DNNs在這些應用中的使用。使用這種分析,咱們將比較不一樣的DNN配置,並找到一個最大化應用性能(第五章)。
3.1. The need for inference beyond the edge
今天,許多應用程序經過向雲發送輸入數據並等待響應,將大部分計算轉移到雲。不幸的是,通訊不是免費的。事實上,在能量收集設備上,通訊比本地計算和傳感消耗的能量高出一個數量級。這些高成本意味着,即便在當今最高效的網絡架構上,能量收集設備也沒法將推理轉移到邊緣或雲上。
例如,最新的OpenChirp網絡架構容許傳感器以極低的功耗遠距離發送數據。爲了發送一個8字節的數據包,一個地面傳感器在大約800ms的時間內抽取120mA的電流[25]。使用最近的Capybara能量收集電力系統[17],這樣的傳感器將須要一個900mF電容器組發送一個8字節的數據包。這個大電容器陣列對設備施加了有效的佔空比,由於設備在充電時必須空閒,而後才能發射。一個在陽光直射下擁有2cm x 2cm太陽能電池陣列的Capybara傳感器節點(一個樂觀的設置)須要大約120秒才能爲一個900mF的電容器組充電[17]。所以,將每像素1B的單個28 x 28圖像(例如,一個MNIST圖像[47])發送到雲中進行推斷須要一個多小時。
相比之下,咱們的全系統SONIC原型僅在10秒內對微弱的、採集到的射頻能量進行局部推斷——提高超過360倍。所以,SONIC&TAILS爲能量收集設備上全新的推理驅動應用打開了大門。
3.2. Why accuracy matters
咱們如今考慮一個示例應用程序,以說明推理精度如何決定端到端應用程序的性能。這種分析鼓勵使用最早進的推理技術,即DNNs,而不是像支持向量機這樣精度較低但成本較低的技術。
爲了得出這些結論,咱們採用了一個高層次的分析模型,將系統中的能量分爲感知、通訊和推理。(傳感包括全部相關的本地處理,例如,設置傳感器和後處理讀數。)咱們使用本地推斷過濾傳感器讀數,以便僅傳送「有趣的」傳感器讀數。咱們的優勢是能夠以固定的捕獲能量,發送感興趣的傳感器讀數的數量(這也是執行時間的一個很好的替代)。咱們把它表示爲IMpJ,或者每焦耳感興趣的信息。雖然這個指標沒有捕捉到因爲推斷錯誤(即假陰性)而沒有傳達的感興趣讀數,但咱們的分析代表須要高精度。
這個簡單的模型捕捉了許多超出邊緣的有趣的推理應用:例如,野生動物監測、災難恢復、可穿戴設備、軍事等。具體來講,咱們考慮一個野生動物監測應用,其中帶有小攝像頭的傳感器部署在具備OpenChirp鏈接性的廣闊區域。這些傳感器監測當地的刺蝟種羣,並在檢測到刺蝟時經過無線電發送圖片。其目標是儘量多地捕捉刺蝟的圖像,沒有刺蝟的圖像沒有任何價值。
無推斷基線:咱們的基線系統不支持本地推斷,所以它必須傳達每一個圖像。通訊成本很高,因此這個基線系統性能很差。假設傳感消耗Esense能量,通訊一個傳感器讀數消耗Ecomm能量,感興趣的事件以基本速率p發生(見表1)。而後,基線系統爲每一個事件花費Esense+Ecomm能量,其中只有佔比爲p的事件值得交流,其IMpJ爲:
理想:雖然不可能創建,但理想的系統只傳送感興趣的傳感器讀數,即全部事件的一小部分p。所以,其IMpJ爲:
Oracle:相似地,Oracle系統只會傳遞感興趣的傳感器讀數,但在這種狀況下,推理是不自由的。它的推斷是徹底正確的,可是Oracle必須花費更多的能量來決定它是否值得通訊。所以,Oracle有效地增長了感知成本,其IMpJ爲:
本地推理:最後,咱們考慮一個推理不徹底準確的現實系統。與Oracle同樣,每一個傳感器的讀取都須要花費Esense+Einfer的能量。假設推理的真陽率爲tp,真陰率爲tn。因爲通訊很是昂貴,性能會受到錯誤通訊、不感興趣的傳感器讀數的影響,其機率爲:(1-p)(1-tn)。其IMpJ爲:
案例研究:野生動物監測:咱們如今將此模型應用於早期的野生動物監測示例。刺蝟是與世隔絕的動物,因此「有趣」的照片不多見,好比P=0.05。低功耗攝像頭容許在低能耗下拍攝圖像,例如,Esense ≈ 10mJ[58]。正如咱們在上面看到的,傳送圖像是昂貴的,在OpenChirp[25]上使用Ecomm ≈ 23000mJ。最後,根據咱們的SONIC&TAILS原型,推斷須要Einfer ≈ 40mJ。
圖1顯示了將這些值插入模型後每一個系統的IMpJ。爲了簡單起見,此圖假定真陽率和真陰率相等,稱爲「準確度」。因爲通訊支配着能源預算,所以本地推理能夠在1/p = 20x的量級上實現大的端到端收益。推斷是不貴的,即便是相對罕見的事件;也就是說,Oracle很是接近理想。然而,要在實踐中實現這些收益,推理必須是準確的,並且隨着推理準確度的降低,收益迅速降低。當p值變化時,雖然效益的大小發生了變化(隨着p值的減少而增大),但獲得了定性類似的結果。
只發送推斷結果:根據應用程序的不一樣,只發送推斷結果而不是完整的傳感器讀數能夠實現更大的端到端改進。例如,在這個野生動物監測示例中,能量收集設備能夠在檢測到刺蝟時發送一個數據包,而不是發送完整的圖像。其效果是顯著下降了具備本地推理的系統的Ecomm,緩解了系統的瓶頸。在咱們的野生動物監測例子中,Ecomm減小了98倍。
圖2展現出僅發送推斷結果時的端到端性能。本地推理能夠顯著下降通訊能量:在沒有本地推理的狀況下,比起基線系統,能夠檢測和通訊480倍多的事件。然而,這些下降也意味着推斷是不可忽略的能源成本,Oracle與理想的差距是2.2倍——即便使用SONIC&TAILS的優化能源成本。這一差距很難在現有硬件上進一步縮小;咱們將在第十章中討論解決這一問題的方法。
假陰性:精確性在另外一個維度上也很重要,特別是在只有推理結果被傳達的狀況下。若是感興趣的事件是罕見的,那麼就須要高精度,這樣假陰性的噪聲就不會引出真正感興趣事件的信號。當p=0.05時,準確度(真陰性率)大約須要95%。這種考慮與圖2一致:即便以更昂貴的推理爲代價,也須要高的推理精度。所以,咱們關注SONIC&TAILS中的深度神經網絡,由於它們是最精確的,儘管咱們的技術也有利於支持向量機等不太精確的方法。
4. System overview
本文描述了第一個在間歇運行的能量收集裝置上有效地進行DNN推斷的系統。圖3展現出了本工做中的新系統組件,以及它們如何從高層DNN模型描述開始產生高效、間歇安全的可執行文件。這個系統有三個主要組成部分:GENESIS、SONIC和TAILS。
GENESIS(在間歇系統上生成能量感知網絡以提升效率)是一個工具,它能夠自動優化DNN,從程序員對網絡的高級描述開始。GENESIS試圖使用分離和修剪技術壓縮網絡的每一層。GENESIS的目標是找到一個在知足資源限制的同時優化IMpJ的網絡。如圖所示,GENESIS的輸入是一個網絡描述,其輸出是一個優化壓縮的DNN模型。第五章詳細描述了GENESIS。
SONIC(僅軟件的神經間歇性計算)是一種間歇性安全、基於任務的API和運行時系統,它包括DNN推理的專門支持,它安全地「打破現有任務系統的規則」以提升性能。SONIC與現有的基於任務的框架[16,52]兼容,容許無縫集成到更大的應用程序中。第六章詳細描述了SONIC。
TAILS(tile-accelerated intermittent LEA support,tile加速間歇式LEA支撐)是SONIC運行庫的替代品,它利用硬件矢量加速,特別針對TI低能量加速器(LEA)[1]。要使用TAILS,程序員只須要將編譯後的二進制文件連接到啓用TAILS的運行時系統。此運行時包括SONIC的全部優化和一套硬件加速向量操做,如卷積。第七章詳細描述了細節。
從高級網絡描述開始,程序員可使用GENESIS、SONIC和TAILS來構建一個高效的、支持間歇DNN的應用程序,該應用程序知足資源約束,對間歇操做具備健壯性,並提供普遍可用的硬件加速。本文出版後,咱們將開放咱們全部的代碼和數據集。
5. Optimal network compression with GENESIS
SONIC&TAILS要克服的第一個挑戰是將神經網絡擬合到能量收集系統的資源約束中。特別是,當前微控制器的有限存儲容量對網絡施加了硬約束。咱們開發了一個名爲GENESIS的工具,該工具應用分離和修剪技術(第二章),自動探索基線神經網絡的不一樣配置,減小網絡的資源需求。GENESIS改進了這些已知技術,經過在第三章中創建的模型,經過推理能量與真陽率和真陰率之間的平衡優化來最大化IMpJ。
5.1. Neural networks considered in this paper
本文考慮了三個網絡,總結見表2。爲了表示基於圖像的應用程序(例如,野生動物監測和災難恢復),咱們考慮了MNIST[47]。咱們考慮MNIST而不是ImageNet,由於ImageNet的大圖像不適合資源受限設備的內存。爲了表示可穿戴應用,咱們考慮了人類活動識別(HAR)。HAR使用加速度計數據對活動進行分類[39]。爲了表示音頻應用程序,咱們考慮了Google keyword spotting(OkG)[64],它對音頻片斷中的單詞進行分類。咱們也評估了幾個支持向量機模型,可是沒有一個適合於設備的支持向量機模型可以與DNN模型競爭[48]:由IMpJ測量,MNIST上的支持向量機執行性能差2倍,HAR上的支持向量機執行性能差8倍,而且咱們找不到OkG的支持向量機模型可以接近DNN的性能。
5.2. Fitting neural networks on energy-harvesting systems
GENESIS評估了一個網絡的許多壓縮配置,並創建了Pareto邊界。壓縮在四個維度上有折衷,很難用pareto曲線來捕捉;這些維度包括真陰率、真陽率、內存大小(即參數)和計算/能量(即操做)。全鏈接層一般控制內存,而卷積層控制計算。GENESIS壓縮了二者。
GENESIS用兩種已知的技術壓縮每一層:分離和修剪。分離(或秩分解)將m x n全鏈接層拆分爲兩個m x k和k x n矩陣乘法,或將m x n x k卷積濾波器拆分爲三個m x 1 x 一、1 x n x 1和1 x 1 x k濾波器[9,14]。GENESIS使用Tucker張量分解與高階正交迭代算法來分離層[20,21,73]。剪枝包括刪除低於給定閾值的參數,由於它們對結果的影響很小[32,57]。
GENESIS在網絡的每一層都掃描分離和修剪的參數,在壓縮後從新訓練網絡以提升準確性。GENESIS依靠帶有中值中止規則(Median Stopping Rule)的Ray Tune黑盒優化器來探索配置空間[28,56]。圖4展現出了表2中的網絡結果。圖上的每一個標記表明一個壓縮配置,經過y軸上的推斷精度和x軸上的推斷能量來表示。可行的配置(即適合咱們設備小內存的配置;請參閱第八章)顯示爲綠色圓圈,不可行配置爲灰色 x。請注意,原始配置(大x)對全部三個網絡都不可行,這意味着它們不能簡單地移植到設備,由於它們的參數不適合內存。
圖4還展現出了每種壓縮技術的Pareto邊界。通常來講,修剪比分離更有效,但這些技術是互補的。
5.3. Choosing a neural network configuration
GENESIS使用第三章的模型估計了一個配置的IMpJ,特別是公式4。用戶爲其應用程序指定了Esense和Ecomm,並按計算操做能源成本。根據這些參數,GENESIS爲每一個配置估計Einfer,並使用來自先前訓練步驟的推斷精度來估計應用程序性能。用戶能夠指定訓練集中的哪一個類是「有趣的」,讓GENESIS計算特定應用程序的真陽率tp和真陰率tn。
圖5展現了經過模型映射圖4中的每一個點的結果。對於這些結果,咱們使用第三章的Esense,第八章裏咱們的SONIC&TAILS原型中每次操做的能量,並假設OpenChirp網絡[25],根據輸入大小估計Ecomm。
GENESIS選擇可行的配置,最大化估計的端到端性能(即IMpJ)。圖5展現了該選擇是非平凡的。推理能量和準確性都會影響端到端的應用性能,簡單地選擇最精確的可行配置是不夠的,由於它可能會浪費太多的推理能量。
真陽率、真陰率和推斷能量以難以預測的方式影響端到端應用程序的性能。簡單地選擇最精確的配置,就像扭曲的藍色曲線在??中所暗示的那樣,是不夠的,由於它可能會浪費太多的能量,或在真陽率或真陰率上表現不佳。
6. Efficient intermittent inference with SONIC
SONIC是第一個針對資源受限、間歇操做設備進行推理優化的軟件系統。SONIC支持大多數DNN計算中常見的操做,經過一個簡單的API向程序員公開這些操做。SONIC的功能是做爲SONIC運行時系統支持的任務集合實現的,SONIC運行時系統是Alpaca運行時系統的修改版本[52]。這些任務實現DNN功能,SONIC運行時系統保證正確的間歇操做。
對DNN推斷的專門化間歇支持產生了很大的好處。之前的基於任務的間歇執行模型[16,52]能夠將性能平均下降19倍和10倍(第九章)。SONIC大大下降了這些開銷,比標準的DNN推理實現減小到僅25%-75%,DNN推理不容許間歇操做。
SONIC經過消除之前基於任務的系統中的三個主要開銷來源來實現這些增益:重作日誌記錄、任務轉換和浪費的工做(第二章)。咱們的關鍵技術是循環延續,它有選擇地違反了循環索引變量的任務抽象。循環延續容許SONIC直接修改循環索引,而無需頻繁和昂貴的保存和恢復。經過將循環索引直接寫入非易失性內存,SONIC在每次循環迭代後檢查其進程,消除了昂貴的任務轉換,並在斷電時浪費了工做。
循環延續是安全的,由於SONIC確保每一個循環迭代都是等冪的。SONIC分別經過循環順序緩衝和稀疏撤銷日誌來保證卷積層和徹底鏈接層的冪等性。這兩種技術確保了在不靜態私有化或動態檢查點數據的狀況下的冪等性。
6.1. The SONIC API
表3列出了頂級SONIC API及其用途。爲了調用接口,程序員填充一個層調用數據結構。層調用結構包含神經元權重、誤差、輸入激活數據的計數和值,以及保存調用結果的內存位置。填充數據結構後,程序員將其推送到全局任務調用堆棧中,指定應成功調用的應用程序級任務,並轉換到接口的任務。完成後,接口任務轉換到指定的後續任務,應用程序繼續。
SONIC API容許程序員經過常見的線性代數原語描述DNN的結構。正如程序員在基於任務的間歇編程模型[16,36,52]中將任務連接在一塊兒同樣,程序員將SONIC的任務連接在一塊兒,以表示DNN推理流水線的控制和數據流。SONIC的API公開了程序員調用的功能,就像他們程序中的任何其餘任務同樣(特別是模塊化任務組[16,52])。儘管SONIC「打破了」典型的基於任務的間歇系統的規則,可是程序員在使用SONIC API編寫程序時不須要解釋這些差別。SONIC提供的程序級行爲保證與其餘基於任務的間歇執行模型相同:SONIC任務將經過確保重複的、中斷的執行嘗試是等冪的,從而在斷電的狀況下以原子方式執行。
6.2. The SONIC runtime implementation
DNN推理由神經網絡各層中的循環控制。SONIC經過確保這些循環在間歇功率下正確執行,同時比之前的基於任務的系統增長更少的開銷,從而優化DNN推斷。
任務型系統中的循環:典型的任務型間歇系統有兩種循環:短循環和長循環。短循環的全部迭代都適合一個任務,而且將在不消耗設備所能緩衝的能量的狀況下完成。短迴路在易失性存儲器中保持控制狀態,這些變量在斷電時清除。當電源恢復時,任務將從新啓動並完成。短循環操做的數據一般是非易失性的(即「任務共享」[52]),若是讀取和更新,則必須備份(靜態或動態)以確保它們保持一致。短循環的問題是它們老是從頭開始,浪費地重複已經完成的循環工做。相比之下,一個具備多個迭代的長循環不適合一個任務;一個長循環須要比設備可以緩衝的更多的能量,而且可能永遠不會終止。程序員必須將循環迭代拆分爲多個任務,要求在每次迭代時進行任務轉換,並要求控制狀態和數據不易失性和備份。長循環的問題在於,它們可能致使不終止,而且在跨任務拆分時,會帶來巨大的私有化和任務轉換開銷。
任務平鋪是將循環的迭代分解爲任務的簡單方法。任務平鋪循環對每一個任務執行固定數量的迭代。任務平鋪分攤了任務轉換開銷,但有可能在單個任務中執行的迭代次數超過設備的能量緩衝區所能支持的次數,從而致使不終止。圖6顯示了循環的間歇執行,使用左邊的能量軌跡計算點積,使用5(Tile-5)和12(Tile-12)兩個固定的tile大小。Tile-5在失敗前完成四次迭代時浪費工做。Tile-12阻礙前進,由於設備緩衝的能量不足,沒法完成12次迭代。
6.2.1. Loop continuation
SONIC的循環延續是一種間歇性安全優化,能夠避免在包含長時間運行的循環嵌套的任務中浪費工做、沒必要要的數據私有化和任務轉換開銷。循環延續的工做方式是直接修改循環控制變量和在循環嵌套中操做的內存,而不是在任務之間分割長時間運行的循環。循環延續容許在單個任務中循環任意的迭代次數,既不終止也不過分的狀態管理開銷。循環延續將循環的控制變量和直接操做的數據存儲在非易失性內存中,而無需備份。當循環繼續任務從新啓動時,其(易失性)局部變量將在任務開始時從新初始化。可是,循環控制變量保留其狀態,循環從上次嘗試的迭代開始繼續。
圖7展現了經過將Task_Convolve的循環控制狀態存儲在非易失性存儲器中,循環繼續如何工做。SONIC經過在迭代結束時更新循環的控制變量i,而不是在從新執行時重置它,來確保循環的控制變量i是正確的。控制變量更新期間或以後的電源故障可能須要循環體嵌套重複一次迭代,但它從不跳過一次迭代。
圖6顯示了SONIC使用循環繼續執行。儘管電源中斷,但在第九次循環迭代時仍會繼續執行,而不是從新啓動整個循環嵌套或每五次迭代(Tile-5)。
6.2.2. Idempotence tricks
一般,從循環嵌套的中間從新啓動可能會使被操縱的數據部分更新,而且可能不一致。可是,循環延續是安全的,由於SONIC的運行時系統使用循環順序緩衝或稀疏撤消日誌來確保每一個循環迭代都是等冪的。SONIC從不要求迭代中的某個操做讀取同一迭代中另外一個操做生成的值。所以,因爲電源中斷而重複從新執行的迭代將始終看到正確的值。
循環順序緩衝:循環順序緩衝是用於卷積層(和密集的全鏈接層)的雙重緩衝機制,確保每一個循環迭代都是等冪的,而無需昂貴的重作日誌記錄(參見[52])。因爲MSP430設備沒有複雜的緩存機制,而不是優化重用和數據位置,SONIC優化了提交所需的項的數量。經過在DNN推斷中對循環從新排序,並根據須要對部分激活進行雙緩衝,SONIC可以徹底消除循環迭代中的提交。
評估稀疏或密集卷積須要SONIC對層的整個輸入激活矩陣應用濾波器。SONIC命令循環迭代,在轉到下一個過濾器元素以前,將過濾器的每一個元素應用到輸入激活的每一個元素(即將它們相乘)。對於等冪,SONIC將部分累積的值寫入中間輸出緩衝區,而不是將更新應用到適當的輸入矩陣。在對輸入中的每一個條目應用一個過濾器元素並將部分結果存儲在中間緩衝區中以後,SONIC將輸入緩衝區與中間緩衝區交換,並繼續移動到下一個過濾器值。
因爲SONIC從不在一次迭代中讀取和寫入相同的內存位置,所以它避免了第2.3節中描述的WAR問題。所以循環迭代是等冪的。圖7顯示了在循環順序緩衝下,SONIC在計算Task_Convolve中的部分結果時從不讀取和寫入同一矩陣緩衝區。完成此任務後,SONIC轉換到Task_Next_Filter,後者交換緩衝區指針並從過濾器獲取要應用的下一個值。
稀疏撤消日誌記錄:雖然循環順序緩衝足以確保每一個循環迭代都是等冪的,但有時它是沒必要要的浪費。出現這個問題是由於循環順序緩衝在每一個任務完成後在緩衝區之間交換,因此它必須在緩衝區之間複製數據,即便數據沒有被修改,以防未來讀取數據。這種複製在稀疏的全鏈接層上是浪費的,在這些層中,大多數過濾器權重被剪除,所以在一次迭代中不多修改激活。經過循環順序緩衝,SONIC最終花費了大部分時間和精力在緩衝區之間複製未經修改的激活。
爲了消除這種低效性,SONIC引入了稀疏撤銷日誌,經過撤銷日誌而不是雙緩衝來確保冪等性。爲了確保原子性,稀疏撤消日誌記錄經過兩個索引變量(讀和寫索引)跟蹤循環的進度。應用篩選器時,SONIC首先將原始的未修改激活複製到規範內存位置,而後增長讀取索引。SONIC而後計算修改後的激活並將其寫回原始激活緩衝區(沒有單獨的輸出緩衝區)。而後它增長寫索引並繼續下一次迭代。這種兩階段的方法保證了正確的執行,由於若是更新過程當中出現電源故障,稀疏撤消日誌記錄將從緩衝的原始值恢復計算輸出值。
稀疏撤消日誌記錄確保每一個任務的工做隨着所作修改的數量而增加,而不是輸出緩衝區的大小(與循環順序緩衝不一樣)。可是,稀疏撤銷日誌記錄使每次迭代的內存寫入次數增長了一倍,所以在大多數數據被修改的密集層上效率低下,所以循環順序緩衝的效率顯著提升。最後,請注意,與之前的基於任務的系統不一樣,稀疏撤銷日誌記錄確保了具備恆定空間開銷的冪等性,而且在迭代之間沒有任務轉換。
7. Hardware acceleration with TAILS
TAILS經過結合普遍可用的硬件加速來提升SONIC的性能,從而更有效地進行推理。程序員能夠選擇將其SONIC應用程序連接到TAILS運行時系統,使應用程序可以使用直接內存訪問(DMA)硬件來優化塊數據移動,並使用簡單的向量加速器,如TI低能加速器(LEA)並行執行操做。LEA支持有限衝激響應離散時間卷積(FIR DTC),直接實現DNN推理所需的卷積。
TAILS的一個關鍵特性使得其在間歇式能量收集裝置中的有效使用是,TAILS運行時系統在運行時自適應地綁定硬件參數,以最大限度地提升操做吞吐量而不超過設備的能量緩衝區。咱們的TAILS原型根據使用設備的固定能量緩衝區成功完成的操做數自適應地肯定DMA塊大小和LEA向量寬度。在校準這些參數以後,TAILS使用它們來配置可用的硬件單元,並在以後執行推斷。
7.1. Automatic one-time calibration
在第一次執行以前,TAILS應用程序運行一個簡短的遞歸校準例程,以肯定DMA塊大小和LEA向量大小。該例程肯定能夠將其最大化到LEA的操做緩衝器中的最大向量大小,使用FIR DTC的過程,以及DMA返回到非易失性存儲器,而不超過設備的能量緩衝和阻礙進展。若是在電源故障前沒有完成tile大小,則從新執行校準任務,將tile大小減半。當FIR DTC完成而且TAILS使用該tile大小進行後續計算時,校準結束。
7.2. Accelerating inference with LEA
一旦TAILS肯定了它的tile大小,應用程序就會運行,使用DMA和LEA計算密集和稀疏卷積以及密集矩陣乘法。LEA有一些限制:它只支持密集操做,而且只能從設備的小4KB SRAM(而不是256KB FRAM)讀取數據。TAILS使用DMA將輸入移動到SRAM中,調用LEA,而後DMA將結果返回到FRAM。本機支持密集層:全鏈接層使用LEA的矢量MAC操做,卷積使用LEA的一維FIR DTC操做。爲了支持二維和三維卷積,TAILS迭代地應用一維卷積並累積這些卷積的結果。TAILS使用循環順序緩衝來確保對部分累積值的更新是等冪的。
稀疏操做須要更多的努力。TAILS使用LEA進行稀疏卷積,首先使濾波器密集(用零填充)。使過濾器緻密化是很便宜的,由於每一個過濾器都被屢次重複使用,從而下降了其建立成本。然而,這確實意味着LEA執行沒必要要的工做,這有時會損害性能。基於這個緣由,咱們使用LEA的點積運算來代替1 x p x 1因子卷積層的FIR-DTC。
最後,稀疏的全鏈接層在LEA上是低效的,由於過濾器不能被重用。咱們發現TAILS的大部分時間都花在填充過濾器上,儘管付出了很大的努力,咱們仍是沒法使用LEA加速稀疏的徹底鏈接層。所以,TAILS在軟件中執行稀疏的全鏈接層,就像SONIC同樣。
8. Methodology
在圖8中的設置中,咱們在16MHz的TI-MSP430FR5994[2]上實現SONIC和TAILS。該板鏈接到距3W動力腳輪發射器[5]1米遠的動力腳輪P2210B[4]收集器。咱們在連續電源和間歇電源上運行全部配置,使用三種不一樣的電容器大小:1mF、50mF和100μF。
在設備上運行代碼:咱們使用MSPGCC 6.4進行編譯,使用TI的MSPDriverlib進行DMA,使用TI的DSPLib進行LEA。咱們使用GCC而不是Alpaca的LLVM後端,由於LLVM缺少對20位尋址的支持,而且爲MSP430生成的代碼比GCC慢。
測量:咱們使用第二個MSP430FR5994測量間歇性執行。測量MCU上的GPIO引腳經過一個電平移位器鏈接到間歇裝置,容許它計數從新啓動和信號什麼時候開始和中止計時。咱們經過軟件和硬件的組合來實現自動測量,這些軟件和硬件編譯配置二進制文件,將二進制文件閃爍到設備上,並與測量MCU通訊以收集結果。系統啓動一個繼電器,在用於從新編程的持續電源和用於測試的間歇電源之間切換。
測量能量:經過計算GPIO脈衝之間的電荷週期數,咱們能夠肯定在不一樣碼區消耗的能量。對於更細粒度的方法,咱們構建了一組微標號來計算特定操做(例如,FRAM的負載)在單個充電週期中能夠運行多少次。而後咱們分析在推理過程當中每一個操做被調用的次數,並按每一個操做的能量進行縮放,以得到詳細的能量分解。
比較基線:咱們將SONIC和TAILS與四個DNN推理實現進行比較。第一個實現是一個標準的基線實現,它不容許間歇操做(它不終止)。其餘三個實現基於Alpaca[52]並經過平鋪迭代來分割循環,如圖6所示。
9. Evaluation
咱們如今對咱們的原型進行評估,以證實:(i)SONIC&TAILS保證正確的間歇執行;(ii)SONIC&TAILS在最新技術中大大減小了推理能量和時間;以及(iii)SONIC&TAILS在各類網絡中的性能良好,無需任何手動微調。
9.1. SONIC & TAILS significantly accelerate intermittent DNN inference over the state-of-the-art
圖9展現了咱們考慮的三個網絡的推理時間(表2)。對於每一個網絡,咱們評估了在四個不一樣的電力系統上運行的六個實現。咱們將推理時間分爲:充電所花的死亡時間;每一個卷積層(占主導地位)所花的活區時間;全鏈接層所花的活躍時間;以及其餘一切。
首先,請注意SONIC&TAILS保證每一個電力系統上的每一個網絡都能正確執行。這種狀況不適用於原始基線,它不能在間歇電源下正常運行,也不適用於先前基於任務的間歇系統的大多數tile。惟一可靠地正確執行的另外一個實現是Tile-8,由於它的tile很小,老是在一個充電週期內完成。其餘tile在某些配置上失敗:帶100μF電容的MNIST上的Tile-32失敗,而在100μF的全部網絡上的Tile-128失敗。
SONIC&TAILS保證在比Tile-8低得多的管理費用下正確執行。在整個網絡中平均,Tile-8在連續功率下比原始基線慢13.4倍,而SONIC比基線慢1.45倍,TAILS比基線快1.2倍。換言之,SONIC比平鋪Alpaca[52]平均提升6.9的性能,TAILS提升12.2倍。此外,SONIC&TAILS電容器的執行時間是一致的。
較大的tile大小在必定程度上分攤了管理費用,但因爲它們不能在全部網絡或電容器大小上完成,所以它們是一個不具吸引力的實現選擇。SONIC&TAILS保證了全部電容器尺寸的正確間歇執行,同時也比最大的tile快:即便與Tile-128相比,SONIC在連續功率上平均快5.2倍,而TAILS快9.2倍。
DMA和LMA都提升了TAILS的效率。咱們測試了由軟件模擬DMA和LEA的配置,發現LEA一致地將性能提升了1.4倍,而DMA平均將性能提升了14%。
最終,這些結果代表,推斷是可行的商品能量收集設備,而且SONIC&TAILS大大減小了管理費用,超過最早進的方法。
9.2. Loop-continuation nearly eliminates overheads due to intermittence
圖10顯示,SONIC&TAILS的間接費用主要來自支持間歇所需的控制。條形圖中陰影較深的區域表示計算層內核(即主循環)所花時間的比例,而較淺的區域表示控制開銷(即任務轉換和設置/卸載)。基線和SONIC之間的性能差別主要歸因於較輕的控制區域。這代表SONIC的循環延續和冪等技巧在原始基線上施加了很小的開銷,該基線在寄存器中累積值並避免內存寫入(但不容許間歇性)。
TAILS的開銷也來自於控制;TAILS顯著加快了內核的速度。因爲LEA的定點表示,在調用FIR-DTC以前,TAILS的控制開銷很大,這迫使TAILS進行位移激活。此外,LEA沒有左移位操做(它有右移位),所以這些移位必須在軟件中完成。這些移位佔圖10中控制時間的大部分。
圖10還展現了Tile-32的時間分解。與SONIC&TAILS不一樣,Tile-32在控制和內核上花費的時間要多得多。這是由於Alpaca對全部寫入的值使用重作日誌以確保等冪性,所以每次寫入都須要動態緩衝(內核時間)和在任務完成時提交(控制時間)。SONIC&TAILS有效地消除了重作日誌,避免了這些開銷。
9.3. SONIC & TAILS use much less energy than tiling
能量收集系統的大部分時間都是斷電充電,所以執行時間在很大程度上取決於能源效率。圖11顯示SONIC&TAILS因爲比其餘方案須要更少的能量而得到高性能。在圖9中,推斷能量與充電所花費的停滯時間成正比。因爲死亡時間支配着推理時間,SONIC&TAILS在推理能量方面的改進與它們在推理時間方面的類似。
9.4. Where does SONIC’s energy go?
圖12經過示出在不一樣操做上花費的能量的比例來進一步表徵SONIC。藍色區域表示內存操做,橙色區域表示控制指令,綠色區域表示內核內的算術指令,紫色區域表示任務轉移開銷,灰色區域表示剩餘的未計數能量。控制指令佔SONIC能量的26%,另外14%的系統能量來自FRAM寫入循環索引。理想狀況下,這些開銷將在許多內核操做中分攤,但這樣作須要更高效的體系結構,正如咱們在下一節中討論的那樣。
10. Future intermittent architecture research
咱們在構建SONIC&TAILS方面的經驗代表,經過一個內置支持間歇操做的並行架構,有很大的機會加速間歇推理。SONIC&TAILS經過專門的DNN推理演示了在低開銷下執行間歇推理所必須跟蹤的狀態的基本原理。
然而,用於能量採集系統的典型微控制器不適合有效的推斷,咱們已經肯定了幾個機會,能夠經過更好的硬件支持來顯著改進它們。這些微控制器是順序的單週期處理器,所以在「有用的工做」上花費不多的精力[38]。例如,經過從圖12中減去nop指令的能量,咱們估計SONIC將其40%的能量用於指令獲取和解碼。這在像DNN推斷這樣的高度結構化計算上尤爲浪費,由於這些開銷能夠很容易地在許多操做中攤銷[30]。
MSP430應該經過LEA提供這個缺乏的支持,可是不幸的是LEA有不少限制。調用LEA是昂貴的,所以須要調用盡量多的LEA工做。可是LEA只能讀寫一個小的(4KB)SRAM緩衝區,這限制了它的並行性。這也迫使SRAM和FRAM之間頻繁、昂貴的DMA。DMA不能與LEA重疊,也不支持跨步訪問或分散彙集。LEA只支持密集操做,這使得它比稀疏的全鏈接層上的軟件效率低。LEA在支持方面有驚人的差距:它不支持向量左移或標量乘,迫使TAILS在軟件中執行這些操做。而在軟件中,整數乘法是一個內存映射的外設,須要4條指令設置,9個週期完成。總之,這些限制意味着sonic&tails花費的能量超過了必要的,而且有足夠的空間經過更好的架構來提升推理效率。
此外,這種體系結構還有機會爲間歇性提供內置支持。理想狀況下,間歇式體系結構應該提供不一樣大小的非易失性存儲器,容許常常保持的值(例如循環索引)駐留在小而有效的存儲器中。因爲易失性存儲器須要較少的能量來訪問,體系結構還應該爲常常重複使用的值(例如卷積濾波器)提供易失性存儲器,這些值足夠大,不限制並行性。體系結構還應支持將值提交到非易失性存儲器,例如,在電源故障前自動保存的寄存器和硬件緩衝區。這種支持將使SONIC&TAILS顯著提升效率;例如,只要消除頻繁寫入循環索引的FRAM,就能夠節省14%的系統能量。
最後,並行間歇體系結構在管理間歇、混合波動性和並行性方面面臨新的挑戰。並行架構經過在許多飛行中的操做中分攤管理費用來提升效率。可是,在飛行中,當動力失效時,操做次數越多,浪費的工做就越多。工做必須持續到非易失性存儲器,但非易失性存儲器比易失性存儲器更昂貴。間歇性並行架構必須仔細平衡這些問題以使效率最大化[19, 30]。
11. Conclusion
本文認爲,智能「超越邊緣」將使物聯網應用的新類別成爲可能,並首次在商品能量收集系統上演示了有效的DNN推理。咱們提出了一個高層次的分析,爲何推理精度重要,並使用這種分析,以創建GENESIS,一個工具,自動壓縮網絡,以最大限度地提升端到端的應用性能。SONIC&TAILS隨後專門提供間歇性支持,以確保正確執行,而不受電源系統的影響,同時在最早進的技術上分別將管理費用減小6.9和12.2倍。