CN108920259B - 深度学习作业调度方法、系统和相关设备 - Google Patents

深度学习作业调度方法、系统和相关设备 Download PDF

Info

Publication number
CN108920259B
CN108920259B CN201810414039.6A CN201810414039A CN108920259B CN 108920259 B CN108920259 B CN 108920259B CN 201810414039 A CN201810414039 A CN 201810414039A CN 108920259 B CN108920259 B CN 108920259B
Authority
CN
China
Prior art keywords
job
deep learning
description file
target
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810414039.6A
Other languages
English (en)
Other versions
CN108920259A (zh
Inventor
林健
杨洁
洪斯宝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Publication of CN108920259A publication Critical patent/CN108920259A/zh
Priority to EP19777751.9A priority Critical patent/EP3761172A4/en
Priority to PCT/CN2019/078533 priority patent/WO2019184750A1/zh
Priority to US17/038,720 priority patent/US11954521B2/en
Application granted granted Critical
Publication of CN108920259B publication Critical patent/CN108920259B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Stored Programmes (AREA)
  • Image Analysis (AREA)

Abstract

本申请公开了一种深度学习作业调度方法、系统以及相关设备。所述方法包括:获取深度学习作业的作业请求,作业请求携带深度学习库类型以及作业类型;根据深度学习库类型以及作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;根据深度学习库类型以及作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;根据目标作业描述文件模板和目标作业基础镜像的标识,生成目标作业描述文件;将目标作业描述文件发送至容器调度器;容器调度器根据目标作业描述文件,从预存储的作业基础镜像中选择目标作业基础镜像,并创建至少一个容器用于执行作业请求。上述方案能够提升了深度学习作业调度的兼容率。

Description

深度学习作业调度方法、系统和相关设备
技术领域
本申请涉及人工智能领域,尤其涉及深度学习作业调度方法、系统和相关设备。
背景技术
近年来,深度学习技术在各行各业得到了越来越广泛的应用。国内外各大公有云服务提供商纷纷推出了深度学习云服务。这类云服务成为企业降低技术使用门槛、压缩软硬件部署成本的必然选择。云服务提供商在提供深度学习服务时,往往需要考虑成本、性能、资源利用率、可靠性、可伸缩性、可维护性等诸多指标,而调度系统的优劣很大程度上决定了上述指标。这是因为,云服务“按需”、“弹性”的使用特征需要通过对资源进行集约式复用来实现,而调度系统旨在将作业与资源进行最佳匹配,它恰恰是实现这一过程的组件。
应用软件的工作模式决定了调度系统的设计。在高性能计算、云计算和大数据处理领域,常用的调度器软件可以粗略地分为两类:(1)批处理作业调度器;(2)服务调度器。表1给出了这两类典型调度器及其作业的特征对比。
表1典型调度器及其作业的特征对比
Figure BDA0001647636170000011
在深度学习领域,用户使用的主要应用软件是深度学习库(deep learninglibrary),其典型实例包括TensorFlow、MXNet等。用户可以以非常自由的方式使用深度学习库,进行各种深度学习应用场景的开发。这使得深度学习库具有丰富的工作模式,同时造就了深度学习作业类型的多样性。图1给出了对深度学习作业的一种分类方法。可以看出,典型的深度学习作业包括训练作业、推理作业、调测作业、可视化作业等,训练作业可以是单机或分布式的,分布式的实现方式可以有多种;推理作业也可以是在线或离线的。
深度学习库的工作模式既不同于高性能集群中的传统批处理作业,也不同于云环境中的长周期服务,通用的批处理作业调度器和服务调度器均不能完全满足其调度需求。这主要体现在:
(1)深度学习训练作业和离线推理作业虽然类似于传统的批处理作业,但不同的深度学习库、不同的工作模式具有不同的作业构成特征和状态特征,不像MPI或MapReduce作业那样存在简单而典型的定式。例如,TensorFlow的PS-worker分布式作业包含PS、worker两类任务,PS是持续运行、响应随机请求的服务进程,而worker的生命周期由用户代码决定,可长可短。相比之下,MXNet的PS-worker分布式作业一般包括scheduler、server(相当于PS)和worker三种角色的任务,由scheduler负责server和worker的元信息交换及生命周期管理,保证server任务的结束。这些复杂的因素使得批处理作业调度器难以通过简单的方式调度深度学习作业,用户不得不编写一些可复用性不高的适配脚本。
(2)深度学习调测作业和在线推理作业虽然类似于传统的服务,但其作为用户提交的一种应用服务,生命周期往往相对较短,在调度需求方面也不同于web服务器、数据库这些的典型系统服务。例如,在多租户场景下,不同用户可以在短时间内提交大量的调测和推理作业,它们需要以队列方式调度,而队列可能涉及优先级等高级策略。对于面向数量和生命周期相对稳定的系统服务场景而设计、缺乏批处理抽象和机制的服务调度器,这些特殊的调度需求或者完全无法实现,或者需要通过复杂的外部机制辅助实现。
两类传统的调度器均不能完全满足多种深度学习库、多类深度学习作业复杂多样的调度需求,这是在公有云中提供深度学习服务的重要障碍。简单地使用原有的批处理作业调度器或服务调度器,不但不能实现深度学习专有的调度策略,从而降低用户体验、增加运维复杂度;而且潜在地影响着硬件资源利用率,提高了公有云的经营成本。
发明内容
本申请实施例提供了一种深度学习作业调度方法、系统和相关设备,提升了深度学习作业调度的兼容率。
第一方面,提供一种深度学习作业调度方法,包括:
获取深度学习作业的作业请求,所述作业请求携带深度学习库类型以及作业类型;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;
根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件;
将所述目标作业描述文件发送至容器调度器;
所述容器调度器根据所述目标作业描述文件,从所述预存储的作业基础镜像中选择所述目标作业基础镜像,并创建至少一个容器用于执行所述作业请求。
结合第一方面,在所述深度学习作业包括至少一个任务的情况下,所述作业请求至少包括两种实现方式:
第一种方式,所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求。
第二种方式,所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求。
在上述两种方式中的任一种方式下,可以根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。具体地,可以将所述作业请求包括的信息和所述目标作业基础镜像的标识填入所述目标作业描述文件模板,从而得到所述目标作业描述文件。
结合第一方面,所述作业基础镜像至少包括以下两种实现方式:
第一种方式,所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像。
第二种方式,所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像。
其中,所述依赖库为执行所述深度学习作业时需要使用到的库,所述深度学习程序的实例化为所述深度学习作业。
结合第一方面,所述多个预存储的作业描述文件模板和所述多个预存储的作业基础镜像至少可以根据以下的方式生成:
所述多个预存储的作业描述文件模板根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板对应于一个深度学习库类型和一种作业类型。
所述多个预存储的作业基础镜像根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业基础镜像中的每个预存储的作业基础镜像对应于一个深度学习库类型和一种作业类型。
结合第一方面,所述将所述目标作业描述文件发送至容器调度器之后,所述方法还包括:
在所述容器调度器调度失败的情况下,将指示所述作业请求的作业标识保存在队列中,其中,所述作业标识包括所述作业请求、所述作业请求包括的信息、所述目标作业描述文件、指针以及数据结构中的至少一种,其中,所述指针指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种,所述数据结构指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种;
确定所述容器调度器具备重新提交作业请求的条件;
从所述队列中取出所述作业标识,并根据所述作业标识重新向所述容器调度器提交所述作业请求。
结合第一方面,所述方法还包括:监控所述容器调度器创建的所述至少一个容器的状态变化;根据所述至少一个容器的状态变化,获取所述作业请求的作业状态。
结合第一方面,所述深度学习库类型是面向深度学习程序的开发而设计的计算机函数库的类型,所述作业类型包括训练作业、推理作业、调测作业、可视化作业中的至少一种。
结合第一方面,所述多个预存储的作业描述文件模板中的每个作业描述文件模板用于定义对应的作业描述文件中的共性信息的组织结构,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板包括非变量形式的同类深度学习作业的共性信息和变量形式的不同类深度学习作业的特有信息。
结合第一方面,所述目标作业描述文件模板符合所述容器调度器的规范。
第二方面,一种深度学习作业调度系统,所述系统包括作业调度器和容器调度器,
所述作业调度器用于获取深度学习作业的作业请求,所述作业请求携带深度学习库类型以及作业类型;
所述作业调度器用于根据所述深度学习库类型以及所述作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;以及,根据所述深度学习库类型以及所述作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;
所述作业调度器用于根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件;
所述作业调度器用于将所述目标作业描述文件发送至容器调度器;
所述容器调度器用于根据所述目标作业描述文件,从所述预存储的作业基础镜像中选择所述目标作业基础镜像,并创建至少一个容器用于执行所述作业请求。
结合第二方面,在所述深度学习作业包括至少一个任务的情况下,所述作业请求至少包括以下两种实现方式:
第一种方式,所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求。
第二种方式,所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求。
在上述两种方式中的任一种方式下,所述作业调度器还用于根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。具体地,所述作业调度器用于将所述作业请求包括的信息和所述目标作业基础镜像的标识填入所述目标作业描述文件模板,从而得到所述目标作业描述文件。
结合第二方面,所述作业基础镜像至少包括以下两种可能的实施方式:
第一种方式,所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像。
第二种方式,所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像。其中,所述依赖库为执行所述深度学习作业时需要使用到的库,所述深度学习程序的实例化为所述深度学习作业。
结合第二方面,所述多个预存储的作业描述文件模板和所述多个预存储的作业基础镜像至少可以根据以下的方式生成:
所述多个预存储的作业描述文件模板根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板对应于一个深度学习库类型和一种作业类型。
所述多个预存储的作业基础镜像根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业基础镜像中的每个预存储的作业基础镜像对应于一个深度学习库类型和一种作业类型。
结合第二方面,所述容器调度器还用于在所述容器调度器调度失败的情况下,将指示所述作业请求的作业标识保存在队列中,其中,所述作业标识包括所述作业请求、所述作业请求包括的信息、所述目标作业描述文件、指针以及数据结构中的至少一种;所述指针指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种,所述数据结构指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种。所述作业调度器还用于确定所述容器调度器具备重新提交作业请求的条件;从所述队列中取出所述作业标识,并根据所述作业标识重新向所述容器调度器提交所述作业请求。
结合第二方面,所述方法还包括:监控所述容器调度器创建的所述至少一个容器的状态变化;根据所述至少一个容器的状态变化,获取所述作业请求的作业状态。
结合第二方面,所述深度学习库类型是面向深度学习程序的开发而设计的计算机函数库的类型,所述作业类型包括训练作业、推理作业、调测作业、可视化作业中的至少一种。
结合第二方面,所述多个预存储的作业描述文件模板中的每个作业描述文件模板用于定义对应的作业描述文件中的共性信息的组织结构,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板包括非变量形式的同类深度学习作业的共性信息和变量形式的不同类深度学习作业的特有信息。
结合第二方面,所述目标作业描述文件模板符合所述容器调度器的规范。
第三方面,提供了一种云服务集群,包括:至少一个管理节点和至少一个计算节点,所述至少一个管理节点和所述至少一个计算节点之间通过通信网络进行通信,其中,所述至少一个管理节点用于执行如第一方面任意一项所述的方法。
第四方面,提供了一种计算机可读存储介质,包括指令,当所述指令在深度学习作业调度系统上运行时,使得所述深度学习作业调度系统执行如第一方面任意一项所述的方法。
第五方面,提供了一种计算机程序产品。该计算机程序产品包括程序指令,当该计算机程序产品被计算机执行时,该计算机执行如第一方面任意一项所述的方法。
上述技术方案,不同类型的深度学习作业可以按照不同的作业描述文件模板以及不同的作业基础镜像生成符合所述容器调度器的规范的作业描述文件,从而实现不同类型的深度学习作业都能被容器调度器进行处理,提升了深度学习作业调度的兼容率。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请涉及的一实施方式的深度学习作业的类型的示意图;
图2是现有技术提供的一实施方式的深度学习作业调度系统的示意图;
图3是本申请提出的一实施方式的深度学习作业调度系统的示意图;
图4是本申请中一实施方式的作业描述文件模板的部分内容的示意图;
图5是本申请中一实施方式的作业基础镜像的目录结构示意图;
图6是本申请中一实施方式的作业基础镜像的所使用的Dockerfile片段的示意图;
图7是本申请中一实施方式的作业描述文件的部分内容的示意图;
图8是本申请中一实施方式的作业调度器的结构示意图;
图9是本申请中一实施方式的作业监控器的结构示意图;
图10是本申请涉及的一实施方式的云服务集群的结构示意图;
图11是本申请中在云服务集群中实现深度学习作业调度系统的示意图;
图12是本申请中一实施方式的深度学习作业调度系统的结构示意图;
图13是本申请提出的一种深度学习作业调度方法的示意图;
图14是本申请中采用Kubernets实现图3所示的深度学习作业调度系统的示意图。
具体实施方式
为了便于理解,首先对深度学习、深度学习程序、深度学习库以及深度学习作业分别进行介绍。
深度学习是基于深层次神经网络算法的机器学习技术,主要应用于人工智能领域的感知、决策等场景,例如,图像和语音识别、自然语言翻译、计算机博弈等等。深度学习程序是用户自己研发的,关于深度学习的计算业务的软件。深度学习程序在运行的过程中,常常需要调用深度学习库。深度学习库是指面向深度学习程序的开发而设计的计算机函数库,是包含了深度学习程序中常用的数据结构、算法、模型、子程序、常量等元素的计算机程序文件或文件的集合。也就是说,深度学习库是封装了深度学习作业的底层操作的应用软件。因此,用户在应用深度学习库进行各种深度学习应用场景的深度学习程序开发时,可以专注于与深度学习应用场景相关部分的内容,而不需要过多地关注底层操作部分的内容,从而大大地提高了开发的效率。深度学习库可以包括TensorFlow、MXNet等等,应理解,上述例子仅仅用于说明,不应构成具体限定。深度学习程序的实例化就是深度学习作业。其中,深度学习的应用场景主要涉及的计算业务包括训练、推理、调测以及可视化等等,所以,深度学习作业的作业类型主要包括训练作业、推理作业、调测作业、可视化作业等等。其中,训练作业可以是单机或分布式的,分布式的实现方式可以有多种。推理作业可以是在线或离线的。可以理解,上述的作业类型的举例仅仅是用于说明,不应构成具体限定。
为了更好的理解本发明实施例,下面先对现有技术的深度学习作业调度系统和本申请的深度学习作业调度系统分别进行介绍,以便于读者认识到两者的区别和联系。
请参阅图2,图2是现有技术提供的一种深度学习作业调度系统的示意图。用户通过用户界面201向容器调度器202提出作业请求。相应地,所述容器调度器202接收所述用户通过用户界面201发送作业请求。其中,所述作业请求包括作业描述文件。容器调度器202获取所述作业描述文件之后,根据所述作业描述文件进行调度。在所述容器调度器202调度成功的情况下,容器调度器202根据所述作业描述文件向镜像服务器203请求与所述作业描述文件对应类型的作业镜像。其中,作业镜像的类型包括训练作业镜像、推理镜像以及调测镜像等等。作业镜像包括深度学习库、依赖库以及深度学习程序等等。相应地,镜像服务器203将与所述作业描述文件对应的作业镜像发送给所述容器调度器202。容器调度器202在计算节点204上创建至少一个容器(即任务容器集合)以根据作业镜像执行所述作业请求对应的深度学习作业。
请参阅图3,图3是本申请实施例提出的一种深度学习作业调度系统的示意图。用户通过用户界面301向作业调度器302提出作业请求。其中,所述作业请求携带深度学习库类型以及作业类型。作业调度器302根据所述深度学习库类型以及所述作业类型,从存储系统303中的多个预存储的作业描述文件模板中确定目标作业描述文件模板;作业调度器302根据所述深度学习库类型以及所述作业类型,从存储系统303中的多个预存储的作业基础镜像中确定目标作业基础镜像的标识。作业调度器302根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。作业调度器302将所述目标作业描述文件发送至容器调度器304。所述容器调度器304根据所述目标作业描述文件,从存储系统303中的多个预存储的作业基础镜像中选择所述目标作业基础镜像,并在计算节点305上创建至少一个容器(即任务容器集合)用于执行所述作业请求。此外,深度学习作业调度系统还可以包括作业监控器306,用于监控所述容器调度器304创建的所述至少一个容器的状态变化;根据所述至少一个容器的状态变化,获取所述作业请求的作业状态。
将图3所示的深度学习作业调度系统与图2所示的深度学习作业调度系统进行相比,图3所示的深度学习作业调度系统至少具有以下的改进点:
(1)图3所示的深度学习作业调度系统增加了作业调度器。所述作业调度器根据作业描述文件模板以及作业基础镜像生成作业描述文件。与图2所示的深度学习作业调度系统相比,作业调度器根据作业描述文件模板和作业基础镜像将多种深度学习库以及多种作业类型进行统一的抽象和封装,使得容器调度器能够以统一的方式管理各种深度学习作业。
(2)图3所示的深度学习作业调度系统在作业调度器中引入了队列,能够在作业调度器失败时将作业请求加入到队列中。即,图2所示的深度学习作业调度系统在容器调度器之上构建了批作业调度行为,从而能够适配具有批处理特征的深度学习作业。
(3)图3所示的深度学习作业调度系统中对底层容器调度器屏蔽了深度学习库的技术差异,使得容器调度器获得了对特性各异、用法自由的深度学习库的管理能力。
在本申请具体的实施例中,作业描述文件是符合所述容器调度器的规范的,用于表达作业请求的文件。其中,一个作业描述文件对应一个深度学习作业。不同的容器调度器可以对作业描述文件的格式有不同的要求。
在本申请具体的实施例中,作业描述文件是根据作业请求、作业描述文件模板和作业基础镜像名称渲染生成的。
在本申请具体的实施例中,所述作业请求包括深度学习库类型、作业类型。此外,当深度学习作业包括至少一个任务时,所述作业请求至少包括以下两种可能的实施方式:
第一种方式中,所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求。
第二种方式中,所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求。
其中,作业名称是深度学习作业的标识。深度学习程序存储位置用于供计算节点根据应用程序的存储位置读取到深度学习程序。深度学习程序是用户自己研发的,关于深度学习的计算业务的软件。应用程序启动文件为用于启动深度学习程序所需要的文件。数据集存储位置用于供计算节点在执行深度学习作业时根据数据集的存储位置读取数据集。数据集是执行深度学习作业时必须使用的数据的集合。例如,在执行训练作业时,对数据模型进行训练时使用到的历史数据。所述至少一个任务的种类、所述至少一个任务中每种任务的数量、以及所述至少一个任务中每个任务的资源需求用于供容器调度器在调度时确定容器的数量以及每个容器需要占据的资源。
在一具体的实施例中,所述作业请求中的作业名称(job_name)、应用程序的存储位置(app_url、boot_file)和数据集的存储位置(data_url)是字符串字段,深度学习库类型(engine_type)和作业类型(job_type)是枚举型字段,所述至少一个任务的种类、所述至少一个任务中每种任务的数量以及所述至少一个任务中每个任务的资源需求(attribute_description)是键值对字段。
在本申请具体的实施例中,作业描述文件模板是一种用于定义作业描述文件中的共性信息组织结构的模板文件,其中,所述作业描述文件模板将同类深度学习作业的共性信息以非变量的形式编写在模板中,不同深度学习作业特有的信息以变量的形式体现在模板中。作业描述文件模板可以使用专用的编程语言,例如Jinja编程语言进行编写,也可以是带有可替换字段的简单文本文件等等,此处不作具体限定。图4给出了一个作业描述文件模板的示例,它是TensorFlow分布式训练的作业描述文件模板片段。
在本申请具体的实施例中,作业基础镜像名称为作业基础镜像的标识。通常来说,镜像是指用于创建容器运行时文件系统的文件集合。一个镜像的文件集合包括操作系统的可执行文件、库文件、配置文件,应用程序的可执行文件、库文件、配置文件,以及必要的脚本文件、数据文件等。对于深度学习作业而言,镜像中包括深度学习应用程序、深度学习库以及其他必要的依赖库等。其中,深度学习应用程序是用户上传的,对于每个作业而言有可能不同;深度学习库和其他依赖库是由深度学习服务的提供者提供的,对于每个作业而言是相同的。作业基础镜像至少包括两种可能的实施方式:在第一种方式中,所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像;在第二种方式中,所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像。
在一具体的实施例中,作业基础镜像包括操作系统的可执行文件、库文件与配置文件,深度学习库,以及作业启动脚本等。如图5所示,以TensorFlow训练作业为例,给出了其作业基础镜像的目录结构。其中bin、sbin目录保存的是Linux操作系统的可执行文件,lib、lib64目录保存的是Linux操作系统的库文件,etc、var目录保存的Linux操作系统的配置文件,usr/local/lib/python2.7/site-package/tensorflow目录保存的是深度学习库——TensorFlow,home/mind/run_train.sh文件是作业启动脚本。更具体地,图6给出了生成TensorFlow作业基础镜像所使用的Dockerfile片段。这个Dockerfile的第1行表示基于Ubuntu Linux操作系统的镜像制作作业基础镜像,以便取得操作系统相关文件。第8-10行表示下载并安装TensorFlow。第11行表示复制作业启动脚本。这样一来,作业基础镜像中就包含了所有必要的文件。
可以理解,不同的容器技术方案具有不同的镜像格式,本发明的实施例使用的Docker容器技术方案采用层叠文件系统的格式保存镜像。在制作面向Docker的镜像时,用户需要使用名为Dockerfile的文本文件描述镜像的制作步骤,Docker服务程序会依照这些步骤创建镜像的文件系统结构,并将其保存在本地文件系统上。通过查看Dockerfile,我们可以大致理解一个镜像的所包含的文件内容。
在本申请具体的实施例中,作业描述文件模板就像一张空白表格,通过渲染的方式可以将作业请求携带的信息和作业基础镜像名称填入到作业描述文件模板,从而得到一张完整的表格,而,作业描述文件就是这张完整的表格。更具体的来说,
作业描述文件模板就像一张只预印了字段名称,没有填写具体信息的空白表格。以Jinja语言为例,在作业描述文件模板中通常采用字段名称和字段值的占位符来表示一个字段。在Jinja语言中,字段名称以冒号结尾的字符串表示(如“name:”),相当于表格上预印好的字段名称;字段值的占位符以两个大括号包围的字符串表示(如“{{name}}”),相当于表格上的空白方格。例如,图4的第42行代表作业描述文件中需要有一个名为“type”的字段,该字段表示“作业类型”,它的占位符是“{{type}}”。在生成作业描述文件时,占位符会被真实的作业类型字符串取代。如果对应到一张表格,这一行相当于表格中存在
Figure BDA0001647636170000091
这样一对方格。
作业描述文件就像一张填写好具体信息的表格。它在作业描述文件模板基础上,使用一个具体作业实例的真实元信息字段取代作业描述文件模板中的占位符。例如,图7的第22行代表这个具体作业实例的“type”字段的值为“train”,即作业类型为“train(训练)”。如果对应到一张填写好的表格,这一行相当于在作业描述文件模板对应的表格中填写了
Figure BDA0001647636170000092
方格。其中,真实元信息字段具有两个来源:(1)作业请求以及作业基础镜像名称;(2)作业调度器自动生成的信息。
作业元信息的两个来源简述如下:
(1)作业请求以及作业基础镜像名称——这些元信息是与一个作业实例本身的业务逻辑密切相关的元信息,代表了用户使用深度学习服务的意图与期望。典型的元信息包括:作业名称(name)、各个类型任务的数量(ps_replicas、worker_replicas)、应用程序的存储位置(app_url)、应用程序的启动文件(boot_file)、数据集的存储位置(data_url)以及作业基础镜像名称(image)等。
(2)作业调度器自动生成的元信息——这些元信息是与云服务环境的系统后台配置相关的元信息。这些元信息是容器调度器创建并调度容器所必须的,但与一个具体作业实例的业务逻辑的关系不大。因为用户并不知道云服务环境的系统配置,所以这些元信息必须由作业调度器自动生成。这样可以简化用户使用作业调度系统的流程,提高作业调度系统的易用性。典型的元信息包括:作业基础镜像存储位置(image)、各个任务的主机名与端口列表(ps_hosts、worker_hosts)等。
在本申请具体的实施例中,渲染的基本原理:使用真实值去代替变量。以Jinja语言为例,渲染就是使用真实元信息字段取代对应字段名称的字段值的占位符。为了能够提高渲染的效率,Jinja语言除了能够提供字段名称、字段值的占位符这两种与传统表格等价的语义,还提供一些编程语句。这些语句包含在形如“{%-…-%}”的字符串中,它们提供变量、判断、循环等编程语言的基础功能,能够为模板文件的文本处理提供多种可编程的、自动化的能力,相当于在表格填写过程中,存在一位能够代用户处理很多繁琐事宜的秘书。例如,如果一个模板中的某些字段需要反复出现多次,每次出现时的组织结构完全相同,只是其中填写的字段值不同,这时就可以使用循环语句“{%-for…in…-%}”,简化模板的编写。在本申请的实施例中,一个作业描述文件中需要提供多个容器的元信息,它们的组织结构相同,具体字段值不同,因此在作业描述文件模板中使用循环语句处理这种情况。
在本申请具体的实施例中,一个作业描述文件定义了一类深度学习作业的共性信息组织结构。一个作业基础镜像包含了一类深度学习作业的容器运行时所需的文件系统。所以,一个深度学习作业对应一个作业描述文件以及一个作业基础镜像,也就是说,一个深度学习作业可以通过对应的作业描述文件和作业基础镜像进行定义。所谓一类作业,是指使用某种特定的深度学习库的某种特定类型的作业。例如:使用TensorFlow库的分布式训练作业是一类作业;使用MXNet库的在线推理作业是另一类作业。理论上,深度学习作业调度系统想要支持深度学习库与作业类型的多少种组合,本步骤中就需要制作多少种作业描述文件,即,作业描述文件模板的数量可以是深度学习库类型的数量与作业类型的数量的乘积。例如:使用TensorFlow库的训练作业具有一种作业描述文件;使用MXNet库的推理作业具有另一种作业描述文件。不过,一部分深度学习库类型与作业类型组合所需的作业描述文件内容相同,可以复用。理论上,深度学习作业调度系统想要支持深度学习库与作业类型的多少种组合,本步骤中就需要制作多少种作业基础镜像。即,作业基础镜像的数量可以是深度学习库类型的数量与作业类型的数量的乘积。例如:使用TensorFlow库的训练作业具有一种作业基础镜像;使用MXNet库的推理作业具有另一种作业基础镜像。不过,一部分组合所需的作业基础镜像内容相同,可以复用。其中,深度学习库类型可以包括TensorFlow、MXNet等多种深度学习库,作业类型可以包括支持单机训练、分布式训练、在线预测、调测等多种作业类型。
可以理解,A深度学习作业是根据A深度学习作业对应的作业描述文件以及作业基础镜像生成的,B深度学习作业是根据B深度学习作业对应的作业描述文件以及作业基础镜像生成的,不同的作业描述文件以及作业基础镜像生成深度学习作业的“规格”都是一样的,所以,A深度学习作业的“规格”与B深度学习作业的“规格”相同。这里,“规格”是指深度学习作业能为容器调度器所接受的特性。因此,尽管A深度学习作业的深度学习库类型和作业类型不同于B深度学习作业的深度学习库类型和作业类型,但是,A深度学习作业和B深度学习作业都能为容器调度器所接受。
在本申请具体的实施例中,存储系统可以是任意类型的存储系统,包括但不限于本地文件系统、网络文件系统、数据库系统以及对象存储系统等等。
需要说明的是,作业描述文件模板和作业基础镜像相当于两个“模子”,往作业描述文件模板和作业基础镜像中填充不同的“材料”,就可以生成“材料”不同,但是,“规格”相同的深度学习作业,从而实现将多种深度学习库以及多种作业类型进行统一的抽象和封装,使得容器调度器能够以统一的方式管理各种深度学习作业。
在深度学习作业调度系统中,核心的组件包括作业调度器302和作业监控器303。下面将从结构方面分别对作业调度器和作业监控器进行介绍。
作业调度器是用于调度执行深度学习作业的组件,它内部包含用于实现批处理作业调度的队列组件。作业调度器需要使用保存在存储系统上的两类文件,它们是作业描述文件模板和作业基础镜像。作业调度器需要与容器调度器通信,以便创建和管理任务容器。作业调度器还具有与之配套的用户界面程序,以供用户执行操作。用户经由用户界面程序向作业调度器提交作业时,承载信息的实体是作业请求。作业调度器向容器调度器下发作业时,承载信息的实体是作业描述文件。为了实现深度学习作业调度的功能,作业调度器需要具有合理的内部结构设计。图8给出了作业调度器的一种可行的内部结构设计方案。需要注意的是,上述内部结构设计方案仅仅用于进行说明,不应构成具体限定。
在图8所示的作业调度器内部结构设计方案中,作业调度器主要包括网络服务401、事件引擎402、容器调度器客户端403、调度算法404、队列405、模板渲染机制406、存储系统客户端407等内部组件。其中,网络服务401用于接收来自用户界面程序和作业监控器的消息,例如用户通过用户界面程序提交的作业请求,以及作业监控器发送来的作业状态信息。事件引擎402用于处理网络服务所产生的各个异步事件,将事件转化为对其他内部组件的函数调用,以便驱动作业调度器整体的有序运行。容器调度器客户端403用于向容器调度器发送请求,以便在计算节点上启动容器、执行作业。调度算法404用来实现批处理作业调度的算法逻辑,例如先入先出调度算法、优先级调度算法等。队列405用于保存暂未成功调度的作业请求。模板渲染机制406用于通过作业描述文件模板和作业请求生成作业描述文件,以供容器调度器客户端使用。存储系统客户端407用于访问存储系统,以便读取作业描述文件模板,以及作业基础镜像的名称等元信息。可选地,网络服务401是一个RPC服务,客户调度器客户端403是Kubernetes客户端,模板渲染机器406是Jinja语言渲染机制,存储系统客户端407是NFS客户端。
作业监控器是用于感知深度学习作业运行状态的组件。作业监控器需要与容器调度器通信,以便获知任务容器的运行状态。作业监控器还需要与作业调度器通信,以便向作业调度器反馈状态信息。为了实现深度学习作业监控的功能,作业监控器需要具有合理的内部结构设计。图9给出了作业监控器的一种可行的内部结构设计方案。需要注意的是,上述内部结构设计方案仅仅用于进行说明,不应构成具体限定。
在图9所示的作业监控器内部结构设计方案中,作业监控器主要包括事件引擎501、状态映射机制502、容器调度器客户端503、作业调度器客户端504等内部组件。其中,事件引擎501用于处理容器调度器客户端所监听到的各个异步事件,将事件转化为对其他内部组件的函数调用,以便驱动作业监控器整体的有序运行。状态映射机制502用于将一个作业的所有容器集合的状态映射到该作业整体的状态。容器调度器客户端503用于向容器调度器发送请求,以便在计算节点上启动容器、执行作业。作业调度器客户端504用于与作业调度器进行通信,以便将作业状态的变化反馈给作业调度器。可选地,客户调度器客户端503是Kubernetes客户端,作业调度器客户端504是一个RPC客户端。
应理解,作业调度器和作业监控器这两个组件的划分仅代表逻辑上的组件划分,并不对物理实现做出约束。在物理实现时,两个组件可以实现于不同的程序、运行于不同的进程,也可以实现于相同的程序、运行于相同的进程,甚至可以各自以分布式方式实现,即位于多个程序、运行于多个进程。
图3所示的深度学习作业调度系统可以在服务器中实现,也可以在云计算基础设施上实现,此处不做具体限定。下面将重点介绍如何在云计算基础设施上实现图3所示的深度学习作业调度系统。
云计算基础设施可以是云服务集群100。如图10所示,所述云服务集群100是由节点,以及节点之间的通信网络构成。节点按功能可分为两类:管理节点110和计算节点120。管理节点110用于运行云服务提供方的服务程序130。计算节点120用于运行用户的应用程序121。云服务集群100还提供了两种对外的接口界面,分别是面向云服务提供方的管理界面140以及面向用户的用户界面150。上述节点可以是物理服务器,也可以是虚拟机。无论服务程序111还是应用程序121,其在节点上的形态都是进程。这些进程可以直接运行于操作系统之上,也可以使用容器130进行封装。其中,容器是一种虚拟化技术,该技术使得进程运行于相对独立和隔离的环境(包含独立的文件系统、命名空间、资源视图等),从而能够简化软件的部署流程,增强软件的可移植性和安全性,并提高系统资源利用率。接口界面的形态可以是多样的,例如web界面、命令行工具、REST接口等。需要说明的是,对于在线推理等类型的深度学习作业,用户也可以使用客户端程序160访问计算节点120上的应用程序121。
当采用图10所示的云服务集群实现如图3所示的深度学习作业调度系统,云服务集群可为图11所示的云服务集群。如图11所示,图3中的用户界面301即为图11中的用户界面150,图3中的作业调度器302、容器调度器304和作业监控器306设置在图11中的管理节点110的服务程序111内,图3中的计算节点305即为图11中的计算节点120,图3中的存储系统303即为图11中的存储系统200。可选地,存储系统200可以设置在云服务集群之外,也可以集成在云服务集群之内,此处不作具体限定。
应当理解,云服务集群100仅为本申请实施例提供的一个例子,并且,云服务集群100可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
参见图12,图12是本申请中提供的一实施方式的深度学习作业调度系统的结构示意图。系统由计算设备集群构成,计算设备集群包括包括至少一个管理节点60以及至少一个计算节点70。
管理节点60包括一个或多个处理器61、通信接口63和存储器65。其中,处理器61、通信接口63和存储器65之间可以通过总线66连接。
处理器61包括一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(Central Processing Unit,CPU)、微处理器、微控制器、主处理器、控制器以及ASIC(Application Specific Integrated Circuit,专用集成电路)等等。它能够是仅用于管理节点60的专用处理器或者能够与其它管理节点60或者计算节点70共享。处理器61执行各种类型的数字存储指令,例如存储在存储器65中的软件或者固件程序,它能使管理节点60提供较宽的多种服务。例如,处理器61能够执行程序或者处理数据,以执行本文讨论的方法的至少一部分。
通信接口62可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他计算设备或用户进行通信。当通信接口62为有线接口时,通信接口62可以采用TCP/IP之上的协议族,例如,RAAS协议、远程函数调用(RemoteFunction Call,RFC)协议、简单对象访问协议(Simple Object Access Protocol,SOAP)协议、简单网络管理协议(Simple Network Management Protocol,SNMP)协议、公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)协议以及分布式协议等等。当通信接口62为无线接口时,可以根据全球移动通信系统(Global System forMobile Communication,GSM)或者码分多址(Code Division Multiple Access,CDMA)标准利用蜂窝通信,因此包括用于用于数据传输的无线调制解调器、电子处理设备、一个或多个数字存储器设备以及双天线。应该明白,调制解调器能够通过存储在管理节点内的软件实施且由处理器61执行,或者它能够是位于管理节点60内部或者外部的分开的硬件部件。调制解调器能够使用任何数量的不同标准或者协议(例如EVDO(CDMA20001xEV-DO,EVDO)、CDMA、通用分组无线服务技术(General Packet Radio Service,GPRS)和增强型数据速率GSM演进技术(Enhanced Data Rate for GSM Evolution,EDGE))来运行。
存储器65可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD)存储器还可以包括上述种类的存储器的组合。存储器65中可以存储有服务程序67,用于为计算节点70提供服务。其中,服务程序67可以包括作业调度器671、作业监控器673以及容器调度器675。作业调度器671用于用于调度执行深度学习作业的组件,它内部包含用于实现批处理作业调度的队列组件。作业监控器673用于感知深度学习作业运行状态的组件,作业监控器673需要与容器调度器671通信,以便获知任务容器的运行状态,作业监控器673还需要与作业调度器671通信,以便向作业调度器671反馈状态信息。容器调度器675用于根据作业调度器671以及作业监控器673的请求,在计算节点70上启动容器、执行作业。在一具体的实施方式中个,作业调度器671的具体实施方式可以参见图8以及相关描述,此处不再展开。在一具体的实施方式中个,作业监控器673的具体实施方式可以参见图9以及相关描述,此处不再展开。
计算节点70包括一个或多个处理器71、通信接口73和存储器75。其中,处理器71、通信接口73和存储器75之间可以通过总线76连接。
处理器71包括一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括CPU、微处理器、微控制器、主处理器、控制器以及ASIC等等。它能够是仅用于计算节点70的专用处理器或者能够与管理节点60或者其它计算节点70共享。处理器71执行各种类型的数字存储指令,例如存储在存储器75中的软件或者固件程序,它能使计算节点70提供较宽的多种服务。例如,处理器71能够执行程序或者处理数据,以执行本文讨论的方法的至少一部分。
通信接口72可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他计算设备或用户进行通信。当通信接口72为有线接口时,通信接口72可以采用TCP/IP之上的协议族,例如,RAAS协议、RFC协议、SOAP协议、SNMP协议、CORBA协议以及分布式协议等等。当通信接口72为无线接口时,可以根据GSM或者CDMA标准利用蜂窝通信,因此包括用于用于数据传输的无线调制解调器、电子处理设备、一个或多个数字存储器设备以及双天线。应该明白,调制解调器能够通过存储在管理节点内的软件实施且由处理器71执行,或者它能够是位于计算节点70内部或者外部的分开的硬件部件。调制解调器能够使用任何数量的不同标准或者协议来运行。
存储器75可以包括易失性存储器,例如RAM;存储器也可以包括非易失性存储器,例如ROM、快闪存储器、HDD或SSD存储器还可以包括上述种类的存储器的组合。存储器75中可以存储有程序代码77以及数据库78。其中,程序代码77可以包括深度学习程序771,数据库78可以包括深度学习库781以及依赖库782。深度学习程序771是用户自己研发的,关于深度学习的计算业务的软件。深度学习程序的实例化就是深度学习作业。其中,深度学习的应用场景主要涉及的计算业务包括训练、推理、调测以及可视化等等,所以,深度学习作业的作业类型主要包括训练作业、推理作业、调测作业、可视化作业等等。深度学习库781为是指面向深度学习程序的开发而设计的计算机函数库,是包含了深度学习程序中常用的数据结构、算法、模型、子程序、常量等元素的计算机程序文件或文件的集合。也就是说,深度学习库是封装了深度学习作业的底层操作的应用软件。因此,用户在应用深度学习库进行各种深度学习应用场景的深度学习程序开发时,可以专注于与深度学习应用场景相关部分的内容,而不需要过多地关注底层操作部分的内容,从而大大地提高了开发的效率。深度学习库可以包括TensorFlow、MXNet等等,应理解,上述例子仅仅用于说明,不应构成具体限定。依赖库782为运行深度学习作业时必须使用的数据库。
需要说明的是,作业描述文件模板和作业基础镜像可以存储于计算设备集群中的一部分管理节点60和/或一部分计算节点70,即存储系统200可以由管理节点60和/或计算节点70内部的存储资源构成,例如存储系统200是一个分布式的存储池。或,作业描述文件模板和作业基础镜像可以存储于管理节点60和计算节点70外,即存储系统200不由管理节点60和/或计算节点70内部的存储资源构成。
其中,管理节点60用于运行存储在存储器65中的程序,执行如下指令:
获取深度学习作业的作业请求,所述作业请求携带深度学习库类型以及作业类型;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;
根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件;
将所述目标作业描述文件发送至容器调度器;
根据所述目标作业描述文件,从所述预存储的作业基础镜像中选择所述目标作业基础镜像,并在所述至少一个计算节点70上创建至少一个容器用于执行所述作业请求。
可选地,所述深度学习作业包括至少一个任务,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;或者,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;
所述管理节点60还用于根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。
可选地,所述管理节点60还用于:
将所述作业请求包括的信息和所述目标作业基础镜像的标识填入所述目标作业描述文件模板,从而得到所述目标作业描述文件。
可选地,所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像;或者,
所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像;
其中,所述依赖库为执行所述深度学习作业时需要使用到的库,所述深度学习程序的实例化为所述深度学习作业。
可选地,所述多个预存储的作业描述文件模板根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板对应于一个深度学习库类型和一种作业类型;
所述多个预存储的作业基础镜像根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业基础镜像中的每个预存储的作业基础镜像对应于一个深度学习库类型和一种作业类型。
可选地,所述管理节点60还用于:在所述容器调度器调度失败的情况下,将指示所述作业请求的作业标识保存在队列中,其中,所述作业标识包括所述作业请求、所述作业请求包括的信息、所述目标作业描述文件、指针以及数据结构中的至少一种,其中,所述指针指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种,所述数据结构指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种。
可选地,所述管理节点60还用于:确定所述容器调度器具备重新提交作业请求的条件;以及,从所述队列中取出所述作业标识,并根据所述作业标识重新向所述容器调度器提交所述作业请求。
为了简便起见,上述图11所示的云服务集群以及图12所示的计算设备集群并未展开描述,具体请参见图3以及相关描述。
请参阅图13,图13是本申请提出的一种深度学习作业调度方法的示意图。本申请实施例的深度学习作业调度方法,包括:
S101:作业调度器获取用户通过用户界面程序提交的作业请求。
在本申请具体的实施例中,用户提交作业时,需要将作业的描述信息(包括但不限于应用程序、命令参数、资源需求等信息)告知用户界面程序,用户界面程序会把这些信息传递给作业调度器,实现作业请求的提交过程。
S102:作业调度器基于作业基础镜像名称、作业描述文件模板和作业请求,生成作业描述文件。
在本申请具体的实施例中,作业调度器依据作业请求中指定的深度学习库类型与作业类型,从存储系统中加载对应的作业描述文件模板以及作业基础镜像名称。然后,通过模板渲染或填充机制,以作业基础镜像名称和作业请求中的信息作为作业描述文件模板的输入,创建作业描述文件。
S103:作业调度器向容器调度器提交作业。
在本申请具体的实施例中,作业调度器调用容器调度器的接口,将作业描述文件传递给容器调度器,请求容器调度器创建并运行该深度学习作业的每个任务对应的容器。如果容器调度器成功接受了这一请求,则进入步骤S1041;如果容器调度器未能成功接受这一请求,则进入步骤S1051。容器调度器未能成功接受作业请求的原因,可能是硬件资源不足、偶发网络故障等。
S1041:容器调度器基于作业基础镜像和作业描述文件,创建每个任务的容器。
在本申请具体的实施例中,容器调度器依据作业描述文件中指定的深度学习库类型与作业类型,从存储系统中加载对应的作业基础镜像。然后,依据作业描述文件中指定的任务规格,使用基础镜像创建对应数量的容器。同时,依据作业描述文件中指定的应用程序、命令参数等信息,在容器中运行任务的进程。作业描述文件中指定的资源需求信息则会作为容器调度器选择容器运行的宿主环境(即计算节点)的依据。
S1042:作业调度器监控容器状态变化,将容器集合状态映射到作业状态。
在本申请具体的实施例中,作业监控器通过容器调度器的接口,实时监控深度学习作业的所有任务对应的容器的运行状态,并感知状态的变化。在某个容器状态发生变化时,作业监控器通过状态映射机制,得到深度学习作业整体的状态。该状态可以反馈给作业调度器,并可供用户通过用户界面进行查询。随着容器状态的不断变化,本步骤有可能反复执行多次,直到作业运行结束。
S1051:作业调度器将作业请求加入队列。
在本申请具体的实施例中,作业调度器内部的队列用于保存提交过程发生失败的作业请求。需要注意的是,上述作业调度器保存作业请求仅仅是一个举例,在实际应用中,作业调度器还可以保存其他深度学习作业的标识,例如,用户界面程序提交的作业请求中的信息,作业调度器生成的作业描述文件,还可以是指向这些对象的指针或其他数据结构等等。
S1052:作业调度器检查容器调度器及队列,寻找满足重新提交条件的作业请求。
在本申请具体的实施例中,作业调度器调用容器调度器的接口,检查容器调度器是否具备接受新作业提交的条件;然后,作业调度器读取自身的队列,检查是否存在之前提交失败的作业请求。如果容器调度器的条件满足,同时队列中存在作业请求,那么作业调度器将基于一定的作业选择逻辑,从队列中取出满足重新提交条件的作业请求,再次进入步骤S103,向容器调度器提交这个作业。否则,重新执行本步骤,继续检查容器调度器和队列的状态。
为了简便起见,作业描述文件与作业请求、作业描述文件模板和作业基础镜像名称的定义以及它们之间的关系可以参见上一实施例,此处不在展开描述。
下面以开源容器编排软件--Kubernets为例,对本申请实施例提供的深度学习作业调度方法进行说明。如图14所示,当采用开源容器编排软件--Kubernets时,本申请的深度学习作业调度系统中的各个部件具有以下特点:
在本实施例中,用户界面程序是一个web应用程序,用户需要通过web浏览器操作用户界面程序。用户界面程序向作业调度器发送的作业请求在本实施例中是一种RPC消息。
在本实施例中,作业调度器和作业监控器是两个独立的计算机程序,运行于公有云服务环境的管理节点。作业调度器和作业监控器之间的通信采用远程过程调用(RemoteProcedure Call,RPC)协议,因为这类协议具有跨平台、跨语言的优势,便于构建分布式的云服务环境。作业调度器的队列使用编程语言中的队列数据结构实现,队列中保存指向作业请求的指针。
在本实施例中,任务容器采用Docker容器,作业基础镜像采用Docker镜像。Kubernetes使用开源的容器管理软件Docker作为创建和管理容器的平台软件,故本实施例的任务容器采用Docker容器,作业基础镜像采用Docker镜像。Docker容器运行在计算节点上,一个计算节点可以运行多个容器。用户作业对应的应用程序在Docker容器中运行,用户可以通过应用程序代码或应用程序提供的接口访问容器内的资源。
在本实施例中,作业描述文件的格式为YAML(YAML Ain't Markup Language,YAML标记语言)格式。Kubernetes接受YAML格式的,故本实施例的作业描述文件使用YAML格式。作业调度器向Kubernetes提交作业描述文件时,需要经由Kubernetes的REST API。本实施例选用Jinja格式作为作业描述文件模板的格式,因为Jinja格式的文件能够经由相应的编译器,以简单的语法渲染生成包括YAML在内的文本配置文件。
在本实施例中,存储系统为网络文件系统(Network File System,NFS)。存储系统保存作业描述文件模板与作业基础镜像,因为NFS具有在分布式系统中全局可访问的单一存储空间,有助于调度系统的技术实现。作业调度器读取这两类文件时,直接使用文件系统接口。Kubernetes亦通过文件系统接口读取作业基础镜像,以便基于镜像创建容器。
在本实施例中,作业调度器和作业监控器是两个独立的计算机程序,运行于公有云服务环境的管理节点。作业调度器和作业监控器之间的通信采用RPC(Remote ProcedureCall,远程过程调用)协议,因为这类协议具有跨平台、跨语言的优势,便于构建分布式的云服务环境。作业调度器的队列使用编程语言中的队列数据结构实现,队列中保存指向作业请求的指针。
当采用开源容器编排软件--Kubernets时,图13所示的深度学习作业调度方法可以具体为:
S101:作业调度器获取用户通过用户界面程序提交的作业请求。
在本申请具体的实施例中,用户需要使用web浏览器访问基于web服务的用户界面程序。在提交作业时,用户需要提供的信息包括:作业名称、深度学习库种类、作业类型、应用程序的存储位置、数据集的存储位置、任务种类与数量、每个任务的资源需求等。用户界面程序将这些信息进行编码,生成RPC格式的作业请求,传递给作业调度器。故此,作业调度器获取了用户的作业请求。
在本例中,作业名称(job_name)、应用程序的存储位置(app_url、boot_file)和数据集的存储位置(data_url)是字符串字段,深度学习库类型(engine_type)和作业类型(job_type)是枚举型字段,任务种类与数量(scale_description)、每个任务的资源需求(attribute_description)是键值对字段。
S102:作业调度器基于作业基础镜像名称、作业描述文件模板和作业请求,生成作业描述文件。
在本申请具体的实施例中,作业调度器依据作业请求RPC消息中指定的深度学习库类型与作业类型,从NFS中加载对应的作业描述文件模板。然后,作业调度器调用内置的Jinja模板渲染机制,以作业请求中的信息作为渲染时的输入变量,创建YAML格式的作业描述文件。作业调度器生成的作业描述文件可以被Kubernetes解析,用于创建任务容器。
S103:作业调度器向容器调度器提交作业。
在本申请具体的实施例中,作业调度器调用Kubernetes的REST API,将YAML格式的作业描述文件传递给Kubernetes,请求其创建并运行该作业的每个任务对应的容器。如果Kubernetes成功接受了这一请求,则进入步骤S1041;如果Kubernetes未能成功接受这一请求,则进入步骤S1051。Kubernetes未能成功接受作业请求的原因,可能是硬件资源不足、偶发网络故障等。
S1041:容器调度器基于作业基础镜像和作业描述文件,创建每个任务的容器。
在本申请具体的实施例中,Kubernetes依据作业描述文件中指定的深度学习库类型与作业类型,从NFS加载对应的作业基础镜像。本例加载的作业基础镜像为TensorFlow镜像。然后,Kubernetes依据作业描述文件中指定的任务规格(即运行PS和worker任务的Pod的总数),使用作业基础镜像创建对应数量的Pod对象和Service对象,使得每个Pod对应一个容器,每个Service对应一个网络端口。接着,依据作业描述文件中指定的应用程序、命令参数等信息,在容器中运行各个任务的进程。以TensorFlow分布式训练作业为例,这些进程包括TensorFlow分布式训练作业的1个PS任务进程和2个worker任务进程。启动任务进程所需的应用程序代码是通过作业描述文件的command字段指定的。本例中,command字段指定的run_train.sh程序用于启动TensorFlow训练任务,该程序首先下载作业请求中app_url字段指定的应用程序代码目录,然后执行boot_file字段指定的应用程序。进程的命令参数也来自作业描述文件,主要参数包括用于指定任务序号的task_index参数,以及用于指定数据集存储位置的data_url参数等。
作业描述文件中指定的资源需求信息会作为Kubernetes选择容器运行的宿主环境(即计算节点)的依据。例如,每个Pod(即容器)声明需要使用7.2GiB的内存和4个CPU核。因此,Kubernetes会寻找空闲资源量大于声明资源量的计算节点。每个容器有可能运行于相同的计算节点,也有可能运行于不同的计算节点。
S1042:作业调度器监控容器状态变化,将容器集合状态映射到作业状态。
在本申请具体的实施例中,作业监控器通过调用Kubernetes的Watch接口,实时监控作业的所有任务对应的容器的运行状态,并感知状态的变化。在某个容器状态发生变化时,作业监控器通过从Watch接口读入的事件流实时获取容器的最新状态。然后,作业监控器通过内置的状态映射机制,得到作业整体的状态。最后,作业监控器调用作业调度器提供的RPC接口,将该状态反馈给作业调度器。用户可以通过用户界面程序查询作业状态。随着容器状态的不断变化,本步骤有可能反复执行多次,直到作业运行结束。
在本实施例中,状态映射机制的主要映射规则包括:a)如果所有容器进入运行状态,则认为作业进入运行状态;b)如果所有worker任务容器进入完成状态,则认为作业进入完成状态;c)如果任意一个或多个容器进入失败状态,则认为作业进入失败状态。
S1051:作业调度器将作业请求加入队列。
在本申请具体的实施例中,作业调度器内部的队列用于保存提交过程发生失败的作业请求。在本实施例中,作业调度器的队列使用编程语言中的队列数据结构实现,队列中保存指向作业请求的指针。因此,将失败的作业请求加入队列的本质是将指向这一作业请求的指针加入队列。
S1052:作业调度器检查容器调度器及队列,寻找满足重新提交条件的作业请求。
在本申请具体的实施例中,作业调度器调用Kubernetes的接口,检查Kubernetes是否具备接受新作业提交的条件。在本实施例中,这个条件主要是指计算节点上具有足够的资源。然后,作业调度器读取自身的队列,检查是否存在之前提交失败的作业请求。如果Kubernetes管理的计算节点上的资源条件满足,同时作业调度器的队列中存在作业请求,那么作业调度器将基于一定的作业选择逻辑,从队列中取出满足重新提交条件的作业请求,再次进入步骤S103,向Kubernetes提交这个作业。否则,重新执行本步骤,继续检查Kubernetes和队列的状态。其中,本实施例中的作业选择逻辑采用简单的“先入先出(FIFO)”规则,即在队列中选择入队时间最早的作业请求。
在上述技术方案中,不同类型的深度学习作业可以按照不同的作业描述文件模板以及不同的作业基础镜像生成符合所述容器调度器的规范的作业描述文件,从而实现不同类型的深度学习作业都能被容器调度器进行处理,提升了深度学习作业调度的兼容率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、存储盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态存储盘Solid State Disk(SSD))等。

