飞桨(PaddlePaddle)是全面开源开放、技术领先、功能完备的产业级深度学习平台,目前已广泛应用于工业、农业、服务业等。在众多飞桨用户中,一些客户还具有业务上云的需求,这就要求飞桨生态能提供完善且易用的云上组件,方便用户在云上落地飞桨深度学习工作流。虽然目前云上飞桨已有样本缓存、模型训练、模型服务等云原生组件,但缺少将各组件串起来共同完成飞桨深度学习工作流的工具。 此外,由于大部分飞桨套件用户是各领域的模型开发人员,可能对 Kubernetes 相关的知识并不熟悉。因此,基于各飞桨生态套件构建该领域的常见深度学习工作流是十分有必要的,此外还需要为用户提供简单易用的编程接口,方便用户构建其自定义的工作流。基于以上原因,我们构建了云上飞桨产品旨在协助飞桨用户快速地完成深度学习工作流上云的需求。
上图是云上飞桨产品的架构图。
在用户交互层,云上飞桨产品给用户提供了 Python SDK 和 Kubernetes 自定义资源两种编程接口。用户可以使用 Pipeline Python SDk 快速便捷的构建自己的飞桨深度学习工作流,也可以通过 Kubernetes CRD 单独使用某些功能组件。除了编程接口,云上飞桨产品在交互层还给用户提供了多租户JupyterHub Notebook服务,各种 UI 管理界面,如 Pipeline UI / 模型管理中心 UI / VisualDL可视化UI 等。
飞桨具有丰富的模型套件库,如 PaddleOCR、PaddleClas、PaddleDetection、PaddleNLP等,不过由于模型套件并不是面向云原生设计的,再者由于大部分模型套件用户对 Kubernetes 的知识并不熟悉,这就导致在云上基于飞桨模型套件落地深度学习工作流并非易事。所以我们将各个飞桨模型套件进行云原生化,各个模型套件的 Operator 共同组成了架构图中的模型套件层。目前 PaddleOCR 已经完成 Operator 化,其他飞桨模型套件的 Operator 开发工作将在后续开展。
模型套件的下一层是云上飞桨功能组件层,每个模型套件 Operator 都包含样本数据缓存、分布式训练、推理服务部署、VisualDL训练可视化等的功能。丰富的云上飞桨工作组件可以协助用户快速的开发部署模型,可大幅加速研发效率。
-
简单易用的编程接口。
云上飞桨产品给用户提供了简单易用的编程接口,用户可以使用 Python SDK 构建自定义云上飞桨工作流,也可以通过使用 Kubernetes 自定义资源单独使用各个云上飞桨功能组件。
-
规范的套件镜像版本管理。
由于飞桨模型套件并不是面向云原生设计的,当前各套件的镜像管理相对混乱。此外,用户实际使用过程中可能需要对模型套件的代码进行修改,这就导致无法更新线上的套件镜像到最新版本。云上飞桨产品规范了模型套件镜像版本管理,后续也将基于 Teckton Pipeline 为飞桨模型套件提供镜像的持续集成与发布功能,方便用户在修改套件代码后,能够快速部署上线。
-
提供各领域场景的工作流模板。
云上飞桨模型套件 Operator 为用户提供了领域常见的工作流模板。如OCR场景,为用户提供了文字检查模型的工作流模板。用户只需修改少量参数即可基于模块快速部署上线飞桨工作流。
-
具有丰富的云上飞桨组件。
云上飞桨具有丰富的功能组件,包括 VisualDL可视化工具、样本数据缓存组件、模型训练组件、推理服务部署组件等,这些功能组件可以大幅加速用户开发和部署模型的效率。
-
针对飞桨框架进行了定制优化。
除了提升研发效率的功能组件,我们还针对飞桨框架进行了正对性优化,如样本缓存组件加速云上飞桨分布式训练作业、基于飞桨框架和调度器协同设计的GPU利用率优化。