熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 智能計算 > 設計應用 > 如何在資源受限的RISC-V內核上嵌入人工智能?

如何在資源受限的RISC-V內核上嵌入人工智能?

—— 以Codasip L31內核為例來分析基于自定義指令的神經(jīng)網(wǎng)絡
作者:Alexey Shchekin(Codasip公司解決方案工程師) 時間:2022-04-14 來源:電子產(chǎn)品世界 收藏

(AI)幾十年來一直是一個熱門的技術話題。根據(jù)Statista 和Gartner 的預測,的收入將在未來4 年內增長4 倍,在2024 年后將超過1 000 億美元(1 美元約為人民幣6.4 元)。

本文引用地址:http://www.bjwjmy.cn/article/202204/433078.htm

傳統(tǒng)上,復雜的計算在云端數(shù)據(jù)中心運行。在GPU 加速器和專門的系統(tǒng)級芯片(SoC)的幫助下,在臺式機上實現(xiàn)人工智能模型,可以減少云端訪問的要求。但在過去的幾年里,一個重要的轉變是AI 處理從云端轉到設備級。這主要歸功于嵌入式設備/SoC 的性能不斷提高和安全考慮。這種轉變催生了嵌入式人工智能的概念——機器學習和深度學習在設備級嵌入式軟件中的應用。

嵌入式人工智能使設備能夠在邊緣運行簡單的人工智能模型,并立即重復使用計算結果。從安全角度以及從降低延遲、最小化數(shù)據(jù)傳輸時間/ 能耗成本和避免使用通信硬件等方面來看是有利的。這可能對關鍵的工業(yè)物聯(lián)網(wǎng)(IIoT)基礎設施特別重要,邊緣AI 算法可用于收集各種傳感器的數(shù)據(jù),并實時預測系統(tǒng)故障。

鑒于將人工智能計算轉移到邊緣的趨勢,在為物聯(lián)網(wǎng)/IIoT 應用選擇SoC/MCU(微控制器)時,能運行人工智能/ 機器學習任務的能力成為一個“必備”的選項。同時對于其他的一些案例,如數(shù)據(jù)傳輸時間/ 能耗成本可能超過在設備層運行一個簡單的AI 模型時,引入邊緣人工智能也具有價值。例如,智能可穿戴設備、植入式傳感器、資產(chǎn)跟蹤、環(huán)境傳感器、無人機、音頻/AR/VR 耳機等應用。

嵌入式設備通常受到資源限制:板上內存小,指令集有限,特定的硬件模塊如FPU(Float Point Unit,浮點運算單元)、DSP(Digital Signal Processing,數(shù)字信號處理)較少。這些限制使得即使在嵌入式平臺上運行簡單的人工智能算法也很棘手。從軟件的角度來看,它使得通過專用的人工智能框架,如TensorFlow Lite forMicrocontrollers(TFLite-Micro)變得更加容易。從硬件的角度來看,使用矢量/ 圖形協(xié)處理器或SIMD 指令可能是一個解決方案;這兩者通常都是與昂貴的高性能SoC 一起交付。如果成本和功耗預算僅限于帶有(或甚至沒有)DSP 模塊的MCU,此時怎么辦?

用于微控制器的TensorFlow Lite框架

基于神經(jīng)網(wǎng)絡的算法可以提供可靠的結果,同時從頭去實現(xiàn)它們通常也相當復雜,包括張量運算和非線性浮點函數(shù)。但有幾個框架可以簡化開發(fā)者的繁瑣任務。TensorFlow Lite 是在2017 年推出的,針對的是移動設備上的神經(jīng)網(wǎng)絡推理。而最終TensorFlow Lite for Microcontrollers 在2021 年從TensorFlow Lite 中分離出來,專門針對資源受限的嵌入式系統(tǒng),將TensorFlow Lite 的其余部分留給Android/iOS 應用。

TFLite-Micro 采用了帶有靜態(tài)內存規(guī)劃器的直譯器形式,支持方案提供商特有的優(yōu)化項。它解決了嵌入式系統(tǒng)的常見問題,如內存小和功耗限制等,并考慮到了支持各種架構/ 微架構的需要。它在任何嵌入式平臺上開箱即用,支持最小的TensorFlow 操作集,如卷積、張量乘法、調整大小和切片,并仍然足以運行豐富的人工智能應用,如圖像分類、時間序列處理或關鍵詞檢測。Codasip 構建了特定應用的平臺,因此TFLite-Micro 對特定領域專用優(yōu)化項的支持,與Codasip Studio 工具完美吻合。

