作者:Liliya Wu,Arm Senior Ecosystem Specialist
邊緣端的AI資料處理工作負載正在改變各種應用案例與使用者體驗。Arm第三代Ethos-U85 NPU有助於滿足未來邊緣AI應用案例的需求。Ethos-U85是目前效能最高的 Ethos NPU,可因應在邊緣端執行先進AI推論工作負載日益成長的需求,包括大型語言模型(LLM)等基於Transformer的網路。
Arm也提供參考設計。例如,Corstone-320 IoT參考設計協助整合了Ethos-U85等多項技術,用來加速並簡化晶片開發週期。此參考設計也協助包含Fixed Virtual Platform(FVP)。FVP 可模擬完整系統,讓開發者能為Ethos-U85進行尖端的嵌入式軟體開發與類神經網路部署。
這篇技術性部落格文章中的範例程式碼已在 Corstone-320 Fixed Virtual Platform(FVP)上完成測試。如需了解Ethos-U85、Corstone-320參考設計協助,以及Arm FVP的更多資訊與深入見解,請造訪Arm.com或developer.arm.com。
開始在Ethos-U85上使用PaddlePaddle
當Arm與領先的開源深度學習平台強強聯合會帶來什麼?那就是推動創新的「火箭燃料」。Arm攜手百度,利用雙方在高效能運算與AI模型方面的技術經驗,助力廣大開發者加速邊緣AI解決方案的開發和部署。
透過雙方合作,Arm 與百度攜手在 Ethos-U85 NPU 處理器上部署了九個典型的 PaddleLite 視覺模型。
截至目前為止,支援的模型包括:
1. 影像分類:PPLCNetV2、MobileNetV1
2. 物件偵測:PicoDetV2
3. 人臉偵測:BlazeFace
4. 姿勢偵測:PP_TinyPose
5. 影像分割:HumanSegV2
6. 光學字元辨識:ch_ppocr_mobile_v2.0_det、ch_ppocr_mobile_v2.0_rec、PicoDet_layout_1x
Arm-Examples GitHub儲存庫提供完整的開發環境,並包含六個範例應用案例。本文我們將示範一個工作流程範例,將「ch_ppocr_mobile_v2.0_rec」模型(用於 OCR 應用案例)部署至 Ethos-U85 NPU。我們也會說明部署其他常見模型時的注意事項。如需詳細技術指引,請參閱該儲存庫中各模型的部署指南。
開始之前,需要確保你的運作環境軟體配置滿足以下條件:
• Python 3.9 版本
• Cmake 3.21 或 3.22 版本
• 可以創建虛擬環境的工具,例如:venv(本文使用)、Anaconda 等
• 測試系統環境為 ubuntu 20.04 或 22.04
步驟 1:創建虛擬運作環境,用於模型的訓練或部署
# Create virtual environment with Python 3.9
python3.9 -m venv ppocr_rec
source ppocr_rec/bin/activate
cd ppocr_rec
步驟2:從 GitHub 程式庫下載範例程式碼,並安裝所需套裝軟體
# Download example source code
git clone https://github.com/Arm-Examples/Paddle-on-Ethos-U.git
cd Paddle-on-Ethos-U
git lfs pull
# Configure inference environment
bash install.sh
步驟3:下載PaddleLite模型
# Download ppocr_rec model
wget -O ./model_zoo/PpocrRec_infer_int8/ch_ppocr_mobile_v2.0_rec_slim_opt.nb
paddleocr.bj.bcebos.com/dygraph_v2.0/lite/ch_ppocr_mobile_v2.0_rec_slim_opt.nb
步驟4:使用程式庫中的模型轉換腳本 (write_model.py) 轉換模型
本文所使用模型的主要包括以下三個模型轉換步驟:
a) 將PaddleLite格式的模型(尾碼為 .nb 格式的檔)轉換成中間表示 (IR) 圖形(尾碼為 .json 格式的檔),該步驟生成的中間表示結構圖,將自動與輸入的PaddleLite模型檔位於同一目錄下(已知限制:–out_dir 參數針對此轉換情況不生效)。
# Convert .nb model into IR file (.json file)
python ./readnb/write_model.py --model_path ./model_zoo/PpocrRec_infer_int8/ch_ppocr_mobile_v2.0_rec_slim_opt.nb --out_dir . # "g_ch_ppocr_mobile_v2.0_rec_slim_opt.json" is generated under the same directory with input model file
b) 將中間表示IR模型進行手動調整,由於調整部分較分散,為便於開發者體驗,可透過補丁包的方式快速完成模型調整。
# Modify the IR file with patch quickly. You could also do this modification manually.
patch -p0 model_zoo/PpocrRec_infer_int8/g_ch_ppocr_mobile_v2.0_rec_slim_opt.json < readnb/test_asset/ppocr_rec/g_ch_ppocr_rec.patch
c) 或者,再次使用轉換腳本將手動調整後的中間表示 IR 模型轉換為 TOSA 圖並使用官方提供的編譯器 Ethos-U Vela 進行模型的編譯。更多關於 Ethos-U Vela 編譯器的資訊可以查看 PyPI社群的相關介紹,或可瀏覽 developer.arm.com 中的相關技術指南。也可選擇跳過此步驟,因為在步驟 5 中會自動執行該轉換命令。
步驟5:建構OCR識別應用並查看結果
# Run inference
bash paddle_verify.sh -m ppocr_rec -p ./model_zoo/PpocrRec_infer_int8/test.jpg
範例測試結果如下:
telnetterminal0: Listening for serial connection on port 5000
telnetterminal1: Listening for serial connection on port 5001
telnetterminal5: Listening for serial connection on port 5002
telnetterminal2: Listening for serial connection on port 5003
handles.inputs->count is 1
input tensor scratch_addr address 0x7c11f840
input shapes 122880
copy input data into scratch_addr
handles.outputs->io[x] shapes is 655360
output tensor output_addr address 0x7c1bf840
output shapes 655360
output bin [0x7c1bf840 655360]
handles.outputs->count is 1
Shape : 655360
Rec Reuslut:
Confidence: 0.966813
============ NPU Inferences : 1 ============
Profiler report, CPU cycles per operator:
ethos-u : cycle_cnt : 2083105832 cycles
Operator(s) total: 574619648 CPU cycles
Inference runtime: -987073648 CPU cycles total
NOTE: CPU cycle values and ratio calculations require FPGA and identical CPU/NPU frequency
Inference CPU ratio: 100.00
Inference NPU ratio: 0.00
cpu_wait_for_npu_cntr : 574619648 CPU cycles
Ethos-U PMU report:
ethosu_pmu_cycle_cntr : 2083105832
ethosu_pmu_cntr0 : 479
ethosu_pmu_cntr1 : 21
ethosu_pmu_cntr2 : 118511
ethosu_pmu_cntr3 : 0
ethosu_pmu_cntr4 : 592
Ethos-U PMU Events:[ETHOSU_PMU_SRAM_RD_DATA_BEAT_RECEIVED, ETHOSU_PMU_SRAM_WR_DATA_BEAT_WRITTEN, ETHOSU_PMU_EXT_RD_DATA_BEAT_RECEIVED, ETHOSU_PMU_EXT_WR_DATA_BEAT_WRITTEN, ETHOSU_PMU_NPU_IDLE]
============ Measurements end ============
Running Model Exit Successfully
Application exit code: 0.
Info: /OSCI/SystemC: Simulation stopped by user.
[run_fvp] Simulation complete, 0 Dump to out_tensors.bin
在基於Arm架構的邊緣AI 裝置上部署PaddlePaddle模型,開發者往往需要最佳化模型、準備軟體並選擇合適的硬體。上述介紹的步驟將有助於開發者高效率地在邊緣端部署AI應用,實現貼近資料來源的快速推論與處理。快來動手嘗試吧!
也歡迎透過Arm的IoT Learning Paths,深入了解如何將AI模型部署至Arm架構的邊緣AI硬體應用案例。
(參考原文:Deploying PaddlePaddle models on Arm Ethos-U85: A step-by-step tutorial;責編:Judith Cheng;本文中文版校閱者為Arm首席應用工程師林宜均)
- 【Arm的AI世界】按步驟學習在Arm Ethos-U85上部署PaddlePaddle模型 - 2026/07/08
- 【Arm的AI世界】打造車用裝置端多模態助理 - 2026/06/16
- 【Arm的AI世界】運算平台開發者必看:無須硬體也能進行OpenBMC+UEFI模擬與驗證! - 2026/04/09
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!


