百度飞桨(PaddlePaddle)分布式训练在Volcano系统上的实践(下)云社区

将上述计算任务迁移到volcano平台上进行测试。

Volcano支持Multi-podjobs,拓展“tasks”字段,tasks下可以定义多个pod描述,其中“replicas”字段描述task将要生成的pod数量,“name”描述task名称,pod名称将根据task名称生成。Template字段与kubernetes“podTemplate”一致。ctr的demo中含有两个task:“pserver”和“trainer”,每个task的replicas都是2,将会创建两个PServer任务,两个Trainer任务。

使用Volcano调度器,在job的配置中需要指定“schedulerName”为“volcano”,如果schedulerName没有指定为“volcano”,job下的任务调度将会使用kubernetes的默认调度器“default”调度器。

Volcano通过指定“minAvailable”字段保证计算任务的gang-scheduler调度策略。“minAvailable”数值指明在对当前计算任务下的pods进行调度时,需保证多少计算任务都能够调度才会执行调度任务,“minAvailable”的数值需要小于或等于计算任务下的所有任务数量的总和。对于PaddlePaddle框架计算任务,只有当所有的PServer和Trainer任务都处于运行中,才能开始计算任务。因此对于飞桨计算任务,“minAvailable”的数值需要与计算任务下的所有计算任务总和相等。

对于使用飞桨分布式训练的应用,在计算过程中,如果PServer任务或者Trainer任务被驱逐或失败,PServer和Trainer形成的计算集群将会失效,所有的PServer任务和Trainer任务都需要重启,以形成新的集群开始新的计算。Volcano可以通过设置“policies”实现上述目的。设置“PodEvicted”事件对应“RestartJob”动作,设置“PodFailed”事件对应“RestartJob”动作,在设置了这两个“policies”之后,当计算任务被驱逐或者失败,所有的计算任务将会重启。

下面是使用Volcano平台执行CTR任务的配置ctr-volcano.yaml,配置文件可从Volcano代码库获取

Volcano代码仓库地址:

root@volcano-paddlepaddle:~#kubectlapply-fctr-volcano.yamljob.batch.volcano.sh/ctr-volcanocreate检查pods的状态,无论是pserver任务还是trainer任务都被下发到集群中,并开始运行。如果当前集群下的空闲资源,不能满足pserver任务和trainer任务的资源述求,任何任务都不会被创建。

root@volcano-paddlepaddle:~#kubectlgetpods|grepctr-volcanoctr-volcano-pserver-01/1Running016sctr-volcano-pserver-11/1Running016sctr-volcano-trainer-01/1Running016sctr-volcano-trainer-11/1Running016选择一个PServer任务查看日志,看到PServer在监听端口,并对外提供服务

root@volcano-paddlepaddle:~#kubectlgetpod|grepctr-volcanoctr-volcano-trainer-00/1Completed077mctr-volcano-trainer-10/1Completed077与此同时,在训练结束之后,我们可能需要训练出来的模型用于别处。在yaml文件当中,我们规定了该任务volcanosh/edlctr:v1镜像,该镜像的工作目录在/workspace/ctr下,在train.py当中有定义,会在每1000个batch或是每一轮pass(跑完一遍训练集)的时候,调用save_inference_model接口来保存模型。保存的模型在/workspace/ctr/models文件夹下。那么如何在任务结束后获取模型呢?我们建议以下几种方式。

1)在yaml文件当中trainer部分的spec当中定义volume,通过docker的volume映射容器路径和宿主机路径的机制,将/workspace/ctr/models文件夹映射到宿主机的文件夹中。接下来通过kubectldescribepodctr-volcano-trainer-0,可以得知我们的模型所在的节点,接下来ssh登陆到对应的节点上,到宿主机被映射到路径下,就可以获取到训练出来到模型了。