事實上,Codasip 處理器設計工具簡化了ASIP(專用指令集處理器)設計過程中最耗時的階段,包括:1)高級架構描述和ISA 探索,2)自動編譯器生成,3)剖析器(profiler)和調試分析工具,4)周期精確的(硬件級)仿真,5)綜合驗證環(huán)境。

下面以Codasip 的支持TFLite Micro 的L31 RISC-V嵌入式內核為例來進行分析,來對標準RISC-V 和自定義擴展都進行了評估??蛻艨梢岳眠@些擴展,使功率、性能和面積的權衡超出傳統(tǒng)設計的MCU 所能做到的性能。評估結果將顯示該范圍有多廣,并為進一步的改進提供建議。

未來許多客戶將開發(fā)他們自己的神經(jīng)網(wǎng)絡,但基礎機制是相似的。因此可以使用標準軟件;在這個示例中,使用了著名的“MNIST 手寫體數(shù)字分類”。自卷積神經(jīng)網(wǎng)絡發(fā)明以來,這一直被認為是一個基準。

image.png 

圖1 MNIST“手寫體數(shù)字識別”基準意味著對灰度28x28圖像進行智能標簽分配

它是一個大小為28x28 像素的灰度圖像,包含一個手寫的數(shù)字和該圖像最可能輸出的數(shù)字(見圖1)。盡管任務表面上很簡單,但這包括了TFLite-Micro 支持的大量運算符子集。通常用于解決它的神經(jīng)網(wǎng)絡架構包含兩個卷積層和池化層、至少一個全連接層、向量化非線性函數(shù)、數(shù)據(jù)調整大小和規(guī)范化操作等(見圖2)。

1649925291165478.png

圖2 用于手寫數(shù)字識別的卷積神經(jīng)網(wǎng)絡

為了探索這段代碼在L31 CPU 上的性能,CodasipStudio 的內置剖析器提供了詳細的PPA(性能- 功耗-面積)預估,源代碼覆蓋率和單個指令的使用。這使得新的指令可以被快速試用并分析其性能優(yōu)勢。

表1 剖析器提供的代碼覆蓋率分析

1649925356152928.png

表1 顯示了剖析器所提供的代碼覆蓋率分析。正如預期的那樣,對于圖像分類任務來說,大部分的時間(~84%)都花在了圖像卷積函數(shù)上。從這個信息開始,我們可以進入相應的‘ConvPerChannel’源代碼,對其進行更詳細的探索。TFLite-Micro 中的卷積是以嵌套for-loop 的形式編寫的,索引各種卷積窗口尺寸以及訓練數(shù)據(jù)批次。最深的for-loop 掃描了圖像輸入通道,根據(jù)分析信息顯示,CPU 在這里花費的時間最多。

1649925399875614.png

圖3 Codasip的內置剖析工具允許我們找到應用程序代碼中的“熱點”

源代碼(圖3)中標明了在該處花費的周期數(shù),給出了周期數(shù)的百分比和絕對數(shù)。反匯編顯示了這些“熱點”的CPU 指令。這些信息表明,哪里需要優(yōu)化?哪些指令可以被加入/ 替換以獲得更好的性能?例如,在TFLite 卷積的特殊情況下,大部分時間花在乘法+ 累加操作上(mul 后面是c.add),以及隨后的(向量)內存加載(for-statement 后面的lb 指令)。此外,合并乘法和加法,以及用即時地址增量加載字節(jié),似乎是一個可以提高性能的定制方案。我們將在后面的自定義指令部分再來討論這個話題。

Codasip Studio 工具中提供的剖析器還可以預估ASIP 的功率和面積,提供設計中每個硬件塊的信息。這使設計者能夠在L31內核的標準變體之間進行選擇,并評估使用TFLite-Micro 進行量化的好處。

圖4 包含了PPA 圖表,顯示了識別測試集的單一圖像所需的相對時鐘周期數(shù)、消耗的能量和利用的芯片面積。沒有浮點硬件的基本L31 配置是有效的,但性能相對較慢,因為FP 操作必須在軟件中模擬。而通過在L31 中添加硬件浮點單元可以解決這個問題,并使總時間減少近85%,功耗減少42%,但代價是芯片面積擴大(+207%)。

1649925512748417.png

圖4 Codasip的L31 32位整數(shù)內核、32位浮點內核以及運行手寫數(shù)字識別的量化TFLite模型的32位整數(shù)內核之間的PPA比較。

