掌桥专利:专业的专利平台
掌桥专利
首页

异构集群调度的模拟方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 10:05:17


异构集群调度的模拟方法、装置、计算机设备及存储介质

技术领域

本申请涉及信息技术领域,尤其涉及一种异构集群调度的模拟方法、装置、计算机设备及存储介质。

背景技术

人工智能的迅速发展使得涌现出越来越多的深度学习应用,而该类应用在运行时由于需要海量的训练数据和高性能的计算能力,促使了高性能芯片如GPU、FPGA和TPU等的产生和应用。为了满足上层深度学习应用对计算力和存储能力的需求,CPU与GPU等的异构集群逐渐成为主要集群配置方案。

而近年来随着深度学习的崛起,高性能计算逐渐进入云集群领域。由于深度学习应用对算力的需求非常旺盛,一般的计算平台无法达到其要求,而高性能计算则为该类应用的运行提供了持续稳定的算例保障。而由于高性能芯片GPU等购价昂贵,且底层架构复杂多样、集群规模不断扩张,对上层的深度学习应用调度带来了巨大的挑战。而在针对异构集群上的深度学习应用设计调度算法时则面临着诸多问题。一方面由于底层硬件资源如GPU等型号众多,购置费用昂贵;另一方面,调度的决策受许多因素如公平性、容量保证和资源可靠性的影响,很难找到大规模集群评测调度算法性能。因此,如何根据实际需求设计一个轻量级、易于配置和使用的异构集群调度模拟器是目前异构调度研究的主要问题。

目前,潘旭明等的《MapReduce FairScheduler的高性能优化及超大规模集群模拟器设计及实现》结合真实的线上生产集群,设计并实现了超大规模hadoop集群的模拟器,并对其功能和性能做了验证性测试,其主要功能有(1)用1~2台服务器模拟超大规模集群,(2)模拟客户端并发提交作业,提供全面的benchmark测试。基于模拟器搭建了2000个节点的模拟集群,分别对FIFO,FairScheduler和新的公平调度器进行全面的对比测试;以及刘知俊等的《面向性能调优的MapReduce集群模拟器的研究与设计》设计了一个MapReduce模拟器,能使用少量节点模拟出大规模集群,并对作业的运行过程进行了精确模拟,从而提供了一个完整的Hadoop集群性能测试平台,帮助解决大规模集群的测试问题。此外,Apache也提供了一个Yarn调度器负载模拟器Yarn Scheduler Load Simulator(SLS),它是一个能够在一台机器上装载应用程序,模拟一个大规模的YARN集群的工具。模拟器使用实际的YARNResourceManager,在相同的JAVA虚拟机内,通过处理和调度NM/AMs心跳事件,模拟NodeManager和ApplicationMaster来移除网络因素。

但是,这些技术一方面采用针对CPU处理器的模拟器如gem5,支持多种ISAs和CPU模型且高度可配置;或者针对GPU的模拟器如GPGPU-sim,支持不同GPU架构;针对CPU和GPU混合的模拟器gem5-gpu,该模拟器是对gem5和GPGPU-sim的集成。另一方面,现有的集群模拟器主要是针对大数据负载设计的Hadoop和Yarn调度模拟器,这些模拟器在底层硬件架构和上层调度系统方面都存在滞后性,难以满足调度优化研发人员对于异构集群调度的迫切需求,且实验环境准备的复杂性高以及硬件资源购置的费用支出高昂。

发明内容

本申请实施例的目的在于提出一种异构集群调度的模拟方法、装置、计算机设备及存储介质,以至少解决传统的异构集群调度方法的实验环境准备的复杂性高以及硬件资源购置的费用支出高昂的问题。

为了解决上述技术问题,本申请实施例提供一种异构集群调度的模拟方法,采用了如下所述的技术方案:

接收用户终端发送的模拟运行请求;

响应模拟运行请求,读取本地数据库获取历史异构资源配置信息;

基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;

基于执行指令使深度学习负载按照运行模式以及指令调度策略运行;

基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。

进一步的,该方法还包括:

读取本地数据库,获取训练数据集;

基于训练数据集对基础深度学习负载benchmark进行训练,得到训练好的深度学习负载benchmark;

基于执行指令使深度学习负载按照运行模式以及指令调度策略运行具体包括:

