創(chuàng)造智能需要大量數(shù)據(jù)。所有這些數(shù)據(jù)都需要能夠支持它的技術(shù)。
就人工智能 (AI) 而言,這些技術(shù)包括大量直接訪問(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ǔ)音搜索和在線面部識(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)化和編譯?!?/p>
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)更高效。
在 i.MX 跨界 MCU 的性能測(cè)試中,恩智浦系統(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)線
人工智能技術(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 主線做出承諾,因?yàn)樗鼈儸F(xiàn)在依賴(lài)于其通用基礎(chǔ)設(shè)施來(lái)訪問(wèn)指令、操作符、內(nèi)核等。
然后,很明顯,開(kāi)源具有內(nèi)在價(jià)值。
“我們經(jīng)??吹轿覀冴P(guān)心的外部用戶的貢獻(xiàn),比如更通用的并行化框架,我們有很多他們正在運(yùn)行的機(jī)器學(xué)習(xí)模型,”Fix 說(shuō)?!八砸苍S它可以讓他們?cè)谖覀儫o(wú)需做任何事情的情況下獲得對(duì)運(yùn)營(yíng)商的支持?!拔艺J(rèn)為您正在研究這個(gè)特定的計(jì)算機(jī)視覺(jué)模型”或者,“我認(rèn)為這是您所說(shuō)的操作員?!?他們只是審查它并移植它并登陸它。
“我們都可以從彼此在傳統(tǒng)開(kāi)源框架中的工作中受益,”他補(bǔ)充道。
審核編輯:郭婷
-
Facebook
+關(guān)注
關(guān)注
3文章
1432瀏覽量
55924 -
人工智能
+關(guān)注
關(guān)注
1804文章
48478瀏覽量
245198 -
編譯器
+關(guān)注
關(guān)注
1文章
1653瀏覽量
49756
發(fā)布評(píng)論請(qǐng)先 登錄
什么樣的代碼會(huì)被編譯器優(yōu)化
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編譯器支持的編程語(yǔ)言
Triton編譯器與其他編譯器的比較
Triton編譯器功能介紹 Triton編譯器使用教程
C7000優(yōu)化C/C++編譯器

Keil編譯器優(yōu)化方法

評(píng)論