Claims (21)

1.一种深度学习作业调度方法,其特征在于,包括:
获取深度学习作业的作业请求,所述作业请求携带深度学习库类型以及作业类型;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;
根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件;
将所述目标作业描述文件发送至容器调度器;
所述容器调度器根据所述目标作业描述文件,从所述预存储的作业基础镜像中选择所述目标作业基础镜像,并创建至少一个容器用于执行所述作业请求。
2.根据权利要求1所述的方法,其特征在于,所述深度学习作业包括至少一个任务,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;或者,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;
所述根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件包括:
根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。
3.根据权利要求2所述的方法,其特征在于,根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件,包括:
将所述作业请求包括的信息和所述目标作业基础镜像的标识填入所述目标作业描述文件模板,从而得到所述目标作业描述文件。
4.根据权利要求1-3任一权利要求所述的方法,其特征在于,
所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像;或者,
所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像;
其中,所述依赖库为执行所述深度学习作业时需要使用到的库,所述深度学习程序的实例化为所述深度学习作业。
5.根据权利要求1-3任一权利要求所述的方法,其特征在于,
所述多个预存储的作业描述文件模板根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板对应于一个深度学习库类型和一种作业类型;
所述多个预存储的作业基础镜像根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业基础镜像中的每个预存储的作业基础镜像对应于一个深度学习库类型和一种作业类型。
6.根据权利要求1-3任一权利要求所述的方法,其特征在于,所述将所述目标作业描述文件发送至容器调度器之后,所述方法还包括:
在所述容器调度器调度失败的情况下,将指示所述作业请求的作业标识保存在队列中,其中,所述作业标识包括所述作业请求、所述作业请求包括的信息、所述目标作业描述文件、指针以及数据结构中的至少一种,其中,所述指针指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种,所述数据结构指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种。
7.根据权利要求6所述的方法,其特征在于,将用于指示所述作业请求的作业标识保存在队列中之后,还包括:
确定所述容器调度器具备重新提交作业请求的条件;
从所述队列中取出所述作业标识,并根据所述作业标识重新向所述容器调度器提交所述作业请求。
8.一种深度学习作业调度系统,其特征在于,所述系统包括作业调度器和容器调度器,
所述作业调度器用于获取深度学习作业的作业请求,所述作业请求携带深度学习库类型以及作业类型;
所述作业调度器用于根据所述深度学习库类型以及所述作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;以及,根据所述深度学习库类型以及所述作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;
所述作业调度器用于根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件;
所述作业调度器用于将所述目标作业描述文件发送至容器调度器;
所述容器调度器用于根据所述目标作业描述文件,从所述预存储的作业基础镜像中选择所述目标作业基础镜像,并创建至少一个容器用于执行所述作业请求。
9.根据权利要求8所述的系统,其特征在于,所述深度学习作业包括至少一个任务,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;或者,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;
所述作业调度器还用于根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。
10.根据权利要求9所述的系统,其特征在于,所述作业调度器还用于:
将所述作业请求包括的信息和所述目标作业基础镜像的标识填入所述目标作业描述文件模板,从而得到所述目标作业描述文件。
11.根据权利要求8-10任一权利要求所述的系统,其特征在于,
所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像;或者,
所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像;
其中,所述依赖库为执行所述深度学习作业时需要使用到的库,所述深度学习程序的实例化为所述深度学习作业。
12.根据权利要求8-10任一权利要求所述的系统,其特征在于,
所述多个预存储的作业描述文件模板根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板对应于一个深度学习库类型和一种作业类型;
所述多个预存储的作业基础镜像根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业基础镜像中的每个预存储的作业基础镜像对应于一个深度学习库类型和一种作业类型。
13.根据权利要求8-10任一权利要求所述的系统,其特征在于,
所述容器调度器还用于在所述容器调度器调度失败的情况下,将指示所述作业请求的作业标识保存在队列中,其中,所述作业标识包括所述作业请求、所述作业请求包括的信息、所述目标作业描述文件、指针以及数据结构中的至少一种;所述指针指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种,所述数据结构指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种。
14.根据权利要求13所述的系统,其特征在于,所述作业调度器还用于确定所述容器调度器具备重新提交作业请求的条件;从所述队列中取出所述作业标识,并根据所述作业标识重新向所述容器调度器提交所述作业请求。
15.一种云服务集群,其特征在于,包括:至少一个管理节点和至少一个计算节点,所述至少一个管理节点和所述至少一个计算节点之间通过通信网络进行通信,其中,所述至少一个管理节点用于:
获取深度学习作业的作业请求,所述作业请求携带深度学习库类型以及作业类型;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业描述文件模板中确定目标作业描述文件模板;
根据所述深度学习库类型以及所述作业类型,从多个预存储的作业基础镜像的标识中确定目标作业基础镜像的标识;
根据所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件;
将所述目标作业描述文件发送至容器调度器;
根据所述目标作业描述文件,从所述预存储的作业基础镜像中选择所述目标作业基础镜像,并在所述至少一个计算节点上创建至少一个容器用于执行所述作业请求。
16.根据权利要求15所述的云服务集群,其特征在于,所述深度学习作业包括至少一个任务,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序存储位置、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;或者,
所述作业请求还包括以下信息中的至少一个:作业名称、深度学习程序、应用程序启动文件、数据集存储位置、所述至少一个任务的种类、所述至少一个任务中每种任务的数量、作业命令行参数、所述至少一个任务中每个任务的资源需求;
所述管理节点还用于根据所述作业请求、所述目标作业描述文件模板和所述目标作业基础镜像的标识,生成目标作业描述文件。
17.根据权利要求16所述的云服务集群,其特征在于,所述管理节点还用于:
将所述作业请求包括的信息和所述目标作业基础镜像的标识填入所述目标作业描述文件模板,从而得到所述目标作业描述文件。
18.根据权利要求15-17任一权利要求所述的云服务集群,其特征在于,
所述作业基础镜像包括深度学习库和依赖库的镜像,并且,所述作业基础镜像不包括深度学习程序的镜像;或者,
所述作业基础镜像包括深度学习库、依赖库以及所述深度学习程序的镜像;
其中,所述依赖库为执行所述深度学习作业时需要使用到的库,所述深度学习程序的实例化为所述深度学习作业。
19.根据权利要求15-17任一权利要求所述的云服务集群,其特征在于,
所述多个预存储的作业描述文件模板根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业描述文件模板中的每个预存储的作业描述文件模板对应于一个深度学习库类型和一种作业类型;
所述多个预存储的作业基础镜像根据各深度学习库类型和各作业类型生成,其中,所述多个预存储的作业基础镜像中的每个预存储的作业基础镜像对应于一个深度学习库类型和一种作业类型。
20.根据权利要求15-17任一权利要求所述的云服务集群,其特征在于,所述管理节点还用于:
在所述容器调度器调度失败的情况下,将指示所述作业请求的作业标识保存在队列中,其中,所述作业标识包括所述作业请求、所述作业请求包括的信息、所述目标作业描述文件、指针以及数据结构中的至少一种,其中,所述指针指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种,所述数据结构指向所述作业请求、所述作业请求携带的信息、所述目标作业描述文件中的至少一种。
21.根据权利要求20所述的云服务集群,其特征在于,所述管理节点还用于:确定所述容器调度器具备重新提交作业请求的条件;以及,从所述队列中取出所述作业标识,并根据所述作业标识重新向所述容器调度器提交所述作业请求。
CN201810414039.6A 2018-03-30 2018-05-02 深度学习作业调度方法、系统和相关设备 Active CN108920259B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP19777751.9A EP3761172A4 (en) 2018-03-30 2019-03-18 PROCEDURE AND SYSTEM FOR PLANNING TIEFENLER TASKS AND ASSOCIATED DEVICE
PCT/CN2019/078533 WO2019184750A1 (zh) 2018-03-30 2019-03-18 深度学习作业调度方法、系统和相关设备
US17/038,720 US11954521B2 (en) 2018-03-30 2020-09-30 Deep learning job scheduling method and system and related device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2018102763369 2018-03-30
CN201810276336 2018-03-30

