
為了方便大家快速理解,以下內容使用 Google NotebookLM 產生相關文字及語音解說,如想深入了解的朋友可參考原始來源。
原始Youtube影片: "LIS25 321 Optimizing Edge AI with Executorch and Ethos U"
影片上傳日期: 2025/5/31
主要講者: Erik Lundell
主題: 利用 ExecuTorch 和 Arm Ethos U NPU 優化邊緣 AI
雙人對話式 Podcast 重點摘要:
核心概念與要點:
- PyTorch 與 Executorch 概覽:
- PyTorch 是 Meta 的開源機器學習框架,強調「能駭、可塑、靈活」(able, hackable, flexible)。
- PyTorch 是一個大型專案,包含 8 到 11 個子儲存庫,並且在 2024 年有 3500 名貢獻者。
- Executorch 是 PyTorch 的一個子儲存庫,旨在為各種不同的邊緣設備提供完整的部署解決方案。
- Executorch 的一個關鍵優勢是在運行時無需 Python 環境,並且支援裸機環境,即無需操作系統。
- Executorch 提供一個簡單的解決方案,可以使用相同的高級框架,同時透過優化的後端實現在不同平台上獲得優化的性能。
- 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 之間的上下文切換。
- Executorch 針對 Ethos NPU 的後端開發:
- ARM 團隊與 Executorch 專案已合作約一年半。
- 在 2023 年 10 月 Executorch Alpha 版本發布時,就已經有一個針對 Ethos-U 的概念驗證後端。
- 目前 (截至演講時間) 該後端處於 Beta 0.6 版本,並已進行了大幅改進。
- 目標是在今年 10 月達到 Ethos-U 的完整支援,並在框架中全面支援 Ethos-U。
- 在 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 運行時,負責遍歷指令列表、處理記憶體和調用操作符核心。
- 框架中有一個簡單的運行器範例,可用於測試和作為應用程式開發的起點。
- 模擬執行與虛擬平台 (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) 環境。
- 後端狀態與未來發展:
- 後端已取得很大進展,目前已可供使用,並提供範例。
- 團隊樂於接收回饋,對問題反應迅速。
- 可以透過在 GitHub 上使用 "partner ARM" 標籤提出 issues,或加入 Executorch 的 Discord 頻道與團隊聯繫。
- 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 推理提供了強大的解決方案。
請注意: 由於來源是演講摘錄,部分語句可能不完整或非標準格式,此簡報已盡量提煉核心信息。
沒有留言:
張貼留言