CN107977268B - 人工智能的异构硬件的任务调度方法、装置及可读介质 - Google Patents

人工智能的异构硬件的任务调度方法、装置及可读介质 Download PDF

Info

Publication number
CN107977268B
CN107977268B CN201710952735.8A CN201710952735A CN107977268B CN 107977268 B CN107977268 B CN 107977268B CN 201710952735 A CN201710952735 A CN 201710952735A CN 107977268 B CN107977268 B CN 107977268B
Authority
CN
China
Prior art keywords
task
priority
tasks
type
attribute information
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
CN201710952735.8A
Other languages
English (en)
Other versions
CN107977268A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201710952735.8A priority Critical patent/CN107977268B/zh
Publication of CN107977268A publication Critical patent/CN107977268A/zh
Priority to US16/159,322 priority patent/US20190114202A1/en
Application granted granted Critical
Publication of CN107977268B publication Critical patent/CN107977268B/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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种人工智能的异构硬件的任务调度方法、装置及可读介质。其方法包括:接收API发送的对应功能的任务执行请求,该任务执行请求中携带任务的属性信息;根据任务的属性信息获取任务的优先级,其中在线服务的优先级高于离线任务的优先级;根据任务的优先级,将对应的任务插入对应功能的调度队列中;调度队列中的各任务按照优先级由高到低排列;按照调度队列中各任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务。本发明的技术方案,可以根据优先级的不同,实现离线的模型训练任务和在线推理服务的混步,从而能够大大提高资源利用率。

Description

