與 TensorFlow/TensorFlow Lite 相比,Glow 編譯的輸入表現(xiàn)出 3 倍幀/秒的性能提升,而該圖顯示了 AOT 編譯與 JIT 編譯器相比的效率。
創(chuàng)造智能需要大量數(shù)據(jù)。所有這些數(shù)據(jù)都需要能夠支持它的技術(shù)。
就人工智能 (AI) 而言,這些技術(shù)包括大量直接訪(fǎng)問(wèn)的高速內(nèi)存;能夠同時(shí)處理同一數(shù)據(jù)集的不同部分的并行計(jì)算架構(gòu);并且有點(diǎn)令人驚訝的是,與許多其他應(yīng)用程序相比,計(jì)算精度更低。數(shù)據(jù)中心可以提供幾乎無(wú)窮無(wú)盡的這種技術(shù)組合。
因此,人工智能開(kāi)發(fā)工具是為互聯(lián)網(wǎng)查詢(xún)、語(yǔ)音搜索和在線(xiàn)面部識(shí)別等應(yīng)用程序背后的數(shù)據(jù)中心基礎(chǔ)設(shè)施而設(shè)計(jì)的。但隨著人工智能技術(shù)的進(jìn)步,在各種用例中利用它的愿望也在增加——包括那些在小型、資源受限、基于 MCU 的邊緣平臺(tái)上運(yùn)行的用例。因此,例如,編譯器等工具還必須能夠針對(duì)占用空間更小的設(shè)備優(yōu)化 AI 數(shù)據(jù)和算法,而不是僅僅關(guān)注運(yùn)行基于云的推薦系統(tǒng)的高端硬件加速器。
Facebook 的開(kāi)源機(jī)器學(xué)習(xí)編譯器 Glow 就是這種工具演變的一個(gè)例子。它使用兩階段中間表示 (IR) “降低”神經(jīng)網(wǎng)絡(luò)圖,該中間表示生成針對(duì)各種嵌入式和服務(wù)器級(jí)硬件目標(biāo)的特性和內(nèi)存進(jìn)行專(zhuān)門(mén)調(diào)整的機(jī)器代碼(圖 1)。它還執(zhí)行提前 (AOT) 編譯,最大限度地減少運(yùn)行時(shí)開(kāi)銷(xiāo),以節(jié)省磁盤(pán)空間、內(nèi)存、啟動(dòng)時(shí)間等。
圖 1. Glow 高級(jí)中間表示中的降低計(jì)算圖表示 A 的回歸,該回歸由 Glow 自動(dòng)區(qū)分。
“我們擁有這個(gè)非常高性能的運(yùn)行時(shí),但很多項(xiàng)目并不關(guān)心,因?yàn)樗鼈儾辉跀?shù)據(jù)中心內(nèi),”Facebook 的研究科學(xué)家 Jordan Fix 解釋道?!八麄冃枰?AOT 編譯,盡可能地縮小,使用量化和并行化,并且沒(méi)有太多的依賴(lài)關(guān)系。
“AOT 編譯在數(shù)據(jù)中心并不那么重要,但我們可以將 LLVM 后端連接到 Glow 并針對(duì) x86、Arm、RISC-V 和專(zhuān)用架構(gòu),”Fix 繼續(xù)說(shuō)道?!癎low 的工作方式是你有幾個(gè)級(jí)別的 IR,它們使用高級(jí)優(yōu)化和量化來(lái)限制內(nèi)存。那時(shí),編譯器后端可以接受基于指令的 IR,并根據(jù)需要對(duì)其進(jìn)行優(yōu)化和編譯。”
Glow 的另一大優(yōu)勢(shì),特別是在多樣化的嵌入式技術(shù)領(lǐng)域,是能夠在簡(jiǎn)單的 C 包裝器中編譯模型。這意味著嵌入式 AI 工程師可以針對(duì)他們選擇的編譯器后端和架構(gòu)優(yōu)化 Glow。它本機(jī)支持來(lái)自流行 AI 框架和庫(kù)(如 PyTorch 和 Arm 的 CMSIS-NN)的輸入,還可以通過(guò) ONNX 神經(jīng)網(wǎng)絡(luò)交換接受來(lái)自 TensorFlow 等環(huán)境的圖形。
AI 編譯器的競(jìng)爭(zhēng)
當(dāng)然,Glow 并不是唯一可用的神經(jīng)網(wǎng)絡(luò)編譯器。Google 的多級(jí)中間表示 (MLIR) 是一種編譯器基礎(chǔ)架構(gòu),專(zhuān)注于張量處理器,已被 LLVM 吸收。Microsoft 的嵌入式學(xué)習(xí)庫(kù) (ELL) 是另一個(gè)用于資源受限的 AI 設(shè)備的交叉編譯工具鏈。
然而,Glow 比任何一個(gè)都更成熟,已于 2018 年開(kāi)源。它也比許多現(xiàn)有的 AI 編譯器選項(xiàng)更高效。
在發(fā)布的 i.MX 跨界 MCU 的性能測(cè)試中,NXP 系統(tǒng)工程師使用 TensorFlow Lite 和 Glow 編譯了 32 x 32 CIFAR-10 數(shù)據(jù)集,并將它們輸入 RT1060、RT1170 和 RT685 設(shè)備。Glow 編譯的輸入表現(xiàn)出至少 3 倍幀/秒的性能提升,而圖 2 讓您了解 AOT 編譯與 TensorFlow/TensorFlow Lite 框架中使用的即時(shí) (JIT) 編譯相比的效率如何。
圖 2a 和 2b。與 TensorFlow Lite 等即時(shí) (JIT) 編譯器相比,Glow 的提前 (AOT) 編譯器可節(jié)省大量 RAM 和閃存,同時(shí)還具有顯著的每秒幀數(shù)性能優(yōu)勢(shì)。
請(qǐng)記住,i.MX1060 具有高達(dá) 1 MB 的片上 RAM。NXP 的 eIQ 軟件開(kāi)發(fā)環(huán)境支持 Glow。
開(kāi)源人工智能:看不到終點(diǎn)線(xiàn)
人工智能技術(shù)市場(chǎng)瞬息萬(wàn)變,這使得開(kāi)發(fā)組織很難致力于任何技術(shù)。這可能是 Glow 最引人注目的方面之一,它甚至與技術(shù)沒(méi)有直接關(guān)系。
作為一個(gè)擁有 130 多個(gè)活躍貢獻(xiàn)者的開(kāi)源項(xiàng)目,F(xiàn)acebook、英特爾等大型組織繼續(xù)對(duì) Glow 主線(xiàn)做出承諾,因?yàn)樗鼈儸F(xiàn)在依賴(lài)于其通用基礎(chǔ)設(shè)施來(lái)訪(fǎng)問(wèn)指令、操作符、內(nèi)核等。
然后,很明顯,開(kāi)源具有內(nèi)在價(jià)值。
“我們經(jīng)常看到我們關(guān)心的外部用戶(hù)的貢獻(xiàn),比如更通用的并行化框架,我們有很多他們正在運(yùn)行的機(jī)器學(xué)習(xí)模型,”Fix 說(shuō)。“所以也許它可以讓他們?cè)谖覀儫o(wú)需做任何事情的情況下獲得對(duì)運(yùn)營(yíng)商的支持?!拔艺J(rèn)為您正在研究這個(gè)特定的計(jì)算機(jī)視覺(jué)模型”或者,“我認(rèn)為這是您所說(shuō)的操作員?!?他們只是審查它并移植它并登陸它。
“我們都可以從彼此在傳統(tǒng)開(kāi)源框架中的工作中受益,”他補(bǔ)充道。
審核編輯:郭婷
-
NXP
+關(guān)注
關(guān)注
61文章
1337瀏覽量
188009 -
人工智能
+關(guān)注
關(guān)注
1805文章
48899瀏覽量
247994 -
編譯器
+關(guān)注
關(guān)注
1文章
1659瀏覽量
50059
發(fā)布評(píng)論請(qǐng)先 登錄
什么樣的代碼會(huì)被編譯器優(yōu)化
EE-88:使用21xx編譯器在C中初始化變量

Triton編譯器與GPU編程的結(jié)合應(yīng)用
Triton編譯器如何提升編程效率
Triton編譯器在高性能計(jì)算中的應(yīng)用
Triton編譯器的優(yōu)化技巧
Triton編譯器的優(yōu)勢(shì)與劣勢(shì)分析
Triton編譯器在機(jī)器學(xué)習(xí)中的應(yīng)用
Triton編譯器的常見(jiàn)問(wèn)題解決方案
Triton編譯器支持的編程語(yǔ)言
Triton編譯器與其他編譯器的比較
Triton編譯器功能介紹 Triton編譯器使用教程
SemiDrive X9 AI 開(kāi)發(fā)環(huán)境搭建

評(píng)論