智慧邊緣運算實現更環保、更安全與高效的社會

作者 : 恩智浦半導體(NXP)

構成家庭、辦公場所、工廠和車輛萬物邊緣的智慧物品數量,將出現巨幅成長。而整體產業都有責任確保這些裝置皆符合社會發展的最終目標,亦即實現一個更環保、更安全、更高效的社會。

構成家庭、辦公場所、工廠和車輛萬物邊緣的智慧物品數量,將出現巨幅成長,預計到2025年,影響個人、社區和整個產業的互動、學習和營運方式的智慧連接裝置,將達500億台。這些裝置將會預測我們的需求,並在應用環境中實現自動化。而整體產業都有責任確保這些裝置皆符合社會發展的最終目標,亦即實現一個更環保、更安全、更高效的社會。這不是任何一家企業能夠獨自做到的,而是需要半導體供應商、軟體合作夥伴和設備與裝置製造商組成的整個生態系統的專業力量,大家共同努力達成此目標。

這些智慧互聯裝置的普及將會產生大量的資料,因此邊緣技術正快速成為下一個物聯網時代的必要條件。邊緣技術把處理功能設置在產生資料的地方,其核心是晶片,但邊緣裝置的端到端架構比晶片本身更為複雜。晶片中內建的軟體帶來了安全、低功耗、機器學習和連接等方面的優勢。

本文旨在分享知識和見解,以幫助產業洞悉其複雜性,並推動實現邊緣技術的無限潛力。無論是創建SoC還是邊緣產品,都將成為推動更環保、更安全、更高效社會的力量。希望內文資訊對推動實現未來萬物邊緣互聯的任務有所幫助。

本文介紹在邊緣進行機器學習推理的優勢,包括不間斷處理、低延遲和保護用戶隱私。此外還闡述了工作流程、框架、工具、硬體、軟體、應用示例以及其他邊緣處理機器學習主題。

邊緣機器學習(ML)

機器學習是人工智慧(AI)的一個子集,支援演算法透過經驗自動改進。機器學習可以分為有監督機器學習和無監督機器學習兩類。在有監督機器學習中,使用先前從一個或多個感測器收集和標記的大量資料集來「訓練」演算法。在無監督機器學習中,演算法隨著時間的推移不斷學習,以識別遇到的感測器資料中的異常值和差異。

機器學習曾經主要在雲端進行,有伺服器、強大運算力和儲存空間。然而,隨著機器學習模型和演算法技術日益成熟,機器學習推理從雲端向邊緣設備遷移。隨著更複雜的控制和操作決策向邊緣設備遷移,運算能力不斷提高。儘管記憶體和功率受限,但這些安全自主的邊緣設備可以在需要時借助雲端連接,在本地執行即時機器學習推理任務。

例如,當任何人透過智慧型手機或智慧對講機使用語音助手時,所應用的關鍵技術就是雲端的機器學習。該技術也支援社交媒體甚至智慧型手機,將包含特定人物的照片歸類在一起。但是,這些用例都依賴於在雲端某處伺服器中執行的機器學習。

在邊緣運行機器學習推理具有諸多優勢。所有機器學習推理在邊緣處理器上運作,這意味著即使網路訪問遭到破壞,應用也將繼續運作。對於影片監控或智慧家庭警報中心等應用,或者在沒有網路接入的偏遠地區使用時,這一點至關重要。與必須將資料發送到伺服器進行處理,然後伺服器必須將結果發送回來的情況相比,決策過程中的延遲也低得多。例如,在工業領域的工廠車間執行目視檢查並且需要決定接受還是拒絕快速傳送的產品時,低延遲非常重要。

邊緣機器學習的另一個關鍵優勢是保護用戶隱私。收集到的個人資料(如邊緣設備擷取的語音通訊和命令、人臉辨識、影片和影像)在邊緣進行處理,並保存在邊緣設備。資訊不會發送到雲端進行處理,而在雲端可能會記錄和追蹤資訊。用戶的隱私不受影響,用戶可以自行選擇是否在雲端共用其個人資訊。

