0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AI編譯器如何在傳統(tǒng)開源框架中的工作中受益

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Brandon Lewis ? 2022-06-02 11:51 ? 次閱讀

TensorFlow/TensorFlow Lite 相比,Glow 編譯的輸入表現(xiàn)出 3 倍幀/秒的性能提升,而該圖顯示了 AOT 編譯與 JIT 編譯器相比的效率。

創(chuàng)造智能需要大量數(shù)據(jù)。所有這些數(shù)據(jù)都需要能夠支持它的技術(shù)。

人工智能AI) 而言,這些技術(shù)包括大量直接訪問的高速內(nèi)存;能夠同時處理同一數(shù)據(jù)集的不同部分的并行計算架構(gòu);并且有點令人驚訝的是,與許多其他應(yīng)用程序相比,計算精度更低。數(shù)據(jù)中心可以提供幾乎無窮無盡的這種技術(shù)組合。

因此,人工智能開發(fā)工具是為互聯(lián)網(wǎng)查詢、語音搜索和在線面部識別等應(yīng)用程序背后的數(shù)據(jù)中心基礎(chǔ)設(shè)施而設(shè)計的。但隨著人工智能技術(shù)的進步,在各種用例中利用它的愿望也在增加——包括那些在小型、資源受限、基于 MCU 的邊緣平臺上運行的用例。因此,例如,編譯器等工具還必須能夠針對占用空間更小的設(shè)備優(yōu)化 AI 數(shù)據(jù)和算法,而不是僅僅關(guān)注運行基于云的推薦系統(tǒng)的高端硬件加速器。

Facebook 的開源機器學(xué)習(xí)編譯器 Glow 就是這種工具演變的一個例子。它使用兩階段中間表示 (IR) “降低”神經(jīng)網(wǎng)絡(luò)圖,該中間表示生成針對各種嵌入式和服務(wù)器級硬件目標的特性和內(nèi)存進行專門調(diào)整的機器代碼(圖 1)。它還執(zhí)行提前 (AOT) 編譯,最大限度地減少運行時開銷,以節(jié)省磁盤空間、內(nèi)存、啟動時間等。

pYYBAGKYNaKADG4lAAEW_YkElmY357.png

圖 1. Glow 高級中間表示中的降低計算圖表示 A 的回歸,該回歸由 Glow 自動區(qū)分。

“我們擁有這個非常高性能的運行時,但很多項目并不關(guān)心,因為它們不在數(shù)據(jù)中心內(nèi),”Facebook 的研究科學(xué)家 Jordan Fix 解釋道?!八麄冃枰?AOT 編譯,盡可能地縮小,使用量化和并行化,并且沒有太多的依賴關(guān)系。

“AOT 編譯在數(shù)據(jù)中心并不那么重要,但我們可以將 LLVM 后端連接到 Glow 并針對 x86、ArmRISC-V 和專用架構(gòu),”Fix 繼續(xù)說道。“Glow 的工作方式是你有幾個級別的 IR,它們使用高級優(yōu)化和量化來限制內(nèi)存。那時,編譯器后端可以接受基于指令的 IR,并根據(jù)需要對其進行優(yōu)化和編譯?!?/p>

Glow 的另一大優(yōu)勢,特別是在多樣化的嵌入式技術(shù)領(lǐng)域,是能夠在簡單的 C 包裝器中編譯模型。這意味著嵌入式 AI 工程師可以針對他們選擇的編譯器后端和架構(gòu)優(yōu)化 Glow。它本機支持來自流行 AI 框架和庫(如 PyTorch 和 Arm 的 CMSIS-NN)的輸入,還可以通過 ONNX 神經(jīng)網(wǎng)絡(luò)交換接受來自 TensorFlow 等環(huán)境的圖形。

AI 編譯器的競爭

當然,Glow 并不是唯一可用的神經(jīng)網(wǎng)絡(luò)編譯器。Google 的多級中間表示 (MLIR) 是一種編譯器基礎(chǔ)架構(gòu),專注于張量處理器,已被 LLVM 吸收。Microsoft 的嵌入式學(xué)習(xí)庫 (ELL) 是另一個用于資源受限的 AI 設(shè)備的交叉編譯工具鏈。

