查看原文
其他

覆盖云边端全场景,FastDeploy三行代码搞定150+ CV、NLP、Speech模型部署

百度AI 2023-03-16


人工智能产业应用发展的越来越快,开发者需要面对的适配部署工作也越来越复杂。层出不穷的算法模型、各种架构的 AI 硬件、不同场景的部署需求(服务器、服务化、嵌入式、移动端等)、不同操作系统和开发语言,为 AI 开发者项目落地带来不小的挑战。



为了解决 AI 部署落地难题,我们发起了 FastDeploy 项目。FastDeploy 针对产业落地场景中的重要 AI 模型,将模型 API 标准化,提供下载即可运行的 Demo 示例。相比传统推理引擎,做到端到端的推理性能优化。FastDeploy 还支持在线(服务化部署)和离线部署形态,满足不同开发者的部署需求。


经过为期一年的高密度打磨,FastDeploy 目前具备3类特色能力:


  • 全场景:支持 GPU、CPU、Jetson、ARM CPU、瑞芯微 NPU、晶晨 NPU、恩智浦 NPU 等多类硬件,支持本地部署、服务化部署、Web 端部署、移动端部署等,支持 CV、NLP、Speech 三大领域,支持图像分类、图像分割、语义分割、物体检测、字符识别(OCR)、人脸检测识别、人像扣图、姿态估计、文本分类、信息抽取、行人跟踪、语音合成等16大主流算法场景。


  • 易用灵活:3行代码完成 AI 模型的部署,1行代码快速切换后端推理引擎和部署硬件,统一 API 实现不同部署场景的零成本迁移。提供了150+热门 AI 模型的部署 Demo。


  • 极致高效:相比传统深度学习推理引擎只关注模型的推理时间,FastDeploy 则关注模型任务的端到端部署性能。通过高性能前后处理、整合高性能推理引擎、一键自动压缩等技术,实现了 AI 模型推理部署的极致性能优化。


🔗项目传送门

https://github.com/PaddlePaddle/FastDeploy


以下将对该3大特性做进一步技术解读,全文大约2100字,预计阅读时长3分钟。


👉3大特性篇

👉3步部署实战篇,抢先看

  • CPU/GPU 部署实战

  • Jetson 部署实战

  • RK3588部署实战(RV1126、晶晨 A311D 等 NPU 类似)


 3大特性解读 


■ 全场景:


1套代码云边端多平台多硬件一网打尽,覆盖 CV、NLP、Speech


支持 Paddle Inference、TensorRT、OpenVINO、ONNX Runtime、Paddle Lite、RKNN 等后端,覆盖常见的 NVIDIA GPU、x86 CPU 、ARM CPU(移动端、ARM 开发板)、瑞芯微 NPU(RK3588、RK3568、RV1126、RV1109、RK1808)、晶晨 NPU(A311D、S905D)等云边端场景的多类几十款 AI 硬件部署。同时支持服务化部署、离线 CPU/GPU 部署、端侧和移动端部署方式。针对不同硬件,统一 API 保证1套代码在数据中心、边缘部署和端侧部署无缝切换。



FastDeploy 支持 CV、NLP、Speech 三大 AI 领域,覆盖16大类算法(图像分类、图像分割、语义分割、物体检测、字符识别(OCR)、人脸检测、人脸关键点检测、人脸识别、人像扣图、视频扣图、姿态估计、文本分类 信息抽取 文图生成、行人跟踪、语音合成)。支持飞桨 PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR、PaddleNLP、PaddleSpeech 6 大热门 AI 套件的主流模型,同时也支持生态(如 PyTorch、ONNX 等)热门模型的部署。



■ 易用灵活


3行代码完成模型部署,1行命令切换推理后端和硬件,快速体验150+热门模型部署


FastDeploy 三行代码可完成 AI 模型在不同硬件上的部署,极大降低了 AI 模型部署难度和工作量。一行命令切换 TensorRT、OpenVINO、Paddle Inference、Paddle Lite、ONNX Runtime、RKNN 等不同推理后端和对应硬件。低门槛的推理引擎后端集成方案,平均一周即可完成任意硬件推理引擎的接入使用,解耦前后端架构设计,简单编译测试即可体验 FastDeploy 支持的 AI 模型。开发者可以根据模型 API 实现相应模型部署,也可以选择 git clone 一键获取150+热门 AI 模型的部署示例 Demo,快速体验不同模型的推理部署。


>> FastDeploy 部署不同模型


# 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)

■ 极致高效


一键压缩提速,预处理加速,端到端性能优化,提升 AI 算法产业落地


FastDeploy 在吸收 TensorRT、OpenVINO、Paddle Inference、Paddle Lite、ONNX Runtime、RKNN 等高性能推理优势的同时,通过端到端的推理优化解决了传统推理引擎仅关心模型推理速度的问题,提升整体推理速度和性能。集成自动压缩工具,在参数量大大减小的同时(精度几乎无损),推理速度大幅提升。使用 CUDA 加速优化预处理和后处理模块,将 YOLO 系列的模型推理加速整体从 41ms 优化到25ms。端到端的优化策略,彻底解决 AI 部署落地中的性能难题。


更多性能优化,欢迎关注 GitHub 了解详情

https://github.com/PaddlePaddle/FastDeploy




 3步部署实战篇 

■ CPU/GPU 部署实战(以 YOLOv7 为例)


>> 安装 FastDeploy 部署包,下载部署示例(可选,也可3行 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

>> 推理结果示例



■ 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 2


>> 推理结果示例


■ RK3588部署实战以轻量化检测网络 PicoDet 为例

>> 安装 FastDeploy 部署包,下载部署示例(可选,也可3行 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


 加入 FastDeploy 技术交流群 


■ 入群福利
FastDeploy 除了本次更新外,硬件能力还在持续扩展中,包括 Graphcore、飞腾、ARM CPU(安卓、iOS、ARMLinux)、高通、昇腾、地平线、昆仑、爱芯元智等;服务化部署、Jetson 上基于硬解码的系统方案(即将发布)、端到端的高性能优化等。真正解决部署落地中大家关心的速度、性能、系统等问题。入群获取产品发新最新资讯。
为了让开发者进一步了解 FastDeploy 的部署能力,更快速的使用到项目当中,我们准备了直播技术交流活动,快快扫码加群关注我们的直播间吧!
>> 直播时间
2022.11.9日——11.11日 20:30
欢迎大家扫码报名
■ WAVE SUMMIT⁺2022
WAVE SUMMIT⁺2022将于11月30日在深圳举办,欢迎大家扫码关注飞桨公众号,回复 WAVE 提前加入官方社群了解详情。
【WAVE SUMMIT⁺2022报名入口】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存