考慮到對邊緣機器學習的需求,問題變成需要怎樣的機器學習性能。衡量機器學習性能要求的一種方式是每秒幾萬億操作次數,通常稱為TOPS,即每秒兆級(兆次)操作。這是初步基準,因為總體系統性能還將取決於許多其他因素。儘管如此,這是廣泛引用的機器學習衡量方式之一。

機器學習開發工作流程

圖1顯示了機器學習開發工作流程概覽。若要把機器學習技術部署到邊緣節點,操作流和資料流程兩者缺一不可。這些步驟包括:

  • 收集原始資料:識別和收集將用於訓練機器學習模型的資料;
  • 增強資料:人為擴大標記的訓練資料集,以提高機器學習模型的性能;
  • 提取特徵:使用較少的資訊來概括原始特徵,創建新特徵,以此來減少資料集中的特徵數量;
  • 創建訓練和驗證集:將原始的增強資料拆分成兩個資料集,一個用於訓練機器學習模型,另一個用於驗證模型。為了測試偏差和過擬合問題,這些資料集應該相互獨立;
  • 選擇模型:選擇一個符合應用類型和性能要求(影像分類、物件檢測、語音辨識和異常檢測等)的模型;
  • 訓練模型:使用機器學習演算法和原始資料來創建一個模型,對新資料執行預測;
  • 驗證模型:在已經過訓練的機器學習模型上運行一組單獨的資料,以測試準確性和正確性;
  • 轉換和量化模型:使用低位元數定點模型來近似基於浮點的模型,以降低記憶體頻寬和運算成本。在神經網路中,量化是將資料由浮點數轉換為定點數。帶有機器學習加速器的邊緣設備基本上都能以8位元定點精準度進行運算。透過將32位元浮點值轉換為8位元定點整數值,模型大小瞬間減小至四分之一,而且還可以加快權重資料從主記憶體到本地運算引擎的傳輸。機器學習加速器通常具有大容量本地記憶體,可儲存權重,因而有利於減少主記憶體和本地記憶體之間的資料傳輸;
  • 推理:利用機器學習演算法(或模型)執行新資料(來自感測器或其他資料獲取機制),確定輸出(例如,物件的分類)。

 

圖1:機器學習開發工作流程概覽。

 

邊緣機器學習工具

基於邊緣的機器學習需要工具來創建和部署模型,這些模型從雲端開始,最後由邊緣設備機器學習軟體堆疊執行推理。執行運算的硬體可以是傳統的中央處理單元(CPU),也可以配備圖形處理單元(GPU)、數位訊號處理器(DSP)和機器學習或神經處理單元(NPU)加速器來最佳化執行時間,圖2顯示了這些元件及機器學習工作流程的示例。嵌入式開發人員、資料科學家和機器學習演算法專家等不同角色的用戶都使用機器學習工具包。由於許多雲端供應商都提供模型訓練工具,基於邊緣的工具應支援將機器學習技術從雲端部署到邊緣設備。

 

圖2:機器學習工作流程與邊緣機器學習工具示例。

 

邊緣機器學習框架

邊緣機器學習工具使用多個開放的機器學習框架。機器學習框架將庫與工具相結合,使嵌入式開發人員能夠更輕鬆快速地建構、優化和部署機器學習模型。這些框架有助於普及機器學習模型的開發,並可抽取部分(但不是所有)底層演算法細節。其中一些框架為語音辨識、物件檢測、自然語言處理(NLP)及影像識別和分類等提供了預訓練模型,表1描述了一些常用的基於邊緣的機器學習框架。

 

表1:基於邊緣運算的機器學習框架。

 

邊緣機器學習硬體