此外還有一個解決方案:TFLite-Micro 支持神經(jīng)網(wǎng)絡參數(shù)和輸入數(shù)據(jù)的量化。這個功能是從最初的TensorFlow Lite 框架中提取的, 并提供了將任何TensorFlow 模型轉換為整數(shù)(有符號/ 無符號8/16 位)表示的能力,因此它可以直接在整數(shù)內核上運行。圖4顯示,在標準整數(shù)L31 內核上運行的int8 量化模型幾乎達到了浮點內核的性能,運行時間減少了80% 以上,功耗比初始水平進一步提高了78%,而不需要增加內核的復雜性和硅面積。

神經(jīng)網(wǎng)絡模型的量化總是在預測精度和算法復雜性之間進行權衡。從浮點版本切換到int16 和int8 不可避免地會降低精度,而用戶有責任確保它不會降太多。量化(int8)和初始浮點模型都在包含10,000 張圖片的測試集上得到了驗證,結果準確率為98.91%(fp32)和98.89%(int8),這似乎是對資源、功率和性能增益的合理權衡。

自定義指令集的優(yōu)勢

在SoC 設計的框架內,“傳統(tǒng)”處理器(MCU、DSP、GPU 等)提供了一些特定的強大功能。為特定需求創(chuàng)建領域專用處理器,在面積、功耗和性能方面有很大優(yōu)勢。一個優(yōu)化的指令集結構(ISA)與最小的所需指令會產(chǎn)生一個更緊湊和高效的內核,可在更少的周期內執(zhí)行所需的任務,從而也降低了功耗。

運行TFLite 圖像分類任務的標準L31 內核“熱點”識別提供了提示,即哪些指令可以合并或優(yōu)化以促進特定的任務?為了優(yōu)化矢量存儲器的加載和卷積乘法和累加序列,增加了兩條自定義指令:mac3 將乘法和加法合并到一個時鐘周期,lb.pi 在加載指令后立即增加地址。這兩條指令目的在于減少頻繁重復指令序列所花費的時鐘周期數(shù)。

Codasip 的CodAL 高級處理器描述語言提供了一種有效的方式來描述匯編編碼和程序員對指令功能的想法。這使得迭代嘗試新指令和重新編制代碼以衡量其有效性變得非???。圖5 是一個如何在CodAL 中定義新指令的例子。

1649925609778211.png

通過對運行相同圖像分類任務的定制L31 整數(shù)內核進行分析,表明新指令可以被廣泛使用。圖6 總結了指令集中最頻繁使用的前5 條指令;其中乘法累積和帶地址增量的字節(jié)加載包含其中。

1649925653415794.png

圖6 指令集中最頻繁使用的前5條指令

利用定制的L31 內核進行的源代碼分析顯示,以前發(fā)現(xiàn)的“熱點”性能得到了改善。反匯編(圖7)顯示,它們是在新的定制指令的幫助下執(zhí)行的,最深的forloop中的凈周期數(shù)已經(jīng)大大減少。

1649925699509597.png

圖7 自定義指令如何改變源代碼的CPU時間分布。反匯編顯示自定義指令在這里被廣泛使用,導致卷積乘法和字節(jié)數(shù)組加載的時間大大減少。

圖8 顯示了這些架構/ 微架構的定制是如何進一步改善L31 內核在圖像分類任務上的PPA(Power,Performance,and Area,功耗,性能和尺寸)指標?兩張圖比較了定制的L31 的PPA 和之前在量化int8 圖像分類任務上的標準32 位整數(shù)內核的參數(shù)。

1649925757640981.png

圖8 Codasip的L31內核32位整數(shù)標準核和定制核之間的PPA比較,顯示了在手寫數(shù)字識別任務上PPA的改善。

通過僅增加兩條新指令,算法優(yōu)化和從內存加載數(shù)組的方法,與在標準內核上運行的量化模型相比,總運行時間提高了10% 以上,功耗降低了8% 以上,而面積只增加了0.8%,這似乎是一個合理的定制成本。使用SIMD(Single Instruction Multiple Data,單指令多數(shù)據(jù)流)指令可能會進一步提升性能,但很可能會大大增加面積。

對于許多人工智能公司來說,用于加速其設計的確切機制往往是企業(yè)的“秘密武器”。因此,Codasip 的處理器設計自動化工具Studio 使客戶能夠靈活地定制機器學習(ML)特定的內核并創(chuàng)建專有的加速器解決方案。

(本文來源于《電子產(chǎn)品世界》雜志2022年4月期)



評論


相關推薦

技術專區(qū)

關閉