基于执行指令使深度学习负载benchmark按照运行模式以及指令调度策略运行。

进一步地,该方法还包括:

对深度学习负载benchmark的应用层以及微架构层的性能指标进行脚本编辑,得到深度学习负载benchmark对应的指标采集配置文件。

进一步地,该方法还包括:

基于指标采集配置文件对运行中的深度学习负载进行调度性能指标采集,得到调度性能数据;

基于预设的性能指标对调度性能数据进行评价,得到调度性能评估结果。

为了解决上述技术问题,本申请实施例还提供一种异构集群调度的模拟装置,采用了如下所述的技术方案:

请求接收模块,用于接收用户终端发送的模拟运行请求;

信息读取模块,用于响应模拟运行请求,读取本地数据库获取历史异构资源配置信息;

指令设置模块,用于基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;

负载运行模块,用于基于执行指令使深度学习负载按照运行模式以及指令调度策略运行;

模拟运行模块,用于基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。

进一步的,该装置还包括:

数据集获取模块,用于读取本地数据库,获取训练数据集;

负载训练模块,用于基于训练数据集对基础深度学习负载benchmark进行训练,得到训练好的深度学习负载benchmark;

负载运行模块包括:

负载运行单元,用于基于执行指令使深度学习负载benchmark按照运行模式以及指令调度策略运行。

进一步地,该装置还包括:

对深度学习负载benchmark的应用层以及微架构层的性能指标进行脚本编辑,得到深度学习负载benchmark对应的指标采集配置文件。

进一步地,该装置还包括:

性能指标采集模块,用于基于指标采集配置文件对运行中的深度学习负载进行调度性能指标采集,得到调度性能数据;

性能评估模块,用于基于预设的性能指标对调度性能数据进行评价,得到调度性能评估结果。

为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:

包括存储器和处理器,存储器中存储有计算机程序,处理器执行计算机程序时实现如上所述异构集群调度的模拟方法的步骤。

为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:

计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上所述的异构集群调度的模拟方法的步骤。

与现有技术相比,本申请实施例主要有以下有益效果:

本申请提供了一种异构集群调度的模拟方法,包括:接收用户终端发送的模拟运行请求;响应模拟运行请求,读取本地数据库获取历史异构资源配置信息;基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;基于执行指令使深度学习负载按照运行模式以及指令调度策略运行;基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。基于预先收集到的历史异构资源配置信息针对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;并基于执行指令使深度学习负载按照运行模式以及指令调度策略运行来准确获取深度学习负载的运行行为特征;进而,基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,从而模拟深度学习负载的大规模异构集群运行来获取运行状态数据,不仅能够实现模拟kubernetes大规模集群部署方式,还能够通过少量节点实现模拟大规模异构集群的应用场景,从而为调度研发人员提供低成本的实验环境,并在一定程度上有效降低异构集群的评估时间以及成本。

附图说明

为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请可以应用于其中的示例性原理示意图;

图2是根据本申请的异构集群调度的模拟方法的一个实施例的流程图;

图3是根据本申请的异构集群调度的模拟方法的深度学习负载训练的流程图;

图4是根据本申请的异构集群调度的模拟方法的性能数据评价的流程图;

图5是根据本申请的异构集群调度的模拟装置的一个实施例的结构示意图;

图6是根据本申请的异构集群调度的模拟装置的深度学习负载训练的结构示意图;

图7是根据本申请的异构集群调度的模拟装置的性能数据评价的结构示意图;

图8是根据本申请的计算机设备的一个实施例的结构示意图。

具体实施方式

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。

实施例一

参阅图1-2,示出了根据本申请的异构集群调度的模拟的方法的一个实施例的流程图,为了便于说明,仅示出了与本申请相关的部分。

在步骤S1中,接收用户终端发送的模拟运行请求。

在本实施例中,模拟运行请求是调度研发人员为了获取深度学习负载在不同高性能异构硬件配置下的运行时特征需要提供环境支持而发出的操作请求。

在步骤S2中,响应模拟运行请求,读取本地数据库获取历史异构资源配置信息。

