高通台灣AI黑客松|競賽說明會
|

【Arm的AI世界】三步驟輕鬆在Ethos-U85上使用PyTorch與ExecuTorch

   

在快速發展的機器學習領域,PyTorch憑藉其靈活性和全面的生態系統,已成為模型開發的熱門框架。Arm與Meta合作在ExecuTorch導入了對Arm平台的支援,進一步簡化了模型演算法開發過程,實現無縫地在邊緣端裝置上部署PyTorch模型。

高效能的Arm Ethos-U85 NPU可滿足在邊緣端日益成長的運行先進人工智慧(AI)推論工作負載的需求,包括諸如大型語言模型等基於Transformer的網路。Arm針對Ethos-U提供參考設計,如 Arm Corstone-320物聯網參考設計平台,以加速和簡化晶片開發週期。參考設計平台中包含固定虛擬平台(Fixed Virtual Platform,FVP)等許多項目,FVP可模擬整個系統,為在Ethos-U85平台上進行尖端的嵌入式軟體發展和類神經網路部署提供支援。

Arm透過在Ethos-U85上支援ExecuTorch測試版,為開發人員建構物聯網邊緣端應用提供了更多支援。開發人員可以借助ExecuTorch,高效率地部署原生開發的PyTorch模型,基於Arm平台建構出智慧且回應迅速的物聯網(IoT)解決方案。

隨著該套裝軟體的推出,想要創建邊緣端AI應用的開發人員,能夠在平台上市前數月就開始模型和應用的軟體發展工作。

在Ethos-U85上開始使用ExecuTorch

ExecuTorch GitHub公共程式碼資源庫中提供了完整的開發環境。其中包含一個整合且經過測試的開發流程和所有必要元件。

三個簡單的步驟如下所示:

  1. 設置ExecuTorch
  2. 設置 Arm Build 環境
  3. 在arm_executor_runner上編譯並執行模型

之後就可以在此流程基礎上編譯和執行模型,從Ethos-U85驅動程式採集週期數目資訊等runtime狀態。

為了讓終端使用者更輕鬆地完成此過程,Arm還在ExecuTorch資源庫添加了腳本(scripts):

  1. 設置 ExecuTorch
  2. setup.sh: 下載必要的軟體
  3. run.sh: 在Corstone-320 FVP上編譯並執行模型

要建構其他模型,可使用提前編譯器(ahead of time compiler)腳本aot_arm_compiler.py,它能將 PyTorch項目程式碼(nn.module)轉換為 ExecuTorch 項目程式碼(.pte flatbuffer 文件)。要編寫使用ExecuTorch 的自訂應用,可以按照 executor_runner 範例應用中的應用流程進行操作。

我們支援大約40個核心ATen運算子,並且支援Mobilenetv2等模型的端對端部署。隨著陸續支援更多運算子,我們將能夠支援更多的PyTorch 模型。後續添加的更多功能,將透過 pytorch.org 上的Ethos-U教學材料進行示範。

部署流程運作原理細節

利用ExecuTorch的可擴展性和Arm的張量運算子集架構(Tensor Operator Set Architecture,TOSA)的特性,Arm在ExecuTorch中實現了Ethos-U支援。Ethos-U編譯器Vela已透過 TOSA前端獲得強化,可以為Ethos-U系列中的所有產品編譯模型。

為了將這些元件整合為一個連貫的工作流程,需要遵循以下步驟:

  1. 將 PyTorch 模型轉換為可部署的 ExecuTorch 程式(AOT 流程)
  2. 將ExecuTorch 程式編譯為可執行檔,以便部署在 Corstone-320 上(runtime流程)

ExecuTorch 的 AOT  (ahead of time)流程

此過程首先使用PyTorch 的dynamo export功能,將PyTorch模型轉換為已量化的TOSA描述。然後,就能利用Vela編譯TOSA前端生成一組Ethos-U 機器指令,即指令流(command stream)。接著,指令流包裹到Executorch程式中,由 flatbuffer 檔(.pte)表示。該檔案中包含了ExecuTorch runtime 使用Ethos-U硬體執行推論所需的所有內容。

ExecuTorch runtime 流程

ExecuTorch runtime以 C/C++ 編寫,可支援多種後端。Arm對ExecuTorch runtime進行了擴展,以包含對Ethos-U裝置驅動程式的支援。按照此流程操作,將生成一個獨立的、經過編譯的可執行檔。在 Corstone-320 FVP上部署可執行檔非常簡單,只需要在呼叫FVP時使用適當的旗標即可。

Ethos-U85與Corstone-320

Ethos-U系列NPU為邊緣AI提供高效能、高效率的解決方案。Ethos-U55(同樣由ExecuTorch支援)廣泛應用於眾多Arm Cortex-M異質系統,而Ethos-U65則將Ethos-U系列的適用性擴展到以Cortex-A為基礎的系統,並提升了效能。

Ethos-U85進一步擴展了Ethos-U產品線,支援當前以及未來更多使用Transformer類神經網路架構的邊緣端工作負載。與前代產品相比,Ethos-U85的效能提升了四倍,效率提高了20%,在最普遍的神經網路上的利用率高達 85%。

Ethos-U85 的顯著特性包括:

  • 配置範圍從128到2048 MAC/週期,在1GHz下可提供高達4 TOP/s的效能。
  • 相容基於Cortex-A和Cortex-M的系統。
  • 透過支援TOSA,對主要的類神經網路提供原生支援。
  • 完整功能列表請參閱Ethos-U85技術概述
A typical compute subsystem design with Ethos-U85

以Ethos-U85設計的典型運算子系統。

未來規劃

Arm會陸續增加新的運算子支援,擴展ExecuTorch核心ATen運算子的覆蓋範圍,並支援更多模型在Ethos-U上運作。Arm將持續專注於提高效能,以確保模型在Ethos-U上的執行。

ExecuTorch委派框架(delegate framework)支援回退機制( fallback),將Ethos-U不支援的運算子改由CPU運作,使用參考核心( reference kernel)執行。Arm致力於使用CMSIS-NN在Cortex-M CPU上實現卓越效能,為回退的運算子提供更好的支援,並確保在沒有Ethos-U功能的裝置上也能達到良好的效能。

上述的套裝軟體和Corstone-320 FVP是Arm在簡化應用開發道路上邁出的又一步,歡迎各位開發人員繼續探索程式碼和建構過程,並向Arm提供回饋意見。同時,Arm 也致力於支援更多特性和模型,並盡可能充分發揮硬體效能。

 

(參考原文:Getting started with PyTorch, ExecuTorch, and Ethos-U85 in three easy steps;本文共同作者群為Arm 工程部應用機器學習總監 Rob Elliott、Arm 工程部首席工程師 Fredrik Knutsson、Arm 物聯網事業部技術管理總監 Mark Quartermain。本文中文版校閱者為 Arm 主任應用工程師林宜均)

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: Arm作者群

來自各方的Arm開發者社群專家。

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *