戰(zhàn):一行代碼切換 CPU/GPU/TensorRT/IPU 推理后端)
人工智能深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)NLP語(yǔ)音【免費(fèi)下載鏈接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.項(xiàng)目地址https://gitcode.com/gh_mirrors/mo/models點(diǎn)擊查看免費(fèi)下載本文圍繞 PaddlePaddle 官方維護(hù)的輕量級(jí)圖像分類模型 PP-LCNet 展開(kāi)完整講解如何使用全場(chǎng)景推理部署工具 FastDeploy 完成從預(yù)編譯包安裝、部署示例下載到多硬件推理的端到端流程并對(duì)照倉(cāng)庫(kù)內(nèi)的模型下載表與推理 Benchmark 數(shù)據(jù)幫助讀者在 X86 CPU、NVIDIA GPU 等環(huán)境下快速獲得可復(fù)現(xiàn)、可擴(kuò)展的高性能部署方案。讀完本文你將掌握 PP-LCNet 推理模型的獲取方式、FastDeploy 的安裝與調(diào)用套路以及通過(guò)--device、--use_trt等參數(shù)在不同推理后端之間自由切換的實(shí)戰(zhàn)技能。1. 背景PP-LCNet 與 FastDeploy 的契合點(diǎn)1.1 PP-LCNet面向 CPU 場(chǎng)景的輕量級(jí)骨干網(wǎng)絡(luò)根據(jù)本倉(cāng)庫(kù)模型元數(shù)據(jù)info.yamlPP-LCNet 是一類面向 Intel CPU 端優(yōu)化的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)出自 PaddleClas 倉(cāng)庫(kù)屬于計(jì)算機(jī)視覺(jué)Computer Vision/ 圖像分類Image Classification子任務(wù)在 ImageNet1k 數(shù)據(jù)集上評(píng)測(cè)遵循 Apache 2.0 許可。其論文為PP-LCNet: A Lightweight CPU Convolutional Neural NetworkarXiv 2109.15099。從 introduction_cn.ipynb 可以進(jìn)一步了解PP-LCNet 系列模型由 PaddleCV 團(tuán)隊(duì)提出針對(duì) Intel CPU 硬件平臺(tái)特別優(yōu)化同時(shí)兼顧多種平臺(tái)在推理速度與精度之間取得平衡并可作為骨干網(wǎng)絡(luò)提升目標(biāo)檢測(cè)、語(yǔ)義分割等下游任務(wù)效果。模型在設(shè)計(jì)上融合了四個(gè)幾乎不增加延遲但能提升精度的策略——更好的激活函數(shù)H-Swish、在合適位置添加 SE 模塊、在合適位置使用更大的卷積核、以及在 GAP 后使用更大的 1×1 卷積層。正是因?yàn)?PP-LCNet 的輕量化與多平臺(tái)適配特性它特別適合借助 FastDeploy 這類支持云邊端多硬件的推理工具進(jìn)行統(tǒng)一部署。1.2 FastDeploy全場(chǎng)景、多后端的推理部署工具FastDeploy 是一款全場(chǎng)景、易用靈活、極致高效的 AI 推理部署工具提供開(kāi)箱即用的云邊端部署體驗(yàn)支持 150 Text、Vision、Speech 和跨模態(tài)模型實(shí)現(xiàn) AI 模型端到端的優(yōu)化加速。其支持的硬件包括X86 CPU、NVIDIA GPU、ARM CPU、XPU、NPU、IPU等 10 類云邊端硬件通過(guò)一行代碼即可切換不同推理后端和硬件。使用 FastDeploy 三步即可完成 AI 模型部署安裝 FastDeploy 預(yù)編譯包調(diào)用 FastDeploy 的 API 實(shí)現(xiàn)部署代碼運(yùn)行推理部署。本文檔對(duì)應(yīng)的部署場(chǎng)景為下載 FastDeploy 官方部署示例完成 PP-LCNet 推理模型在 X86 CPU、NVIDIA GPU 上的高性能推理體驗(yàn)GPU 環(huán)境需默認(rèn)就緒如 CUDA 11.2 等。2. 前置準(zhǔn)備安裝 FastDeploy 預(yù)編譯包部署 PP-LCNet 的第一步是安裝 FastDeploy 的 Python 預(yù)編譯包。本文檔使用 GPU 版本并指定從 PaddlePaddle 官方 nightly 構(gòu)建索引安裝pip install fastdeploy-gpu-python0.0.0 -f https://www.paddlepaddle.org.cn/whl/fastdeploy_nightly_build.html其中-f--find-links指定了預(yù)編譯 wheel 包所在的索引頁(yè)面fastdeploy-gpu-python為 GPU 版本包名。安裝完成后即可在 Python 中導(dǎo)入 FastDeploy 并調(diào)用其推理 API。適用前提與限制該安裝命令面向 GPU 推理場(chǎng)景文檔默認(rèn)已準(zhǔn)備好 GPU 環(huán)境CUDA 11.2 等。如需部署到 ARM CPU、XPU、NPU、IPU 等其他硬件或希望完整了解 FastDeploy 的全部部署能力需要查閱 FastDeploy 官方倉(cāng)庫(kù)的對(duì)應(yīng)文檔。3. 運(yùn)行部署示例完整實(shí)操流程3.1 獲取部署示例、模型與測(cè)試圖片首先克隆 FastDeploy 倉(cāng)庫(kù)并進(jìn)入 PP-LCNet 對(duì)應(yīng)的圖像分類部署示例目錄paddleclas 分類示例的 python 版# 下載部署示例代碼 git clone https://github.com/PaddlePaddle/FastDeploy.git cd FastDeploy/examples/vision/classification/paddleclas/python # 下載 LCNet 模型文件和測(cè)試圖片 wget https://bj.bcebos.com/paddlehub/fastdeploy/PPLCNet_x1_0_infer.tgz tar -xvf PPLCNet_x1_0_infer.tgz wget https://gitee.com/paddlepaddle/PaddleClas/raw/release/2.4/deploy/images/ImageNet/ILSVRC2012_val_00000010.jpeg這里下載的PPLCNet_x1_0_infer.tgz是 PP-LCNet x1.0 規(guī)格的推理模型壓縮包解壓后得到 FastDeploy 可直接加載的推理模型目錄測(cè)試圖片ILSVRC2012_val_00000010.jpeg是 ImageNet 驗(yàn)證集樣例用于檢驗(yàn)分類效果。3.2 四種推理方式CPU / GPU / TensorRT / IPU進(jìn)入示例目錄后通過(guò)infer.py傳入模型路徑、圖片路徑以及設(shè)備參數(shù)即可完成推理# CPU 推理 python infer.py --model PPLCNet_x1_0_infer --image ILSVRC2012_val_00000010.jpeg --device cpu --topk 1 # GPU 推理 python infer.py --model PPLCNet_x1_0_infer --image ILSVRC2012_val_00000010.jpeg --device gpu --topk 1 # GPU 上使用 TensorRT 推理 # 注意TensorRT 推理第一次運(yùn)行時(shí)有序列化模型的操作有一定耗時(shí)需要耐心等待 python infer.py --model PPLCNet_x1_0_infer --image ILSVRC2012_val_00000010.jpeg --device gpu --use_trt True --topk 1 # IPU 推理 # 注意IPU 推理首次運(yùn)行會(huì)有序列化模型的操作有一定耗時(shí)需要耐心等待 python infer.py --model PPLCNet_x1_0_infer --image ILSVRC2012_val_00000010.jpeg --device ipu --topk 1命令行參數(shù)含義如下參數(shù)作用取值說(shuō)明--model指定推理模型目錄指向解壓后的PPLCNet_x1_0_infer目錄--image指定測(cè)試圖片路徑指向下載的ILSVRC2012_val_00000010.jpeg--device指定推理設(shè)備/后端cpu、gpu、ipu等一行代碼切換硬件--use_trt是否在 GPU 上啟用 TensorRT 加速True/False--topk返回得分最高的前 K 個(gè)類別示例中--topk 1表示只取 Top-1 結(jié)果這組命令直觀體現(xiàn)了 FastDeploy一行代碼切換不同推理后端和硬件的設(shè)計(jì)理念模型文件、圖片路徑完全一致僅需調(diào)整--device與--use_trt參數(shù)即可在 CPU 普通推理、GPU 原生推理、GPU TensorRT 加速推理、IPU 推理之間切換無(wú)需改寫(xiě)任何業(yè)務(wù)代碼。3.3 運(yùn)行結(jié)果解讀運(yùn)行完成后示例程序輸出的結(jié)果如下PPLCNet_x1_0 cpu_label: 153, cpu_score: 0.612086 ipu_label: 153, ipu_score: 0.612087 PPLCNet_x1_0其中cpu_label/ipu_label為對(duì)應(yīng)設(shè)備推理得到的 ImageNet1k 類別編號(hào)153cpu_score/ipu_score為該類別對(duì)應(yīng)的置信度得分??梢钥吹?CPU 與 IPU 兩種后端得到完全一致的類別編號(hào)置信度也幾乎相同0.612086 vs 0.612087說(shuō)明跨后端推理結(jié)果一致性良好。4. 模型族譜與文件清單PP-LCNet 系列推理模型怎么選FastDeploy 示例中使用的是PPLCNet_x1_0_infer而 PP-LCNet 實(shí)際上是一個(gè)擁有多種寬高比規(guī)格x0_25~x2_5的模型系列。倉(cāng)庫(kù)中的 download_cn.md 給出了完整的推理模型與預(yù)訓(xùn)練模型下載清單輸入尺寸統(tǒng)一為 224模型名稱模型簡(jiǎn)介輸入尺寸PPLCNet_x0_25圖像分類224PPLCNet_x0_35圖像分類224PPLCNet_x0_5圖像分類224PPLCNet_x0_75圖像分類224PPLCNet_x1_0圖像分類224PPLCNet_x1_5圖像分類224PPLCNet_x2_0圖像分類224PPLCNet_x2_5圖像分類224PPLCNet_x0_5_ssld圖像分類SSLD 蒸餾224PPLCNet_x1_0_ssld圖像分類SSLD 蒸餾224PPLCNet_x2_5_ssld圖像分類SSLD 蒸餾224其中_ssld后綴表示使用 SSLD 知識(shí)蒸餾訓(xùn)練得到的模型通常精度更高。規(guī)格數(shù)字x0_25~x2_5越大模型容量與精度越高、推理耗時(shí)越長(zhǎng)實(shí)際部署時(shí)可按精度/速度需求選擇對(duì)應(yīng)規(guī)格FastDeploy 示例默認(rèn)選用的是容量與精度較為均衡的x1_0規(guī)格。5. 性能預(yù)期Benchmark 參考數(shù)據(jù)為了讓讀者對(duì) PP-LCNet 部署后的性能有量化預(yù)期倉(cāng)庫(kù)中的 benchmark_cn.md 給出了基于多種硬件平臺(tái)的推理速度評(píng)測(cè)結(jié)果可作為部署驗(yàn)收與調(diào)優(yōu)的參照。評(píng)測(cè)說(shuō)明原文要點(diǎn)評(píng)測(cè)覆蓋 Intel CPU、V100 GPU、SD855 等多種硬件平臺(tái)所有測(cè)試基于 FP32 精度完成Intel CPU 平臺(tái)開(kāi)啟 MKLDNN 加速V100 GPU 平臺(tái)開(kāi)啟 TensorRT 加速數(shù)據(jù)集使用 ImageNet1k validation。Intel Xeon Gold 6148 上的預(yù)測(cè)速度bs1, thread10ModelLatency(ms)PPLCNet_x0_251.74PPLCNet_x0_351.92PPLCNet_x0_52.05PPLCNet_x0_752.29PPLCNet_x1_02.46PPLCNet_x1_53.19PPLCNet_x2_04.27PPLCNet_x2_55.39V100 GPU 上的預(yù)測(cè)速度ModelsLatency(ms) bs1Latency(ms) bs4Latency(ms) bs8PPLCNet_x0_250.721.171.71PPLCNet_x0_350.691.211.82PPLCNet_x0_50.701.321.94PPLCNet_x0_750.711.492.19PPLCNet_x1_00.731.642.53PPLCNet_x1_50.822.063.12PPLCNet_x2_00.942.584.08SD855 上的預(yù)測(cè)速度ModelsLatency(ms) bs1, thread1Latency(ms) bs1, thread2Latency(ms) bs1, thread4PPLCNet_x0_252.301.621.32PPLCNet_x0_353.152.111.64PPLCNet_x0_54.272.731.92PPLCNet_x0_757.384.512.91PPLCNet_x1_010.786.493.98PPLCNet_x1_520.5512.267.54PPLCNet_x2_033.7920.1712.10PPLCNet_x2_549.8929.6017.82需要說(shuō)明的是這些數(shù)據(jù)是特定軟硬件環(huán)境下的實(shí)測(cè)結(jié)果不同 CPU 型號(hào)、線程數(shù)、TensorRT 版本、batch size 都會(huì)影響實(shí)際延遲應(yīng)將其作為選型參考而非絕對(duì)承諾。6. 倉(cāng)庫(kù)內(nèi)的配套資源快速體驗(yàn)與更多部署入口除了 FastDeploy 部署路徑本倉(cāng)庫(kù)還提供了 PP-LCNet 的其他使用方式可作為部署與驗(yàn)證的補(bǔ)充快速體驗(yàn)PaddleClas 命令行在 introduction_cn.ipynb 中安裝paddlepaddleGPU 環(huán)境安裝paddlepaddle-gpu與paddleclas后可直接執(zhí)行paddleclas --model_namePPLCNet_x1_0 --infer_imgs./whl_demo.jpg完成分類體驗(yàn)輸出包含 class_ids、scores、label_names 與文件名。這與 FastDeploy 部署形成兩條互補(bǔ)路徑PaddleClas 命令行適合快速驗(yàn)證模型效果FastDeploy 適合生產(chǎn)級(jí)多硬件高性能部署。在線 DemoGradio App倉(cāng)庫(kù)提供了基于 Gradio 的 APP/app.py 交互式圖像分類 Demo其核心調(diào)用為PaddleClas(model_namePPLCNet_x0_25)與clas.predict(image)運(yùn)行環(huán)境聲明見(jiàn) APP/app.ymlgradio 3.4.1、CPU 設(shè)備依賴見(jiàn) APP/requirements.txtgradio、paddlepaddle、paddleclas。注意該 Demo 與 FastDeploy 示例屬于兩條獨(dú)立鏈路前者走 PaddleClas 推理后者走 FastDeploy 推理后端。推理模型下載表見(jiàn) download_cn.md可按需選擇不同規(guī)格與是否 SSLD 蒸餾的推理模型/預(yù)訓(xùn)練模型。7. 注意事項(xiàng)與最佳實(shí)踐小結(jié)基于本文檔及倉(cāng)庫(kù)內(nèi)容整理部署 PP-LCNet 時(shí)的要點(diǎn)環(huán)境匹配GPU 推理需提前就緒 CUDA 11.2等環(huán)境CPU 推理無(wú)需額外 GPU 環(huán)境可直接運(yùn)行。首次運(yùn)行耗時(shí)TensorRT 與 IPU 推理首次運(yùn)行都會(huì)執(zhí)行模型序列化/編譯操作耗時(shí)較長(zhǎng)屬正?,F(xiàn)象請(qǐng)耐心等待后續(xù)運(yùn)行會(huì)明顯加速。模型規(guī)格選擇FastDeploy 示例默認(rèn)使用PPLCNet_x1_0若追求更低延遲可選擇x0_25~x0_75若追求更高精度可選擇x1_5~x2_5或_ssld蒸餾版本。后端切換通過(guò)--device與--use_trt參數(shù)即可切換推理后端這是 FastDeploy 的核心設(shè)計(jì)也是云邊端統(tǒng)一部署的關(guān)鍵能力。性能參考以 benchmark_cn.md 的實(shí)測(cè)數(shù)據(jù)為基線結(jié)合自身硬件、線程數(shù)與 batch size 進(jìn)行針對(duì)性驗(yàn)證。綜上PP-LCNet 與 FastDeploy 的組合提供了一條輕量模型 全場(chǎng)景部署工具的典型實(shí)踐路徑模型側(cè)以 Intel CPU 場(chǎng)景為優(yōu)化重點(diǎn)、兼顧多平臺(tái)部署側(cè)以一行代碼切換后端的能力覆蓋 CPU、GPU、TensorRT、IPU 等硬件。按照本文的安裝、下載、推理三步流程即可在本地快速?gòu)?fù)現(xiàn) PP-LCNet 的多后端部署效果并基于倉(cāng)庫(kù)中的模型清單與 Benchmark 數(shù)據(jù)完成規(guī)格選型與性能驗(yàn)收。贊分享人工智能深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)NLP語(yǔ)音【免費(fèi)下載鏈接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.項(xiàng)目地址https://gitcode.com/gh_mirrors/mo/models點(diǎn)擊查看免費(fèi)下載相關(guān)推薦PP-HGNet 圖像分類模型 FastDeploy 高性能部署實(shí)戰(zhàn)CPU、GPU、TensorRT 與 IPU 全流程指南PP HGNet 圖像分類模型 FastDeploy 高性能部署實(shí)戰(zhàn)CPU、GPU、TensorRT 與 IPU 全流程指南 本篇技術(shù)指南圍繞 PaddleP人工智能深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)NLP語(yǔ)音3條命令從零部署NanoClaw個(gè)人AI助手快速入門(mén)教程含首次通道配對(duì)全流程3條命令從零部署NanoClaw個(gè)人AI助手快速入門(mén)教程含首次通道配對(duì)全流程 NanoClaw 是一個(gè)運(yùn)行在容器中的輕量級(jí)個(gè)人 AI 助手它把智能體隔離人工智能深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)NLP語(yǔ)音lnav HTTP API 與 Markdown Magic構(gòu)建交互式 lnav 應(yīng)用頁(yè)面的完整指南lnav HTTP API 與 Markdown Magic構(gòu)建交互式 lnav 應(yīng)用頁(yè)面的完整指南 導(dǎo)讀 lnav 在較新版本中內(nèi)置了一個(gè)本地 HTTP 服人工智能深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)NLP語(yǔ)音上一篇ncmdump拖入NCM文件3步轉(zhuǎn)出MP3下一篇QtScrcpy 免費(fèi)開(kāi)源安卓投屏控制軟件手機(jī)秒上電腦的完整指南創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考