為了解決AI部署落地難題,我們發起了FastDeploy項目。FastDeploy針對產業落地場景中的重要AI模型,將模型API標準化,提供下載即可運行的Demo示例。相比傳統推理引擎,做到端到端的推理性能優化。FastDeploy還支持在線(服務化部署)和離線部署形態,滿足不同開發者的部署需求。
經過為期一年的高密度打磨,FastDeploy目前具備三類特色能力:
全場景:支持GPU、CPU、Jetson、ARM CPU、瑞芯微NPU、晶晨NPU、恩智浦NPU等多類硬件,支持本地部署、服務化部署、Web端部署、移動端部署等,支持CV、NLP、Speech三大領域,支持圖像分類、圖像分割、語義分割、物體檢測、字符識別(OCR)、人臉檢測識別、人像扣圖、姿態估計、文本分類、信息抽取、行人跟蹤、語音合成等16大主流算法場景。
易用靈活:三行代碼完成AI模型的部署,一行API完成模型替換,無縫切換至其他模型部署,提供了150+熱門AI模型的部署Demo。
極致高效:相比傳統深度學習推理引擎只關注模型的推理時間,FastDeploy則關注模型任務的端到端部署性能。通過高性能前后處理、整合高性能推理引擎、一鍵自動壓縮等技術,實現了AI模型推理部署的極致性能優化。
項目傳送門:https://github.com/PaddlePaddle/FastDeploy
以下將對該3大特性做進一步技術解讀,全文大約2100字,預計閱讀時長3分鐘。
1
3大特性篇
2
3步部署實戰篇,搶先看
CPU/GPU部署實戰
Jetson部署實戰
RK3588部署實戰(RV1126、晶晨A311D等NPU類似)
1
3大特性解讀
全場景:一套代碼云邊端多平臺多硬件一網打盡,覆蓋CV、NLP、Speech
支持PaddleInference、TensorRT、OpenVINO、ONNXRuntime、PaddleLite、RKNN等后端,覆蓋常見的NVIDIAGPU、x86CPU、Jetson Nano、Jetson TX2、ARMCPU(移動端、ARM開發板)、Jetson Xavier、瑞芯微NPU(RK3588、RK3568、RV1126、RV1109、RK1808)、晶晨NPU(A311D、S905D)等云邊端場景的多類幾十款AI硬件部署。同時支持服務化部署、離線CPU/GPU部署、端側和移動端部署方式。針對不同硬件,統一API保證一套代碼在數據中心、邊緣部署和端側部署無縫切換。FastDeploy支持CV、NLP、Speech三大AI領域,覆蓋16大類算法(圖像分類、圖像分割、語義分割、物體檢測、字符識別(OCR) 、人臉檢測、人臉關鍵點檢測、人臉識別、人像扣圖、視頻扣圖、姿態估計、文本分類 信息抽取 文圖生成、行人跟蹤、語音合成)。支持飛槳PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR、PaddleNLP、PaddleSpeech 6大熱門AI套件的主流模型,同時也支持生態(如PyTorch、ONNX等)熱門模型的部署。 ?易用靈活,三行代碼完成模型部署,一行命令快速體驗150+熱門模型部署
FastDeploy三行代碼可完成AI模型在不同硬件上的部署,極大降低了AI模型部署難度和工作量。一行命令切換TensorRT、OpenVINO、Paddle Inference、Paddle Lite、ONNX Runtime、RKNN等不同推理后端和對應硬件。低門檻的推理引擎后端集成方案,平均一周時間即可完成任意硬件推理引擎的接入使用,解耦前后端架構設計,簡單編譯測試即可體驗FastDeploy支持的AI模型。開發者可以根據模型API實現相應模型部署,也可以選擇git clone一鍵獲取150+熱門AI模型的部署示例Demo,快速體驗不同模型的推理部署。# PP-YOLOE的部署 import fastdeploy as fd import cv2 model = fd.vision.detection.PPYOLOE("model.pdmodel", "model.pdiparams", "infer_cfg.yml") im = cv2.imread("test.jpg") result = model.predict(im) # YOLOv7的部署 import fastdeploy as fd import cv2 model = fd.vision.detection.YOLOv7("model.onnx") im = cv2.imread("test.jpg") result = model.predict(im)
FastDeploy部署不同模型
# PP-YOLOE的部署 import fastdeploy as fd import cv2 option = fd.RuntimeOption() option.use_cpu() option.use_openvino_backend() # 一行命令切換使用 OpenVINO部署 model = fd.vision.detection.PPYOLOE("model.pdmodel", "model.pdiparams", "infer_cfg.yml", runtime_option=option) im = cv2.imread("test.jpg") result = model.predict(im)FastDeploy切換后端和硬件
極致高效:一鍵壓縮提速,預處理加速,端到端性能優化,提升AI算法產業落地
FastDeploy在吸收TensorRT、OpenVINO、Paddle Inference、Paddle Lite、ONNX Runtime、RKNN等高性能推理優勢的同時,通過端到端的推理優化解決了傳統推理引擎僅關心模型推理速度的問題,提升整體推理速度和性能。集成自動壓縮工具,在參數量大大減小的同時(精度幾乎無損),推理速度大幅提升。使用CUDA加速優化預處理和后處理模塊,將YOLO系列的模型推理加速整體從41ms優化到25ms。端到端的優化策略,徹底解決AI部署落地中的性能難題。更多性能優化,歡迎關注GitHub了解詳情。https://github.com/PaddlePaddle/FastDeploy ? ?2
3步部署實戰篇,搶先看
1
CPU/GPU部署實戰(以YOLOv7為例)
安裝FastDeploy部署包,下載部署示例(可選,也可以三行API實現部署代碼)
pip install fastdeploy-gpu-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html git clone https://github.com/PaddlePaddle/FastDeploy.git cd examples/vision/detection/yolov7/python/
準備模型文件和測試圖片
wget https://bj.bcebos.com/paddlehub/fastdeploy/yolov7.onnx wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg
CPU/GPU推理模型
# CPU推理 python infer.py --model yolov7.onnx --image 000000014439.jpg --device cpu # GPU推理 python infer.py --model yolov7.onnx --image 000000014439.jpg --device gpu # GPU上使用TensorRT推理 python infer.py --model yolov7.onnx --image 000000014439.jpg --device gpu --use_trt True
推理結果示例:
2
Jetson部署實戰(以YOLOv7為例)
安裝FastDeploy部署包,配置環境變量
git clone https://github.com/PaddlePaddle/FastDeploy cd FastDeploy mkdir build && cd build cmake .. -DBUILD_ON_JETSON=ON -DENABLE_VISION=ON -DCMAKE_INSTALL_PREFIX=${PWD}/install make -j8 make install cd FastDeploy/build/install source fastdeploy_init.sh
準備模型文件和測試圖片
wget https://bj.bcebos.com/paddlehub/fastdeploy/yolov7.onnx wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg
編譯推理模型
cd examples/vision/detection/yolov7/cpp cmake .. -DFASTDEPLOY_INSTALL_DIR=${FASTDEPOLY_DIR} mkdir build && cd build make -j # 使用TensorRT推理(當模型不支持TensorRT時會自動轉成使用CPU推理) ./infer_demo yolov7s.onnx 000000014439.jpg 27s.onnx 000000014439.jpg 2
推理結果示例:
3
RK3588部署實戰(以輕量化檢測網絡PicoDet為例)
安裝FastDeploy部署包,下載部署示例(可選,也可以三行API實現部署代碼)
# 參考編譯文檔,完成FastDeploy編譯安裝 # 參考文檔鏈接:https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/rknpu2.md # 下載部署示例代碼 git clone https://github.com/PaddlePaddle/FastDeploy.git cd examples/vision/detection/paddledetection/rknpu2/python
準備模型文件和測試圖片
wget https://bj.bcebos.com/fastdeploy/models/rknn2/picodet_s_416_coco_npu.zip unzip -qo picodet_s_416_coco_npu.zip ## 下載Paddle靜態圖模型并解壓 wget https://bj.bcebos.com/fastdeploy/models/rknn2/picodet_s_416_coco_npu.zip unzip -qo picodet_s_416_coco_npu.zip # 靜態圖轉ONNX模型,注意,這里的save_file請和壓縮包名對齊 paddle2onnx --model_dir picodet_s_416_coco_npu --model_filename model.pdmodel --params_filename model.pdiparams --save_file picodet_s_416_coco_npu/picodet_s_416_coco_npu.onnx --enable_dev_version True python -m paddle2onnx.optimize --input_model picodet_s_416_coco_npu/picodet_s_416_coco_npu.onnx --output_model picodet_s_416_coco_npu/picodet_s_416_coco_npu.onnx --input_shape_dict "{'image':[1,3,416,416]}" # ONNX模型轉RKNN模型 # 轉換模型,模型將生成在picodet_s_320_coco_lcnet_non_postprocess目錄下 python tools/rknpu2/export.py --config_path tools/rknpu2/config/RK3588/picodet_s_416_coco_npu.yaml # 下載圖片 wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg
推理模型
python3 infer.py --model_file ./picodet _3588/picodet_3588.rknn --config_file ./picodet_3588/deploy.yaml --image images/000000014439.jpg
審核編輯 :李倩
-
AI
+關注
關注
87文章
30728瀏覽量
268887 -
人工智能
+關注
關注
1791文章
47183瀏覽量
238258 -
深度學習
+關注
關注
73文章
5500瀏覽量
121111
原文標題:炸裂!三行代碼完成AI模型的部署!
文章出處:【微信號:CVer,微信公眾號:CVer】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論