人工智能的异构硬件的任务调度方法、装置及可读介质
【技术领域】
本发明涉及计算机应用技术领域,尤其涉及一种人工智能的异构硬件的任务调度方法、装置及可读介质。
【背景技术】
人工智能(Artificial Intelligence;AI)已经广泛应用在各个领域中,特别是近几年以深度学习为代表的新方法,在很多领域如语音识别,图像识别,广告点击到达率(Click-Through-Rate;CTR)以及自然语言处理领域等,取得了最先进的(state-of-the-art)的效果。
目前的AI技术主要方法是机器学习和深度学习,主要包括:模型训练和模型推理。模型训练主要是先通过历史数据训练出一个模型,然后在模型推理阶段利用该模型进行线上推理。因为性能的原因,在模型训练和模型推理中,都大量应用了AI的异构硬件。其中模型训练为离线任务,主要在乎吞吐,对延时要求不高,因此资源利用率很高。而模型推理为在线服务,需要满足一定延时的要求,按照峰值分配资源。但是,现有的AI的异构硬件在接收到任务的时候,并不区分该任务是在线服务还是离线任务,而根据接收到任务的时间先后顺序,顺次执行。
基于以上所述,目前的AI异构硬件很难做到虚拟化,无法实现资源隔离,也就没办法通过混步来提高资源利用率,因此资源的利用率很低。
【发明内容】
本发明提供了一种人工智能的异构硬件的任务调度方法、装置及可读介质,用于提高AI的异构硬件在任务调度时的资源利用率。
本发明提供一种人工智能的异构硬件的任务调度方法,所述方法包括:
接收应用程序接口发送的对应功能的任务执行请求,所述任务执行请求中携带任务的属性信息;
根据所述任务的属性信息获取所述任务的优先级,其中所述在线服务的优先级高于所述离线任务的优先级;
根据所述任务的优先级,将对应的所述任务插入对应功能的调度队列中;所述调度队列中的各所述任务按照优先级由高到低排列;
按照所述调度队列中各所述任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务。
进一步可选地,如上所述的方法中,所述任务的属性信息中包括所述任务的优先级,所述任务的优先级由所述应用程序接口上层的调度模块为所述任务分配的。
进一步可选地,如上所述的方法中,根据所述任务的属性信息获取所述任务的优先级,具体包括:
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级。
进一步可选地,如上所述的方法中,所述任务的属性信息中包括所述任务的类型,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型设置所述任务的优先级;
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级,具体包括:
从所述任务的属性信息中获取所述任务的类型;
根据所述任务的类型为所述任务设置优先级,使得所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级。
进一步可选地,如上所述的方法中,所述任务的属性信息中包括所述任务的类型和在所述类型中所属的类别,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,设置所述任务的优先级;
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级,具体包括:
从所述任务的属性信息中获取所述任务的类型和在所述类型中所属的类别;
根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,为所述任务设置优先级;其中所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级;且同一所述类型中,所述高优先级类别列表中的类别对应的任务的优先级,高于所述高优先级类别列表之外的类别对应的任务的优先级。
进一步可选地,如上所述的方法中,所述任务的属性信息中包括所述任务的预设结束时刻;所述优先级设置策略包括根据所述任务的预设结束时刻距离当前时刻的远近设置所述任务的优先级;
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级,具体包括:
从所述任务的属性信息中获取所述任务的预设结束时刻;
计算所述任务的预设结束时刻距离当前时刻的时间差;
根据所述时间差为所述任务设置优先级,使得所述时间差小于第一预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第二预设时间长度阈值对应的所述任务的优先级。
本发明提供一种人工智能的异构硬件的任务调度装置,所述装置包括:
接收模块,用于接收应用程序接口发送的对应功能的任务执行请求,所述任务执行请求中携带任务的属性信息;
获取模块,用于根据所述任务的属性信息获取所述任务的优先级,其中所述在线服务的优先级高于所述离线任务的优先级;
插入模块,用于根据所述任务的优先级,将对应的所述任务插入对应功能的调度队列中;所述调度队列中的各所述任务按照优先级由高到低排列;
控制模块,用于按照所述调度队列中各所述任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务;
所述调度队列,用于按照优先级由高到低的顺序,存储对应功能的各所述任务。
进一步可选地,如上所述的装置中,所述任务的属性信息中包括所述任务的优先级,所述任务的优先级由所述应用程序接口上层的调度模块为所述任务分配的。
进一步可选地,如上所述的装置中,所述获取模块,具体用于根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级。
进一步可选地,如上所述的装置中,所述任务的属性信息中包括所述任务的类型,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型设置所述任务的优先级;
所述获取模块,具体包括:
获取单元,用于从所述任务的属性信息中获取所述任务的类型;
设置单元,用于根据所述任务的类型为所述任务设置优先级,使得所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级。
进一步可选地,如上所述的装置中,若所述任务的属性信息中包括所述任务的类型和在所述类型中所属的类别,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,设置所述任务的优先级;
所述获取单元,具体用于从所述任务的属性信息中获取所述任务的类型和在所述类型中所属的类别;
所述设置单元,具体用于根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,为所述任务设置优先级;其中所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级;且同一所述类型中,所述高优先级类别列表中的类别对应的任务的优先级,高于所述高优先级类别列表之外的类别对应的任务的优先级。
进一步可选地,如上所述的装置中,若所述任务的属性信息中包括所述任务的预设结束时刻;所述优先级设置策略包括根据所述任务的预设结束时刻距离当前时刻的远近设置所述任务的优先级;
所述获取单元,具体用于从所述任务的属性信息中获取所述任务的预设结束时刻;
所述设置单元,具体用于计算所述任务的预设结束时刻距离当前时刻的时间差;根据所述时间差为所述任务设置优先级,使得所述时间差小于第一预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第二预设时间长度阈值对应的所述任务的优先级。
本发明还提供一种计算机设备,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的人工智能的异构硬件的任务调度方法。
本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的人工智能的异构硬件的任务调度方法。
本发明的人工智能的异构硬件的任务调度方法、装置及可读介质,通过接收API发送的对应功能的任务执行请求,该任务执行请求中携带任务的属性信息;根据任务的属性信息获取任务的优先级,其中在线服务的优先级高于离线任务的优先级;根据任务的优先级,将对应的任务插入对应功能的调度队列中;调度队列中的各任务按照优先级由高到低排列;按照调度队列中各任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务。本发明的技术方案,可以根据优先级的不同,实现离线的模型训练任务和在线推理服务的混步,而且也可以实现不同的在线推理服务的按照优先级高低进行调度,不同的离线的模型训练任务也按照优先级高低进行调度,从而能够大大提高资源利用率。
【附图说明】
图1为本发明的AI的异构硬件的任务调度方法实施例的流程图。
图2为本发明中将任务插入对应功能的调度队列中的一种示例图。
图3为为本发明中将任务插入对应功能的调度队列中的另一种示例图。
图4为本发明提供的一种AI的异构硬件的任务调度处理的架构图。
图5为本发明的AI的异构硬件的任务调度装置实施例一的结构图。
图6为本发明的AI的异构硬件的任务调度装置实施例二的结构图。
图7为本发明的计算机设备实施例的结构图。
图8为本发明提供的一种计算机设备的示例图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图1为本发明的AI的异构硬件的任务调度方法实施例的流程图。如图1所示,本实施例的AI的异构硬件的任务调度方法,具体可以包括如下步骤:
100、接收API发送的对应功能的任务执行请求,该任务执行请求中携带任务的属性信息;
本实施例的AI的异构硬件的任务调度方法的执行主体为AI的异构硬件的任务调度装置,该AI的异构硬件的任务调度装置可以设置在AI的异构硬件的驱动中。本实施例中的AI的异构硬件可以包括现场可编程门阵列(Field-Programmable Gate Array;FPGA)、或者专用集成电路(Application Specific Integrated Circuits;ASIC)。现有的处理AI的FPGA或者ASIC均仅能够根据接收到的任务的先后时间顺序,顺次进行任务调度,无法实现资源隔离,也就没办法通过混步来提高资源利用率。例如百度上万台AI线上推理集群,实际平均利用率只有10%左右。基于此问题,本发明提供本实施例的技术方案,通过任务的不同优先级实现资源隔离,实现离线的训练任务和在线的推理服务的混步,从而可以大大地提高资源的利用率。
本实施例中,AI的异构硬件的任务调度装置接收到API发送的对应功能的任务执行请求,该任务执行请求中携带任务的属性信息。其中每一种API接收一种对应功能的任务执行请求。
在任务属性信息的第一种情况中,可选地,该任务执行请求中的任务属性信息可以包括任务的优先级,此时对应的任务的优先级可以由API上层的调度模块为该任务设置的。API上层的调度模块为该任务设置优先级时可以采用各种优先级设置策略。
例如,调度模块可以根据任务的类型设置任务的优先级,任务的类型可以为离线任务或者在线服务,离线任务具体可以为AI处理中的模型训练任务,在线服务具体可以为AI处理中的在线推理服务。在设置优先级时,由于在线服务对时延要求较高,因此将在线服务对应的任务的优先级设置的高于离线任务对应的任务的优先级。按照此种方式,所有任务仅能够分为两种优先级。
或者调度模块还可以设置更多级别的优先级,例如调度模块可以根据任务的类型、在该类型中的类别以及预设的各类型中的高优先级类别列表,设置任务的优先级。同理,此时对应的任务的类型也为离线任务或者在线服务。本实施例中,离线任务对应的各个任务还可以进一步分为高优先级和低优先级,在线服务对应的各个任务也可以进一步分为高优先级和低优先级。例如,可以分别设置离线任务和在线服务的高优先级类别列表,作为离线任务和在线服务的高优先级的类别的白名单。例如将在线服务类型对应的任务中,属于在线服务的高优先级类别列表中的类别对应的任务设置为最高优先级,如4级,而将在线服务类型对应的任务中,不属于在线服务的高优先级类别列表中的类别对应的任务设置为较高优先级,如3级,3级的优先级低于4级的优先级。而离线任务类型对应的任务中,属于离线任务的高优先级列表中的类别对应的任务设置为高优先级,如2级,2级优先级低于3级优先级,即离线任务的高优先级也是低于在线服务的低优先级。对于离线任务类型对应的任务中,不属于离线任务的高优先级列表中的类别对应的任务设置为低优先级如1级,1级优先级低于2级优先级。另外,还可以将在线服务类型对应的任务中,不属于在线服务的高优先级类别列表中的类别对应的任务的优先级,和离线任务类型对应的任务中,属于离线任务的高优先级列表中的类别对应的任务的优先级合并设置为一个优先级如NORMAL。而将在线服务类型对应的任务中,属于在线服务的高优先级类别列表中的类别对应的任务设置为最高优先级如HIGH,将离线任务类型对应的任务中,不属于离线任务的高优先级列表中的类别对应的任务设置最低优先级如LOW。HIGH的优先级最高,LOW的优先级最低,NORMAL的优先级位于HIGH和LOW之间。
再例如,调度模块还可以根据任务的预设结束时刻距离当前时刻的远近设置任务的优先级。本实施例中任务的预设结束时刻指的是期望该任务被执行的结束时刻。若任务的预设结束时刻距离当前时刻越近,表示该任务越需要急切完成,此时为该任务设置的优先级可以越高;而若任务的预设结束时刻距离当前时刻越远,表示该任务并不着急,还有足够的时间完成,此时为该任务设置的优先级可以越低。
实际应用中,调度模块设置各任务的优先级不限制以上几种策略,还可以采用用户设置的其他的策略方式实现对任务的优先级进行设置,在此不再一一举例赘述。
在任务属性信息的第二种情况中,可选地,本实施例中的任务的属性信息中还可以包括任务的其他信息,如任务的类型,或者还可以同时包括任务的类型以及在该类型中的类别,或者还可以包括任务的预设结束时刻等等其他属性信息,这样,在AI的异构硬件的任务调度装置中还可以预先设置优先级设置策略,以便于AI的异构硬件的任务调度装置根据任务的属性信息获取任务的优先级,详细参考下述步骤的记载。
101、根据任务的属性信息获取任务的优先级,其中在线服务的优先级高于离线任务的优先级;
由于实际应用中在线服务如AI的在线推理服务对时延要求比较高,而离线任务如AI的模型训练任务对时延要求较低,因此,本实施例中,根据任务的属性信息获取的任务的优先级中在线服务的优先级高于离线任务的优先级。
对应于上述任务属性信息的第一种情况,此时步骤101可以直接从任务的属性信息中获取该任务的优先级。该任务的优先级的标识方式具体可以为采用数字如1、2、3或者4标识,或者也可以采用HIGH、NORMAL、和LOW来标识,详细可以参考上述任务属性信息的第一种情况中的记载,在此不再赘述。
对应于上述任务属性信息的第二种情况,此时步骤101,具体可以包括如下步骤:根据预设存储的优先级设置策略和任务的属性信息,为任务设置优先级。
也就是说,对于上述任务属性的第二种情况,需要在AI的异构硬件的任务调度装置中预先存储有优先级设置策略,以限制AI的异构硬件的任务调度装置根据该优先级设置策略和任务执行请求中携带的任务属性信息,为任务执行请求对应的任务设置优先级。
下面描述几种根据预设存储的优先级设置策略和任务的属性信息,为任务设置优先级的情况:
情况a)、若在上述任务属性信息的第二种情况中,任务的属性信息中包括任务的类型,任务的类型为离线任务或者在线服务;AI的异构硬件的任务调度装置中预先存储的优先级设置策略为根据任务的类型设置任务的优先级;此时,对应地所有任务的优先级仅分为两级,在线服务的高优先级和离线任务的低优先级。如仅设置HIGH和LOW两种优先级。
此时对应的“根据预设存储的优先级设置策略和任务的属性信息,为任务设置优先级”,具体可以包括:从任务的属性信息中获取任务的类型;根据任务的类型为任务设置优先级,使得在线服务对应的任务的优先级高于离线任务对应的任务的优先级。例如若确定任务的类型为在线服务时,将该任务的优先级设置为HIGH,而当任务的类型为离线任务时,将该任务的优先级设置为LOW。这样,可以保证在线服务对应的任务的优先级高于离线任务对应的任务的优先级。
情况b)、若在上述任务属性信息的第二种情况中,任务的属性信息中包括任务的类型和在类型中所属的类别,任务的类型为离线任务或者在线服务;AI的异构硬件的任务调度装置中预先存储的优先级设置策略为根据任务的类型、在类型中的类别以及预设的各类型对应的高优先级类别列表,设置任务的优先级。
此时对应的“根据预设存储的优先级设置策略和任务的属性信息,为任务设置优先级”,具体可以包括:从任务的属性信息中获取任务的类型和在类型中所属的类别;根据任务的类型、在类型中的类别以及预设的各类型对应的高优先级类别列表,为任务设置优先级;其中在线服务对应的任务的优先级高于离线任务对应的任务的优先级;且同一类型中,高优先级类别列表中的类别对应的任务的优先级,高于高优先级类别列表之外的类别对应的任务的优先级。本实施例的技术方案中,每一类型对应的高优先级类别列表可以为该类型对应的高优先级的类别的白名单,详细可以参考上述相关实施例的记载。这样,按照本实施例的技术方案,在线服务对应的任务的优先级可以包括两种,如分别可以为最高优先级4,低于最高优先级4的较高优先级3。而离线任务对应的任务的优先级也可以包括两种,如分别为高优先级2和低于高优先级2的低优先级1。其中优先级2低于优先级3,即离线任务的高优先级也是低于在线服务的低优先级。同理,也可以将在线服务类型对应的任务中,不属于在线服务的高优先级类别列表中的类别对应的任务的优先级,和离线任务类型对应的任务中,属于离线任务的高优先级列表中的类别对应的任务的优先级合并设置为一个优先级如NORMAL,而将在线服务类型对应的任务中,属于在线服务的高优先级类别列表中的类别对应的任务设置为最高优先级如HIGH,将离线任务类型对应的任务中,不属于离线任务的高优先级列表中的类别对应的任务设置最低优先级如LOW。HIGH的优先级最高,LOW的优先级最低,NORMAL的优先级位于HIGH和LOW之间,详细亦可以参考上述相关技术方案的记载。在AI中,采用该种方案可以实现不同类别的在线推理服务,采用不同的优先级进行调度;也可以实现不同类别的离线模型训练任务,采用不同的优先级进行调度。
情况c)、若在上述任务属性信息的第二种情况中,任务的属性信息中包括任务的预设结束时刻;AI的异构硬件的任务调度装置中预先存储的优先级设置策略为根据任务的预设结束时刻距离当前时刻的远近设置任务的优先级;
此时对应的“根据预设存储的优先级设置策略和任务的属性信息,为任务设置优先级”,具体可以包括:从任务的属性信息中获取任务的预设结束时刻;计算任务的预设结束时刻距离当前时刻的时间差;根据时间差为任务设置优先级,使得时间差小于第一预设时间长度阈值对应的任务的优先级,高于时间差大于第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的任务的优先级,时间差大于第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的任务的优先级,高于时间差大于第二预设时间长度阈值对应的任务的优先级。
本实施例中以根据任务的预设结束时刻距离当前时刻的时间差,将任务分类三个优先级为例,即时间差小于第一预设时间长度阈值对应的任务的优先级最高,而时间差大于第二预设时间长度阈值对应的任务的优先级最低,而时间差大于第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的任务的优先级,位于前述两个优先级之间。实际应用中,按照类似的方式也可以根据时间差设置两个级别或者多个级别的优先级,在此不再一一举例赘述。
需要说明的是,上述情况c)仅适用于任务类型为处理离线任务如AI的离线模型训练任务的情形,由于仅离线任务存在需要任务执行的最晚时刻即预设结束时刻,而在线服务如AI的在线推理服务时一直运行着,而不会存在预设结束时刻这个参数。
需要说明的是,上述情况a)、b)和c)仅为本实施例的三种情况,实际应用中,还可以采用用户设置的其他的策略方式,根据各任务的重要程度为实现对对应的任务的优先级进行设置,在此不再一一举例赘述。
102、根据任务的优先级,将对应的任务插入对应功能的调度队列中;调度队列中的各任务按照优先级由高到低排列;
本实施例中,对于每一功能的API,或者每一功能的AI的异构硬件中的计算单元,AI的异构硬件的任务调度装置中都设置有对应的调度队列,用于存储该功能的任务。具体地,由应用通过对应的功能的API发起任务执行请求。由API通过ioct1接口向驱动层发起任务执行请求。由驱动层中的AI的异构硬件的任务调度装置根据任务执行请求中的属性信息,获取该任务的优先级。驱动层为每种功能的计算单元都存有专用的信号量,信号量中包括有调度队列,该调度队列中存储有均需要调度该功能的多个计算单元中的某一个计算单元实现任务执行的多个任务。且调度队列中的多个任务是按照优先级由高到低的顺序存储。
根据任务的优先级,将对应的任务插入对应功能的调度队列中的过程中,可以从调度队列的队头开始遍历,如果当前遍历的任务节点比新请求的任务执行请求对应的任务的优先级低,则将新请求的任务插入到当前遍历的任务节点前;如果遍历到队尾则直接插入队尾。
图2为本发明中将任务插入对应功能的调度队列中的一种示例图。如图2所示,以将新请求的任务按照上述实施例的插入方式将该新请求的任务插入调度队列中的情况。图3为为本发明中将任务插入对应功能的调度队列中的另一种示例图。如图3所示,以将新请求的任务按照上述实施例的插入方式将该新请求的任务插入调度队列的队尾的情况。
上述图2和图3中,在具体实现时,不同优先级用不同的整数值表示,例如HIGH=2,NORMAL=1,LOW=0,这样有利于比较优先级,同时非常方便增加和删除优先级的个数。
103、按照调度队列中各任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务。
实际应用中,步骤102和步骤103可以同时执行,或者步骤103也可以位于步骤102之前,例如,按照步骤101获取到新请求的任务的优先级之后,可以先检查AI的异构硬件种对应功能的计算单元中是否有空闲计算单元,如果有就下发调度队列中优先级最高的任务,以供该计算单元执行该任务;同时在该任务执行完毕或者开始执行时,删除调度队列中的该任务。如果没有空闲计算单元,可以按照步骤102再将对应的任务插入对应功能的调度队列中。但是该种方案执行的前提是调度队列中存在待执行的任务,否则必须先执行步骤102,确认调度队列中存储有待执行的任务,然后再执行步骤103,实现任务的调度。
实际应用中,该AI的异构硬件的任务调度装置也可以按照下述流程进行工作:
(1)接收新请求的任务;
(2)判断AI的异构硬件中能够执行新请求的任务的多个计算单元中是否存在空闲,若存在,执行步骤(3);否则,若不存在,执行步骤(4);
(3)发起任务执行命令,由空闲的计算单元执行该任务。
由于调度队列中有任务的时候,AI的异构硬件中与该调度队列对应的多个计算单元一旦有空闲时,AI的异构硬件的任务调度装置会按照调度队列中各任务的优先级,依次发起优先级最高的任务的执行命令,由计算单元执行。所以,反过来讲,一旦计算单元存在空闲的时候,说明该功能的调度队列中没有未执行的任务了,所以此时可以直接发起该新请求的任务的命令,由空闲的计算单元执行该任务;而不需要再在调度队列中存储该新请求的任务了。
(4)获取该新请求的任务的优先级,根据该任务的优先级将该任务插入调度队列中睡眠,等待被唤醒。
(5)当检测到有其他的计算单元执行完后,判断调度队列中是否有需要执行的任务,若有,执行步骤(6);否则,调度队列中没有需要执行的任务时,执行完毕,直接返回。
(6)唤醒调度队列中由前至后的第一个的任务,即优先级最高的任务;然后按照步骤(3)的方式,执行任务。
AI的异构硬件的任务调度装置可以按照上述实施例的方式对任一功能的API下发的新请求的任务存储在调度队列中,同时还可以根据调度队列该功能的任务的优先级的高低顺序,依次调度各任务。本实施例的技术方案,通过该优先级调度的方法,使得AI的异构硬件中的每个计算单元都会优先调度高优先级的计算任务,同时在没有高优先级任务情况下,能够执行低优先级任务,从而大大提高了资源的利用率。
本实施例的AI的异构硬件的任务调度方法,通过接收API发送的对应功能的任务执行请求,该任务执行请求中携带任务的属性信息;根据任务的属性信息获取任务的优先级,其中在线服务的优先级高于离线任务的优先级;根据任务的优先级,将对应的任务插入对应功能的调度队列中;调度队列中的各任务按照优先级由高到低排列;按照调度队列中各任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务。本实施例的技术方案,可以根据优先级的不同,实现离线的模型训练任务和在线推理服务的混步,而且也可以实现不同的在线推理服务的按照优先级高低进行调度,不同的离线的模型训练任务也按照优先级高低进行调度,从而能够大大提高资源利用率。
图4为本发明提供的一种AI的异构硬件的任务调度处理的架构图。如图4所示,以深度学习处理器为例,介绍上述图1所示实施例的一种应用场景。具体地,该架构中,API主要提供一些基础的接口,例如矩阵乘法接口gemm、矩阵转置接口transpose、双曲函数接口tanh以及激活函数接口sigmoid等等。本实施例中,每一种功能的接口被调用时,携带任务的属性信息,对应地,上述图1所示实施例的方法在图4所示的驱动中执行,具体地也可以将上述图1所示实施例中的AI的异构硬件的任务调度装置嵌入在驱动中,由驱动根据上述图1所示实施例的方法,控制该任务在在硬件中被该功能对应的多个计算单元中的其中一个计算单元来执行,实现任务调度。
图5为本发明的AI的异构硬件的任务调度装置实施例一的结构图。如图5所示,本实施例的AI的异构硬件的任务调度,具体可以包括:
接收模块10用于接收应用程序接口发送的对应功能的任务执行请求,任务执行请求中携带任务的属性信息;
获取模块11用于根据接收模块10接收的任务的属性信息获取任务的优先级,其中在线服务的优先级高于离线任务的优先级;
插入模块12用于根据获取模块11获取的任务的优先级,将对应的任务插入对应功能的调度队列M中;调度队列M中的各任务按照优先级由高到低排列;
控制模块13用于在插入模块12插入处理后,按照调度队列M中各任务的优先级由高到低的顺序,依次控制对应功能的多个计算单元中的空闲计算单元执行对应的任务;
调度队列M,用于按照优先级由高到低的顺序,存储对应功能的各任务。
本实施例的AI的异构硬件的任务调度装置,通过采用上述模块实现AI的异构硬件的任务调度的实现原理以及技术效果与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。
图6为本发明的AI的异构硬件的任务调度装置实施例二的结构图。如图6所示,本实施例的AI的异构硬件的任务调度装置在上述图5所示实施例的技术方案的基础上,进一步更加详细地介绍本发明的技术方案。
本实施例的AI的异构硬件的任务调度装置中,接收模块10接收的任务执行请求中的任务的属性信息中包括任务的优先级,任务的优先级由应用程序接口上层的调度模块为任务分配的。
或者可选地,本实施例的AI的异构硬件的任务调度装置中,获取模块11具体用于根据预设存储的优先级设置策略和任务的属性信息,为任务设置优先级。
进一步可选地,接收模块10接收的任务执行请求中的任务的属性信息中包括任务的类型,任务的类型为离线任务或者在线服务;优先级设置策略包括根据任务的类型设置任务的优先级;
获取模块11具体可以包括:
获取单元111用于从接收模块10接收的任务执行请求中的任务的属性信息中获取任务的类型;
设置单元112用于根据获取单元111获取的任务的类型为任务设置优先级,使得在线服务对应的任务的优先级高于离线任务对应的任务的优先级。
或者进一步可选地,若接收模块10接收的任务执行请求中的任务的属性信息中包括任务的类型和在类型中所属的类别,任务的类型为离线任务或者在线服务;优先级设置策略包括根据任务的类型、在类型中的类别以及预设的各类型对应的高优先级类别列表,设置任务的优先级;
获取单元111具体用于从接收模块10接收的任务执行请求中的任务的属性信息中获取任务的类型和在类型中所属的类别;
设置单元112具体用于根据获取单元111获取的任务的类型、在类型中的类别以及预设的各类型对应的高优先级类别列表,为任务设置优先级;其中在线服务对应的任务的优先级高于离线任务对应的任务的优先级;且同一类型中,高优先级类别列表中的类别对应的任务的优先级,高于高优先级类别列表之外的类别对应的任务的优先级。
或者进一步可选地,若接收模块10接收的任务执行请求中的任务的属性信息中包括任务的预设结束时刻;优先级设置策略包括根据任务的预设结束时刻距离当前时刻的远近设置任务的优先级;
获取单元111具体用于从接收模块10接收的任务执行请求中的任务的属性信息中获取任务的预设结束时刻;
设置单元112具体用于计算获取单元111获取的任务的预设结束时刻距离当前时刻的时间差;根据时间差为任务设置优先级,使得时间差小于第一预设时间长度阈值对应的任务的优先级,高于时间差大于第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的任务的优先级,时间差大于第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的任务的优先级,高于时间差大于第二预设时间长度阈值对应的任务的优先级。
对应地,插入模块12用于根据设置单元112设置的任务的优先级,将对应的任务插入对应功能的调度队列M中。
本实施例的AI的异构硬件的任务调度装置,通过采用上述模块实现AI的异构硬件的任务调度的实现原理以及技术效果与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。
图7为本发明的计算机设备实施例的结构图。如图7所示,本实施例的计算机设备,包括:一个或多个处理器30,以及存储器40,存储器40用于存储一个或多个程序,当存储器40中存储的一个或多个程序被一个或多个处理器30执行,使得一个或多个处理器30实现如上图1所示实施例的AI的异构硬件的任务调度方法。图7所示实施例中以包括多个处理器30为例。
例如,图8为本发明提供的一种计算机设备的示例图。图8示出了适于用来实现本发明实施方式的示例性计算机设备12a的框图。图8显示的计算机设备12a仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机设备12a以通用计算设备的形式表现。计算机设备12a的组件可以包括但不限于:一个或者多个处理器16a,系统存储器28a,连接不同系统组件(包括系统存储器28a和处理器16a)的总线18a。
总线18a表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12a典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12a访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28a可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30a和/或高速缓存存储器32a。计算机设备12a可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34a可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18a相连。系统存储器28a可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明上述图1-图6各实施例的功能。
具有一组(至少一个)程序模块42a的程序/实用工具40a,可以存储在例如系统存储器28a中,这样的程序模块42a包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42a通常执行本发明所描述的上述图1-图6各实施例中的功能和/或方法。
计算机设备12a也可以与一个或多个外部设备14a(例如键盘、指向设备、显示器24a等)通信,还可与一个或者多个使得用户能与该计算机设备12a交互的设备通信,和/或与使得该计算机设备12a能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22a进行。并且,计算机设备12a还可以通过网络适配器20a与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20a通过总线18a与计算机设备12a的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12a使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器16a通过运行存储在系统存储器28a中的程序,从而执行各种功能应用以及数据处理,例如实现上述实施例所示的AI的异构硬件的任务调度方法。
本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例所示的AI的异构硬件的任务调度方法。
本实施例的计算机可读介质可以包括上述图8所示实施例中的系统存储器28a中的RAM30a、和/或高速缓存存储器32a、和/或存储系统34a。
随着科技的发展,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载,或者采用其他方式获取。因此,本实施例中的计算机可读介质不仅可以包括有形的介质,还可以包括无形的介质。
本实施例的计算机可读介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (14)