2)如果需要更加灵活的,自动化的模型配送流程,可以在K8S集群上建立FileServer和分布式文件系统,例如GlusterFS。将ctr-volcano-trainer-0容器内部的/workspace/ctr/models文件夹映射到GlusterFS的PVC(PersistentVolumeClaim)上。通过ftp的wget/curl操作命令就可以实现模型的获取和配送。

综上,使用Volcano平台执行PaddlePaddle框架计算任务,可以实现计算任务的批量创建,任务的自动化管理,实现计算任务的自我管理。相较于普通的Replicaset+Job的模式,使用Volcano平台可以提升并行计算的管理效率。

作者

董大祥,@guru4elephant,PaddlePaddleArchitect,PrincipalArchitect,Baidu

王嘉炜,@wangjiawei04,PaddlePaddleEngineer,SeniorEngineer,Baidu

于佃海,@raindrops2sea,PaddlePaddleArchitect,DistinguishedArchitect,Baidu

张经辉,@sivanzcw,VolcanoContributor,CloudNativesoftwareengineer,Huawei

马达,@k82cn,KubernetesMaintainer,SIG-SchedulingCo-Leader,VolcanoLead,Huawei

参考文献

PaddlePaddle官网

PaddleonSpark

RunDeepLearningwithPaddlePaddleonKubernetes

Volcano官网

Volcao社区

百度CTRDemo

CTR-volcano配置文件

华为开发者空间发布

让每位开发者拥有一台云主机

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