在本实施例中,历史异构资源配置信息是在模拟运行前,为了能够有针对性的对深度学习负载的应用程序在不同架构芯片下的运行方式和API调用关系进行设置而进行采集的现有CPU与高性能芯片如GPU的不同架构数据,其中,该不同架构数据具体可以包含CPU模型(AtomicSimple、TimingSimple、InOrder和O3等)与GPU架构(Tesla、Fermi、Kepler、Volta、Turing等)以及FPGA、TPU等数据。

在步骤S3中,基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置。

在本实施例中,运行模式是指在实现不同架构下深度学习负载的应用程序执行指令时的运算模式如串行运行和并行运行等。

在本实施例中,指令调度策略是指实现不同架构下深度学习负载的应用程序执行指令时的调度策略,以及能够执行该调度策略的不同硬件组合的参数配置文件。

在本实施例中,基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置具体可以是对基于历史异构资源配置信息来对现有硬件类型和架构进行分析,从而设置能够实现不同架构下深度学习负载的应用程序执行指令时的运算模式如串行运行和并行运行等,以及能够实现不同架构下深度学习负载的应用程序执行指令时的调度策略,以及能够执行该调度策略的不同硬件组合的参数配置文件,使得后续能够模拟不同架构下深度学习负载的应用程序运行状态,进一步分析深度学习负载在不同硬件配置下的运行时特征,从而实现不同硬件架构组合的自主化配置功能,模拟异构集群的底层资源配置策略,简化异构环境的配置,实现节约购买物理硬件的成本。

在步骤S4中,基于执行指令使深度学习负载按照运行模式以及指令调度策略运行。

在本实施例中,基于执行指令使深度学习负载按照运行模式以及指令调度策略运行具体可以是在不同架构下使该深度学习负载的应用程序执行如串行运行和并行运行等运算模式,以及在不同架构下使该深度学习负载的应用程序基于不同硬件组合的参数配置文件执行该调度策略,能够实现在不同架构下模拟深度学习负载的应用程序的运行状态,进而分析深度学习负载在不同硬件配置下的运行时特征,从而实现不同硬件架构组合的自主化配置功能,模拟异构集群的底层资源配置策略,简化异构环境的配置,实现节约购买物理硬件的成本。

在步骤S5中,基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。

在本实施例中,Kubernetes(K8s)因其可移植、可扩展和自修复的特点成为目前工业界和学术界广泛应用的容器编排工具。

在本实施例中,基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展具体可以是通过采用k8s部署集群,并基于k8s容器编排工具通过模拟物理机特征实现将少量节点模拟出大规模节点的集群来模拟深度学习负载的大规模异构集群运行,从而准确获取能够直观反映集群运行状态的运行状态数据,不仅能够实现集群节点的模拟扩展,还能够为集群调度优化研究提供了良好的环境支持。

本申请提供了一种异构集群调度的模拟方法,包括:接收用户终端发送的模拟运行请求;响应模拟运行请求,读取本地数据库获取历史异构资源配置信息;基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;基于执行指令使深度学习负载按照运行模式以及指令调度策略运行;基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。基于预先收集到的历史异构资源配置信息针对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;并基于执行指令使深度学习负载按照运行模式以及指令调度策略运行来准确获取深度学习负载的运行行为特征;进而,基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,从而模拟深度学习负载的大规模异构集群运行来获取运行状态数据,不仅能够实现模拟kubernetes大规模集群部署方式,还能够通过少量节点实现模拟大规模异构集群的应用场景,从而为调度研发人员提供低成本的实验环境,并在一定程度上有效降低异构集群的评估时间以及成本。

继续参考图3,示出了根据本申请的异构集群调度的模拟方法的深度学习负载训练的流程图,为了便于说明,仅示出了与本申请相关的部分。

在本实施例一的一些可选的实现方式中,在上述步骤S4之前,该方法还包括:步骤S301以及步骤S302;上述步骤S4包括:步骤S303。

在步骤S301中,读取本地数据库,获取训练数据集。

在步骤S302中,基于训练数据集对基础深度学习负载benchmark进行训练,得到训练好的深度学习负载benchmark。

在步骤S303中,基于执行指令使深度学习负载benchmark按照运行模式以及指令调度策略运行。

在本实施例中,基础深度学习负载benchmark是从现有的几种不同类型的深度学习负载中筛选具有代表性的benchmarks,主要用于测试负载的执行时间、传输速度、吞吐量、资源占用率等数据。

在本实施例中,训练数据集是每个benchmark所对应的不同规模的训练数据集。

