三行代码完成AI模型的部署!

人工智能产业应用发展的越来越快,开发者需要面对的适配部署工作也越来越复杂。层出不穷的算法模型、各种架构的ai硬件、不同场景的部署需求(服务器、服务化、嵌入式、移动端等)、不同操作系统和开发语言,为ai开发者项目落地带来不小的挑战。 为了解决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
  支持paddle inference、tensorrt、openvino、onnx runtime、paddle lite、rknn等后端,覆盖常见的nvidia gpu、x86 cpu、jetson nano、jetson tx2、arm cpu(移动端、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+智能设备」创新的代名词
长文总结C/C++编码准则
工业生产中使用边缘计算网关的好处都有哪些
浅谈无刷电机
三行代码完成AI模型的部署!
压电粘滑驱动原理及其在压电马达平台中的应用
AMDNavi 14核心曝光 定位千元级主流市场而且性价比肯定要远超对手
新型双象限电源系列具有高精度、快速负载恢复时间的优良功能
汽车的哪些零部件可以使用防水透气阀
半导体激光器老化设备-COS老化设备-激光器高低温老化设备-恒流恒温老化设备:
利用红外线测距或激光测距的工作原理是怎样的
SMT贴片加工中焊点为何会有光泽度不够的现象
视频监控系统可以成为提高利润的强大系统
多面手:美国全能军用机器人诞生
工业革命继续前行,生活将更智能、更绿色、更健康
瑞萨电子成为首家获得“最佳合作伙伴奖”“科技发展贡献奖”等三项大奖的松下供应商
小米80W无线充电系统:可不到20分钟就能恢复手机电池活力
高精度测量系统中多电源可靠性设计
使用JESD204B接口的AD9144高速DA转换模块参数设定(私人总结版)