2023年12月,飞桨正式推出了低代码开发工具—— PaddleX 。这款一站式AI开发工具集成了飞桨开发套件多年积累的模型训练、推理全流程开发的优势能力。近期,PaddleX 团队发布了全新的 PaddleX 3.0-beta1 版本,带来四大重磅升级,包括:
-
提供 200+ 模型 通过极简的 Python API 一键调用
-
实现基于统一命令的模型训练推理全流程开发,并集成了 PP-ChatOCRv3-doc 模型产线
-
支持 100+ 模型高性能推理与服务化部署,端侧部署覆盖 4 条产线 8 个模型
-
支持昆仑芯、昇腾、寒武纪、海光等硬件快速推理与二次开发
,使用上和GPU无缝切换
PaddleX 3.0-beta1 代码库地址,欢迎大家star:
https://github.com/PaddlePaddle/PaddleX/tree/release/3.0-beta1
下面我们就对上述升级依次进行说明。
模型丰富 一键调用
PaddleX 从产业落地的角度出发,为大家精挑细选了超 200 个模型,覆盖文本图像智能分析、OCR、目标检测、时序预测等多个关键领域。
同时,PaddleX还将这些模型整合为 19 条模型产线,进一步方便大家使用。模型产线是指一系列预定义好的、针对特定AI任务的预测系统,包含能够独立完成某类任务的单模型(单功能模块)组合。模型产线支持命令行一键快速体验效果,以及极简的 Python API 方便大家进行开发与集成。以 OCR 产线为例,该产线集成了文本检测模型、文本识别模型,因此可实现端到端的文本识别,使用 PaddleX 可一键体验效果:
paddlex --pipeline OCR --input ./test_ocr.png --save_path ./output
运行上述命令,即可得到预测结果,可视化图像如下:
如果对产线的预测效果满意,PaddleX 提供了统一的 Python API ,可以直接对产线进行快速集成。仍以 OCR 产线为例,仅需三行代码即可支持:
from paddlex import create_pipeline
pipeline = create_pipeline("OCR")
output = pipeline.predict("general_ocr_002.png")
此外,PaddleX 还支持高性能推理、服务化部署、端侧部署,方便大家灵活集成到不同部署环境中,后续
“
多种
场景灵活部署”
章节有详细介绍。
对于上述 OCR 产线,其内部由文本检测模型、文本识别模型组成。PaddleX 同样支持以上单模型进行推理预测,方便大家针对性解决业务问题。以下是单独使用文本检测模型进行推理预测的示例:
from paddlex import create_model
model = create_model("PP-OCRv4_mobile_det")
output = model.predict("general_ocr_002.png")
此外,如果对产线效果不满意,PaddleX 提供了单模型开发工具,方便大家对模型进行微调训练,详细可参考接下来的章节。
为了方便大家选择合适的模型进行微调训练,PaddleX 提供了全部 200 余个模型的benchmark信息,包括精度、推理速度等指标,具体可查看模型列表。
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/support_list/models_list.md
使用 PaddleX 高效的单模型开发工具,可以基于统一命令完成数据校验、模型训练与评估到模型推理,开发者无需了解深度学习的底层原理,按模型要求准备好场景数据,简单运行命令即可完成模型迭代:
python main.py -c config.yaml -o Global.mode=train
上述命令中:main.py 为模型开发统一入口文件;-c 用于指定模型配置文件的参数,模型配置文件 config.yaml 中包含了具体模型的信息,如模型名、学习率、批次大小等,其中 mode 支持指定数据校验(dataset_check)、训练(train)、评估(evaluate)、推理(predict)。
PaddleX 针对不同应用场景,提供了多种部署方案,以满足用户多样化的部署需求。
在实际生产环境中,许多应用对部署策略的性能指标(尤其是响应速度)有着较严苛的标准,以确保系统的高效运行与用户体验的流畅性。为此,PaddleX 提供高性能推理插件,通过对模型推理及前后处理进行深度性能优化,实现端到端流程的显著提速。对于部分模型,使用高性能推理插件可将模型推理时间最多可以缩短 80% 以上。部分模型使用高性能推理插件前后推理耗时对比如下:
以上测试使用 1 块 Intel Xeon Gold 5117 CPU 与 1 块 NVIDIA Tesla T4 GPU,仅记录模型对于单张输入图像的推理耗时(不含前后处理耗时)。
启用高性能推理插件十分方便:用户只需在星河社区免费获取序列号,然后使用 PaddleX CLI、Python API 时,打开 use_hpip 开关并指定序列号即可。CLI 和 Python API 的例子分别如下:
paddlex \
--pipeline OCR \
--input https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_001.png \
--device gpu:0 \
--use_hpip \
--serial_number {序列号}from paddlex import create_pipeline
pipeline = create_pipeline(
pipeline="OCR",
use_hpip=True,
serial_number="{序列号}",
)
output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_001.png")
高性能推理文档入口:
https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/pipeline_deploy/high_performance_deploy.md
在大规模应用中,常常需要将模型产线部署为服务,以保障系统的灵活性和可扩展性。针对这一需求,PaddleX 基于 FastAPI 框架实现了简单易用的产线服务化部署方案。具体而言,通过 PaddleX CLI ,用户可以一键将产线部署成服务,例如:
paddlex --serve --pipeline OCR
服务启动后,用户可参考 PaddleX 产线使用教程中的多语言调用示例(覆盖 Python、C++、Java、Go、C#、JavaScript、PHP 等 7 种语言)对服务进行调用。
目前,PaddleX 已集成的所有官方产线均支持服务化部署。
服务化部署文档入口:
https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/pipeline_deploy/service_deploy.md
PaddleX 提供一系列 Android demo,帮助用户在端侧 ARM CPU 和 Mali/Adreno GPU(OpenCL)上部署模型产线。目前端侧部署示例覆盖 4 条产线、8 个模型,各 demo 均配套有完善的使用文档。目前已支持端侧部署的产线和模型如下:
端侧部署文档入口:
https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/pipeline_deploy/lite_deploy.md
为了满足用户的多硬件需求,PaddleX 团队基于飞桨框架在硬件兼容性和灵活性方面的优势,积极适配了多种芯片,为用户在硬件上提供更大的选择空间。除了英伟达 GPU 之外,PaddleX 3.0-beta1 还支持
昆仑芯、昇腾、寒武纪、海光
等硬件。只需添加一个配置设备的参数,即可在对应硬件上使用 PaddleX 进行快速推理和二次开发。目前昇腾910B已经适配 100+ 模型,昆仑芯、寒武纪和海光也在持续适配中。详细的模型支持列表请在以下链接中查看:
昇腾
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/support_list/model_list_npu.md
昆仑芯
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/support_list/model_list_xpu.md
寒武纪
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/support_list/model_list_mlu.md
海光
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/support_list/model_
list_dcu.md
未来我们将继续在这些硬件上适配更多的模型,并在主流硬件上推动高性能和服务化部署的实施,敬请期待。
在PaddleX上基于多硬件启动训练的方式非常简单,只需要在对应硬件上参照
安装文档
安装多硬件版本的飞桨框架及 PaddleX 后,在启动训练时指定
使用设备
即可。
python main.py -c config.yaml -o Global.mode=train -o Global.device=npu
python main.py -c config.yaml -o Global.mode=train -o Global.device=xpu
python main.py -c config.yaml -o Global.mode=train -o Global.device=mlu