人工神經網路(ANN),通常稱為神經網路(NN),是受生物神經網路啟發而建構的運算系統。神經網路大體上以生物大腦中的神經元為原型,包含了一組被稱為人工神經元的連接單元(也叫節點),以及它們的連接關係和連接程度。基於神經網路的機器學習演算法,如卷積神經網路(CNN)和迴圈神經網路(RNN),已被證明在機器學習推理任務中非常有效。這些演算法由多個運算層和轉換層組成,用於分析資料以檢測模式。

CNN是前饋神經網路。在前饋網路中,所有運算都是基於前一層輸出執行的操作序列。最後一組操作生成網路的輸出,如影像包含特定物件的概率、音訊序列包含特定單詞的概率、影像中的邊界框圍繞物件的概率或執行擬定操作的概率。在CNN中,網路沒有記憶,給定輸入的輸出總是相同,與先前提供給網路的輸入序列無關。RNN則利用內部記憶,使長期依賴關係能夠影響輸出。RNN使用時間序列資訊提供輸出,並根據當前輸入和過去的資料來預測未來的動作和結果,用於語言處理任務、感測器分析和異常檢測等。CNN和RNN中的主要運算是「加權求和」運算,通常使用乘積累加(MAC)運算。由於MAC運算涉及乘法和加法,因此每個MAC包括兩種運算。CNN和RNN運算都受益於嵌入式硬體設備上的快速記憶體。RNN的回饋路徑需要記憶體空間,導致它們更易被有限的記憶體所拖累。

通常,神經網路使用32位元浮點(FP32)形式的資料進行訓練。但由於嵌入式設備中的記憶體和運算配置有限,因此在邊緣進行推理通常會將FP32量化為16、8位元甚至更低的定點整數表示。把模型的參數、輸入、中間結果都進行量化以執行低位數的運算,將帶來顯著的運算增益和更高的性能。量化會降低精準度,因此需要採用其他方法將精準度損失恢復到可接受的水準。定點乘法的能耗和晶片面積大致與位元數的平方成正比。降低精準度也會降低儲存的能耗和晶片成本,這很重要,因為記憶體訪問和資料移動是能耗的主體,而且嵌入式系統的儲存資源是有限的。

邊緣處理機器學習可以在SoC處理元件(例如CPU、GPU、DSP和專用加速器)或這些處理元件組合上執行。每種方式各有優缺點。以DSP為例,能經濟高效地進行各種形式的複雜訊號處理,已在嵌入式系統上使用多年。使用DSP分析感測器資料進行特徵提取很常見。不斷發展的DSP使用特殊指令(如MAC)來加速常見的訊號處理運算。有些DSP還圍繞MAC單元建構了向量處理單元,可以用於加速神經網路運算。在超長指令字(VLIW)架構的DSP上,含有更寬的單指令多資料流程指令,亦可加速神經網路的推理。

圖3顯示了一個在低成本邊緣設備上用於機器學習運算的DSP。在此示例中,DSP基於Arm Cortex微控制器軟體介面標準(CMSIS),對Cortex-M核心上運作的DSP程式碼進行了標準化。PowerQuad是恩智浦設計的一款輔助處理器,在使用其基於Cortex-M33內核的MCU實現DSP演算法時可提高能效和性能,並且受益於CMSIS-DSP API。PowerQuad支援數學函數的預處理,如FFT、平方根;sigmoid和softmax等啟動函數;還支持矩陣運算。

 

圖3:在低成本邊緣設備上用於機器學習運算的DSP。

 

再舉NPU為例,針對常見的基於邊緣的用例進行了優化,如物件檢測和分割,其性能和能效都比CPU高得多。圖4中的加速器在全功能作業系統下處理複雜的工作負載,採用Cortex-A系統,具有寬匯流排介面(128位元),支援動態隨機訪問記憶體(DRAM)。NPU還整合直接記憶體訪問(DMA)單元,能從連接到DMA的系統記憶體中把神經網路的權重和啟動資料,在使用之前就預讀進來。卷積、池化、啟動函數和元素級函數(primitive element wise functions)等繁重的運算操作,都直接在NPU上運作,NPU不能支持的其他運算元則在與NPU緊密耦合的CPU(如Cortex-M)上自動運作。另一種提高性能和減少記憶體需求的方法是對神經網路進行離線編譯和優化,包括算子和層的融合及重排運算順序。

 