然而,Glow 比任何一個都更成熟,已于 2018 年開源。它也比許多現(xiàn)有的 AI 編譯器選項更高效。

在發(fā)布的 i.MX 跨界 MCU 的性能測試中,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 框架中使用的即時 (JIT) 編譯相比的效率如何。

poYBAGKYNayAWAp9AAB212uxoCo615.png

pYYBAGKYNbKAU1lmAAClOgEERas827.png

圖 2a 和 2b。與 TensorFlow Lite 等即時 (JIT) 編譯器相比,Glow 的提前 (AOT) 編譯器可節(jié)省大量 RAM 和閃存,同時還具有顯著的每秒幀數(shù)性能優(yōu)勢。

請記住,i.MX1060 具有高達 1 MB 的片上 RAM。NXP 的 eIQ 軟件開發(fā)環(huán)境支持 Glow。

開源人工智能:看不到終點線

人工智能技術(shù)市場瞬息萬變,這使得開發(fā)組織很難致力于任何技術(shù)。這可能是 Glow 最引人注目的方面之一,它甚至與技術(shù)沒有直接關(guān)系。

作為一個擁有 130 多個活躍貢獻者的開源項目,F(xiàn)acebook、英特爾等大型組織繼續(xù)對 Glow 主線做出承諾,因為它們現(xiàn)在依賴于其通用基礎(chǔ)設(shè)施來訪問指令、操作符、內(nèi)核等。

然后,很明顯,開源具有內(nèi)在價值。

“我們經(jīng)??吹轿覀冴P(guān)心的外部用戶的貢獻,比如更通用的并行化框架,我們有很多他們正在運行的機器學(xué)習(xí)模型,”Fix 說?!八砸苍S它可以讓他們在我們無需做任何事情的情況下獲得對運營商的支持。“我認為您正在研究這個特定的計算機視覺模型”或者,“我認為這是您所說的操作員?!?他們只是審查它并移植它并登陸它。

“我們都可以從彼此在傳統(tǒng)開源框架中的工作中受益,”他補充道。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NXP
    NXP
    +關(guān)注

    關(guān)注

    60

    文章

    1287

    瀏覽量

    184879
  • 人工智能
    +關(guān)注

    關(guān)注

    1793

    文章

    47535

    瀏覽量

    239327
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1640

    瀏覽量

    49210
