最近業界一直在大力推動將人工智慧(AI)嵌入到嵌入式系統中。其中一些是用於基於雲端的AI,如亞馬遜(Amazon)的Alexa語音服務,但越來越多的導入集中在基於硬體的AI上。許多供應商已經發佈了處理器和輔助處理器,在其上提供加速或專用卷積計算(dedicated convolutional computation)硬體支援邊緣運作類神經網路(neural-network)軟體。這樣,嵌入式系統就能夠在無需雲端連接的情況下開始執行AI演算法。

這一趨勢對嵌入式系統開發人員意義重大。越來越多的處理器提供AI說明,嵌入式系統的程式設計方式正在發生根本轉變。這與45年前微處理器的問世一樣,又是一場意義重大的模式轉變。

差不多在我剛上大學那時,英特爾(Intel)推出了第一款商用微處理器4004,而在我當工程師的第一年,看到處理器時脈速率飆升到1MHz。在微處理器到來之前,複雜系統的控制需要透過使用電晶體和簡單的邏輯門,設計不靈活的梯形邏輯和狀態機實現。但使用4004,開發人員開發的硬體設計,只需要更改記憶體元件的內容,即可對其進行配置和改變用途。突然間,硬體設計簡化了,系統設計也同步加速了,甚至可以確實實現更快、更複雜的行為;用軟體程式碼取代專用邏輯,成為嵌入式系統設計的核心方法,而沒能快速跟上潮流的開發人員發現自己被邊緣化了,只能接手小眾應用。

20180713NT01P1 AI將對嵌入式系統設計人員帶來重大改變。(圖片來源:Shutterstock)

AI有可能對當今的嵌入式系統設計人員產生相同影響。系統操作變得愈加苛刻,系統行為也變得愈加複雜,這使得處理器程式設計的簡易性變得比其性能特徵更為重要。同時,人們對複雜系統行為的需求一直在增加,這對開發人員編寫可靠程式碼來滿足需求形成考驗。

這就成為了AI的切入點。開發人員可以使用AI來「教」嵌入式系統完成任務,而不是試圖設計演算法實現所需任務。如果使用傳統的嵌入式程式設計技術,為相機系統編寫程式碼,讓其可以可靠檢測視野中的所有人臉,是項艱鉅且容易出錯的任務。然而,借助AI系統,利用訓練託管的AI來完成任務,然後在加裝AI的處理器上實現由此得到的神經網路,可以快速取得驚人成果。

對於傳統的嵌入式開發人員,這使他們面臨一個與70年代中期的邏輯設計人員所面臨的相同選擇:學習新方法,或冒出局的風險。

令人高興的是,當下的情況有些不同。開發人員不需要成為AI專家就可將AI應用到其設計任務中,就像他們不必知道如何編寫機器程式碼來對微處理器程式設計一樣。開發人員只需知道如何使用AI工具,瞭解何時應用何種方法來實現其設計目標即可。

但是,這要求開發人員去獲得新的技能並拓展新的思維方式。他們需要學習卷積神經網路(CNN)、機器學習(ML)、AI訓練方法,以及如何將系統行為劃分為AI和演算法領域等課題。當系統的關鍵操作特性是衍生得到且未定義,且其中間操作是隱蔽的,以至不能用傳統的軟體去分析系統時,他們還需要知道如何測試、除錯(debug)和驗證系統行為。

AI系統工作是透過設置神經網路的權重來實現期望的結果,同時其可能含有隱藏層。由於這兩個屬性,很難用傳統方法對其進行分析和除錯。

此外,情況會繼續變得複雜。目前,嵌入式AI將主要是針對早期訓練階段定義相對固定的網路進行實現,但隨著AI邊緣處理的性能不斷提高和成本下降,未來的嵌入式AI系統會越來越多地被設計為自我訓練。因此,嵌入式開發人員設計的系統最初將相對簡單且沒有什麼差異,但隨著時間的推移,其將沿著具體安裝所特有的路徑演進,同時也仍需要母公司進行維護、除錯和升級。

AI將引發嵌入式系統設計方式的大規模轉變,開發人員現在就應該著手準備。這種轉變不會一蹴可幾,它也不會以同樣的方式影響所有的嵌入式系統,因此產業有時間適應。但這種轉變似乎不可避免,並且可能會長期影響幾乎所有的應用領域,就像過去40年來從邏輯設計朝向處理器程式設計的轉變一樣。那些希望自己的設計項項都可圈可點的人,需要開始學習如何嵌入AI了。

(參考原文:Embedded developers should prepare to embrace AI,by Richard Quinnell)