關(guān)于將人工智能用于越來越智能的車輛的文章已經(jīng)很多。但是,您如何將在服務(wù)器場(chǎng)上開發(fā)的神經(jīng)網(wǎng)絡(luò) (NN) 壓縮到量產(chǎn)汽車中資源受限的嵌入式硬件中呢?本文探討了我們應(yīng)該如何授權(quán)汽車生產(chǎn) AI 研發(fā)工程師在將 NN 從原型到生產(chǎn)的整個(gè)過程中改進(jìn) NN,而不是像今天過早地將 NN 移交給嵌入式軟件團(tuán)隊(duì)的過程。
“如果我們要充分利用嵌入式硬件資源,我們需要讓生產(chǎn) AI 團(tuán)隊(duì)在軟件移植過程中利用他們對(duì) NN 的知識(shí)”(來源:Marton Feher,SVP 硬件工程,AImotive)
嵌入式人工智能:嵌入式軟件——但不是我們所知道的
對(duì)于任何注定要在批量生產(chǎn)中部署的嵌入式軟件,一旦完成并驗(yàn)證了其核心功能的實(shí)現(xiàn),就會(huì)在代碼中投入大量精力。這個(gè)優(yōu)化階段是關(guān)于最小化所需的內(nèi)存、CPU 和其他資源,以便盡可能多地保留軟件功能,同時(shí)將執(zhí)行它所需的資源減少到絕對(duì)最低限度。
這種從基于實(shí)驗(yàn)室的算法創(chuàng)建嵌入式軟件的過程使生產(chǎn)工程師能夠?qū)④浖δ艹杀竟こ袒癁榭闪慨a(chǎn)的形式,與用于開發(fā)它的海量計(jì)算數(shù)據(jù)中心相比,所需的芯片和硬件更便宜、功能更差。但是,它通常需要從一開始就凍結(jié)功能,只進(jìn)行代碼修改以改進(jìn)算法本身的執(zhí)行方式。對(duì)于大多數(shù)軟件來說,這很好:確實(shí),它可以使用嚴(yán)格的驗(yàn)證方法來確保嵌入過程保留所需的所有功能。
然而,當(dāng)嵌入基于 NN 的 AI 算法時(shí),這可能是一個(gè)主要問題。為什么?因?yàn)閺囊婚_始就凍結(jié)功能,您正在刪除可以優(yōu)化執(zhí)行的主要方法之一。
問題是什么?
有兩種根本不同的方法可以解決將復(fù)雜的 NN 從實(shí)驗(yàn)室中不受約束、資源豐富的 NN 訓(xùn)練環(huán)境移植到受嚴(yán)格約束的嵌入式硬件平臺(tái)的任務(wù):
優(yōu)化執(zhí)行NN的代碼
優(yōu)化神經(jīng)網(wǎng)絡(luò)本身
當(dāng)嵌入式軟件工程師發(fā)現(xiàn)性能問題,例如內(nèi)存帶寬瓶頸或底層嵌入式硬件平臺(tái)利用率低下時(shí),傳統(tǒng)的嵌入式軟件技術(shù)會(huì)鼓勵(lì)您深入挖掘底層代碼并找出問題所在。
這反映在當(dāng)今可用于嵌入式MCU和DSP的許多先進(jìn)而復(fù)雜的工具中。它們使您能夠了解軟件中正在發(fā)生的事情的最低水平,并識(shí)別和改進(jìn)軟件本身的執(zhí)行——希望不會(huì)改變其功能。
對(duì)于神經(jīng)網(wǎng)絡(luò)來說,優(yōu)化與傳統(tǒng)的嵌入式軟件完全不同——至少如果你想用可用的硬件資源實(shí)現(xiàn)盡可能最佳的結(jié)果。對(duì)于神經(jīng)網(wǎng)絡(luò),通過改變拓?fù)渖窠?jīng)網(wǎng)絡(luò)本身(神經(jīng)網(wǎng)絡(luò)的各個(gè)層如何連接,以及每個(gè)層做什么)和使用更新的約束和輸入重新訓(xùn)練來實(shí)現(xiàn)改進(jìn)。這是因?yàn)楣δ懿皇怯缮窠?jīng)網(wǎng)絡(luò)“軟件”定義的,而是在訓(xùn)練期間應(yīng)用的目標(biāo)和約束,以創(chuàng)建定義神經(jīng)網(wǎng)絡(luò)最終行為的權(quán)重。
因此,在執(zhí)行神經(jīng)網(wǎng)絡(luò)的嵌入過程時(shí),需要凍結(jié)神經(jīng)網(wǎng)絡(luò)的目標(biāo)性能,而不是如何實(shí)現(xiàn)它。如果您從嵌入過程開始就約束神經(jīng)網(wǎng)絡(luò)拓?fù)?,那么您就是在刪除生產(chǎn)工程師需要的提高性能的工具。
這意味著您需要新的不同工具來完成將NNs從實(shí)驗(yàn)室移植到嵌入式平臺(tái)的任務(wù)。低級(jí)軟件工程師無法完成這項(xiàng)工作——你需要人工智能工程師根據(jù)工具提供的性能信息來調(diào)整神經(jīng)網(wǎng)絡(luò)及其訓(xùn)練。這是新的:當(dāng)研發(fā)工程師將經(jīng)過培訓(xùn)的神經(jīng)網(wǎng)絡(luò)交給生產(chǎn)工程師時(shí),他們?cè)僖膊荒苷f“工作完成了”!
不同的方法
通過采用將 AI 研發(fā)工程師置于嵌入式軟件移植任務(wù)中心的開發(fā)工作流程,任何芯片都可以實(shí)現(xiàn)卓越的結(jié)果。使用以層為中心的分析,輔以從編譯改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 到查看目標(biāo)神經(jīng)處理器單元 (NPU) 的準(zhǔn)確性能結(jié)果的幾分鐘內(nèi)快速周轉(zhuǎn),開發(fā)人員可以使用相同的底層硬件實(shí)現(xiàn) 100% 或更多的增益. 這是因?yàn)樾薷?CNN 本身,而不是只修改用于執(zhí)行相同 CNN 的代碼,為 AI 工程師提供了更大的靈活性來識(shí)別和實(shí)施性能改進(jìn)。
在開發(fā)我們的 aiWare NPU 時(shí),AImotive 使用了我們自己的 AI 工程師將移植過程移植到具有廣泛 NPU 功能的多個(gè)不同芯片的經(jīng)驗(yàn)。我們希望找到更好的方法來幫助我們自己的 AI 工程師完成這項(xiàng)任務(wù),因此在開發(fā)我們對(duì) aiWare NPU 本身和支持它的 aiWare Studio 工具的要求時(shí),我們確定了我們?cè)谶^去的:
高度確定性的 NPU 架構(gòu),使時(shí)序非常可預(yù)測(cè)
準(zhǔn)確的基于層(不是基于時(shí)序或低級(jí)代碼)的性能估計(jì),以便任何 AI 研發(fā)工程師都可以看到更改其訓(xùn)練標(biāo)準(zhǔn)(例如添加或更改使用的場(chǎng)景,或修改目標(biāo) KPI)的影響; / 或 NN 拓?fù)淇焖?/p>
準(zhǔn)確的離線性能估計(jì),以便在第一個(gè)硬件可用之前執(zhí)行所有 NN 優(yōu)化(因?yàn)榈谝粋€(gè)原型總是稀缺的?。?/p>
點(diǎn)擊查看完整大小的圖片
圖 1:aiWare Studio 使用戶能夠優(yōu)化他們的 NN,而不是用于執(zhí)行它們的代碼。這為 AI 設(shè)計(jì)人員提供了更大的靈活性,可以更快地實(shí)現(xiàn)出色的結(jié)果。(來源:AImotive)
結(jié)果是一組工具使 AI 研發(fā)工程師能夠在實(shí)驗(yàn)室環(huán)境中對(duì)目標(biāo)硬件進(jìn)行幾乎所有優(yōu)化,并在最終目標(biāo)硬件的 5% 范圍內(nèi)展示性能——這一切都在任何人看到硬件之前完成。
最終檢查
當(dāng)然,在芯片和硬件原型可用時(shí)測(cè)量最終硬件至關(guān)重要。這種開發(fā)環(huán)境中實(shí)時(shí)硬件分析功能的可用性使工程師能夠訪問由此類工具支持的 NPU 內(nèi)的一系列深度嵌入式硬件寄存器和計(jì)數(shù)器。雖然芯片開銷很?。ㄒ?yàn)樵S多 NPU 主要由內(nèi)存而非邏輯控制),但這些功能可以在執(zhí)行期間實(shí)現(xiàn)前所未有的、非侵入式的實(shí)時(shí)性能測(cè)量。然后可以將其用于直接與離線性能估計(jì)器結(jié)果進(jìn)行比較,以確認(rèn)準(zhǔn)確性。
點(diǎn)擊查看完整大小的圖片
圖 2:使用嵌入式寄存器和計(jì)數(shù)器,aiWare Studio 可以準(zhǔn)確測(cè)量最終芯片性能,與離線估計(jì)結(jié)果相比,通常在 1%-5% 以內(nèi)。(來源:AImotive 和 Nextchip Co. Ltd)
結(jié)論
這種新方法為汽車行業(yè)提供了一種新的、更好的方式來開發(fā)、優(yōu)化和在生產(chǎn)車輛中部署人工智能。使用協(xié)同 NPU 硬件和工具,人工智能工程師可以為汽車應(yīng)用設(shè)計(jì)、實(shí)施和優(yōu)化更好的 CNN。
審核編輯 黃昊宇
-
嵌入式
+關(guān)注
關(guān)注
5060文章
18979瀏覽量
302235 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4749瀏覽量
100434 -
AI
+關(guān)注
關(guān)注
87文章
29858瀏覽量
268152
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論