對(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)建嵌入式軟件的過程使嵌入式開發(fā)人員能夠?qū)④浖δ艹杀竟こ袒癁榇笠?guī)模生產(chǎn)就緒形式,與用于開發(fā)它的大規(guī)模計(jì)算數(shù)據(jù)中心相比,需要更便宜、功能更弱的芯片和硬件。
然而,它通常需要從一開始就凍結(jié)功能,修改代碼只是為了改進(jìn)算法本身的執(zhí)行方式。對(duì)于大多數(shù)軟件來(lái)說,這很好:實(shí)際上,它可以使用嚴(yán)格的驗(yàn)證方法來(lái)確保嵌入過程保留所有所需的功能。
然而,當(dāng)嵌入基于 NN 的 AI
算法時(shí),這可能是一個(gè)主要問題。為什么?因?yàn)橥ㄟ^從一開始就凍結(jié)功能,您正在刪除可以優(yōu)化執(zhí)行的主要方式之一。
問題是什么?
有兩種根本不同的方法可以解決將復(fù)雜的神經(jīng)網(wǎng)絡(luò)從實(shí)驗(yàn)室中不受約束,資源豐富的神經(jīng)網(wǎng)絡(luò)訓(xùn)練環(huán)境移植到受嚴(yán)格約束的嵌入式硬件平臺(tái)的任務(wù):
優(yōu)化執(zhí)行神經(jīng)網(wǎng)絡(luò)的代碼
優(yōu)化神經(jīng)網(wǎng)絡(luò)本身
當(dāng)嵌入式開發(fā)人員發(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)的嵌入式軟件完全不同——至少如果你想用可用的硬件資源獲得最好的結(jié)果。使用 NN,通過改變拓?fù)?NN
本身(NN
的各個(gè)層如何連接,以及每層的作用)和使用更新的約束和輸入重新訓(xùn)練它的某種組合來(lái)實(shí)現(xiàn)改進(jìn)。這是因?yàn)楣δ懿皇怯缮窠?jīng)網(wǎng)絡(luò)“軟件”定義的,而是由訓(xùn)練期間應(yīng)用的目標(biāo)和約束來(lái)創(chuàng)建定義神經(jīng)網(wǎng)絡(luò)最終行為的權(quán)重。
因此,在進(jìn)行 NN 的嵌入過程時(shí),您需要凍結(jié) NN 的目標(biāo)性能,而不是它是如何實(shí)現(xiàn)的。如果您從嵌入式開發(fā)過程的開始就約束
NN 拓?fù)?,那么您正在移除生產(chǎn)工程師提高性能所需的工具。
這意味著您需要新的和不同的工具來(lái)完成將 NN 從實(shí)驗(yàn)室移植到嵌入式平臺(tái)的任務(wù)。而低級(jí)軟件工程師無(wú)法完成這項(xiàng)工作——您需要
AI 工程師根據(jù)工具為您提供的性能信息來(lái)調(diào)整 NN
及其訓(xùn)練。這是新的:當(dāng)研發(fā)工程師將訓(xùn)練有素的神經(jīng)網(wǎng)絡(luò)交給生產(chǎn)工程師時(shí),他們?cè)僖膊荒苷f“工作完成了”!
另一種方法:
通過采用將人工智能研發(fā)工程師置于嵌入式軟件移植任務(wù)中心的開發(fā)工作流程,任何芯片都可以取得卓越的成果。使用以層為中心的分析,并在幾分鐘內(nèi)快速完成從編譯修改后的卷積神經(jīng)網(wǎng)絡(luò)
(CNN) 到查看目標(biāo)神經(jīng)處理器單元 (NPU) 的準(zhǔn)確性能結(jié)果,嵌入式開發(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)。 我們想找到更好的方法來(lái)幫助我們自己的 AI 工程師完成這項(xiàng)任務(wù),因此在開發(fā)我們對(duì) aiWare NPU 本身和支持它的 aiWare
Studio 工具的要求時(shí),我們發(fā)現(xiàn)了一些在我們過去使用過的硬件平臺(tái)上沒有看到的理想特性:
高度確定性的 NPU 架構(gòu),讓時(shí)序非??深A(yù)測(cè)
準(zhǔn)確的基于層(不是基于時(shí)序或低級(jí)代碼)的性能估計(jì),以便任何 AI
研發(fā)工程師都可以快速地看到更改其訓(xùn)練標(biāo)準(zhǔn)(例如添加或更改使用的場(chǎng)景,或修改目標(biāo) KPI)和 / 或 NN 拓?fù)涞挠绊憽?/span>
準(zhǔn)確的離線性能估算,使所有的 NN 優(yōu)化都可以在第一個(gè)硬件可用之前進(jìn)行(因?yàn)榈谝粋€(gè)原型總是稀缺的!)
最后檢查
當(dāng)然,當(dāng)芯片和硬件原型可用時(shí),測(cè)量最終硬件是至關(guān)重要的。這種嵌入式開發(fā)環(huán)境中實(shí)時(shí)硬件分析功能的可用性使工程師可以訪問由此類工具支持的 NPU
內(nèi)的一系列深度嵌入式硬件寄存器和計(jì)數(shù)器。 雖然芯片開銷很小(因?yàn)樵S多 NPU
由內(nèi)存而非邏輯主導(dǎo)),但這些功能可以在執(zhí)行期間實(shí)現(xiàn)前所未有的、非侵入性的實(shí)時(shí)性能測(cè)量。
然后,這可用于直接與離線性能估計(jì)器結(jié)果進(jìn)行比較,以確認(rèn)準(zhǔn)確性。