在本实施例中,通过收集每个benchmark所对应的不同规模的训练数据集来对选取的基础深度学习负载benchmark进行训练,以获取能够用于测试模拟深度学习负载的应用程序在不同架构下运行的深度学习负载benchmark,进而后续当在不同架构下该深度学习负载benchmark的应用程序执行如串行运行和并行运行等运算模式,以及在不同架构下该深度学习负载benchmark的应用程序基于不同硬件组合的参数配置文件执行该调度策略时,能够实现在不同架构下模拟深度学习负载benchmark的应用程序的运行状态,进而分析深度学习负载benchmark在不同硬件配置下的运行时特征,从而实现不同硬件架构组合的自主化配置功能,模拟异构集群的底层资源配置策略,简化异构环境的配置,实现节约购买物理硬件的成本。

在本实施例一的一些可选的实现方式中,在上述步骤S302之后,该方法还包括:

对深度学习负载benchmark的应用层以及微架构层的性能指标进行脚本编辑,得到深度学习负载benchmark对应的指标采集配置文件。

在本实施例中,脚本编辑是指能够自由选择性能指标以及采样间隔的配置文件的设置。

在本实施例中,深度学习负载benchmark的应用层的性能指标如CPU利用率、内存利用率、磁盘IO大小、网络带宽等。

在本实施例中,深度学习负载benchmark的微架构层的性能指标如IPC(Instructions per Cycle),分支预测(Branch Predict)和缓存丢失(Cache misses)等数据。

在本实施例中,为了能够对在不同架构下深度学习负载benchmark模拟运行采用的调度算法进行有效的调度性能评估,本实施例通过对深度学习负载benchmark的应用层的性能指标如CPU利用率、内存利用率、磁盘IO大小、网络带宽等,以及深度学习负载benchmark的微架构层的性能指标如IPC(Instructions per Cycle),分支预测(BranchPredict)和缓存丢失(Cache misses)等数据,进行脚本设置,得到包含有自由选择性能指标以及采样间隔功能的指标采集配置文件,以使后续能够基于该采集配置文件对运行中的深度学习负载进行调度性能指标采集,并对采集到的数据进行性能评估,以获取性能评估结果,从而实现对调度算法性能有效评估,并在一定程度上有效降低异构集群的评估时间以及成本。

继续参考图4,示出了根据本申请的异构集群调度的模拟方法的性能数据评价的流程图,为了便于说明,仅示出了与本申请相关的部分。

在本实施例一的一些可选的实现方式中,在上述步骤S5之后,该方法还包括:步骤S401以及步骤S402。

在步骤S401中,基于指标采集配置文件对运行中的深度学习负载进行调度性能指标采集,得到调度性能数据。

在步骤S402中,基于预设的性能指标对调度性能数据进行评价,得到调度性能评估结果。

在本实施例中,预设的性能指标是根据实际应用需求设置的能够用于选取评估调度性能的关键指标如完成每次调度的时间成本、平均作业周转时间和集群整体资源利用率的变化等,此处不作具体限制。

在本实施例中,调度性能评估结果是能够用于直观反映深度学习负载benchmark模拟运行时的调度性能的评价指标。

在本实施例中,基于指标采集配置文件中采样间隔来对模拟运行中的深度学习负载进行调度性能指标采集,得到能够用于直观反映深度学习负载benchmark模拟运行时的调度性能的调度性能数据,进而,在该调度性能数据中筛选出满足预设的性能指标要求的关键指标如完成每次调度的时间成本、平均作业周转时间和集群整体资源利用率的变化等,从而得到能够用于直观反映深度学习负载benchmark模拟运行时的调度性能的调度性能评估结果,以及在一定程度上有效降低异构集群的评估时间以及成本。

