作者:Arm 工程部應(yīng)用機(jī)器學(xué)習(xí)總監(jiān) Robert Elliott、Arm 工程部首席工程師 Fredrik Knutsson、Arm 物聯(lián)網(wǎng)事業(yè)部技術(shù)管理總監(jiān) Mark Quartermain
在快速發(fā)展的機(jī)器學(xué)習(xí)領(lǐng)域,PyTorch 憑借其靈活性和全面的生態(tài)系統(tǒng),已成為模型開(kāi)發(fā)的熱門框架。Arm 與 Meta 合作在 ExecuTorch 中引入了對(duì) Arm 平臺(tái)的支持,進(jìn)一步簡(jiǎn)化了模型算法開(kāi)發(fā)過(guò)程,實(shí)現(xiàn)無(wú)縫在邊緣側(cè)設(shè)備上部署 PyTorch 模型。
ExecuTorch 對(duì) Ethos-U85 的支持
高性能的 Arm Ethos-U85 NPU 可滿足在邊緣側(cè)日益增長(zhǎng)的運(yùn)行先進(jìn)人工智能 (AI) 推理工作負(fù)載的需求,包括諸如大語(yǔ)言模型等基于 Transformer 的網(wǎng)絡(luò)。Arm 針對(duì) Ethos-U 提供參考設(shè)計(jì),如 Arm Corstone-320 物聯(lián)網(wǎng)參考設(shè)計(jì)平臺(tái),以加速和簡(jiǎn)化芯片開(kāi)發(fā)周期。參考設(shè)計(jì)平臺(tái)中包含固定虛擬平臺(tái) (FVP) 等許多項(xiàng)目,F(xiàn)VP 可仿真整個(gè)系統(tǒng),為 Ethos-U85 平臺(tái)上進(jìn)行前沿的嵌入式軟件開(kāi)發(fā)和神經(jīng)網(wǎng)絡(luò)部署提供支持。
Arm 通過(guò)在 Ethos-U85 上支持 ExecuTorch 測(cè)試版,為開(kāi)發(fā)者構(gòu)建物聯(lián)網(wǎng)邊緣側(cè)應(yīng)用提供了更多支持。開(kāi)發(fā)者可以借助 ExecuTorch,高效地部署原生開(kāi)發(fā)的 PyTorch 模型,基于 Arm 平臺(tái)構(gòu)建出智能且響應(yīng)迅速的物聯(lián)網(wǎng)解決方案。
隨著該軟件包的推出,想要?jiǎng)?chuàng)建邊緣側(cè) AI 應(yīng)用的開(kāi)發(fā)者能夠在平臺(tái)上市前數(shù)月就開(kāi)始模型和應(yīng)用的軟件開(kāi)發(fā)工作。
在 Ethos-U85 上開(kāi)始使用 ExecuTorch
ExecuTorch GitHub 公共代碼倉(cāng)庫(kù)中提供了完整的開(kāi)發(fā)環(huán)境。其中包含一個(gè)集成且經(jīng)過(guò)測(cè)試的開(kāi)發(fā)流程和所有必要組件。
三個(gè)簡(jiǎn)單的步驟如下所示:
設(shè)置 ExecuTorch
https://pytorch.org/executorch/main/getting-started-setup.html
設(shè)置 Arm Build 環(huán)境
https://pytorch.org/executorch/main/executorch-arm-delegate-tutorial.html
在 arm_executor_runner 上編譯并運(yùn)行模型
https://pytorch.org/executorch/main/executorch-arm-delegate-tutorial.html#delegated-quantized-workflow
之后就可以在此流程的基礎(chǔ)上編譯和運(yùn)行模型,從 Ethos-U85 驅(qū)動(dòng)程序采集周期數(shù)信息等運(yùn)行時(shí)行為。
為了讓最終用戶更輕松地完成此過(guò)程,Arm 還向 ExecuTorch 代碼倉(cāng)庫(kù)貢獻(xiàn)了腳本:
設(shè)置 ExecuTorch
setup.sh:下載必要的軟件
https://github.com/pytorch/executorch/blob/main/examples/arm/setup.sh
run.sh:在 Corstone-320 FVP 上編譯并運(yùn)行模型
https://github.com/pytorch/executorch/blob/main/examples/arm/run.sh
要構(gòu)建其他模型,可使用提前編譯器腳本 aot_arm_compiler.py,它能將 PyTorch 項(xiàng)目代碼 (nn.module) 轉(zhuǎn)換為 ExecuTorch 項(xiàng)目代碼(.pte flatbuffer 文件)。
腳本鏈接:
https://github.com/pytorch/executorch/blob/main/examples/arm/aot_arm_compiler.py
要編寫(xiě)使用 ExecuTorch 的自定義應(yīng)用,可以按照示例 executor_runner 應(yīng)用中的應(yīng)用流程進(jìn)行操作。
示例 executor_runner 應(yīng)用鏈接:
https://github.com/pytorch/executorch/tree/main/examples/arm/executor_runner
隨著陸續(xù)支持更多算子,我們將能夠支持更多的 PyTorch 模型。后續(xù)添加的更多功能,將通過(guò) pytorch.org 上的 Ethos-U 教程材料進(jìn)行演示。
Ethos-U 教程:
https://pytorch.org/executorch/main/index.html
部署流程的詳細(xì)工作原理
利用 ExecuTorch 的可擴(kuò)展性和 Arm 的張量算子集架構(gòu) (TOSA) 的特性,Arm 在 ExecuTorch 中實(shí)現(xiàn)了 Ethos-U 支持。Ethos-U 編譯器 Vela 已通過(guò) TOSA 前端得到增強(qiáng),可以為 Ethos-U 系列中的所有產(chǎn)品編譯模型。
為了將這些組件整合為一個(gè)連貫的工作流程,需要遵循以下步驟:
將 PyTorch 模型轉(zhuǎn)換為可部署的 ExecuTorch 程序(AOT 流程)
將 ExecuTorch 程序編譯為可執(zhí)行文件,以便部署在 Corstone-320 上(運(yùn)行時(shí)流程)
ExecuTorch 的 AOT 流程
此過(guò)程首先使用 PyTorch 的dynamo export 功能,將 PyTorch 模型轉(zhuǎn)換為量化的 TOSA 表示。然后,就能利用 Vela 編譯 TOSA 前端生成一組 Ethos-U 機(jī)器指令(稱為命令流)。接著,命令流被捆綁到 Executorch 程序中,由 flatbuffer 文件 (.pte) 表示。該文件中包含了 ExecuTorch 運(yùn)行時(shí)使用 Ethos-U 硬件執(zhí)行推理所需的所有內(nèi)容。
ExecuTorch 運(yùn)行時(shí)流程
ExecuTorch 運(yùn)行時(shí)以 C/C++ 編寫(xiě),可支持多種后端。Arm 對(duì) ExecuTorch 運(yùn)行時(shí)進(jìn)行了擴(kuò)展,以包含對(duì) Ethos-U 設(shè)備驅(qū)動(dòng)程序的支持。按照此流程操作,將生成一個(gè)獨(dú)立的經(jīng)過(guò)編譯的可執(zhí)行文件。在 Corstone-320 FVP 上部署可執(zhí)行文件非常簡(jiǎn)單,只需要在調(diào)用 FVP 時(shí)使用適當(dāng)?shù)臉?biāo)志即可。
Ethos-U85 和 Corstone-320
Ethos-U 系列 NPU 為邊緣側(cè) AI 提供高性能、高能效的解決方案。Ethos-U55(同樣受 ExecuTorch 支持)廣泛應(yīng)用于眾多 Arm Cortex-M 異構(gòu)系統(tǒng),而 Ethos-U65 則將 Ethos-U 系列的適用性擴(kuò)展到基于 Cortex-A 的系統(tǒng),并提升了性能。
Ethos-U85 進(jìn)一步擴(kuò)展了 Ethos-U 產(chǎn)品線,支持當(dāng)前以及未來(lái)更多使用 Transformer 神經(jīng)網(wǎng)絡(luò)架構(gòu)的邊緣側(cè)工作負(fù)載。與前代產(chǎn)品相比,Ethos-U85 的性能提升了四倍,能效提高了 20%,在主流神經(jīng)網(wǎng)絡(luò)上的利用率高達(dá) 85%。
Ethos-U85 的顯著特性包括:
配置范圍從 128 到 2048 MAC/周期,在 1GHz 下可提供高達(dá) 4 TOP/s 的性能。
兼容基于 Cortex-A 和 Cortex-M 的系統(tǒng)。
通過(guò)支持 TOSA,對(duì)主要的神經(jīng)網(wǎng)絡(luò)提供原生支持。
可對(duì)主要的神經(jīng)網(wǎng)絡(luò)進(jìn)行全面硬件加速。
完整列表請(qǐng)參閱 Ethos-U85 技術(shù)概述
https://developer.arm.com/documentation/102684/0000
未來(lái)規(guī)劃
Arm 會(huì)陸續(xù)增加新的算子支持,擴(kuò)展 ExecuTorch 核心 ATen 算子的覆蓋范圍,并支持更多模型在 Ethos-U 上運(yùn)行。Arm 將持續(xù)專注于提高性能,以確保模型在 Ethos-U 上高效運(yùn)行。
ExecuTorch 委托框架支持將 Ethos-U 不支持的算子回調(diào)到 CPU 上運(yùn)行,使用參考內(nèi)核執(zhí)行。Arm 致力于使用 CMSIS-NN 在 Cortex-M CPU 上實(shí)現(xiàn)卓越性能,為回調(diào)算子提供更好的支持,并確保在沒(méi)有 Ethos-U 功能的設(shè)備上也能實(shí)現(xiàn)良好性能。
上述的軟件包和 Corstone-320 FVP 是 Arm 在簡(jiǎn)化應(yīng)用開(kāi)發(fā)道路上邁出的又一步,歡迎各位開(kāi)發(fā)者繼續(xù)探索代碼和構(gòu)建過(guò)程,并向 Arm 提供反饋意見(jiàn)。同時(shí),Arm 也致力于支持更多特性和模型,并盡可能充分發(fā)揮硬件性能。
-
ARM
+關(guān)注
關(guān)注
134文章
9360瀏覽量
378033 -
AI
+關(guān)注
關(guān)注
88文章
35299瀏覽量
280618 -
開(kāi)發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
242瀏覽量
17137 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8506瀏覽量
134728
原文標(biāo)題:三步輕松上手!在 Arm Ethos-U85 上使用 ExecuTorch
文章出處:【微信號(hào):Arm社區(qū),微信公眾號(hào):Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何在STM32上實(shí)現(xiàn)USB主機(jī)讀寫(xiě)U盤文件

Arm推動(dòng)生成式AI落地邊緣!全新Ethos-U85 AI加速器支持Transformer 架構(gòu),性能提升四倍

介紹一種Arm ML嵌入式評(píng)估套件
Arm Ethos-U NPU應(yīng)用程序開(kāi)發(fā)概述
Arm Ethos-U NPU處理器入門指南
ARM正式發(fā)布了針對(duì)物聯(lián)網(wǎng)設(shè)備的AI芯片設(shè)計(jì)——Cortex-M55
Arm推出新一代Ethos-U AI加速器及全新物聯(lián)網(wǎng)參考設(shè)計(jì)平臺(tái)

Arm Ethos-U85:滿足物聯(lián)網(wǎng)面向AI時(shí)代的高性能需求

Arm發(fā)布第三代NPU,適用于工業(yè)自動(dòng)化等場(chǎng)景,性能提升四倍
Arm推第三代邊緣AI加速器:Arm Ethos-U85

Arm發(fā)布新一代Ethos-U AI加速器 Arm旨在瞄準(zhǔn)國(guó)產(chǎn)CPU市場(chǎng)
如何在DRA821U上使用Linux實(shí)現(xiàn)快速引導(dǎo)

評(píng)論