THE END
1.PaddleX项目常见问题解决方案PaddleXPaddlePaddle End-to-End Development Toolkit(『飞桨』深度学习全流程开发工具) 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleX PaddleX 是一个基于飞桨框架构建的低代码开发工具,它集成了众多开箱即用的预训练模型,可以实现模型从训练到推理的全流程开发。主要使用的编程语言是 Python。 https://blog.csdn.net/gitblog_00541/article/details/144342770
2.飞桨PaddlePaddle计算平台 CUDA12.3CUDA11.8DTK 24.04.01CANN 8.0.T13XRE 4.31.0NeuWare SDK v1.16.0X86(Intel、海光飞桨多模态大模型套件 核心框架 飞桨PaddlePaddle 3.0 飞桨训练框架 最新资讯 查看更多资讯 百度发布飞桨框架3.0,飞桨文心生态开发者达1465万 社区交流 讨论交流,技术分享,有问题找组织 https://www.paddlepaddle.org.cn/
3.飞桨(PaddlePaddle)是一款由百度公司开发的开源深度学习平台飞桨(PaddlePaddle)是一款由百度公司开发的开源深度学习平台,旨在为开发者提供简单易用、高性能的深度学习框架。飞桨集成了深度学习的核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件,适用于各种深度学习应用场景。 飞桨平台提供了多种功能,包括: https://www.openmao.cn/sites/4667.html?menu-id=196&mininav-id=1079
4.百度飞桨AIStudio登录完全指南AIGC工具导航随着人工智能的不断发展,越来越多的人开始涉足AI领域。而谷歌,微软,亚马逊等都推出了各自的AI平台,其中谷歌的TensorFlow平台和百度的飞桨(PaddlePaddle)平台最为出名。本文将为您详细介绍百度飞桨AIStudio的登录方法。 百度飞桨AIStudio是一种基于浏览器的交互式AI开发平台,不需要用户在本地上配置软件环境,就可以使用丰富https://www.aigc.cn/12445.html
5.GitHubPArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署) - PaddlePaddle/Paddlehttps://github.com/PaddlePaddle/Paddle
6.百度大脑5.0技术干货:详解飞桨五大优势,鸿鹄芯片架构细节据介绍,百度飞桨(PaddlePaddle)是国内唯一功能完备的开源深度学习平台,自Paddle Fluid v1.0发布以来,飞桨陆续在开发、训练和部署全流程上进行全方面的升级。 而在刚刚过去的百度AI开发者大会上,百度CTO王海峰介绍了飞桨的五大优势。 在此,我们根据百度大脑分论坛的介绍,对这五大优势进行更详细的解读。 https://zhidx.com/p/152013.html
7.百度飞桨平台官网,paddlepaddle,开源深度学习平台别摸鱼导航百度飞桨平台官网:https://www.paddlepaddle.org.cn/ 数据评估 百度飞桨浏览人数已经达到723,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:百度飞桨的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评https://biemoyu.com/sites/paddlepaddle.html
8.百度飞桨平台官网,paddlepaddle,开源深度学习平台百度飞桨平台官网:https://www.paddlepaddle.org.cn/ 数据评估 百度飞桨浏览人数已经达到870,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:百度飞桨的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评https://feizhuke.com/sites/paddlepaddle.html
9.百度AI飞桨(PaddlePaddle)深度学习马士兵教育官网飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础。集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国自主研发、功能丰富、开源开放的产业级深度学习平台。 开发便捷提升效率支持声明式、命令式编程,兼具开发灵活、高性能;网络结构自动设计,模型效果超越人类专家; https://www.mashibing.com/course/2210
10.飞桨PaddlePaddle在人工智能应用飞速落地的今天,如何实现快速建模,如何提升模型的训练和部署效率,已经成为工业界普遍关注的课题。因此本课程在介绍深度学习的各种“战斗技巧”之后,还为读者配备了飞桨“最先进武器”。根据笔者十几年的亲身经历,在企业中研发人工智能模型的周期已经从几个月缩减到几天,该效率提升最大的贡献来自于深度学习http://paddlepaddle.org/tutorials
11.百度飞桨大规模分类库PLSC—单机训练6000万类视觉分类模型简述:今天给大家分享的是百度飞桨大规模分类库PLS实现了,单机训练6000万类视觉分类模型,下面我们来看具体详情! 今天给大家分享的是百度飞桨大规模分类库PLS实现了,单机训练6000万类视觉分类模型,下面我们来看具体详情! 以下文章来源于飞桨PaddlePaddle,作者飞桨PaddlePaddle https://ai.tuidc.com/zixun/4033.html
12.百度,阿里,华为AI开发者计划分析总体上感觉百度BML封装的内容太多了,适合初学者又不适合初学者。适合的一面让初学开发者不用自己去寻找各个算法来搭建框架。不适合是初学者想尝试调整超参数这些来验证自己的学习内容就不方便实现了。同时,百度还提供了百度大脑AI开放平台包含了(飞桨PaddlePaddle、AI Studio、EasyDL、iOCR、语音自训练平台)。PaddlePaddlehttps://www.huoban.com/news/post/8032.html
13.中国开源深度学习框架第六年:百度飞桨国内综合份额第一,全球开发《2021中国开源年度报告》显示,2021年GitHub中国项目活跃度Top 30中,飞桨占据了5个项目,其中飞桨框架位列第一。 中国自研开源框架如何突围? 综上,便是百度飞桨为中国深度学习框架发展提供的一些思考。 如今,全球深度学习框架“PPT”格局初现,百度飞桨PaddlePaddle与TensorFlow、PyTorch已展开正面交锋。 https://m.thepaper.cn/newsDetail_forward_17519147
14.paddle.nnGELUGELU参数形状:代码示例 飞桨开源框架(PaddlePaddle)是一个易用、高效、灵活、可扩展的深度学习框架。https://www.bookstack.cn/read/paddlepaddle-2.0-zh/5950d359d8d13d22.md
15.百度飞桨:ERNIE3.0通用信息抽取UIEpaddleNLP的安装使用[一https://github.com/PaddlePaddle/PaddleNLP 1.安装paddle 参考官网:开始使用_飞桨-源于产业实践的开源深度学习平台 首先在anaconda下创建虚拟环境: 代码语言:javascript 复制 conda create-n test python=3.8#test为创建的虚拟环境名称 在安装paddle 代码语言:javascript https://cloud.tencent.com/developer/article/2197039