Alexey Shchekin









人工智能(AI)幾十年來一直是一個熱門的技術話題。根據Statista和Gartner的預測,人工智能的收入將在未來4年內增長4倍,在2024年后將超過1000億美元(1美元約為人民幣6.4元)。
傳統上,復雜的人工智能計算在云端數據中心運行。在GPU加速器和專門的系統級芯片(SoC)的幫助下,在臺式機上實現人工智能模型,可以減少云端訪問的要求。但在過去的幾年里,一個重要的轉變是AI處理從云端轉到設備級。這主要歸功于嵌入式設備/SoC的性能不斷提高和安全考慮。這種轉變催生了嵌入式人工智能的概念一機器學習和深度學習在設備級嵌入式軟件中的應用。
嵌入式人工智能使設備能夠在邊緣運行簡單的人工智能模型,并立即重復使用計算結果。從安全角度以及從降低延遲、最小化數據傳輸時間/能耗成本和避免使用通信硬件等方面來看是有利的。這可能對關鍵的工業物聯網(IIoT)基礎設施特別重要,邊緣AI算法可用于收集各種傳感器的數據,并實時預測系統故障。
鑒于將人工智能計算轉移到邊緣的趨勢,在為物聯網/IIoT應用選擇SoC/MCU (微控制器)時,能運行人工智能/機器學習任務的能力成為一個“必備”的選項。同時對于其他的一些案例,如數據傳輸時間/能耗成本可能超過在設備層運行一個簡單的AI模型時,引入邊緣人工智能也具有價值。例如,智能可穿戴設備、植入式傳感器、資產跟蹤、環境傳感器、無人機、音頻/ AR/VR耳機等應用。
嵌入式設備通常受到資源限制:板上內存小,指令集有限,特定的硬件模塊如FPU(Float Point Unit,浮點運算單元)、DSP( Digital Signal Processing,數字信號處理)較少。這些限制使得即使在嵌入式平臺上運行簡單的人工智能算法也很棘手。從軟件的角度來看,它使得通過專用的人工智能框架,如TensorFlow Lite for Microcontrollers(TFLite-Micro)變得更加容易。從硬件的角度來看,使用矢量/圖形協處理器或SIMD指令可能是一個解決方案;這兩者通常都是與昂貴的高性能 SoC —起交付。如果成本和功耗預算僅限于帶有(或甚至沒有)DSP模塊的MCU,此時怎么辦?
用于微控制器的TensorFlow Lite框架
基于神經網絡的算法可以提供可靠的結果,同時從頭去實現它們通常也相當復雜,包括張量運算和非線性浮點函數。但有幾個框架可以簡化開發者的繁瑣任務。TensorFlow Lite是在2017年推出的,針對的是移動設備上的神經網絡推理。而最終TensorFlow Lite for Microcontrollers 在2021年從 TensorFlow Lite 中分離出來,專門針對資源受限的嵌入式系統,將TensorFlow Lite的其余部分留給Android/iOS應用。
TFLite-Micro采用了帶有靜態內存規劃器的直譯器形式,支持方案提供商特有的優化項。它解決了嵌入式系統的常見問題,如內存小和功耗限制等,并考慮到了支持各種架構/微架構的需要。它在任何嵌入式平臺上開箱即用,支持最小的TensorFlow操作集,如卷積、張量乘法、調整大小和切片,并仍然足以運行豐富的人工智能應用,如圖像分類、時間序列處理或關鍵詞檢測。Codasip構建了特定應用的平臺,因此TFLite-Micro對特定領域專用優化項的支持,與Codasip Studio工具完美吻合。
事實上,Codasip處理器設計工具簡化了 ASIP (專用指令集處理器)設計過程中最耗時的階段,包括:1)高級架構描述和ISA探索,2)自動編譯器生成,3)剖析器(profiler)和調試分析工具,4)周期精確的(硬件級)仿真,5)綜合驗證環境。
下面以Codasip的支持TFLite Micro 的 L31 RISC-V 嵌入式內核為例來進行分析,來對標準RISC-V和自定義擴展都進行了評估。客戶可以利用這些擴展,使功率、性能和面積的權衡超出傳統設計的MCU所能做到的性能。評估結果將顯示該范圍有多廣,并為進一步的改進提供建議。
未來許多客戶將開發他們自己的神經網絡,但基礎機制是相似的。因此可以使用標準軟件;在這個示例中,使用了著名的"MNIST手寫體數字分類”。自卷積神經網絡發明以來,這一直被認為是一個基準。
它是一個大小為28x28像素的灰度圖像,包含一個手寫的數字和該圖像最可能輸出的數字(見圖1)。盡管任務表面上很簡單,但這包括了TFLite-Micro支持的大量運算符子集。通常用于解決它的神經網絡架構包含兩個卷積層和池化層、至少一個全連接層、向量化非線性函數、數據調整大小和規范化操作等(見圖2)。
為了探索這段代碼在L31 CPU上的性能,CodasipStudio的內置剖析器提供了詳細的PPA (性能-功耗-面積)預估,源代碼覆蓋率和單個指令的使用。這使得新的指令可以被快速試用并分析其性能優勢。
表1顯示了剖析器所提供的代碼覆蓋率分析。正如預期的那樣,對于圖像分類任務來說,大部分的時間(~84%)都花在了圖像卷積函數上。從這個信息開始,我們可以進入相應的'ConvPerChannel'源代碼,對其進行更詳細的探索。TFLite-Micro中的卷積是以嵌套 for-loop的形式編寫的,索引各種卷積窗口尺寸以及訓練數據批次。最深的for-loop掃描了圖像輸入通道,根據分析信息顯示,CPU在這里花費的時間最多。
源代碼(圖3)中標明了在該處花費的周期數,給出了周期數的百分比和絕對數。反匯編顯示了這些“熱點”的CPU指令。這些信息表明,哪里需要優化?哪些指令可以被加入/替換以獲得更好的性能?例如,在TFLite卷積的特殊情況下,大部分時間花在乘法+累加操作上(mul后面是c.add),以及隨后的(向量)內存加載(for-statement后面的lb指令)。此外,合并乘法和加法,以及用即時地址增量加載字節,似乎是一個可以提高性能的定制方案。我們將在后面的自定義指令部分再來討論這個話題。
Codasip Studio工具中提供的剖析器還可以預估ASIP的功率和面積,提供設計中每個硬件塊的信息。這使設計者能夠在L31內核的標準變體之間進行選擇,并評估使用TFLite-Micro 進行量化的好處。
圖 4 包含了 PPA 圖表,顯示了識別測試集的單一圖像所需的相對時鐘周期數、消耗的能量和利用的芯片面積。沒有浮點硬件的基本 L31 配置是有效的,但性能相對較慢,因為 FP 操作必須在軟件中模擬。而通過在L31 中添加硬件浮點單元可以解決這個問題,并使總時間減少近 85%,功耗減少 42%,但代價是芯片面積擴大(+207%)。
此外還有一個解決方案:TFLite-Micro支持神經網絡參數和輸入數據的量化。這個功能是從最初的TensorFlow Lite框架中提取的,并提供了將任何TensorFlow模型轉換為整數(有符號/無符號8/16位)表示的能力,因此它可以直接在整數內核上運行。圖4顯示,在標準整數L31內核上運行的int8量化模型幾乎達到了浮點內核的性能,運行時間減少了80%以上,功耗比初始水平進一步提高了78%,而不需要增加內核的復雜性和硅面積。
神經網絡模型的量化總是在預測精度和算法復雜性之間進行權衡。從浮點版本切換到int16和int8不可避免地會降低精度,而用戶有責任確保它不會降太多。量化 ( int8)和初始浮點模型都在包含10,000張圖片的測試集上得到了驗證,結果準確率為98.91% ( fp32)和98.89% ( int8 ) ,這似乎是對資源、功率和性能增益的合理權衡。
自定義指令集的優勢
在SoC設計的框架內,“傳統”處理器( MCU、DSP、GPU等)提供了一些特定的強大功能。為特定需求創建領域專用處理器,在面積、功耗和性能方面有很大優勢。一個優化的指令集結構(ISA)與最小的所需指令會產生一個更緊湊和高效的內核,可在更少的周期內執行所需的任務,從而也降低了功耗。
運行TFLite圖像分類任務的標準L31內核“熱點”識別提供了提示,即哪些指令可以合并或優化以促進特定的任務?為了優化矢量存儲器的加載和卷積乘法和累加序列,增加了兩條自定義指令:mac3將乘法和加法合并到一個時鐘周期,lb.pi在加載指令后立即增加地址。這兩條指令目的在于減少頻繁重復指令序列所花費的時鐘周期數。
Codasip的CodAL高級處理器描述語言提供了一種有效的方式來描述匯編編碼和程序員對指令功能的想法。這使得迭代嘗試新指令和重新編制代碼以衡量其有效性變得非常快。5圖是一個如何在CodAL中定義新指令的例子。
通過對運行相同圖像分類任務的定制L31整數內核進行分析,表明新指令可以被廣泛使用。圖6總結了指令集中最頻繁使用的前5條指令;其中乘法累積和帶地址增量的字節加載包含其中。
利用定制的L31內核進行的源代碼分析顯示,以前發現的“熱點”性能得到了改善。反匯編(圖7)顯示,它們是在新的定制指令的幫助下執行的,最深的for-loop 中的凈周期數已經大大減少。
圖8顯示了這些架構/微架構的定制是如何進一步改善L31內核在圖像分類任務上的PPA ( Power,Performance,and Area,功耗,性能和尺寸))指標?兩張圖比較了定制的L31的 PPA和之前在量化 int8圖像分類任務上的標準32位整數內核的參數。
通過僅增加兩條新指令,算法優化和從內存加載數組的方法,與在標準內核上運行的量化模型相比,總運行時間提高了10%以上,功耗降低了8%以上,而面積只增加了0.8%,這似乎是一個合理的定制成本。使用 SIMD( Single Instruction Multiple Data,單指令多數據流)指令可能會進一步提升性能,但很可能會大大增加面積。
對于許多人工智能公司來說,用于加速其設計的確切機制往往是企業的“秘密武器”。因此,Codasip的處理器設計自動化工具Studio使客戶能夠靈活地定制機器學習(ML )特定的內核并創建專有的加速器解決方案。