當(dāng) Arm 與領(lǐng)先的開源深度學(xué)習(xí)平臺強(qiáng)強(qiáng)聯(lián)合,會帶來什么?那就是推動創(chuàng)新的“火箭燃料”。Arm 攜手百度,利用雙方在高能效計算平臺與 AI 模型的技術(shù)積累,助力廣大開發(fā)者加快邊緣 AI 解決方案的開發(fā)和部署。
為了加速邊緣 AI 的創(chuàng)新,并將機(jī)器學(xué)習(xí)能力高效地應(yīng)用于嵌入式設(shè)備,Arm 與百度緊密合作,在Arm Ethos-U85上成功實現(xiàn)了涵蓋圖像分類、目標(biāo)檢測、人臉檢測、姿勢檢測、圖像分割以及光學(xué)字符識別應(yīng)用場景的經(jīng)典 PaddleLite 視覺模型的流暢部署。
Arm-Examples 的 GitHub 公共倉庫中已提供涵蓋上述六個典型應(yīng)用場景的完整開發(fā)環(huán)境。本文將重點說明將 OCR 場景中的識別模型部署在 Ethos-U85 處理器上的工作流程,以及部署其他模型時的一些注意事項。如需詳細(xì)了解其他案例的技術(shù)細(xì)節(jié),請參考倉庫中對應(yīng)模型的部署指南。
代碼倉庫(即將上線):https://github.com/Arm-Examples/Paddle-on-Ethos-U
如果你還想了解更多有關(guān)模型部署的技術(shù)細(xì)節(jié),那下周WAVE SUMMIT 深度學(xué)習(xí)開發(fā)者大會 2025上的這場 Arm 技術(shù)分享可絕對不能錯過!快來 Mark 住以下議程!
基于 Armv9 邊緣 AI 計算平臺,實現(xiàn) ML 模型高性能部署
9 月 9 日 13:30 - 13:45
北京望京凱悅酒店
硬件論壇 · 軟硬協(xié)同 模力無限
邊緣側(cè)的人工智能 (AI) 數(shù)據(jù)處理工作負(fù)載正在不斷改變應(yīng)用場景和用戶體驗。Ethos-U85正是為了滿足未來邊緣 AI 應(yīng)用的需求而設(shè)計。為了加快芯片開發(fā)周期并簡化流程,Arm 提供了包括 Arm Corstone-320 物聯(lián)網(wǎng)參考設(shè)計平臺[1]在內(nèi)的一整套參考設(shè)計。本篇技術(shù)博客的案例代碼正是在 Corstone-320 的固定虛擬平臺[2]上進(jìn)行測試。
開始之前,需要確保你的運(yùn)行環(huán)境的軟件配置滿足以下條件:
Python 3.9 版本
Cmake 3.21 或 3.22 版本
可以創(chuàng)建虛擬環(huán)境的工具,例如:venv(本文使用)、Anaconda 等
測試系統(tǒng)環(huán)境為 ubuntu 20.04 或 22.04
步驟 1:創(chuàng)建虛擬運(yùn)行環(huán)境,用于模型的訓(xùn)練或部署
# create virtual environment
python3.9 -m venv ppocr_rec
source ppocr_rec/bin/activate
注意:代碼倉庫中部分其他模型由于存在模型微調(diào)步驟,其模型訓(xùn)練和部署環(huán)境可能有差異,請參考代碼倉庫內(nèi)部署指南。
步驟 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:使用代碼倉庫中的模型轉(zhuǎn)換腳本
(write_model.py) 轉(zhuǎn)換模型
本文所使用模型的主要包括以下三個模型轉(zhuǎn)換步驟:
將飛槳格式的模型(后綴為 .nb 格式的文件)轉(zhuǎn)換成中間表示 IR 文件(后綴為 .json 格式的文件),該步驟生成的中間表示 IR 文件將自動與輸入的飛槳模型文件位于同一目錄下(已知限制:--out_dir 參數(shù)針對此轉(zhuǎn)換情況不生效)。
# 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 模型進(jìn)行手動調(diào)整,由于調(diào)整部分較分散,為便于開發(fā)者體驗,可通過補(bǔ)丁包的方式快速完成模型調(diào)整。
# 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 ../..
可選地,再次使用轉(zhuǎn)換腳本將手動調(diào)整后的中間表示 IR 模型轉(zhuǎn)換為 TOSA 圖[3]并使用官方提供的編譯器 Ethos-U Vela 進(jìn)行模型的編譯。更多關(guān)于 Ethos-U Vela 編譯器的信息可以查看 PyPI 社區(qū)的相關(guān)介紹[4],或可訪問 developer.arm.com 中的相關(guān)技術(shù)指南[5]。也可選擇跳過此步驟,因為在步驟 5 中會自動執(zhí)行該轉(zhuǎn)換命令。
# 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:構(gòu)建 OCR 識別應(yīng)用并查看結(jié)果
cd ..
./paddle_verify.sh -m ppocr_rec -p ./model_zoo/PpocrRec_infer_int8/test.jpg
示例測試結(jié)果如下:
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: 純臻營養(yǎng)護(hù)發(fā)素
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 架構(gòu)的邊緣 AI 設(shè)備上部署飛槳模型,開發(fā)者往往需要優(yōu)化模型、準(zhǔn)備軟件并選擇合適的硬件。上述介紹的步驟將有助于開發(fā)者高效地在邊緣側(cè)部署 AI 應(yīng)用,實現(xiàn)貼近數(shù)據(jù)源的快速推理與處理??靵韯邮謬L試吧!
-
ARM
+關(guān)注
關(guān)注
135文章
9452瀏覽量
385789 -
模型
+關(guān)注
關(guān)注
1文章
3611瀏覽量
51435 -
邊緣AI
+關(guān)注
關(guān)注
0文章
185瀏覽量
5720
原文標(biāo)題:手把手教你在 Arm 邊緣 AI 計算平臺上部署飛槳模型
文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Arm方案 基于Arm架構(gòu)的邊緣側(cè)設(shè)備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型
邊緣側(cè)部署大模型優(yōu)勢多!模型量化解決邊緣設(shè)備資源限制問題
AI模型部署邊緣設(shè)備的奇妙之旅:如何實現(xiàn)手寫數(shù)字識別
AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測模型
介紹在STM32cubeIDE上部署AI模型的系列教程
如何使用Paddle2ONNX模型轉(zhuǎn)換工具將飛槳模型轉(zhuǎn)換為ONNX模型?
如何用Arm虛擬硬件在Arm Cortex-M上部署PaddlePaddle
在Arm虛擬硬件上部署PP-PicoDet模型
嵌入式邊緣AI應(yīng)用開發(fā)指南
【報名有獎】Imagination+百度飛槳模型部署實戰(zhàn) Workshop 邀您參加

【RK3588平臺】使用飛槳FastDeploy進(jìn)行AI部署

評論