1.一种人工智能的异构硬件的任务调度方法,其特征在于,所述方法包括:
接收应用程序接口发送的对应功能的任务执行请求,所述任务执行请求中携带任务的属性信息,所述任务包括在线服务和离线任务;
根据所述任务的属性信息获取所述任务的优先级,其中所述在线服务的优先级高于所述离线任务的优先级;
根据所述任务的优先级,将对应的所述任务插入对应功能的调度队列中;所述调度队列中的各所述任务按照优先级由高到低排列;
按照所述调度队列中各所述任务的优先级由高到低的顺序,依次控制所述异构硬件中对应功能的多个计算单元中的空闲计算单元执行对应的任务,以使所述异构硬件在没有所述在线服务时,执行所述离线任务。
2.根据权利要求1所述的方法,其特征在于,所述任务的属性信息中包括所述任务的优先级,所述任务的优先级由所述应用程序接口上层的调度模块为所述任务分配的。
3.根据权利要求1所述的方法,其特征在于,根据所述任务的属性信息获取所述任务的优先级,具体包括:
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级。
4.根据权利要求3所述的方法,其特征在于,所述任务的属性信息中包括所述任务的类型,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型设置所述任务的优先级;
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级,具体包括:
从所述任务的属性信息中获取所述任务的类型;
根据所述任务的类型为所述任务设置优先级,使得所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级。
5.根据权利要求3所述的方法,其特征在于,所述任务的属性信息中包括所述任务的类型和在所述类型中所属的类别,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,设置所述任务的优先级;
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级,具体包括:
从所述任务的属性信息中获取所述任务的类型和在所述类型中所属的类别;
根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,为所述任务设置优先级;其中所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级;且同一所述类型中,所述高优先级类别列表中的类别对应的任务的优先级,高于所述高优先级类别列表之外的类别对应的任务的优先级。
6.根据权利要求3所述的方法,其特征在于,所述任务的属性信息中包括所述任务的预设结束时刻;所述优先级设置策略包括根据所述任务的预设结束时刻距离当前时刻的远近设置所述任务的优先级;
根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级,具体包括:
从所述任务的属性信息中获取所述任务的预设结束时刻;
计算所述任务的预设结束时刻距离当前时刻的时间差;
根据所述时间差为所述任务设置优先级,使得所述时间差小于第一预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第二预设时间长度阈值对应的所述任务的优先级。
7.一种人工智能的异构硬件的任务调度装置,其特征在于,所述装置包括:
接收模块,用于接收应用程序接口发送的对应功能的任务执行请求,所述任务执行请求中携带任务的属性信息,所述任务包括在线服务和离线任务;
获取模块,用于根据所述任务的属性信息获取所述任务的优先级,其中所述在线服务的优先级高于所述离线任务的优先级;
插入模块,用于根据所述任务的优先级,将对应的所述任务插入对应功能的调度队列中;所述调度队列中的各所述任务按照优先级由高到低排列;
控制模块,用于按照所述调度队列中各所述任务的优先级由高到低的顺序,依次控制所述异构硬件中对应功能的多个计算单元中的空闲计算单元执行对应的任务,以使所述异构硬件在没有所述在线服务时,执行所述离线任务;
所述调度队列,用于按照优先级由高到低的顺序,存储对应功能的各所述任务。
8.根据权利要求7所述的装置,其特征在于,所述任务的属性信息中包括所述任务的优先级,所述任务的优先级由所述应用程序接口上层的调度模块为所述任务分配的。
9.根据权利要求7所述的装置,其特征在于,所述获取模块,具体用于根据预设存储的优先级设置策略和所述任务的属性信息,为所述任务设置优先级。
10.根据权利要求9所述的装置,其特征在于,所述任务的属性信息中包括所述任务的类型,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型设置所述任务的优先级;
所述获取模块,具体包括:
获取单元,用于从所述任务的属性信息中获取所述任务的类型;
设置单元,用于根据所述任务的类型为所述任务设置优先级,使得所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级。
11.根据权利要求10所述的装置,其特征在于,若所述任务的属性信息中包括所述任务的类型和在所述类型中所属的类别,所述任务的类型为离线任务或者在线服务;所述优先级设置策略包括根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,设置所述任务的优先级;
所述获取单元,具体用于从所述任务的属性信息中获取所述任务的类型和在所述类型中所属的类别;
所述设置单元,具体用于根据所述任务的类型、在所述类型中所述的类别以及预设的各所述类型对应的高优先级类别列表,为所述任务设置优先级;其中所述在线服务对应的所述任务的优先级高于所述离线任务对应的所述任务的优先级;且同一所述类型中,所述高优先级类别列表中的类别对应的任务的优先级,高于所述高优先级类别列表之外的类别对应的任务的优先级。
12.根据权利要求10所述的装置,其特征在于,若所述任务的属性信息中包括所述任务的预设结束时刻;所述优先级设置策略包括根据所述任务的预设结束时刻距离当前时刻的远近设置所述任务的优先级;
所述获取单元,具体用于从所述任务的属性信息中获取所述任务的预设结束时刻;
所述设置单元,具体用于计算所述任务的预设结束时刻距离当前时刻的时间差;根据所述时间差为所述任务设置优先级,使得所述时间差小于第一预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,所述时间差大于所述第一预设时间长度阈值且小于或者等于第二预设时间长度阈值对应的所述任务的优先级,高于所述时间差大于所述第二预设时间长度阈值对应的所述任务的优先级。
13.一种计算机设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201710952735.8A 2017-10-13 2017-10-13 人工智能的异构硬件的任务调度方法、装置及可读介质 Active CN107977268B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710952735.8A CN107977268B (zh) 2017-10-13 2017-10-13 人工智能的异构硬件的任务调度方法、装置及可读介质
US16/159,322 US20190114202A1 (en) 2017-10-13 2018-10-12 Task scheduling method and apparatus of artificial intelligence heterogeneous hardware, device and readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710952735.8A CN107977268B (zh) 2017-10-13 2017-10-13 人工智能的异构硬件的任务调度方法、装置及可读介质

