System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于交错执行的深度学习训练作业组合调度系统技术方案_技高网

一种基于交错执行的深度学习训练作业组合调度系统技术方案

技术编号:43776903 阅读:3 留言:0更新日期:2024-12-24 16:14
本公开提供一种基于交错执行的深度学习训练作业组合调度系统。包括深度学习训练作业控制器、作业组合调度器、作业组交错执行控制器三个组件,以及作业组交错执行的执行器;对于用户提交的深度学习训练作业,系统首先通过训练作业控制器创建Profile任务采集作业的运行时资源使用特征数据并输入作业组合调度器,作业组合调度器根据资源使用特征经过自定义的组合调度算法输出作业组配置的组合结果以及作业组选择节点类型到作业组交错执行控制器,最后由作业组交错执行控制器根据调度结果创建作业组训练任务控制作业组交错执行的执行器进行作业执行。相比单个训练作业独占资源的分布式训练模式,交错执行共享资源的运行机制,能够显著提升作业的执行效率。

【技术实现步骤摘要】

本公开涉及云计算与分布式系统领域,更具体地讲,涉及一种基于交错执行的深度学习训练作业组合调度系统


技术介绍

1、随着智能制造、自动驾驶、智慧医疗等领域的不断发展和产业落地,人工智能应用的开发部署对算力的需求不断增加。以cpu为代表的通用计算体系和集群系统无法满足计算密集型、高度并行化的深度学习训练作业的算力需求。随着以容器为代表的云原生技术快速发展,在公用化云原生环境中部署与托管应用成为了企业it架构的和运营的新常态。但是当前全球数据中心整体的资源利用率近为10~20%。

2、随着硬件技术的发展,在集群中单个运行的深度学习训练作业通常无法充分使用独占的硬件件资源。深度学习训练作业在运行的过程中通常是多轮迭代的执行模式,每轮迭代中又分为多个不同的阶段,这些阶段存在不同的资源瓶颈,例如数据加载阶段主要利用磁盘io与cpu资源、前向反向传播计算阶段主要使用gpu资源、梯度同步阶段主要利用网络资源。这也导致了深度学习训练的过程中通常呈现多维度的资源周期性占用与闲置,进而导致计算集群中大量的资源空闲。

3、目前工业界与学术界针对gpu资源调度问题,提出了如下解决方案:

4、1.基于kubernetes与device-plugin实现gpu资源的容器编排调度

5、kubernetes作为目前主流的容器编排调度架构,被各大云厂商作为大规模集群容器编排调度与资源调度的基础架构。nvidia针对kubernetes推出nvidia-device-plugin插件,支持在kubernetes集群内调度gpu资源。kubernetes调度框架通过插件实现各种调度策略。kubernetes内置默认的调度策略根据任务优先级、亲和性、污点等,为pod选择合适的节点并绑定相应的资源。同时kubernetes社区在针对gpu资源调度提供拓扑感知等调度策略进一步对gpu资源调度进行优化。

6、以kubernetes和device-plugin为基础,针对深度学习作业,华为开源了面向高性能计算(hpc)和深度学习训练等批处理工作负载的kubernetes调度器volcano。它提供了一套高级调度和资源管理功能,以满足大规模计算和数据处理任务的需求,提供了包括基于各种主流架构的cpu、gpu在内的异构设备混合调度能力。volcano以job为粒度进行调度提供gang scheduling等策略,并支持用户自定义plugin和action以实现更多调度算法。

7、2.基于gpu隔离技术的gpu共享调度方案

8、nvidia-device-plugin仅支持在kubernetes上调度gpu资源,但多个pod共享同一gpu资源时不提供隔离性,仅按整卡绑定的方式分配给pod。为了能够更好地支持gpu资源调度提高资源的利用率,nvidia提供了多种gpu隔离共享方案。mps(multi-process service)和mig(multi-instance gpu)是nvidia提供的技术,用于提高gpu利用率。mps在软件层面通过将同一gpu实例上多个作业的上下文进行合并,转化为一个单一应用程序的上下文在gpu上运行,避免不同上下文调度切换的开销;mig能够将单个高性能gpu分割成多个更小的子gpu,分别分配给不同的任务则,通过硬件级别的支持将现存、缓存以及计算核心分割成多个实例,各个事例相互独立避免作业间的干扰。两者通过gpu共享技术提升了多任务和多用户场景下的gpu效率和灵活性。

9、3.分布式深度学习训练框架

10、现有的深度学习训练框架以torch和tensorflow为主。pytorch是由facebook开发的开源深度学习框架,它允许用户在运行时灵活地构建和修改计算图。tensorflow是由google brain团队开发的开源深度学习框架,支持从研究到生产的全流程深度学习开发。它拥有广泛的工具和生态系统支持实现可视化以及服务部署等功能,包括tensorboard、tensorflow lite、tensorflow serving等,适合大规模分布式训练和生产环境的模型部署。

11、常见的分布式训练框架包括parameter server(参数服务器)和distributeddataparallel(ddp)。parameter server是一种分布式机器学习框架,通过将模型参数存储在一个或多个服务器上,支持多个工作节点并行计算和更新参数,适用于大规模机器学习任务,提供异步和同步更新机制及容错能力。ddp是一种分布式训练技术,将模型复制到多个gpu上,并行处理不同的数据批次,通过高效的通信操作同步梯度,确保所有gpu的模型参数一致,适用于加速深度学习模型的多gpu环境训练。

12、4.基于交错执行的深度学习训练作业运行模式