收藏 人收藏

    評論

    相關(guān)推薦

    EE-88:使用21xx編譯器在C初始化變量

    電子發(fā)燒友網(wǎng)站提供《EE-88:使用21xx編譯器在C初始化變量.pdf》資料免費下載
    發(fā)表于 01-13 15:54 ?0次下載
    EE-88:使用21xx<b class='flag-5'>編譯器</b>在C<b class='flag-5'>中</b>初始化變量

    Triton編譯器與GPU編程的結(jié)合應(yīng)用

    Triton編譯器簡介 Triton編譯器是一種針對并行計算優(yōu)化的編譯器,它能夠自動將高級語言代碼轉(zhuǎn)換為針對特定硬件優(yōu)化的低級代碼。Triton編譯器的核心優(yōu)勢在于其能夠識別并行模式,
    的頭像 發(fā)表于 12-25 09:13 ?277次閱讀

    Triton編譯器如何提升編程效率

    在現(xiàn)代軟件開發(fā),編譯器扮演著至關(guān)重要的角色。它們不僅將高級語言代碼轉(zhuǎn)換為機器可執(zhí)行的代碼,還通過各種優(yōu)化技術(shù)提升程序的性能。Triton 編譯器作為一種先進的編譯器,通過多種方式提升
    的頭像 發(fā)表于 12-25 09:12 ?275次閱讀

    Triton編譯器在高性能計算的應(yīng)用

    先進的編譯技術(shù),為高性能計算提供了強大的支持。 Triton編譯器簡介 Triton編譯器是一種開源編譯器
    的頭像 發(fā)表于 12-25 09:11 ?290次閱讀

    Triton編譯器的優(yōu)化技巧

    在現(xiàn)代計算環(huán)境,編譯器的性能對于軟件的運行效率至關(guān)重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優(yōu)化技術(shù),以確保生成的
    的頭像 發(fā)表于 12-25 09:09 ?278次閱讀

    Triton編譯器的優(yōu)勢與劣勢分析

    據(jù)流分析技術(shù),能夠自動識別并優(yōu)化深度學(xué)習(xí)模型的計算瓶頸,從而提高模型的整體性能。 它支持多種硬件平臺的優(yōu)化,包括CPU、GPU、FPGA等,為深度學(xué)習(xí)模型的部署提供了更廣泛的選擇。 靈活可擴展 : Triton編譯器采用了模塊化的設(shè)計思想,開發(fā)者可以根據(jù)需要自定
    的頭像 發(fā)表于 12-25 09:07 ?310次閱讀

    Triton編譯器在機器學(xué)習(xí)的應(yīng)用

    多種深度學(xué)習(xí)框架,如TensorFlow、PyTorch、ONNX等,使得開發(fā)者能夠輕松地將不同框架下訓(xùn)練的模型部署到GPU上。 2. Triton編譯器工作原理 Triton
    的頭像 發(fā)表于 12-24 18:13 ?461次閱讀

    Triton編譯器支持的編程語言

    Triton編譯器支持的編程語言主要包括以下幾種: 一、主要編程語言 Python :Triton編譯器通過Python接口提供了對Triton語言和編譯器的訪問,使得用戶可以在Python環(huán)境
    的頭像 發(fā)表于 12-24 17:33 ?412次閱讀

    Triton編譯器與其他編譯器的比較

    的GPU編程框架,使開發(fā)者能夠編寫出接近手工優(yōu)化的高性能GPU內(nèi)核。 其他編譯器 (如GCC、Clang、MSVC等): 定位:通用編譯器,支持多種編程語言,廣泛應(yīng)用于各種軟件開發(fā)場景。 目標:提供穩(wěn)定、高效的
    的頭像 發(fā)表于 12-24 17:25 ?428次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個開源編譯器前端,它支持多種編程語言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個可擴展和可定制的編譯器框架,允許開發(fā)者添加新的編程語言
    的頭像 發(fā)表于 12-24 17:23 ?518次閱讀

    SemiDrive X9 AI 開發(fā)環(huán)境搭建

    SemiDrivex9AI開發(fā)環(huán)境搭建分開發(fā)機端,開發(fā)板端。主要的工具是SDNN,它是一個基于開源編譯器框架TVM的端到端的AI
    的頭像 發(fā)表于 08-03 08:27 ?420次閱讀
    SemiDrive X9 <b class='flag-5'>AI</b> 開發(fā)環(huán)境搭建

    AI編譯器技術(shù)剖析

    隨著人工智能技術(shù)的飛速發(fā)展,AI編譯器作為一種新興的編譯技術(shù)逐漸進入人們的視野。AI編譯器不僅具備傳統(tǒng)編
    的頭像 發(fā)表于 07-17 18:28 ?1697次閱讀

    人工智能編譯器傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器AI編譯器)與傳統(tǒng)編譯器在多個方面存在顯著的差異。這些差異主要體現(xiàn)在設(shè)計目標、功能特性、優(yōu)化策略、適用范圍以及技術(shù)復(fù)雜性等方面。以下是對兩者區(qū)別的詳細探討,旨在全面解析
    的頭像 發(fā)表于 07-17 18:19 ?2012次閱讀

    C語言:嵌入式開發(fā)的關(guān)鍵編譯器角色

    嵌入式程序開發(fā)跟硬件密切相關(guān),需要使用C語言來讀寫底層寄存、存取數(shù)據(jù)、控制硬件等,C語言和硬件之間由編譯器來聯(lián)系,一些C標準不支持的硬件特性操作,由編譯器提供。
    發(fā)表于 04-26 14:53 ?664次閱讀
    C語言:嵌入式開發(fā)<b class='flag-5'>中</b>的關(guān)鍵<b class='flag-5'>編譯器</b>角色

    怎么在NanoEdge AI Studio設(shè)定交叉編譯器呢?

    我使用的是NanoEdge AI Studio v4.3.1,跟著官方交教程生成了庫libneai.a,我通過metadata.json文件得知生成這個庫的交叉編譯器版本是\"
    發(fā)表于 03-07 06:28