Publications (2)

Publication Number Publication Date
CN108920259A CN108920259A (zh) 2018-11-30
CN108920259B true CN108920259B (zh) 2022-06-24

Family

ID=64403353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810414039.6A Active CN108920259B (zh) 2018-03-30 2018-05-02 深度学习作业调度方法、系统和相关设备

Country Status (4)

Country Link
US (1) US11954521B2 (zh)
EP (1) EP3761172A4 (zh)
CN (1) CN108920259B (zh)
WO (1) WO2019184750A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920259B (zh) * 2018-03-30 2022-06-24 华为云计算技术有限公司 深度学习作业调度方法、系统和相关设备
CN109766184A (zh) * 2018-12-28 2019-05-17 北京金山云网络技术有限公司 分布式任务处理方法、装置、服务器和系统
CN111401396B (zh) * 2019-01-03 2023-04-18 阿里巴巴集团控股有限公司 图像识别方法及装置
US10831399B2 (en) * 2019-01-28 2020-11-10 EMC IP Holding Company LLC Method and system for enabling agentless backup and restore operations on a container orchestration platform
CN109885389B (zh) * 2019-02-19 2021-07-16 浪潮云信息技术股份公司 一种基于容器的并行深度学习调度训练方法及系统
CN110221910B (zh) * 2019-06-19 2022-08-02 北京百度网讯科技有限公司 用于执行mpi作业的方法和装置
CN110414687A (zh) * 2019-07-12 2019-11-05 苏州浪潮智能科技有限公司 一种用于深度学习框架分布式训练的方法和装置
CN110413391B (zh) * 2019-07-24 2022-02-25 上海交通大学 基于容器集群的深度学习任务服务质量保证方法和系统
CN111124277B (zh) * 2019-11-21 2022-10-18 苏州浪潮智能科技有限公司 一种深度学习数据集缓存方法、系统、终端及存储介质
CN110942017B (zh) * 2019-11-25 2022-12-02 重庆紫光华山智安科技有限公司 基于自动化的多算法指标对比方法及系统
CN112860424A (zh) * 2019-11-28 2021-05-28 上海商汤智能科技有限公司 任务处理方法及系统
CN111124634A (zh) * 2019-12-06 2020-05-08 广东浪潮大数据研究有限公司 一种训练方法、装置及电子设备和存储介质
CN111131487B (zh) * 2019-12-30 2022-08-12 广东浪潮大数据研究有限公司 一种深度学习平台容器镜像获取、共享方法及系统
CN111200606A (zh) * 2019-12-31 2020-05-26 深圳市优必选科技股份有限公司 深度学习模型任务处理方法、系统、服务器及存储介质
CN113127437B (zh) * 2019-12-31 2023-12-22 阿里巴巴集团控股有限公司 文件系统管理方法、云系统、装置、电子设备及存储介质
CN113112025A (zh) * 2020-01-13 2021-07-13 顺丰科技有限公司 模型建立系统、方法、装置及存储介质
CN111241540A (zh) * 2020-01-16 2020-06-05 南京领行科技股份有限公司 一种业务处理方法及装置
CN113138841A (zh) * 2020-01-17 2021-07-20 华为技术有限公司 一种资源调度方法以及资源调度系统
CN111274036B (zh) * 2020-01-21 2023-11-07 南京大学 一种基于速度预测的深度学习任务的调度方法
CN111414234A (zh) * 2020-03-20 2020-07-14 深圳市网心科技有限公司 镜像容器创建方法及装置、计算机装置及存储介质
US11630700B2 (en) * 2020-03-23 2023-04-18 T-Mobile Usa, Inc. Local edge device
CN111629061B (zh) * 2020-05-28 2023-01-24 苏州浪潮智能科技有限公司 一种基于Kubernetes的推理服务系统
CN111611065B (zh) * 2020-05-29 2023-08-11 远光软件股份有限公司 机器学习算法的调用方法、装置、存储介质及电子设备
US11487555B2 (en) * 2020-06-09 2022-11-01 Tencent America LLC Running PBS jobs in kubernetes
CN113918273B (zh) * 2020-07-10 2023-07-18 华为技术有限公司 一种容器组的创建方法和装置
CN112101536A (zh) * 2020-08-30 2020-12-18 西南电子技术研究所(中国电子科技集团公司第十研究所) 轻量级分布式多任务协同框架
CN112286671B (zh) * 2020-12-29 2021-03-12 湖南星河云程信息科技有限公司 一种容器化批处理作业调度方法、装置和计算机设备
CN112906907B (zh) * 2021-03-24 2024-02-23 成都工业学院 一种机器学习管道模型分层化管理和分发的方法及系统
CN113254158B (zh) * 2021-06-11 2021-10-12 苏州浪潮智能科技有限公司 一种深度学习系统的部署方法和装置
CN113326117B (zh) * 2021-07-15 2021-10-29 中国电子科技集团公司第十五研究所 一种任务调度方法、装置及设备
CN113672368A (zh) * 2021-08-18 2021-11-19 上海哔哩哔哩科技有限公司 任务调度方法及系统
CN113641480B (zh) * 2021-08-27 2023-12-15 四川中电启明星信息技术有限公司 一种基于Kubernetes集群组的任务调度系统及方法
KR20230087309A (ko) * 2021-12-09 2023-06-16 국민대학교산학협력단 학습 클라우드 유형 기반의 인공지능 클라우드 학습장치 및 방법
CN114385337B (zh) * 2022-01-10 2023-10-20 杭州电子科技大学 一种用于分布式工作流系统的任务分组调度方法
CN115102851B (zh) * 2022-08-26 2022-11-08 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种面向hpc与ai融合计算的融合平台及其资源管理方法
CN116737673B (zh) * 2022-09-13 2024-03-15 荣耀终端有限公司 嵌入式操作系统中文件系统的调度方法、设备及存储介质
CN115454450B (zh) * 2022-09-15 2024-04-30 北京火山引擎科技有限公司 一种针对数据作业的资源管理的方法、装置、电子设备和存储介质
CN115543639B (zh) * 2022-12-01 2023-04-28 阿里云计算有限公司 分布式执行深度学习任务的优化方法和分布式系统
CN115618239B (zh) * 2022-12-16 2023-04-11 四川金信石信息技术有限公司 一种深度学习框架训练的管理方法、系统、终端及介质
CN116170822B (zh) * 2022-12-22 2023-09-08 博上(山东)网络科技有限公司 一种5g网络资源管理方法及系统
CN115794355B (zh) * 2023-01-29 2023-06-09 中国空气动力研究与发展中心计算空气动力研究所 任务处理方法、装置、终端设备及存储介质
CN116028069A (zh) * 2023-02-07 2023-04-28 之江实验室 一种模型部署的方法、装置、存储介质及电子设备
CN116755893B (zh) * 2023-08-22 2023-11-17 之江实验室 面向深度学习的分布式计算系统的作业调度方法和装置
CN117093352B (zh) * 2023-10-13 2024-01-09 之江实验室 基于模板的计算集群作业调度系统及方法、装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006031674A (ja) * 2004-06-15 2006-02-02 Canon Inc 情報処理装置および方法並びにプログラム
US8423418B2 (en) * 2008-03-31 2013-04-16 Sap Ag Managing consistent interfaces for business objects across heterogeneous systems
CN104166590A (zh) * 2013-05-20 2014-11-26 阿里巴巴集团控股有限公司 一种实现任务调度的方法及系统
CN103744734B (zh) * 2013-12-24 2017-09-26 中国科学院深圳先进技术研究院 一种任务作业处理方法、装置及系统
US9843533B2 (en) 2014-03-06 2017-12-12 Trilio Data Inc. Elastic compute cloud based on underutilized server resources using a distributed container system
US10102480B2 (en) * 2014-06-30 2018-10-16 Amazon Technologies, Inc. Machine learning service
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
CN106027643B (zh) 2016-05-18 2018-10-23 无锡华云数据技术服务有限公司 一种基于Kubernetes容器集群管理系统的资源调度方法
CN107783816A (zh) * 2016-08-31 2018-03-09 阿里巴巴集团控股有限公司 虚拟机的创建方法及装置、大数据集群创建的方法及装置
US11244249B2 (en) * 2016-11-11 2022-02-08 General Electric Company Machine learning templates in a machine learning framework
CN107203424A (zh) * 2017-04-17 2017-09-26 北京奇虎科技有限公司 一种在分布式集群中调度深度学习作业的方法和装置
US10782988B2 (en) * 2017-04-25 2020-09-22 Petuum Inc. Operating system for distributed enterprise artificial intelligence programs on data centers and the clouds
CN107193635A (zh) * 2017-05-24 2017-09-22 珠海金山网络游戏科技有限公司 一种实现虚拟化内容库的方法、装置及系统
CN107480027A (zh) * 2017-07-07 2017-12-15 上海诺悦智能科技有限公司 一种分布式深度学习运维系统
CN107733977B (zh) * 2017-08-31 2020-11-03 北京百度网讯科技有限公司 一种基于Docker的集群管理方法及装置
CN107450961B (zh) 2017-09-22 2020-10-16 济南浚达信息技术有限公司 一种基于Docker容器的分布式深度学习系统及其搭建方法、工作方法
CN108920259B (zh) * 2018-03-30 2022-06-24 华为云计算技术有限公司 深度学习作业调度方法、系统和相关设备

