# 【簡報導讀-001】 利用 ExecuTorch 和 Arm Ethos U NPU 優化邊緣 AI  **為了方便大家快速理解,以下內容使用 Google NotebookLM 產生相關文字及語音解說,如想深入了解的朋友可參考原始來源。** **原始Youtube影片: "[LIS25 321 Optimizing Edge AI with Executorch and Ethos U](https://www.youtube.com/watch?v=ADWKQeS_NdY)"** 影片上傳日期: 2025/5/31 主要講者: Erik Lundell 主題: 利用 ExecuTorch 和 Arm Ethos U NPU 優化邊緣 AI {%youtube ADWKQeS_NdY%} ## Podcast 雙人對話式 Podcast 重點摘要: {%youtube vBufon_Tp2Q%} ## 核心概念與要點: 1. PyTorch 與 Executorch 概覽: * PyTorch 是 Meta 的開源機器學習框架,強調「能駭、可塑、靈活」(able, hackable, flexible)。 * PyTorch 是一個大型專案,包含 8 到 11 個子儲存庫,並且在 2024 年有 3500 名貢獻者。 * Executorch 是 PyTorch 的一個子儲存庫,旨在為各種不同的邊緣設備提供完整的部署解決方案。 * Executorch 的一個關鍵優勢是在運行時無需 Python 環境,並且支援裸機環境,即無需操作系統。 * Executorch 提供一個簡單的解決方案,可以使用相同的高級框架,同時透過優化的後端實現在不同平台上獲得優化的性能。 2. ARM Ethos NPU 系列: * Ethos 是 ARM 設計的高度低功耗 MPU (機器處理單元),專為 IoT 使用案例設計。 * 目前有三個主要世代:Ethos-U55、Ethos-U65 (已在市場上大量產品中使用) 和最新一代 Ethos-U85。 * Ethos-U55 和 U65 具有靈活的 CPU 集成,可以與 Cortex-M 或 Cortex-A 處理器配對。 * Ethos-U85 是最新一代,在 1 GHz 時鐘頻率下可達到高達 4 TOPS 的性能。 * Ethos NPU 系列針對記憶體限制的系統進行了優化,包含 sparsity (稀疏性) 等機制,支援在設備上運行整個推理過程。 * Ethos NPU 原生支援常見的架構,如 Transformer 和 CNN 網路,避免了 CPU 和 NPU 之間的上下文切換。 3. Executorch 針對 Ethos NPU 的後端開發: * ARM 團隊與 Executorch 專案已合作約一年半。 * 在 2023 年 10 月 Executorch Alpha 版本發布時,就已經有一個針對 Ethos-U 的概念驗證後端。 * 目前 (截至演講時間) 該後端處於 Beta 0.6 版本,並已進行了大幅改進。 * 目標是在今年 10 月達到 Ethos-U 的完整支援,並在框架中全面支援 Ethos-U。 4. 在 Ethos NPU 上部署模型的流程: * 目標是在嵌入式平台上執行推理,並利用 Ethos-U 進行加速。 * 流程分為提前編譯 (Ahead-of-Time, AOT) 和運行時 (Runtime) 兩個主要階段。 * 提前編譯流程: * 從 PyTorch 模型開始 (Python class)。 * 使用 torch.export 將模型匯出 (export) 為可由框架處理的表示形式。 * 與 torch.compile 不同的是,export 需要捕獲整個模型到一個單一圖形中,因為運行時沒有 Python 環境。 * 進行量化 (quantization):由於 Ethos-U 是整數處理器,量化是必需的。可以利用 torch.export 中的量化功能,並有針對 Ethos-U 的專門量化器來確保正確性。 * 進行分區 (partitioning):決定模型的哪些部分由 NPU 加速執行,哪些部分可能回退到 CPU。ARM 的分區策略目標是分區整個圖形以在 NPU 上執行。 * 進行降低 (lowering):將中間表示圖形轉換為可由運行時使用的格式。這包括創建委託 (delegates) (在運行時加載到 NPU 的工作負載)、記憶體規劃以及將整個程序序列化 (serialization) 到一個單一的 PTE (PyTorch ExecuTorch) 文件中。 * 使用 Ethos-U 後端進行編譯:針對每個分區,將 IR 轉換為 TOSA IR (ARM 的機器學習應用標準) 後,送入 Vela 編譯器,生成 Ethos-U 的位元流,並烘焙到 PTE 文件中。 * PTE 文件: 是一個單一的巨石文件 (monolith file),包含運行時所需的一切。 * 運行時流程: * 運行時消耗 PTE 文件,該文件包含一系列的調用,其中 NPU 部分是一個大的委托調用。 * 當 Executorch 框架遇到委托調用時,會調用 ARM Ethos-U 後端來執行工作負載。 * 可以在實際硬體上運行,也可以在模擬器 (simulators) 上運行。 * 應用程式會包含一個小型 (約 50 KB) 的 Executorch 運行時,負責遍歷指令列表、處理記憶體和調用操作符核心。 * 框架中有一個簡單的運行器範例,可用於測試和作為應用程式開發的起點。 5. 模擬執行與虛擬平台 (FVP): * ARM 提供稱為虛擬平台 (Virtual Platforms, FVPs) 的模擬器,模仿 CoreStone 參考系統。 * Executorch 已集成了 Corestone 300 (Cortex M55 + Ethos U55) 和 Corestone 320 (Cortex M85 + Ethos U85) 這兩個 FVP。 * 這些 FVP 可供免費下載使用。 * 使用 FVP 可以在沒有開發板的情況下驗證功能,並估計推理性能。 * 可以使用後端提供的實用腳本在 FVP 上運行 PTE 文件。 * 在 FVP 上運行是裸機 (bare metal) 環境。 6. 後端狀態與未來發展: * 後端已取得很大進展,目前已可供使用,並提供範例。 * 團隊樂於接收回饋,對問題反應迅速。 * 可以透過在 GitHub 上使用 "partner ARM" 標籤提出 issues,或加入 Executorch 的 Discord 頻道與團隊聯繫。 7. Q&A 環節補充要點: * 關於 PTE 文件內容:原本講者表示 PTE 文件包含核心二進位檔,但後來更正說明核心是包含在構建的運行時中,而不是在 PTE 文件中。構建 ARM 後端時需要將其編譯到框架中。 * 討論到與其他嵌入式 ML 工作的潛在結合,例如針對 Corestone 320 運行的 FreeRTOS 參考實現中開發的部分模型更新功能。 ## 總結: 本次演講詳細介紹了如何利用 PyTorch 的 Executorch 框架與 ARM Ethos NPU 系列協同工作,實現邊緣 AI 模型的優化部署。Executorch 提供了一個無 Python、可支援裸機的統一框架,而 Ethos NPU 提供高效能、低功耗的硬體加速。通過提前編譯流程 (匯出、量化、分區、降低和編譯) 生成一個單一的 PTE 文件,並在輕量級的 Executorch 運行時中執行。ARM 團隊在 Ethos-U 後端上的工作已接近成熟,並提供了方便的虛擬平台模擬器,極大地簡化了開發和測試流程。這為在資源受限的邊緣設備上實現高效的 AI 推理提供了強大的解決方案。 請注意: 由於來源是演講摘錄,部分語句可能不完整或非標準格式,此簡報已盡量提煉核心信息。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up