當 Arm 與領先的開源深度學習平臺強強聯合,會帶來什么?那就是推動創新的“火箭燃料”。Arm 攜手百度,利用雙方在高能效計算平臺與 AI 模型的技術積累,助力廣大開發者加快邊緣 AI 解決方案的開發和部署。
為了加速邊緣 AI 的創新,并將機器學習能力高效地應用于嵌入式設備,Arm 與百度緊密合作,在Arm Ethos-U85上成功實現了涵蓋圖像分類、目標檢測、人臉檢測、姿勢檢測、圖像分割以及光學字符識別應用場景的經典 PaddleLite 視覺模型的流暢部署。
Arm-Examples 的 GitHub 公共倉庫中已提供涵蓋上述六個典型應用場景的完整開發環境。本文將重點說明將 OCR 場景中的識別模型部署在 Ethos-U85 處理器上的工作流程,以及部署其他模型時的一些注意事項。如需詳細了解其他案例的技術細節,請參考倉庫中對應模型的部署指南。
代碼倉庫(即將上線):https://github.com/Arm-Examples/Paddle-on-Ethos-U
如果你還想了解更多有關模型部署的技術細節,那下周WAVE SUMMIT 深度學習開發者大會 2025上的這場 Arm 技術分享可絕對不能錯過!快來 Mark 住以下議程!
基于 Armv9 邊緣 AI 計算平臺,實現 ML 模型高性能部署
9 月 9 日 13:30 - 13:45
北京望京凱悅酒店
硬件論壇 · 軟硬協同 模力無限
邊緣側的人工智能 (AI) 數據處理工作負載正在不斷改變應用場景和用戶體驗。Ethos-U85正是為了滿足未來邊緣 AI 應用的需求而設計。為了加快芯片開發周期并簡化流程,Arm 提供了包括 Arm Corstone-320 物聯網參考設計平臺[1]在內的一整套參考設計。本篇技術博客的案例代碼正是在 Corstone-320 的固定虛擬平臺[2]上進行測試。
開始之前,需要確保你的運行環境的軟件配置滿足以下條件:
Python 3.9 版本
Cmake 3.21 或 3.22 版本
可以創建虛擬環境的工具,例如:venv(本文使用)、Anaconda 等
測試系統環境為 ubuntu 20.04 或 22.04
步驟 1:創建虛擬運行環境,用于模型的訓練或部署
# create virtual environment
python3.9 -m venv ppocr_rec
source ppocr_rec/bin/activate
注意:代碼倉庫中部分其他模型由于存在模型微調步驟,其模型訓練和部署環境可能有差異,請參考代碼倉庫內部署指南。
步驟 2:從 GitHub 代碼倉庫下載示例代碼,
并安裝所需軟件包
# download source code
git clone https://github.com/Arm-Examples/Paddle-on-Ethos-U
# configure virtual environment
cd Paddle-on-Ethos-U
./install.sh
步驟 3:下載飛槳模型
# download model
wget -O./model_zoo/PpocrRec_infer_int8/ch_ppocr_mobile_v2.0_rec_slim_opt.nb
https://paddleocr.bj.bcebos.com/dygraph_v2.0/lite/ch_ppocr_mobile_v2.0_rec_slim_opt.nb
步驟 4:使用代碼倉庫中的模型轉換腳本
(write_model.py) 轉換模型
本文所使用模型的主要包括以下三個模型轉換步驟:
將飛槳格式的模型(后綴為 .nb 格式的文件)轉換成中間表示 IR 文件(后綴為 .json 格式的文件),該步驟生成的中間表示 IR 文件將自動與輸入的飛槳模型文件位于同一目錄下(已知限制:--out_dir 參數針對此轉換情況不生效)。
# Convert nb models to IR
python ./readnb/write_model.py --
model_path ./model_zoo/PpocrRec_infer_int8/ch_ppocr_mobile_v2.0_rec_slim_opt.nb --
out_dir .
將中間表示 IR 模型進行手動調整,由于調整部分較分散,為便于開發者體驗,可通過補丁包的方式快速完成模型調整。
# Finish IR model adjustment by adding patch
cp ./model_zoo/PpocrRec_infer_int8/g_ch_ppocr_mobile_v2.0_rec_slim_opt.json ./readnb/test_asset/ppocr_rec/
cd ./readnb/test_asset/ppocr_rec/
patch -p0 g_ch_ppocr_mobile_v2.0_rec_slim_opt.json < g_ch_ppocr_rec.patch
cd ../..
可選地,再次使用轉換腳本將手動調整后的中間表示 IR 模型轉換為 TOSA 圖[3]并使用官方提供的編譯器 Ethos-U Vela 進行模型的編譯。更多關于 Ethos-U Vela 編譯器的信息可以查看 PyPI 社區的相關介紹[4],或可訪問 developer.arm.com 中的相關技術指南[5]。也可選擇跳過此步驟,因為在步驟 5 中會自動執行該轉換命令。
# Finish final model conversion and do model compilation with vela
python write_model.py --
model_path ./test_asset/ppocr_rec/g_ch_ppocr_mobile_v2.0_rec_slim_opt.json --
out_dir ../download_nb --do_vela
步驟 5:構建 OCR 識別應用并查看結果
cd ..
./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 設備上部署飛槳模型,開發者往往需要優化模型、準備軟件并選擇合適的硬件。上述介紹的步驟將有助于開發者高效地在邊緣側部署 AI 應用,實現貼近數據源的快速推理與處理。快來動手嘗試吧!
-
ARM
+關注
關注
135文章
9546瀏覽量
391376 -
模型
+關注
關注
1文章
3730瀏覽量
52046 -
邊緣AI
+關注
關注
0文章
230瀏覽量
6080
原文標題:手把手教你在 Arm 邊緣 AI 計算平臺上部署飛槳模型
文章出處:【微信號:Arm社區,微信公眾號:Arm社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Arm方案 基于Arm架構的邊緣側設備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型
如何在NVIDIA Jetson AGX Thor上部署1200億參數大模型
AI模型部署邊緣設備的奇妙之旅:如何實現手寫數字識別
AI模型部署邊緣設備的奇妙之旅:目標檢測模型
介紹在STM32cubeIDE上部署AI模型的系列教程
如何用Arm虛擬硬件在Arm Cortex-M上部署PaddlePaddle
在Arm虛擬硬件上部署PP-PicoDet模型
嵌入式邊緣AI應用開發指南
【報名有獎】Imagination+百度飛槳模型部署實戰 Workshop 邀您參加
【RK3588平臺】使用飛槳FastDeploy進行AI部署
如何在基于Arm架構的邊緣AI設備上部署飛槳模型
評論