DLRover:蚂蚁开源大规模智能分布式训练系统

文|沙剑

蚂蚁集团高档技能专家

专注分布式深度学习范畴 首要负责蚂蚁大规模分布式练习引擎的规划和开发

本文 4491 字 阅读 12分钟

本文全体介绍了 DLRover 的项目动机与中心才能,未来咱们会发布一系列文章,来从同步/异步弹性练习,优化战略服务,多种集群和练习结构对接,战略定制开发等多个角度来介绍 DLRover 的更多细节,敬请期待。

01

技能布景

2022 年 6 月,蚂蚁集团决议全面引进 ESG 结构,发动并确立了“数字普惠”、“绿色低碳”、“科技立异”、“敞开生态”四位一体的可继续发展战略。针对“绿色低碳”,设立了 4 个子议题,包括绿色运营、科技助力工业碳中和、生态保护与修正绿色低碳日子。

在此布景下,绿色 AI 也成为蚂蚁 AI Infra 团队的一个重要工作方向。作为绿色 AI 的重要板块,工程提效项目致力于打造高功能离在线 AI 工程体系,经过提高算力功率和资源利用率,最终到达节省资源下降碳排放的目的。

当时,用户提交分布式练习作业的东西有 Yarn 或许 KubeFlow/Training-Operator。在提交作业时,用户需求在作业中指定作业资源,包括不同人物的节点数量和资源标准(CPU 核数、内存、GPU 等)。

在练习作业提交后,作业可能遇到如下问题:

  • 集群资源不足以发动作业的一切节点,作业只能等待。
  • 练习作业的节点可能会犯错,比方被高优使命抢占、机器故障、IO 故障等,导致作业失利。

出现这些问题后,用户只能修正作业资源来重新提交作业。

针对这两个问题,蚂蚁集团前期依据 Kubernetes 开源了 ElasticDL 项目来支撑 K8s 上 TF 2.x 分布式练习的弹性容错。在项目落地过程中咱们又发现了如下问题:

  • 用户装备的资源可能过少引起 OOM 和练习功能差。
  • 用户为了保证作业成功率和速度,通常会装备超量资源导致利用率低。
  • 越来越多的用户运用 PyTorch 或其他 TF 之外的结构来开发和练习模型。
  • 越来越多的分布式集群开端支撑 AI 作业,比方 Ray、Spark 集群,能否适配恣意核算集群?
  • 在线学习越来越被广泛选用的情况下,如何运用一套体系一同处理兼容离在线练习?

前两个问题使得集群 CPU 利用率通常只要 20% 上下,一同算法开发人员需求投入很多人工运维本钱,为了处理练习端资源提效的需求,支撑在不同集群上针对在离线多种练习形式,给不同结构的分布式练习作业主动地寻觅最优资源装备。

蚂蚁 AI Infra 团队依据 ElasticDL 弹性容错的思路,升级扩展并开源了 DLRover,其方针在于提高分布式模型练习的智能性,现在很多公司的练习作业都是跑在混部的集群中,运转环境复杂多变,正如其名,DLRover 作为分布式练习范畴的 “路虎”,不论多么高低的地势,都能够轻松驾驭。

DLRover:蚂蚁开源大规模智能分布式训练系统

02

全体方案

DLRover 提出了 “ML for System” 的理念来提高分布式练习的智能性,那么这样的体系应该具备哪些才能呢?