综上所述,本申请提供了一种异构集群调度的模拟方法,包括:接收用户终端发送的模拟运行请求;响应模拟运行请求,读取本地数据库获取历史异构资源配置信息;基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;基于执行指令使深度学习负载按照运行模式以及指令调度策略运行;基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。基于训练数据集对基础深度学习负载benchmark进行训练,得到训练好的深度学习负载benchmark,并基于预先收集到的历史异构资源配置信息针对深度学习负载benchmark进行执行指令的运行模式以及指令调度策略的设置;进而基于执行指令使深度学习负载benchmark按照运行模式以及指令调度策略运行来准确获取深度学习负载的运行行为特征;再基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,从而模拟深度学习负载的大规模异构集群运行来获取运行状态数据;然后,基于深度学习负载benchmark的应用层以及微架构层的性能指标进行设置的指标采集配置文件,对运行中的深度学习负载进行调度性能指标采集,并对采集到的调度性能数据进行评价,以快速获取调度性能评估结果。不仅能够实现模拟kubernetes大规模集群部署方式,还能够通过少量节点实现模拟大规模异构集群的应用场景,从而为调度研发人员提供低成本的实验环境,并在一定程度上有效降低异构集群的评估时间以及成本。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

实施例二

进一步参考图5,作为对上述图2所示方法的实现,本申请提供了一种异构集群调度的模拟装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图5所示,本申请实施例二提供的异构集群调度的模拟装置100包括:请求接收模块101、信息读取模块102、指令设置模块103、负载运行模块104以及模拟运行模块105。其中:

请求接收模块101,用于接收用户终端发送的模拟运行请求;

在本实施例中,模拟运行请求是调度研发人员为了获取深度学习负载在不同高性能异构硬件配置下的运行时特征需要提供环境支持而发出的操作请求。

信息读取模块102,用于响应所述模拟运行请求,读取本地数据库获取历史异构资源配置信息;

在本实施例中,历史异构资源配置信息是在模拟运行前,为了能够有针对性的对深度学习负载的应用程序在不同架构芯片下的运行方式和API调用关系进行设置而进行采集的现有CPU与高性能芯片如GPU的不同架构数据,其中,该不同架构数据具体可以包含CPU模型(AtomicSimple、TimingSimple、InOrder和O3等)与GPU架构(Tesla、Fermi、Kepler、Volta、Turing等)以及FPGA、TPU等数据。

指令设置模块103,用于基于所述历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;

在本实施例中,运行模式是指在实现不同架构下深度学习负载的应用程序执行指令时的运算模式如串行运行和并行运行等。

在本实施例中,指令调度策略是指实现不同架构下深度学习负载的应用程序执行指令时的调度策略,以及能够执行该调度策略的不同硬件组合的参数配置文件。

在本实施例中,基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置具体可以是对基于历史异构资源配置信息来对现有硬件类型和架构进行分析,从而设置能够实现不同架构下深度学习负载的应用程序执行指令时的运算模式如串行运行和并行运行等,以及能够实现不同架构下深度学习负载的应用程序执行指令时的调度策略,以及能够执行该调度策略的不同硬件组合的参数配置文件,使得后续能够模拟不同架构下深度学习负载的应用程序运行状态,进一步分析深度学习负载在不同硬件配置下的运行时特征,从而实现不同硬件架构组合的自主化配置功能,模拟异构集群的底层资源配置策略,简化异构环境的配置,实现节约购买物理硬件的成本。

负载运行模块104,用于基于所述执行指令使所述深度学习负载按照所述运行模式以及所述指令调度策略运行;

在本实施例中,基于执行指令使深度学习负载按照运行模式以及指令调度策略运行具体可以是在不同架构下使该深度学习负载的应用程序执行如串行运行和并行运行等运算模式,以及在不同架构下使该深度学习负载的应用程序基于不同硬件组合的参数配置文件执行该调度策略,能够实现在不同架构下模拟深度学习负载的应用程序的运行状态,进而分析深度学习负载在不同硬件配置下的运行时特征,从而实现不同硬件架构组合的自主化配置功能,模拟异构集群的底层资源配置策略,简化异构环境的配置,实现节约购买物理硬件的成本。

模拟运行模块105,用于基于kubernetes虚拟化技术对运行中的所述深度学习负载进行集群节点模拟扩展,模拟所述深度学习负载的大规模异构集群运行,得到所述深度学习负载的运行行为特征以及运行状态数据。

在本实施例中,Kubernetes(K8s)因其可移植、可扩展和自修复的特点成为目前工业界和学术界广泛应用的容器编排工具。

在本实施例中,基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展具体可以是通过采用k8s部署集群,并基于k8s容器编排工具通过模拟物理机特征实现将少量节点模拟出大规模节点的集群来模拟深度学习负载的大规模异构集群运行,从而准确获取能够直观反映集群运行状态的运行状态数据,不仅能够实现集群节点的模拟扩展,还能够为集群调度优化研究提供了良好的环境支持。