圖4:NPU在邊緣執行機器學習。

 

邊緣處理SoC包含多個處理元件,包括一種或多種上述類型。這些處理元件可以單獨使用或一起使用,在邊緣執行機器學習。可以設計各種優化的機器學習管道,以有效利用SoC的可用處理能力。邊緣機器學習運算是一項系統級優化工作,需要正確使用並啟用SoC上的多個處理元件(圖5),以支援先進的即時邊緣機器學習處理。

更通用的邊緣處理機器學習開發方法包括以下步驟:

1.定義用例以及相應的機器學習和模型的類型;

2.使用獨立且不依賴於底層硬體的機器學習框架;

3.使用PC、雲端或更高階嵌入式設備上的框架,對所選機器學習範式進行原型設計;

4.評估網路模型在記憶體和算力的開銷;

5.在考慮記憶體和運算約束的同時,選擇硬體平台,然後針對特定的嵌入式設備交叉編譯網路;

6.在更高階的機器上訓練模型,並將權重部署到嵌入式設備;

7.執行相關的網路優化(剪枝、量化及降低表達位數);

8.執行相關的硬體優化(對齊和SIMD指令);

9.測試已部署的網路模型的性能,並確定此實現方案在部署後是否可以反覆運算。

邊緣處理也可以在基礎微控制器上實現。開發流程包括以下步驟:

1.將帶標注的數據上傳到PC。您可以使用通用非同步收發器(UART)或SD卡;

2.使用scikit-learn等機器學習框架工具對資料進行試驗。在進行下一步之前,請確保目前現成的方法能夠產生良好的結果;

3.試驗特徵工程(feature engineering)和特徵選擇。儘量實現精簡的特徵集以節省資源;

4.選擇一個適用於低端微控制器的機器學習方法(感知器或決策樹都很不錯,因為它們不需要大量 記憶體)。如果沒有可用的浮點單元,則可以使用整數和定點單元;

5.實施正常的訓練過程。使用交叉驗證以確定最佳的超參數、整數位元寬和基數位置等;

6.在測試集上運行最終訓練好的預測器;