咱们认为首要体现在如下几个方面:

  • 解耦:不好底层练习结构耦合在一同,只依赖接口笼统,遵从依赖倒置准则。(i.e. Elastic Runtime
  • 资源调度:具备上帝视角的资源调度管控才能。和建立在对作业精准画像的决策才能。
  • 数据驱动:一同收集把握集群资源数据,也把握练习作业数据。以数据驱动智能。
  • 作业交互:以对练习作业以及模型白盒化的了解,动态依据实践情况,对练习作业进行优化调整。逾越简略机械的弹性容错!
  • 智能:经过对集群以及作业信息的收集,结合算法模型+固定战略产出精准的作业优化战略。

咱们期望规划并完成一个体系,让用户完全摆脱资源装备的捆绑,专注于模型练习本身。在没有任何资源装备输入的情况下,DLRover 仍然可认为每个练习作业供给最佳资源装备。考虑到用户可能会以不同的方法运转他们的练习作业,DLRover 除了面向练习平台进行作业一致办理的 Cluster Mode,也供给 Single-Job Mode 便利独立的算法开发者也能享受到弹性容错等根本特性。

03

体系架构

DLRover 由四个首要组件组成:ElasticJob、Elastic Trainer、Brain 服务和 Cluster Monitor。

DLRover:蚂蚁开源大规模智能分布式训练系统

上图显示了 DLRover 如安在 K8s 集群上办理深度学习练习作业。DLRover 以 ElasticJob CRD 的形式将作业提交到集群。收到 CRD 后,ElasticJob Operator 会拉起一个 Master Pod 作为 Elastic Trainer。其从 Brain 服务中获取初始资源方案。Elastic Trainer 用它来创建 Scale CRD,并应用 Scale CRD 告诉 ElasticJob Controller 发动所需的 Pod,每个 Pod 将在其上发动一个 Elastic Agent。

在练习过程中,Elastic Trainer 的 Training Master 将数据分片分发给 Worker。一同,Cluster Monitor 监控每个作业的运转状况(i.e.每个节点的 Workload)和集群状况(i.e. 资源水位)。这些数据将定期报告给 Brain,Brain 将数据持久化到数据库中。

然后 DLRover Brain 依据作业的运转状况,挑选合适的算法生成新的资源方案,并告诉 Elastic Trainer 开端资源调整。

总的来讲,DLRover 能够协助分布式练习作业主动化运转在集群中,能够看作分布式作业的主动驾驶,模型开发者只需求重视模型的算法规划,DLRover 现在开源版则可认为用户供给如下才能:

  • 主动资源推导:协助用户主动初始化练习资源,提高资源利用率与作业稳定性。
  • 动态练习数据分片:针对不同 Worker 功能不通形成的木桶效应,依据实践消费速度分配练习数据,可配合 Failover 记载消费位点,数据不丢掉。
  • 单点容错:供给单点容错的才能,不需求完好重启作业。
  • 资源弹性:支撑运转时 Pod 级和 CPU/Memory 级的资源弹性扩缩容,动态大局优化决策。

04

DLRover 能带来什么

1.作业零资源参数装备

用户提交分布式作业时无需供给任何资源信息,DLRover 会主动对作业进行画像,推导出最优的资源装备,一同运转时能够依据实践情况(集群资源、样本流量、当时利用率、…)主动对资源进行调整。下面展示了两种提交脚本的装备比照:

DLRover:蚂蚁开源大规模智能分布式训练系统

2. 单点容错提高作业稳定性与康复功率

DLRover 支撑单点康复 Parameter Server 和 Worker 人物的失利退出而不需求全体作业重启,关于非用户代码和数据类型的过错能够完成用户无感的重启。例如集群中,很常见的一类过错是因为用户装备了不足的内存,导致练习 OOM。在 DLRover 的协助下,咱们能够主动拉起一个优化装备的节点来康复失利的 Node。在实在环境下,DLRover 办理的练习作业,比较基线的 Kubeflow TF-Operator 作业,练习成功率从 84% 提高到了 95% 以上。

DLRover:蚂蚁开源大规模智能分布式训练系统

3. 主动扩缩容提高作业练习功能

DLRover 针对 Parameter Server 和 Worker 级别都支撑在练习运转时进行主动的调节练习资源以提高练习功能。经过监控作业节点的 Workload,DLRover 能够剖析资源装备的瓶颈。常见的资源瓶颈有:节点抢占、Workload 不平衡、CPU 不足导致算力低下、节点数目不足。DLRover 能够经过动态的资源热更新来继续优化练习功能。

DLRover:蚂蚁开源大规模智能分布式训练系统

4. 主动扩缩容提高作业资源利用率

通常不同的模型练习作业,需求不同的资源装备。然而用户倾向于超量装备作业的资源以保证作业的成功率。这通常会导致很多的资源糟蹋。DLRover 的主动扩缩容才能,能够主动依据作业的实在需求装备资源,以最少的资源到达最优的练习功能,从而削减资源糟蹋。下图显示了主动资源比照手动资源的资源利用率曲线比照:

DLRover:蚂蚁开源大规模智能分布式训练系统

5. 动态数据分发处理慢节点问题

混部集群存在资源超卖和抢占的情况,部分节点消费数据慢,快节点需求等待慢节点,下降练习速度。DLRover 能够经过数据动态分发给慢节点少分发一些数据,削减等待。此外 DLRover 应该保证练习使命尽可能按照用户装备参数消费数据,避免重复消费/丢掉数据,这会给练习带来不确定性,影响模型功能。

当扩容或许缩容时,需求有个大局和谐者知道记载节点当时消费数据详情。当节点失利重启后,大局和谐者需求知道节点现已消费和尚未消费的数据。假如这些逻辑让练习节点来做,练习节点和练习节点之间需求交互,添加练习节点逻辑的复杂性。DLRover Master 充当了这个大局和谐者的人物。

总而言之,在咱们看来,经过动态数据能够简化练习节点逻辑的复杂性,练习节点只管从 DLRover Master 获取 Shard,然后读取数据,不需求处理其他的逻辑。

6. 一致离线与在线学习范式

上述动态数据分片特性,实践上协助咱们将 Data Source 和练习作业进行了解耦,在此基础上 DLRover 能够一同支撑离线练习,也能够支撑消费实时样本流的在线学习作业。(能够经过 Dlrover.trainer 直接对接样本流,也能够作为流核算引擎的练习 Sink 节点

在蚂蚁的实践中,DLRover 能够作为一个抱负的组件,来协助咱们构建出一个端到端的在线学习体系。DLRover 能够供给数据源消费位点记载与康复,在线学习长跑作业稳定性与功能保证,资源利用率保证等一系列实践问题。咱们的开源仓库中也供给了简略的范例,后续咱们也会敞开更多周边组件。

7. 支撑异步和同步练习形式

练习集群中每天都运转着不同事务域性质各异的练习作业:引荐体系的大规模稀疏模型通常运转在 PS/Worker 架构的练习形式下进行异步参数更新,资源也多以 CPU 核算为主。CV/NLP 范畴的稠密模型则多以数据并行的方法在 GPU 服务器上进行同步练习,这时只要 Worker 一种人物。

DLRover 在规划上,能够一同支撑同步和异步更新形式,做到针对各种练习范式的一致。

8. 同训 DL 练结构解耦

DLRover 支撑用户运用任何自己的练习结构,底层练习代码经过供给约好的 API 接口以完成主动弹性扩缩等需求同底层分布式代码深度交互。集群中布置完成后,终端算法同学根本能够无感接入。

05

总结 & 未来方案

DLRover 现在现已在蚂蚁大规模落地,集群资源利用率相关于基线稳定获得了 15% 以上的提高。一同也有用处理了因为资源装备不合理形成的练习吞吐不及预期的问题。咱们期望经过 DLRover 的开源能够协助更多同行一同推广低碳、绿色、AI 的理念。一同也切实下降模型开发中的运维本钱,释放更多的生产力去处理事务的问题。

当时 DLRover 的调优算法,以及资源,作业画像战略首要针对蚂蚁内部技能栈优化。考虑到不同组织实践技能栈的多样性,在规划上,DLRover 在 API 层做了一致接口笼统,具体调优算法与作业画像战略则可灵敏自定义。咱们欢迎不同组织的开发者也能依据本身特点,同咱们一同共建 DLRover 项目,将其发展壮大。

了解更多…

DLRover Star 一下✨: github.com/intelligent…

本周引荐阅读

DLRover:蚂蚁开源大规模智能分布式训练系统

Go 原生插件运用问题全解析

DLRover:蚂蚁开源大规模智能分布式训练系统

MOSN 构建 Subset 优化思路共享

DLRover:蚂蚁开源大规模智能分布式训练系统

MOSN 文档运用指南

DLRover:蚂蚁开源大规模智能分布式训练系统

MOSN 1.0 发布,开启新架构演进