本申请提供了一种异构集群调度的模拟装置,包括:基于预先收集到的历史异构资源配置信息针对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;并基于执行指令使深度学习负载按照运行模式以及指令调度策略运行来准确获取深度学习负载的运行行为特征;进而,基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,从而模拟深度学习负载的大规模异构集群运行来获取运行状态数据,不仅能够实现模拟kubernetes大规模集群部署方式,还能够通过少量节点实现模拟大规模异构集群的应用场景,从而为调度研发人员提供低成本的实验环境,并在一定程度上有效降低异构集群的评估时间以及成本。

继续参考图6,示出了根据本申请的异构集群调度的模拟装置的深度学习负载训练的结构示意图,为了便于说明,仅示出了与本申请相关的部分。

在本实施例二的一些可选的实现方式中,该装置还包括:数据集获取模块601以及负载训练模块602;上述负载运行模块104包括:负载运行单元603。

数据集获取模块601,用于读取本地数据库,获取训练数据集;

负载训练模块602,用于基于训练数据集对基础深度学习负载benchmark进行训练,得到训练好的深度学习负载benchmark;

负载运行单元603,用于基于执行指令使深度学习负载benchmark按照运行模式以及指令调度策略运行。

在本实施例中,基础深度学习负载benchmark是从现有的几种不同类型的深度学习负载中筛选具有代表性的benchmarks,主要用于测试负载的执行时间、传输速度、吞吐量、资源占用率等数据。

在本实施例中,训练数据集是每个benchmark所对应的不同规模的训练数据集。

在本实施例中,通过收集每个benchmark所对应的不同规模的训练数据集来对选取的基础深度学习负载benchmark进行训练,以获取能够用于测试模拟深度学习负载的应用程序在不同架构下运行的深度学习负载benchmark,进而后续当在不同架构下该深度学习负载benchmark的应用程序执行如串行运行和并行运行等运算模式,以及在不同架构下该深度学习负载benchmark的应用程序基于不同硬件组合的参数配置文件执行该调度策略时,能够实现在不同架构下模拟深度学习负载benchmark的应用程序的运行状态,进而分析深度学习负载benchmark在不同硬件配置下的运行时特征,从而实现不同硬件架构组合的自主化配置功能,模拟异构集群的底层资源配置策略,简化异构环境的配置,实现节约购买物理硬件的成本。

在本实施例二的一些可选的实现方式中,该装置还包括:

对深度学习负载benchmark的应用层以及微架构层的性能指标进行脚本编辑,得到深度学习负载benchmark对应的指标采集配置文件。

在本实施例中,脚本编辑是指能够自由选择性能指标以及采样间隔的配置文件的设置。

在本实施例中,深度学习负载benchmark的应用层的性能指标如CPU利用率、内存利用率、磁盘IO大小、网络带宽等。

在本实施例中,深度学习负载benchmark的微架构层的性能指标如IPC(Instructions per Cycle),分支预测(Branch Predict)和缓存丢失(Cache misses)等数据。

在本实施例中,为了能够对在不同架构下深度学习负载benchmark模拟运行采用的调度算法进行有效的调度性能评估,本实施例通过对深度学习负载benchmark的应用层的性能指标如CPU利用率、内存利用率、磁盘IO大小、网络带宽等,以及深度学习负载benchmark的微架构层的性能指标如IPC(Instructions per Cycle),分支预测(BranchPredict)和缓存丢失(Cache misses)等数据,进行脚本设置,得到包含有自由选择性能指标以及采样间隔功能的指标采集配置文件,以使后续能够基于该采集配置文件对运行中的深度学习负载进行调度性能指标采集,并对采集到的数据进行性能评估,以获取性能评估结果,从而实现对调度算法性能有效评估,并在一定程度上有效降低异构集群的评估时间以及成本。

继续参考图7,示出了根据本申请的异构集群调度的模拟装置的性能数据评价的结构示意图,为了便于说明,仅示出了与本申请相关的部分。

在本实施例二的一些可选的实现方式中,该装置还包括:性能指标采集模块701以及性能评估模块702。

