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