13、为了提高资源利用率减少资源碎片,muri根据深度学习训练作业在不同阶段的资源瓶颈差异特性,通过将不同作业组合并按照交错执行的模式提高资源利用率。深度学习训练作业执行通常呈现多轮迭代的训练模式,每轮迭代中作业按照固定顺序执行数据加载、前向后向传播、通信三个阶段,三种阶段各自的所需要的主要资源不同,通常分别对应:磁盘io与cpu、gpu、网络。在交错执行模式的假设中,但个作业在同一时刻只有一种主要使用的资源,其他资源处于闲置状态。交错执行通过将不同作业执行阶段错开,例如可以当作业a执行前向反向传播计算时作业b执行梯度同步通信。因此交错执行使得同一时段中不同作业的执行阶段错开保证不同作业占用的主要资源不同,避免了资源竞争提高资源利用率。通过修改运行时框架在不同阶段间设置barrier,可以保证同一时段作业使用的主要资源错开。这种方法使得作业能够更加充分的利用集群中的多维度资源,尽可能的实现了不同维度资源互补的多作业并发执行。

14、以上方案实现的深度学习作业训练系统仍存在以下问题:

15、1.kubernetes通过nvidia-device-plugin支持对gpu资源的管理并通过调度插件对gpu资源进行分配。但是目前的kubernetes调度框架并不支持多个作业组合的调度模式。我们在设计作业组合调度时,通常需要考虑在一批作业中哪些作业适合组合在一起,产生的作业组适合分配到哪个节点上。但是kubernetes调框架以pod为基本粒度分配资源,在作业组合的调度场景下,需要依赖全局作业和资源信息来做出调度决策,调度器往往需要得到一批作业的信息才能实现作业组合。kubernetes调度框架暴露出的插件接口通常只包含独立的pod与node信息,并不足以实现组合调度的机制,因此原生的kubernetes调度框架并不适用于作业组合调度的场景。

16、2.基于gpu隔离技术的gpu共享调度方案虽然对gpu的计算资源和显存资源支持了资源隔离,并允许用户定制资源需求,根据资源需求进行调度。但是这种隔离方案仍然是一种粗粒度的隔离机制。通过mps或者mig使得多个训练任务共享同一gpu资源,这些机制虽然本文档来自技高网...

【技术保护点】

1.一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,包括深度学习训练作业控制器、作业组合调度器、作业组交错执行控制器三个组件,以及作业组交错执行的执行器;

2.如权利要求1所述的一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,所述深度学习训练作业控制器用于管理用户提交的作业执行过程;用户通过MLJobCRD模版提交训练任务,MLJob CRD的Spec模版定义用户提交的深度学习训练作业类型、训练所需的超参数以及系统资源需求约束;用户提交的深度学习训练作业实例需要包含进行深度学学习训练的模型类型、批大小、学习率、迭代轮次、学习率、数据集、GPU数量需求以及期望完成时间;CRD的Status状态模版定义用户提交作业的运行状态,包含作业当前处于的阶段,Profile任务作业子状态;

3.如权利要求2所述的一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,所述作业组合调度器负责将系统中等待调度的深度学习训练作业资源MLJob组合成作业组JobPack资源,并为作业组分配及集群的节点资源,维护系统中全部的作业运行视图,所述作业组合调度器分为事件分发、组合调度、资源清理三个模块;

4.如权利要求3所述的一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,所述作业组交错执行控制器通过设计JobPack CRD Spec模版规定作业组交错执行配置,所述JobPack Spec模版定义作业组资源需求以及作业组中单个深度学习训练作业的模版,并创建包含分布式训练的节点数量、卡数以及GPU类型的JobPack实例;并需要创建Status状态模版定义作业组的运行状态,包含作业当前处于的阶段,分布式训练各个worker的状态,关联的MLJob资源;

5.如权利要求4所述的一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,所述作业组交错执行的执行器的实现方式为:控制多个作业在一组Pod容器内按照预设的交错执行模式完成训练任务,作业组中的分布式训练任务在不同节点上通过DDP分布式训练框架实现数据并行的分布式训练,在同一节点内不同训练任务子进程通过执行器实现交错执行的运行机制;运行框架的启动程序通过读取挂载在容器内的ConfigMap得到作业类型、超参数配置以及交错执行顺序;所述作业组交错执行的执行器为每一个训练任务启动一个DDP分布式训练进程,并按照作业类型以及超参数配置加载训练模型并设置训练过程中的超参数,根据作业的交错执行顺序设置作业的启动顺序开启训练任务;

...

【技术特征摘要】

1.一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,包括深度学习训练作业控制器、作业组合调度器、作业组交错执行控制器三个组件,以及作业组交错执行的执行器;

2.如权利要求1所述的一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,所述深度学习训练作业控制器用于管理用户提交的作业执行过程;用户通过mljobcrd模版提交训练任务,mljob crd的spec模版定义用户提交的深度学习训练作业类型、训练所需的超参数以及系统资源需求约束;用户提交的深度学习训练作业实例需要包含进行深度学学习训练的模型类型、批大小、学习率、迭代轮次、学习率、数据集、gpu数量需求以及期望完成时间;crd的status状态模版定义用户提交作业的运行状态,包含作业当前处于的阶段,profile任务作业子状态;

3.如权利要求2所述的一种基于交错执行的深度学习训练作业组合调度系统,其特征在于,所述作业组合调度器负责将系统中等待调度的深度学习训练作业资源mljob组合成作业组jobpack资源,并为作业组分配及集群的节点资源,维护系统中全部的作业运行视图,所述作业组合调度器分为事件分发、组合调度、资源清理三个模块;

4.如权利要求3所述的一种基于...

【专利技术属性】
技术研发人员:杨任宇叶天宇姜维翰沃天宇张艺辉
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1