性能指标采集模块701,用于基于指标采集配置文件对运行中的深度学习负载进行调度性能指标采集,得到调度性能数据;

性能评估模块702,用于基于预设的性能指标对调度性能数据进行评价,得到调度性能评估结果。

在本实施例中,预设的性能指标是根据实际应用需求设置的能够用于选取评估调度性能的关键指标如完成每次调度的时间成本、平均作业周转时间和集群整体资源利用率的变化等,此处不作具体限制。

在本实施例中,调度性能评估结果是能够用于直观反映深度学习负载benchmark模拟运行时的调度性能的评价指标。

在本实施例中,基于指标采集配置文件中采样间隔来对模拟运行中的深度学习负载进行调度性能指标采集,得到能够用于直观反映深度学习负载benchmark模拟运行时的调度性能的调度性能数据,进而,在该调度性能数据中筛选出满足预设的性能指标要求的关键指标如完成每次调度的时间成本、平均作业周转时间和集群整体资源利用率的变化等,从而得到能够用于直观反映深度学习负载benchmark模拟运行时的调度性能的调度性能评估结果,以及在一定程度上有效降低异构集群的评估时间以及成本。

综上所述,本申请提供了一种异构集群调度的模拟装置,包括:请求接收模块,用于接收用户终端发送的模拟运行请求;信息读取模块,用于响应模拟运行请求,读取本地数据库获取历史异构资源配置信息;指令设置模块,用于基于历史异构资源配置信息对预先训练好的深度学习负载进行执行指令的运行模式以及指令调度策略的设置;负载运行模块,用于基于执行指令使深度学习负载按照运行模式以及指令调度策略运行;模拟运行模块,用于基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,模拟深度学习负载的大规模异构集群运行,得到深度学习负载的运行行为特征以及运行状态数据。基于训练数据集对基础深度学习负载benchmark进行训练,得到训练好的深度学习负载benchmark,并基于预先收集到的历史异构资源配置信息针对深度学习负载benchmark进行执行指令的运行模式以及指令调度策略的设置;进而基于执行指令使深度学习负载benchmark按照运行模式以及指令调度策略运行来准确获取深度学习负载的运行行为特征;再基于kubernetes虚拟化技术对运行中的深度学习负载进行集群节点模拟扩展,从而模拟深度学习负载的大规模异构集群运行来获取运行状态数据;然后,基于深度学习负载benchmark的应用层以及微架构层的性能指标进行设置的指标采集配置文件,对运行中的深度学习负载进行调度性能指标采集,并对采集到的调度性能数据进行评价,以快速获取调度性能评估结果。不仅能够实现模拟kubernetes大规模集群部署方式,还能够通过少量节点实现模拟大规模异构集群的应用场景,从而为调度研发人员提供低成本的实验环境,并在一定程度上有效降低异构集群的评估时间以及成本。

为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图8,图8为本实施例计算机设备基本结构框图。

所述计算机设备8包括通过系统总线相互通信连接存储器81、处理器82、网络接口83。需要指出的是,图中仅示出了具有组件81-83的计算机设备8,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。

所述存储器81至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器81可以是所述计算机设备8的内部存储单元,例如该计算机设备8的硬盘或内存。在另一些实施例中,所述存储器81也可以是所述计算机设备8的外部存储设备,例如该计算机设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器81还可以既包括所述计算机设备8的内部存储单元也包括其外部存储设备。本实施例中,所述存储器81通常用于存储安装于所述计算机设备8的操作系统和各类应用软件,例如异构集群调度的模拟方法的程序代码等。此外,所述存储器81还可以用于暂时地存储已经输出或者将要输出的各类数据。

所述处理器82在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器82通常用于控制所述计算机设备8的总体操作。本实施例中,所述处理器82用于运行所述存储器81中存储的程序代码或者处理数据,例如运行所述异构集群调度的模拟方法的程序代码。

所述网络接口83可包括无线网络接口或有线网络接口,该网络接口83通常用于在所述计算机设备8与其他电子设备之间建立通信连接。

本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有异构集群调度的模拟程序,所述异构集群调度的模拟程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的异构集群调度的模拟方法的步骤。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。

显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

相关技术
  • 异构集群调度的模拟方法、装置、计算机设备及存储介质
  • 集群资源调度方法、装置、计算机设备及存储介质
技术分类

06120112410339