Publications (2)

Publication Number Publication Date
CN107977268A CN107977268A (zh) 2018-05-01
CN107977268B true CN107977268B (zh) 2021-07-20

Family

ID=62012491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710952735.8A Active CN107977268B (zh) 2017-10-13 2017-10-13 人工智能的异构硬件的任务调度方法、装置及可读介质

Country Status (2)

Country Link
US (1) US20190114202A1 (zh)
CN (1) CN107977268B (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720408B2 (en) * 2018-05-08 2023-08-08 Vmware, Inc. Method and system for assigning a virtual machine in virtual GPU enabled systems
CN108897608B (zh) * 2018-05-31 2021-09-07 中国科学院软件研究所 一种数据驱动可扩展的智能通用任务调度系统
CN109189571A (zh) * 2018-07-30 2019-01-11 南京邮电大学 计算任务调度方法及系统、边缘节点、存储介质和终端
US10942768B2 (en) * 2018-08-29 2021-03-09 Red Hat, Inc. Computing task scheduling in a computer system utilizing efficient attributed priority queues
CN109784640A (zh) * 2018-12-13 2019-05-21 深圳壹账通智能科技有限公司 任务分配方法、装置、设备及计算机可读存储介质
CN111400022A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种资源调度方法、装置及电子设备
CN109917705B (zh) * 2019-02-25 2021-10-22 弗徕威智能机器人科技(上海)有限公司 一种多任务调度方法
CN110275778B (zh) * 2019-06-14 2021-07-27 上海商汤智能科技有限公司 在线程序运行方法、装置、电子设备和计算机存储介质
CN110347602B (zh) * 2019-07-11 2023-08-22 中国工商银行股份有限公司 多任务脚本执行方法及装置、电子设备及可读存储介质
CN112311694B (zh) * 2019-07-31 2022-08-26 华为技术有限公司 一种优先级调整方法及装置
CN110719232A (zh) * 2019-09-30 2020-01-21 北京欧珀通信有限公司 数据传输方法、装置、移动终端及存储介质
CN110750419B (zh) * 2019-09-30 2023-03-14 北京百度网讯科技有限公司 离线任务的处理方法、装置、电子设备及存储介质
CN110930105B (zh) * 2019-10-14 2024-05-10 平安科技(深圳)有限公司 任务清单的处理方法、装置、计算机设备和存储介质
CN111061547B (zh) * 2019-10-24 2023-04-11 中国科学院计算技术研究所 一种异构系统的任务调度方法及系统
CN110781007B (zh) * 2019-10-31 2023-12-26 广州市网星信息技术有限公司 任务处理方法、装置、服务器、客户端、系统和存储介质
CN111176852B (zh) * 2020-01-15 2024-04-16 上海依图网络科技有限公司 资源分配方法、装置、芯片及计算机可读存储介质
CN111475272A (zh) * 2020-04-07 2020-07-31 四川虹美智能科技有限公司 控制Java Web应用定时任务的方法、装置及任务调度平台
CN111580964A (zh) * 2020-04-29 2020-08-25 杭州涂鸦信息技术有限公司 一种应用任务优先级分配方法、系统及相关设备
CN111738404B (zh) * 2020-05-08 2024-01-12 深圳市万普拉斯科技有限公司 模型训练任务处理方法、装置、电子设备和存储介质
CN113742036B (zh) * 2020-05-28 2024-01-30 阿里巴巴集团控股有限公司 指标处理方法、装置及电子设备
CN111667728B (zh) * 2020-06-18 2021-11-30 思必驰科技股份有限公司 语音后处理模块训练方法和装置
CN111797110B (zh) * 2020-06-23 2024-01-26 北京金堤科技有限公司 一种生成调度模型的方法、装置、计算机设备及存储介质
US20220066824A1 (en) * 2020-08-31 2022-03-03 Synopsys, Inc. Adaptive scheduling with dynamic partition-load balancing for fast partition compilation
EP4226240A1 (en) * 2020-10-09 2023-08-16 Conektto, Inc. Natural language processing of api specifications for automatic artifact generation
CN112381503A (zh) * 2020-11-06 2021-02-19 上海瀚银信息技术有限公司 一种项目上线优化管理系统及方法
CN112686565A (zh) * 2021-01-08 2021-04-20 京东数科海益信息科技有限公司 信息的处理装置、方法和机器人
CN113177680A (zh) * 2021-03-10 2021-07-27 广州明珞自动化有限公司 一种任务执行系统、任务执行方法及生产系统
CN113051054B (zh) * 2021-03-24 2023-09-08 博瀚智能(深圳)有限公司 调度人工智能平台资源的方法、设备和计算机可读存储介质
CN113448704B (zh) * 2021-06-24 2023-04-21 展讯通信(上海)有限公司 任务处理方法及设备
CN113806053A (zh) * 2021-09-24 2021-12-17 国家石油天然气管网集团有限公司华南分公司 一种任务调度的方法、装置、及计算机可读存储介质
CN113873635A (zh) * 2021-09-26 2021-12-31 北京金山云网络技术有限公司 任务下发方法、装置、设备、系统及存储介质
CN114253735B (zh) * 2021-12-29 2024-01-16 苏州浪潮智能科技有限公司 一种任务处理方法、装置及相关设备
CN114764417B (zh) * 2022-06-13 2022-08-26 深圳致星科技有限公司 隐私计算、隐私数据及联邦学习的分散式处理方法及装置
CN117632392A (zh) * 2022-08-11 2024-03-01 北京有竹居网络技术有限公司 任务调度的方法和电子设备
CN115408163B (zh) * 2022-10-31 2023-03-24 广东电网有限责任公司佛山供电局 一种基于批处理动态调节的模型推理调度方法及系统
CN115981829B (zh) * 2023-03-20 2023-08-01 睿至科技集团有限公司 一种物联网中的调度方法及系统
CN116661976B (zh) * 2023-07-25 2023-10-03 中诚华隆计算机技术有限公司 一种基于开放式高带宽存储器接口的异构芯片集成系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834556A (zh) * 2015-04-26 2015-08-12 西北工业大学 一种多态实时任务与多态计算资源的映射方法
CN106648846A (zh) * 2016-09-23 2017-05-10 郑州云海信息技术有限公司 一种改进的异构多核任务调度的方法
CN107066332A (zh) * 2017-01-25 2017-08-18 广东神马搜索科技有限公司 分布式系统及其调度方法和调度装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130891B2 (en) * 2002-02-04 2006-10-31 Datasynapse, Inc. Score-based scheduling of service requests in a grid services computing platform
US7657671B2 (en) * 2005-11-04 2010-02-02 Sun Microsystems, Inc. Adaptive resilvering I/O scheduling
US20100169339A1 (en) * 2008-12-30 2010-07-01 Yahoo! Inc., A Delaware Corporation System, method, or apparatus for updating stored search result values
KR101658035B1 (ko) * 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
US9563253B2 (en) * 2013-03-12 2017-02-07 Intel Corporation Techniques for power saving on graphics-related workloads
US9401953B2 (en) * 2013-10-09 2016-07-26 At&T Intellectual Property I, L.P. Intelligent high-volume cloud application programming interface request caching
US9582326B2 (en) * 2014-05-30 2017-02-28 Apple Inc. Quality of service classes
US10346196B2 (en) * 2015-08-11 2019-07-09 Oracle International Corporation Techniques for enhancing progress for hardware transactional memory
US10437645B2 (en) * 2017-07-14 2019-10-08 Sap Se Scheduling of micro-service instances

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834556A (zh) * 2015-04-26 2015-08-12 西北工业大学 一种多态实时任务与多态计算资源的映射方法
CN106648846A (zh) * 2016-09-23 2017-05-10 郑州云海信息技术有限公司 一种改进的异构多核任务调度的方法
CN107066332A (zh) * 2017-01-25 2017-08-18 广东神马搜索科技有限公司 分布式系统及其调度方法和调度装置

Also Published As

Publication number Publication date
US20190114202A1 (en) 2019-04-18
CN107977268A (zh) 2018-05-01

Similar Documents

Publication Publication Date Title
CN107977268B (zh) 人工智能的异构硬件的任务调度方法、装置及可读介质
CN108537543B (zh) 区块链数据的并行处理方法、装置、设备和存储介质
CN108200134A (zh) 请求消息管理方法及装置、存储介质
CN110389816B (zh) 用于资源调度的方法、装置以及计算机可读介质
US8850439B2 (en) Storage subsystem device driver scheduling I/O servicing according to priority of identified process
CN110806933B (zh) 一种批量任务处理方法、装置、设备和存储介质
CN110187958B (zh) 一种任务处理方法、装置、系统、设备及存储介质
US20230034881A1 (en) Scheduling method and device based on deep learning node computation, and storage medium
CN106557369A (zh) 一种多线程的管理方法及系统
CN113172625A (zh) 一种机器人调度方法、装置、设备及存储介质
WO2021238702A1 (zh) 一种任务的调度方法、计算设备及存储介质
CN113032117A (zh) 深度学习框架的训练方法、装置及存储介质
CN102402401A (zh) 一种磁盘io请求队列调度的方法
CN110780991B (zh) 一种基于优先级的深度学习任务调度方法及装置
CN115827250A (zh) 一种数据存储方法、装置及设备
CN115586961A (zh) 一种ai平台计算资源任务调度方法、装置及介质
CN114327894A (zh) 资源分配方法、装置、电子设备及存储介质
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
CN112650449A (zh) 缓存空间的释放方法、释放系统、电子设备及存储介质
CN115878333A (zh) 进程组间的一致性判断方法、装置及设备
CN111913812B (zh) 一种数据处理方法、装置、设备及存储介质
US11586475B2 (en) Application aware resource allocation for deep learning job scheduling
CN113961323A (zh) 一种面向混合云的安全感知任务调度方法和系统
CN114036085A (zh) 基于ddr4的多任务读写调度方法、计算机设备及存储介质
CN104040477A (zh) 一种存储资源调度方法及终端

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
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20180501

Assignee: Kunlun core (Beijing) Technology Co.,Ltd.

Assignor: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

Contract record no.: X2021980009778

Denomination of invention: Task scheduling method, device and readable medium of heterogeneous hardware of artificial intelligence

Granted publication date: 20210720

License type: Common License

Record date: 20210923