在邊緣裝置執行經過訓練的機器學習模型,可以減少對雲端的需求並降低延遲。操作張量(Tensor)中存取的資料是機器學習的基礎,在嵌入式系統的限制下進行有效的張量操作,為邊緣裝置的挑戰所在。
變革總是時時刻刻在發生,目前正是機器學習(Machine Learning)帶來改變的時刻。可以說,人工智慧(AI)正在影響當今社會的各個層面,而正如AI有許多不同的類型,機器學習所帶來的影響程度也充滿差異。機器學習是人工智慧裡,具備其公認限制的一個子集合,但這些限制也意味著機器學習僅需要較少的資源,因此適用於邊緣運算等應用,偵測喚醒詞就是一個很好的例子。
AI通常涉及複雜的演算法。機器學習模型通常在雲端進行訓練,並且透過類似圖形處理器(GPU)這類可存取大量快速記憶體的強大硬體處理。如果雲端資源可以被擴充以滿足需求,那麼在雲端運行多個經過訓練的模型是合理的選擇。運行數百萬個經過訓練的機器學習模型實例所需的雲端資源,將遠遠超過訓練原始模型所需的資源。
在邊緣運行這些機器學習模型對雲端供應商而言極具吸引力。以智慧喇叭為例,喚醒詞可以透過機器學習在邊緣進行運算,而提供語音識別的AI則託管在雲端。
在邊緣裝置上執行經過訓練的機器學習模型可以減少對雲端的需求,在本地的機器學習還能避免網路延遲或昂貴的雲端處理,而模型在位於廣域網路邊緣的小型互聯裝置上運行。由於一切繁重的機器學習工作都發生在裝置端,在某些情況下,裝置可能並不需要高頻寬的網路連接。
簡單來說,在嵌入式系統上執行機器學習模型會面臨與在有限平台上做超出範疇的事情同等的挑戰。細節或許不盡相同,例如模型會有所不同,但基本原則是一樣的。工程師需要挑選合適的處理架構,根據可用的記憶體類型和數量開發應用程式,並確保符合嚴苛的功耗需求。
這裡的關鍵差異在於所需的處理類型。機器學習為數學密集型,特別是多維度數學。機器學習模型是經過訓練的神經網路,基本上是多維數學,或稱為張量(Tensor)。操作張量中存取的資料是機器學習的基礎,在嵌入式系統的限制下進行有效的張量操作為挑戰所在。
從資料集到訓練模型
張量是人工智慧的主要基石,訓練資料集通常以張量的形式提供,用於訓練模型。例如,一個運動感測器的資料集可能會對x、y和z坐標,以及加速度進行編碼。每個實例都被清楚標記其數據所代表的內容,舉例來說,跌倒將產生一致但可變的數據,而這個被標籤的資料集則會被用於訓練機器學習模型。
神經網路由多層組成,每一層都是朝向決策邁進的又一步。神經網路中的層也可能以張量的形式出現。在未經訓練的網路中,層與層之間的所有連接皆為隨機。調整神經網路中層與層之間的連接,可創建經過訓練的模型。
訓練涉及改變神經網路層中節點之間連接的權重,權重則是根據挖掘資料集中的連接的結果而進行改變。例如,模型可能透過比較它在資料集中偵測到的共同特徵,學會識別跌倒的樣子。
訓練資料集的張量可能會對運動感測器資料的多個實例進行編碼,有些實例將被標記為跌倒。找出被標記為跌倒的實例之間的關聯,將產生資訊(Intelligence)。
經過訓練的機器學習模型
具有指定層數的未經訓練的神經網路,將從隨機分配各層之間的連接權重開始。當模型從資料集學習時,將調整這些連接的權重。當原始感測器輸入資料通過經過訓練的模型的層時,與連接相關的權重將改變資料;在輸出層,原始資料現在將標示產生該資料的事件,例如跌倒。
權重值通常在-0.5到+0.5之間。在訓練過程中,權重會向上或向下調整。這種調整反映了特定行動路徑中的連接強度,正權重稱為興奮性連接(Excitatory Connection),而負權重則是抑制性連接(Inhibitory Connection)。接近零的權重,其重要性比接近上限或下限的權重低。
經過訓練的模型中,每一層本質上是一個張量(多維數組),這些層可以用高階程式語言表示,包括Python、C或C++。高階語言在此被編碼成機器編碼,以在特定指令集架構上運行。
一旦訓練完成,模型就會將其所學的內容應用於未知數據,以推斷數據的來源。推理需要的資源較少,因此能夠以偏中等的硬體元件應用於邊緣。
模型的性能取決於嵌入式系統,如果處理器能夠有效地執行多維數學運算,將提供良好的性能。模型的大小、層數和層寬也將產生顯著影響,快速記憶體存取則是另一個關鍵參數。這也是為何在終端上運行機器學習應用程式從本質上來說,可謂是良好嵌入式系統設計的延伸。
嵌入式系統決定邊緣裝置ML效能(1)
嵌入式系統決定邊緣裝置ML效能(2)