7.如果訓練好的預測器在測試集上的性能令人滿意,則把訓練好的模型(例如權重_和處理模型預測結果的程式碼部署至MCU。模型權重不會改變,因此它們可以作為常量陣列儲存在非揮發性快閃記憶體中。

 

圖5:帶有NPU的邊緣處理SoC用於加速機器學習

 

針對邊緣設備優化機器學習管道

嵌入式邊緣設備正變得越來越複雜,功能也越來越強大,因為它們整合了更多硬體元件(例如CPU、GPU、DSP和機器學習加速器)來執行各種形式的機器學習。然而,這些複雜的硬體元件必須得到有效利用。帶有GPU和NPU等專用加速器的邊緣設備執行矩陣乘法的速度明顯高於CPU,機器學習框架可以有效地利用這些硬體元件。支援機器學習的軟體架構可以優化機器學習在SoC中的執行流程,以提供高性能、低功耗的解決方案。

圖6中所示的特定應用的處理管道分多個階段進行設計,可以充分利用管道中的多步驟進行機器學習處理。主要應用領域包括:

  • 用於物件/人臉檢測/識別的視覺管道;
  • 用於語音分析的語音和音訊管道;

用於異常檢測的序列資料處理管道和靈活的軟體架構提供開箱即用的,針對SoC和應用類型優化過的運作時支援。這有助於完全利用異質SoC功能實現機器學習,並最大限度提高組件的重複利用,這種方法的主要優勢包括改善開箱即用體驗(OOBE)和易用性。

 

圖6:為邊緣設備的優化機器學習管道。

 

圖6考慮了對基於影像資料的智慧(工業檢測、人臉/人物/物件檢測與分類及動作識別)不斷成長的需求。這種智慧推動了視覺快速整合基於機器學習的技術,基於手動特徵提取與使用的傳統視覺技術仍在大量使用,但是強大的運作推理引擎硬體的出現,結合廣泛可用的機器學習框架和基於視覺的模型,降低了完全(或幾乎完全)使用機器學習以滿足機器視覺用例需求的障礙。

首先必須選擇一個功能強大的邊緣SoC,可在此應用中實現機器學習處理,該SoC擁有實現複雜的基於機器學習的視覺用例所需的所有硬體元素。

 

圖7:NXP eIQ ML 開發環境支持優化的邊緣機器學習。

 

軟體必須支援硬體元件。圖7顯示了一個邊緣設備軟體架構示例,可支援優化的邊緣機器學習,該軟體包括:

  • 影像和影像處理,從Linux核心驅動程式到實際標準媒體流框架GStreamer。這些軟體元件支援本地和遠端攝影機擷取、本地和遠端視訊流和圖片呈現,以及經硬體加速的單張圖片處理(縮放、旋轉和色彩空間轉換);
  • 對主要深度學習框架(TensorFlow Lite、ONNX、ArmNN和Glow)進行適配和優化,以便在SoC的NPU、GPU和DSP上高效運作;
  • GStreamer外掛程式提供不受供應商限制的神經網路整合框架,可簡化機器視覺用例中涉及的不同硬體和軟體元件的整合和連接。該框架(即NNStreamer)是一項開源技術,支援主要的機器學習框架(TensorFlow Lite、ArmNN和Caffe2),其特性如下:

1.神經網路框架連接(TensorFlow、Caffe等):GStreamer等流框架;

2.AI專案流:將高效靈活的流管道應用於神經網路;

3.智慧媒體篩檢程式:使用神經網路模型作為媒體篩檢程式/轉換器;

4.複合模型:在單個流管道實例中應用多個神經網路模型;

5.多模態智慧:針對神經網路模型使用多個源和流路徑;

  • 基於媒體框架的事實標準GStreamer,利用神經網路模型建構媒體流的方法。GStreamer使用者可以應用神經網路模型,就好像這些模型只是另一個媒體篩檢程式一樣。神經網路開發人員可以輕鬆高效地管理媒體流;
  • 整個管道的即時性能剖析(CPU、GPU、NPU、DSP和記憶體剖析);
  • 透過在單個SoC上進行機器學習演算法的並行處理,可以進一步擴展這一概念。圖8顯示了將語音和音訊機器學習管道配置為基於即時操作系統在Arm Cortex-M核心上運行,而視覺機器學習管道則基於多功能作業系統(如Linux)在Arm Cortex-A核心上執行。

 

圖8:在恩智浦i.MX 8M Plus邊緣運算SoC上同時利用語音和視覺管道的應用運行環境。

 

總之,在邊緣執行機器學習需要瞭解可用的運算和記憶體資源,它還需要修改機器學習模型和處理流程,以適應資源狀況。在邊緣運做機器學習也會帶來許多優勢,例如改善隱私、減少或不依賴網路連接、降低功耗以及能夠做出即時低延遲決策。

本文撰稿人:

Ron Martino,恩智浦半導體執行副總裁暨邊緣處理事業部總經理

Robert Oshana,恩智浦半導體邊緣處理事業部軟體研發副總裁

Natraj Ekambaram,恩智浦半導體人工智慧和機器學習支持部門總監

Ali Osman Ors,恩智浦半導體人工智慧和機器學習戰略與技術部門總監

Laurent Pilati,恩智浦半導體機器學習和語音工程部門總監

(本文由NXP提供)

本文同步刊登於《電子工程專輯》雜誌2022年5月號

 

 

 

加入我們官方帳號LINE@,最新消息一手掌握!

發表評論