Also Published As

Publication number Publication date
CN108920259A (zh) 2018-11-30
EP3761172A4 (en) 2021-04-21
WO2019184750A1 (zh) 2019-10-03
EP3761172A1 (en) 2021-01-06
US20210011762A1 (en) 2021-01-14
US11954521B2 (en) 2024-04-09

Similar Documents

Publication Publication Date Title
CN108920259B (zh) 深度学习作业调度方法、系统和相关设备
US11573844B2 (en) Event-driven programming model based on asynchronous, massively parallel dataflow processes for highly-scalable distributed applications
US9363195B2 (en) Configuring cloud resources
US7448022B1 (en) Dynamic software composition in a component-based software system
US9164998B2 (en) Archive-system-independent archive-type objects
US8181151B2 (en) Modeling and managing heterogeneous applications
US20150263900A1 (en) High performance distributed computing environment particularly suited for reservoir modeling and simulation
US20140304678A1 (en) System and method for resource-definition-oriented software generation and development
WO2022037612A1 (zh) 提供应用构建服务的方法及应用构建平台、应用部署方法和系统
US10089084B2 (en) System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language
US12014216B2 (en) Method for platform-based scheduling of job flow
EP2685376B1 (en) COBOL reference architecture
Rattanapoka et al. An MQTT-based IoT cloud platform with flow design by Node-RED
US9996344B2 (en) Customized runtime environment
EP4163798A1 (en) Method and apparatus for managing model file in inference application
US10268496B2 (en) System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment
US20240070149A1 (en) Database systems and client-side data synchronization methods
US20240070151A1 (en) Database systems and client-side query transformation methods
CN117296042A (zh) 用于超融合云基础架构的应用管理平台
CN113791819A (zh) 接口文档生成方法和装置、存储介质、电子设备
Tripathi et al. Towards introducing and implementation of SOA design antipatterns
US11972357B2 (en) Application programming interface enablement of consistent ontology model instantiation
US20240069933A1 (en) Database systems and client-side field retrieval methods
US20240070139A1 (en) Database systems and methods for client-side initiation of server-side actions
US20240070146A1 (en) Database systems and methods of batching data requests for application extensions

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20220210

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant