本申请实施例涉及但不限于人工智能数据处理技术领域,尤指一种基于异构计算的任务处理方法及软硬件框架系统。
背景技术:
人工智能视觉技术随着人脸技术的广泛应用,已经在安防、商业、金融、教育领域得到了大量的关注和落地实践。由于当前深度学习技术的算法实现需要非常庞大的算力支持,只在中央处理器(cpu,centralprocessingunit)上运行相应算法实现已经不能满足用户需要,特别是在边缘侧的人工智能落地应用。大量厂商开始采用异构混合加速模块的方式搭建高密度处理一体机,并构建集群提供统一的服务能力给终端用户。其中,图形处理器(gpu,graphicsprocessingunit)、现场可编程门阵列(fpga,field-programmablegatearray)甚至包含专用集成电路(asic,applicationspecificintegratedcircuits)作为加速模块的方式开始日益普及。
技术实现要素:
本申请实施例提供一种基于异构计算的任务处理方法及软硬件框架系统,可以提供高性能的服务能力。
一方面,本申请实施例提供一种基于异构计算的任务处理方法,应用于包括多个异构单元的工作节点,上述任务处理方法包括:将人工智能分析任务分解为一级或多级子任务;通过所述一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成所述人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对多个异构单元统一调度以执行相应的子任务。
另一方面,本申请实施例提供一种基于异构计算的软硬件框架系统,包括:至少一个工作节点,任一工作节点包括多个异构单元;所述工作节点适于将人工智能分析任务分解为一级或多级子任务,并通过所述一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成所述人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对所述工作节点的多个异构单元统一调度以执行相应的子任务。
另一方面,本申请实施例提供一种基于异构计算的任务处理装置,包括:异构计算管理模块以及多个异构单元;所述异构计算管理模块适于将人工智能分析任务分解为一级或多级子任务,并通过所述一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成所述人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对多个异构单元统一调度以执行相应的子任务。
另一方面,本申请实施例提供一种计算机可读介质,存储有基于异构计算的任务处理程序,所述任务处理程序被执行时实现上述基于异构计算的任务处理方法的步骤。
本申请实施例中,人工智能分析任务可以被统一管理异构单元的分析功能单元服务通过分级数据流的方式组合完成。本实施例可以基于分析功能单元服务实现承载的多异构单元的模型共享、服务隔离以及服务流集成,从而减少相同模型的加载时间,提高任务执行效率,并提高流处理的整体运行稳定性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为一种人工智能异构一体机的内部逻辑结构示意图;
图2为图1中的通用计算模块和异构计算模块的构成示意图;
图3为本申请实施例提供的基于异构计算的任务处理方法的流程图;
图4为本申请实施例提供的异构一体机的一种软件框架示意图;
图5为本申请实施例提供的异构一体机集群的组织框架示意图;
图6为图5所示的异构一体机集群的运行调度流程示意图;
图7为本申请实施例的基于异构守护进程的异构单元管理框架组成模块示意图;
图8为本申请实施例的基于异构守护进程的异构单元管理框架运行示意图;
图9为本申请实施例的异构一体机的单个加速模块对多任务进程并发支持的实现功能组成框架图;
图10为本申请实施例的基于hal统一服务和流的分析服务管理执行框架图;
图11为本申请实施例提供的任务处理过程的一种示例图;
图12为本申请实施例提供的任务处理过程的另一种示例图;
图13为gpu的一种软硬件服务组织架构图;
图14为异构单元为gpu时实现流式任务的组织框架图;
图15为fpga的一种软硬件服务组织架构图;
图16为异构单元为fpga时实现流式任务的组织框架图;
图17为mul100的一种软硬件服务组织架构图;
图18为本申请实施例提供的基于异构计算的任务处理装置的示意图。
具体实施方式
下面将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为一种人工智能异构一体机的内部逻辑结构示意图。图2为图1中的通用计算模块和异构计算模块的构成示意图。
图1所示的人工智能异构一体机可以包括:风扇模块、电源模块、两个管理模块、两个输入输出(io,input/output)模块(比如,网卡)、两个异构计算模块以及两个通用计算模块。其中,管理模块具有网络管理端口(mgmt);通用计算模块可以支持lom(lanonmotherboard)。图1所示的人工智能异构一体机包括两个计算节点。其中,每个计算节点可以包括一个io模块、一个异构计算模块以及一个通用计算模块。然而,本申请对此并不限定。在其他实现方式中,一个计算节点可以仅包括异构计算模块或者通用计算模块;或者,一个计算节点包括的异构计算模块的数目可以为两个或更多个。
如图2所示,通用计算模块可以包括cpu,异构计算模块可以包括多个异构单元,比如gpu。在图2中,cpu与gpu的数量比为1:8。其中,通用计算模块和异构计算模块可以通过pcie(pci-express,peripheralcomponentinterconnectexpress,高速串行计算机扩展总线标准)总线相连。
为了满足用户需求提供足够的算力支持,需要将多个异构单元(比如,gpu)统一到一台异构一体机,并完成多台异构一体机的协同。其中,需要考虑如何完成异构单元之间、异构单元与异构一体机本地之间的数据存储以及搬运,以及如何编排多用户的人工智能分析任务以实现高性能的整体服务能力。特别是边缘侧赋能各种行业智能服务提供商,以上资源和任务组织的整体服务能力显得异常重要。而且,还需要给应用逻辑编写提供一个相对简单和标准的接口。
本申请实施例提供一种基于异构计算的任务处理方法及软硬件框架系统,通过分析功能单元服务采用分级数据流的方式组合完成人工智能分析任务,提高了任务执行效率以及运行稳定性;通过硬件抽象层(hal)实现数据存储和搬运统一服务;通过构建具有资源导向性特征的分布式异构一体机集群,并集成对异构单元的支持,从而实现多台异构一体机之间的协同。
图3为本申请实施例提供的一种基于异构计算的任务处理方法的流程图。本实施例提供的任务处理方法可以应用于包括多个异构单元的工作节点(比如,一台异构一体机)。
在一示例性实施例中,异构单元可以包括以下一种或多种:cpu、gpu、fpga、asic。比如,工作节点可以包括多个gpu,或者,可以包括gpu和fpga,或者,可以包括gpu、fpga及asic。
在一示例性实施例中,工作节点可以通过标准的软件标准命令解析层(softwareshell)和硬件标准命令解析层(hardwareshell)实现以下标准特性:单个工作节点内存统一化;单个异构单元多任务进程并发支持;异构单元之间远程直接数据存取(rdma,remotedirectmemoryaccess);异构单元计算和传输并发。
其中,单个工作节点可以基于主控cpu实现数据存储和搬运hal统一服务。基于异构单元之间rdma可以实现从一个异构单元直接到另一个异构单元的数据拷贝任务。基于异构单元计算和传输并发可以完成数据拷贝和数据计算混合任务;例如,通过一个异步传输命令将数据放入fifo(firstinputfirstoutput,先进先出)队列之后,可以直接执行下一个计算命令,其计算依赖fifo队列上已经准备好的数据,而无需等待上一步传输命令完成,两个任务混合同时完成。
在一示例性实施例中,工作节点上可以部署异构计算管理框架,用于支持基于异构守护进程的异构单元;其中,异构计算管理框架可以至少包括:异构守护客户端、异构守护服务端;异构守护客户端可以适于维护和管理人工智能分析任务的加速计算任务队列,管理客户端侧任务场景,并提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口;异构守护服务端可以包括应用层任务管理模块以及内核层加速模块块型驱动管理模块;其中,应用层任务管理模块适于提供客户端服务接口,维护和管理服务端侧人工智能分析任务的加速计算任务队列,管理服务端侧任务场景;内核层加速模块块型驱动管理模块适于提供块驱动数据读写接口,管理和调度加速模块的通道和队列。其中,加速模块可以为执行加速计算任务的异构单元。
如图3所示,本实施例提供的基于异构计算的任务处理方法,包括以下步骤:
步骤301、将人工智能分析任务分解为一级或多级子任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务;
步骤302、通过一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成人工智能分析任务;其中,每一分析功能单元服务对多个异构单元统一调度以执行相应的子任务。
其中,分析功能单元服务可以指人工智能分析任务基于计算机视觉算法专业语义,分解为功能原语所呈现的服务集合。
在一示例性实施例中,人工智能分析任务可以包括视觉人工智能推理任务;视觉人工智能推理任务对应的分析功能单元服务可以包括:视频图像格式解码服务、图像中目标检测服务、图像中目标跟踪和最优选择服务、目标特征值提取服务。然而,本申请对此并不限定。
在本示例性实施例中,一个视觉人工智能推理任务可以被分解为以下四级子任务:视频图像格式解码任务、图像中目标检测任务、图像中目标跟踪和最优选择任务、目标特征值提取任务;且每一级子任务对应一个分析功能单元服务。其中,整个视觉人工智能推理任务可以由上述四个分析功能单元服务采用分级数据流的方式组合完成;上述四个分析功能单元服务可以分别调度异构单元来执行相应的子任务(比如,视频图像格式解码服务可以调度一个异构单元来执行视频图像格式解码任务),上述四个分析功能单元服务分别调度的异构单元可以流式执行对应的子任务。
在一示例性实施例中,人工智能分析任务对应的多级子任务可以由同一个异构单元流式执行,或者,可以由至少两个异构单元流式执行。比如,一个人工智能分析任务可以被分解为四级子任务(分别对应四个分析功能单元服务),则这四个分析功能单元服务可以调度同一个异构单元流式执行四级子任务;或者,其中两个分析功能单元服务可以调度同一个异构单元执行对应的子任务,其余的两个分析功能单元服务可以调度另一个异构单元执行对应的子任务;或者,这四个分析功能单元服务可以分别调度不同的异构单元执行对应的子任务,即每级子任务由不同的异构单元。然而,本申请对此并不限定。
在一示例性实施例中,不同分析功能单元服务之间可以通过硬件抽象层(hal)提供的rdma内存服务实现数据流交互。其中,工作节点基于主cpu实现数据存储和搬运hal统一服务后,可以基于统一的数据层hal提供的rdma内存服务,提供分布式共享内存管道,从而实现不同分析功能单元服务之间的数据流交互。其中,异构单元在执行完相应的子任务后,该级子任务对应的分析功能单元服务可以将运行输出数据存放到指定存储位置,以便下一级子任务对应的分析功能单元服务可以通过统一数据层hal提供的分布式共享内存管道从该指定存储位置获取数据,作为下一级子任务的运行输入数据。其中,对应同一个分析功能单元服务的多个子任务的运行输出数据均可以放置在同一指定存储位置。
在一示例性实施例中,每一分析功能单元服务在有数据待处理的情况下,在异构单元循环执行。其中,当分析功能单元服务启动之后,分析功能单元服务持续运行,一旦没有数据待处理(即没有待处理的子任务),则分析功能单元服务可以进入休眠状态;一旦有数据待处理(即存在待处理的子任务),则可以及时从休眠状态恢复运行。
在一示例性实施例中,每一分析功能单元服务可以为一个进程,对应一个运行上下文环境。分析功能单元服务对应的运行上下文环境例如可以包括以下信息:可以被该分析功能单元服务调度的异构单元的信息、当前正在执行的子任务及执行该子任务的异构单元的信息、该分析功能单元服务对应的子任务的运行输入数据的存储位置信息、该分析功能单元服务对应的子任务的运行输出数据的存储位置信息。然而,本申请对此并不限定。
本实施例中,分析功能单元服务加载的模型可以提供给该分析功能单元服务管理的多个异构单元使用,从而实现多异构单元的模型共享,减少相同模型的加载时间,提高任务执行效率。而且,任一个分析功能单元服务出现问题不会影响其他分析功能单元服务的运行,不同的分析功能单元服务之间具备服务隔离特性,从而可以提高流处理的整体运行稳定性。
在一示例性实施例中,每一分析功能单元服务可以记录对应的子任务的运行结果快照。其中,快照的记录时间点可以根据实际需要进行设置,本申请对此并不限定。其中,分析功能单元服务记录运行结果快照后,当某一异构单元执行子任务出现问题时,可以根据运行结果快照恢复子任务的执行。
在一示例性实施例中,步骤301可以包括:根据人工智能分析任务的任务类型,确定该任务类型对应的已注册服务集合信息;根据该已注册服务集合信息,将人工智能分析任务分解为一级或多级子任务。其中,工作节点可以提供接口给上层应用(或第三方算法),以便上层应用通过接口进行服务注册,比如,可以指定某一算法实现涉及的处理流程和分步(分析功能单元服务)以及该算法实现涉及处理流程建议的处理节点的类型、数据存储的位置及大小等等。
在一示例性实施例中,在步骤301之前,本实施例的任务处理方法还可以包括:确定工作节点的本地资源满足人工智能分析任务的执行条件。其中,工作节点在确定本地资源满足人工智能分析任务的执行条件(比如,本地的计算资源空闲,且本地存储有人工智能分析任务所需的数据等)后,对人工智能分析任务进行处理。
在一示例性实施例中,多个工作节点组成的集群中部署有全局调度模块,并存储有全局任务状态信息;本实施例的任务处理方法还可以包括:当工作节点确定本地资源无法满足人工智能分析任务的执行条件,将人工智能分析任务提交给集群的全局调度模块,由全局调度模块通过查询全局任务状态信息,确定执行人工智能分析任务的工作节点。其中,工作节点组成的集群中可以基于资源导向性特征实现人工智能分析任务的调度。
在一示例性实施例中,一个工作节点可以为一台异构一体机,工作节点组成的集群可以为异构一体机集群。
图4为本申请实施例提供的异构一体机的一种软件框架示意图。需要说明的是,图4绘示出了本申请实施例涉及的对异构一体机(比如,图1所述的异构一体机)的改进部分。
如图4所示,异构一体机至少包括:通用计算模块(比如,cpu)以及异构计算模块(比如包括gpu、fpga等异构单元)。在通用计算模块侧可以部署以下功能:集群调度和运行管理;本机的任务管理、任务调度、运行时管理;异构单元任务流管理;异构单元运行支持;异构单元hal。异构计算模块侧可以部署:异构单元hal、异构加速模块层。
其中,基于通用计算模块侧部署的集群调度和运行管理功能,可以构建异构一体机的集群;基于通用计算模块侧部署的异构单元运行支持功能,可以支持一体机集群架构下各种类型的异构单元的运行。基于通用计算模块侧和异构计算模块侧部署的异构单元hal,可以达到异构存储资源虚拟化和计算软硬件统一高效规范的要求。基于通用计算模块侧部署的异构单元任务流管理功能,可以实现本机人工智能分析任务在异构单元的流组织和运行管理。即将人工智能分析任务分解为一级或多级子任务,并通过对应的分析功能单元服务对多个异构单元统一调度以执行相应的子任务,并由异构单元流式执行多级子任务。
在一示例性实施例中,如图4所示,异构一体机上可以注册自研人工智能算法(比如,图像质量增强算法、目标姿态矫正算法、目标检测算法、目标跟踪算法以及目标特征提取算法);自研协议编解码算法;视频编解码算法。其中,可以部署异构加速模块层的cpu执行自研协议编解码算法,以实现应用协议编解码加速;可以部署gpu运行视频编解码算法,以实现视频编解码加速;可以部署fpga运行自研人工智能算法,以实现人工智能视频分析加速。其中,cpu、gpu以及fpga可以执行异构执行模块编译器编译后的二进制流。
在图4中,算法开放训练框架可以包括:caffe(convolutionalarchitectureforfastfeatureembedding,卷积神经网络框架)、tensorflow。然而,本申请对此并不限定。
在一示例性实施例中,通过整合基于异构守护进程的异构单元运行支持到分布式人工智能计算集群运行管理框架(ray:2017伯克利),可以实现资源导向性分布式异构一体机集群及异构资源组织框架(即上述的异构计算管理框架)。相较于基于spark caffe的人工智能大数据平台,本实施例提供的组织框架对多任务处理和调度更适合边缘侧人工智能应用,性能更佳,并有机地集成了对异构单元的支持。
图5为本申请实施例提供的异构一体机集群的组织框架示意图。边缘侧异构一体机(比如,人工智能推理一体机)存在多任务请求,且工作节点物理部署分散的业务需求。当前集中调度的spark等大数据集群组织框架存在对应所需模型通信成本不可忽略、调度成本较高的缺陷。图5所示的组织框架参照分布式人工智能计算集群运行管理框架ray构建,然而,本申请对此并不限定。在其他实现方式中,可以独立开发上述组织框架。
本示例性实施例的异构一体机集群具有分布式资源导向性特征。如图5所示,工作节点的个数可以为n,n可以为大于1的正整数。
图5所示的组织框架具有以下特点:工作节点具备本地任务调度模块,任务可以就近先经由本地任务调度模块进行调度;具备分布式的全局调度模块,并存储全局任务状态信息,从而方便调试、运维等工作展开。其中,各个工作节点之间可以采用分布式内存共享服务完成高速计算所需资源(比如,深度学习神经网络模型、特定任务的网络权重以及分类特征图谱等)的传递。
如图5所示,工作节点可以通过分布式对象存储部署全局调度模块所需的全局任务状态信息。其中,全局任务状态信息可以包括对象列表、任务列表、功能列表以及事件日志。以多机容备方式存在的全局调度模块通过集群选举的方式部署在特定工作节点或单独物理机部署,本申请对此并不限定。
其中,作为全局调度模块所在的工作节点可以通过管理网页界面、执行调试工具、性能诊断工具以及错误诊断工具实现对集群的调试、运维等工作。
图6为图5所示的异构一体机集群的运行调度流程示意图。如图6所示,本示例性实施例的分布式资源导向性的实际调度流程如下:
任一应用先通过本地(比如,工作节点1)的应用驱动,完成人工智能分析任务(比如,视觉人工智能推理任务)的提交,其中,提交的人工智能分析任务可以包括分析类型以及待分析数据(比如待分类的图片数据)。工作节点1的本地任务调度模块会结合本地资源(比如,计算资源的空闲度和相关数据的可获性)完成局部任务调度。如果本地资源不满足人工智能分析任务的执行条件(例如相关分析分类的特征图谱或深度网络模型(包含权重)不具备,或本地计算资源已经满载),则本地任务调度模块会将该人工智能分析任务提交给全局调度模块,同时会将本地的相关资源信息(比如,任务类型、本机已承载数据对象及标识(id)、所需数据对象及id等)同步到共享内存中部署的全局任务状态信息。分布式的全局调度模块会查询全局任务状态信息,结合各分散的工作节点的资源信息,完成该人工智能分析任务的远端部署(比如,调度给工作节点n执行该人工智能分析任务),同时借助分布式内存共享服务完成高速计算所需资源(比如,人工智能分析任务所需的深度学习神经网络模型、网络权重以及分类特征图谱等)的传递。
在一示例性实施例中,异构一体机可以包含为了高效实施人工智能分析任务(比如,视频人工智能推理任务等人工智能计算任务)集成的gpu、fpga以及类似googletpu(tensorprocessingunit,张量处理单元)的人工智能推理asic。本示例性实施例中,可以将基于异构守护进程的异构单元融入上述异构一体机的集群组织架构中。
图7为本申请实施例的基于异构守护进程的异构单元管理框架(即上述的异构计算管理框架)组成模块示意图。图8为本申请实施例的基于异构守护进程的异构单元管理框架运行示意图。其中,图7所示的异构单元管理框架可以实现多异构单元的异构一体机的计算资源统一化组织。图8说明异构计算管理框架运行时对应的具体运行环境(包括jvm(javavirtualmachine,java虚拟机))的部署位置和相互关系。
如图7所示,本实施例的任一工作节点上部署的异构计算管理框架可以包括:异构守护客户端(应用客户端)、异构守护服务端以及运行公共服务组件。
其中,异构守护客户端可以包括:加速计算任务队列、任务配置、任务场景(context)、任务管理、加速模块文件句柄、任务数据读操作及任务数据写操作。异构守护客户端可以维护和管理人工智能分析任务的加速计算任务队列,其中可以维护和管理加速计算任务数据和加速计算任务操作;还可以管理客户端侧任务场景;还可以提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口。
其中,异构守护服务端可以包含用户态存在的服务守护进程;服务守护进程可以包括:应用层任务管理模块以及内核层加速模块块型驱动管理模块。应用层任务管理模块可以包括:守护服务场景(服务端侧的任务场景)、守护服务逻辑(服务端侧的服务逻辑)、客户端服务接口以及队列任务管理模块;其中,队列任务管理模块可以包括队列任务构造器和队列任务启动器。应用层任务管理模块可以提供客户端服务接口,管理服务端侧任务场景,维护和管理服务端侧的人工智能分析任务的加速计算任务队列。
其中,内核层加速模块块型驱动管理模块可以包括:加速模块调度模块、内核任务队列(用于记录待加速执行的分析功能单元服务任务队列)、内核加速模块通道管理模块(用于管理加速模块的通道)、块驱动数据读写接口以及数据块dma(directmemoryaccess,直接内存存取)接口;其中,数据块dma接口可以包括内存dma接口和硬盘dma接口。内核层加速模块块型驱动管理模块可以提供块驱动数据读写接口,管理和调度加速模块的通道(channel)和队列,以及提供与共享内存和硬盘文件系统的dma接口。其中,加速模块可以为执行加速计算任务的异构单元。
其中,运行公共服务组件可以包括进程通信模块、事件管理模块、数据序列化模块以及服务管理模块。运行公共服务组件用于支持异构守护客户端和异构守护服务端之间的交互。其中,进程通信模块可以用于支持异构守护客户端和异构守护服务端之间以及不同分析功能单元服务之间的通信;事件管理模块可以用于基于事件(event)通讯的事件注册和注销,事件接收方和发起方的管理;数据序列化模块可以用于模型及特征图谱等数据对象的序列化和反序列化处理;服务管理模块可以用于管理通过应用接口注册的服务。
图8为本申请实施例的基于异构守护进程的异构单元管理框架的运行示意图。如图8所示,运行在jvm上的应用客户端提交了多个人工智能分析任务,每个人工智能分析任务(比如,任务1至任务n)包涵其特定任务场景,即任务发起者、任务结果的提交方、任务处理步骤和任务数据的来源和地址等。
运行在jvm上的服务守护进程借助进程通信模块通过客户端服务接口接收各个人工智能分析任务后,交由应用层任务管理模块。其中,应用层任务管理模块可以通过服务管理模块结合任务类型生成和维护针对不同任务相应的服务逻辑。其中,服务逻辑即对应将各个人工智能分析任务分解为一级或多级子任务(分析功能单元服务任务)后,由分析功能单元服务为基本单元的处理流程图。其中,每级子任务对应一个分析功能单元服务。例如,服务逻辑可以依据已注册服务集合信息来给各个人工智能分析任务匹配对应的分析功能单元服务,从而将人工智能分析任务转换成分析功能单元服务任务的组合。
然后,应用层任务管理模块将需要加速的分析功能单元服务任务交由队列任务管理模块和加速模块调度模块处理。其中,队列任务管理模块可以管理各个人工智能分析任务对应的分析功能单元服务(每个分析功能单元服务负责对应的分析功能单元服务任务队列)。加速模块调度模块可以给分析功能单元服务分配计算资源,比如针对某一分析功能单元服务,可以将具有此类分析功能单元服务任务且执行能力具有空闲计算资源的加速模块调度给该分析功能单元服务,以便分析功能单元服务将分析功能单元服务任务队列中的服务任务调度给相应的加速模块执行。
其中,队列任务构造器可以用于构造包含完整信息的分析功能单元服务任务,并由队列任务启动器将分析功能单元服务任务划分成队列任务,然后,通过javanio通道(channel)或者javawrapper(包装器)交由相应的硬件电路板执行队列任务。
其中,在确定执行分析功能单元服务任务的加速模块后,队列任务构造器可以获取已注册服务信息,并根据已注册服务信息,核对调度的加速模块与执行分析功能单元服务任务所需的设备是否一致,若一致,则可以构造包含完整信息(比如,包括输入数据存储地址信息、输出数据存储地址信息等)的分析功能单元服务任务。队列任务启动器可以完成设备参数配置和执行流的下载和启动,以便下发到相应的硬件电路板执行分析功能单元服务任务。
例如,通过队列任务启动器可以启动以下四种分析功能单元服务任务的队列:人脸定位、特征提取、人形定位、去模糊。其中,上述四个队列任务可以由不同的加速模块执行,比如,分别交给gpu、fega、asic处理。然而,本申请对此并不限定。
在一示例性实施例中,通过标准的softwareshell(软件标准命令解析层)和hardwareshell(硬件标准命令解析层)可以对单个工作节点(即具有多个异构单元的工作节点,其中,任一异构单元可以作为加速模块)实现以下标准特性:单工作节点内存统一化;单加速模块多任务进程并发支持;加速模块之间directrdma(remotedirectmemoryaccess,远程直接数据存取);加速模块计算和传输并发。基于以上加速模块和单工作节点的附加软硬件标准特性,单个工作节点可以基于主cpu实现数据存储和搬运硬件抽象层(hal)统一服务。即借助由softwareshell和hardwareshell实现的硬件抽象层实现对于不同的异构单元,主cpu可以基于统一的内存编址发布统一标准的操作命令,可以完成高效的计算和传输并发,数据在加速模块之间远程直接存取,同时对于不同异构单元,数据计算任务调度均具备统一的多任务并发的处理机制,实现异构调度的一致性。
图9为本申请实施例的异构一体机的单个加速模块对多任务进程并发支持的实现功能组成框架图。图9体现了为了实现异构硬件具备统一的多任务并发处理机制,在softwareshell(软件标准命令解析层)需构建多任务进程支持服务进程,以完成多任务场景映射为统一加速场景,进而发布到服务端加速模块驱动层场景;以及hardwareshell(硬件标准命令解析层)需构建时间片计算调度分配器,具体调度分配机制本申请并不限定。
如图9所示,客户端任务场景a和客户端任务场景b映射成统一加速场景,如将内存地址进行虚拟地址统一映射;服务端加速模块驱动层场景用于将任务通过驱动下发到加速执行硬件模块;加速执行硬件模块中包括两个加速模块并发调度队列,分别对应任务a和任务b;如通过时间片计算调度分配器给每个进程分配允许执行任务的时间。
图10为本申请实施例的基于hal统一服务和流的分析服务管理执行框架图。本示例性实施例中,单个工作节点将基于主cpu实现数据存储和搬运硬件抽象层(hal)统一服务。结合统一的数据层hal,整个人工智能分析任务可以被具备多承载加速模块统一管理的分析功能单元服务(如人脸识别的人脸提取服务)通过分级数据流的方式组合完成。其中,分析功能单元服务可以指将整个人工智能任务分析流程基于计算机视觉算法专业语义,分解为功能原语所呈现的服务集合。
其中,分析功能单元服务的实例可以为一个进程。分析功能单元服务对多个执行同一类型分析功能(即上述的子任务)的加速模块形成统一管理,一个分析功能单元服务对应一个运行上下文环境,在有数据待处理的情况下,可以在加速模块循环执行。
其中,各个分析功能单元服务之间通过统一数据层hal提供的分布式共享内存管道实现数据互联,并完成执行数据运行结果快照的记录。通过具备独立运行上下文的分级分析功能单元服务和独立统一数据层hal,多个人工智能分析任务可以被转换并组合成多级流水式的部署模式。由于每级流水式的分析功能单元服务的运行上下文环境独立,且运行输入和输出数据通过独立的hal统一数据层进行保存,因此,具备运行失效快速恢复和服务安全隔离特性,提高了流处理的整体运行稳定性。而且,对于多个人工智能分析任务,单个流水式的分析功能单元服务可模型共享,从而减少了相同模型的加载时间。
其中,单个分析功能单元服务在被启动后,通过加速模块调度模块得到分配的可用计算资源;当该分析功能单元服务接收到分析功能单元服务任务后,可以根据运行上下文环境(包括已注册的服务所能运行的加速模块列表、操作文件句柄列表、服务前后依赖的数据流关系和相关对应承载加速单元列表),通过查看当前可调度的加速模块上的任务执行情况(比如,哪些加速模块正在执行哪些分析功能单元服务任务),确定是否有空余计算资源,若存在空余计算资源,则确定具有空余计算资源的加速模块执行相应的分析功能单元服务任务;然后,可以通过队列任务构造器构造完整的分析功能单元服务任务,并通过队列任务启动器将构造后的分析功能单元服务任务下发到加速模块进行执行。其中,分析功能单元服务可以从指定的输入数据存储位置获取该分析功能单元服务的运行输入数据,并将该分析功能单元服务的运行输出数据保存到指定的输出数据存储位置,以便下一级分析功能单元服务从该输出数据存储位置获取数据。
如图10所示,分析任务1可以被转换为四级流水式的子任务(对应以下四个分析功能单元服务:视频图像格式解码服务、图像中目标检测服务、图像中目标跟踪和最优选择服务、目标特征值提取服务)的部署模式,即分析任务1被转换为以下四个分析功能单元服务任务(即四级子任务):视频图像格式解码任务、图像中目标检测任务、图像中目标跟踪和最优选择任务以及目标特征值提取任务;分析任务3仅被转换为图像中目标检测任务。其中,图像中目标检测服务可以调度一个gpu节点执行分析任务1的图像中目标检测任务,可以调度一个fpga节点执行分析任务3对应的图像中目标检测任务。如图10所示,分析任务1对应的四级子任务可以由一个gpu节点执行,分析任务3对应的一级子任务可以由一个fpga节点执行。然而,本申请对此并不限定。
如图10所示,每一级流式的分析功能单元服务任务的执行由对应的分析功能单元服务(即单一进程)管理,并对应有运行数据缓存池和执行快照池,其中,运行数据缓存池用于在指定存储位置保存运行输入数据和输出数据,执行快照池可以记录执行数据运行结果的快照。比如,图像中目标检测服务可以统一管理gpu和fpga上执行的图像中目标检测任务,并对应一个运行上下文环境。换言之,一个人工智能分析任务可以通过四个进程采用流水式组合完成。
在一示例性实施例中,工作节点可以通过异构计算管理框架给上层应用(比如,第三方算法)提供以下四种可用的接口:
(1)loadprocessingstepsconfig
本接口的用途为指定整个算法实现涉及的处理流程及分步(比如人脸识别涉及以下流程:人脸提取、人脸质量判断、人脸特征提取、人脸特征比对)。
参数可以为xml(extensiblemarkuplanguage,可扩展标记语言)格式配置文件或定义格式数组,可以包括流程传递的元数据、格式和大小。
(2)setmemorysectionregions
本接口的用途为指定整个算法实现涉及处理流程建议的处理节点(pe,processelement)(加速模块)类型、数据存储的位置及大小。
参数可为xml格式配置文件或定义格式数组,可以包括流程分布处理节点的类型及加速模块上所占用存储类型和大小。
(3)setpebin
本接口的用途为指定整个算法实现涉及处理流程可用的pe(加速模块)执行二进制流。
参数可以为gpu执行二进制流或fpga下载二进制流等的内存或文件系统位置和长度及文件名。
(4)un/registerservice
本接口的用途可以为在单工作节点的异构计算管理框架中注销或注册算法分析服务。其中,算法分析服务可以为分析功能单元服务的组合。
参数可以包括以上(1)、(2)、(3)执行返回的句柄。
上述四个接口可以提供给上层应用进行服务注册时使用。
此外,工作节点可以通过异构计算管理框架提供以下两种可用的接口:
(1)getmemorysectionregions
本接口的用途为获取整个算法实现涉及处理流程建议的处理节点(pe,processelement)(加速模块)类型、数据存储的位置及大小。
参数可为xml格式配置文件或定义格式数组,可以包括流程分布处理节点的类型及加速模块上所占用存储类型和大小。
(2)getpebin
本接口的用途为获取整个算法实现涉及处理流程可用的pe(加速模块)执行二进制流。
参数可以为gpu执行二进制流或fpga下载二进制流等的内存或文件系统位置和长度及文件名。
上述两个接口可以提供给工作节点执行人工智能分析任务过程中获取已注册服务信息时使用。
图11为本申请实施例提供的任务处理过程的一种示例图。本示例性实施例说明某一人工智能分析任务的网络权重以及分类特征图谱在远端工作节点的情况下,该人工智能分析任务的实现方式。在本示例性实施方式中,人工智能分析任务可以为一个基本简单任务。
在本示例性实施方式中,应用(算法)开发者通过以下步骤发布应用到集群框架中:
(i)完成loadprocessingstepsconfig,实现指定整个应用算法实现涉及的处理流程及分步,其中相关结构化信息会存储在全局状态缓存中;
(ii)完成setmemorysectionregions,指定整个算法实现涉及处理流程建议的处理节点(加速模块)类型、数据存储的位置及大小,其中相关结构化信息会存储在全局状态缓存中;
(iii)完成setpebin,指定整个算法实现涉及处理流程可用的处理节点(加速模块)执行二进制流;
(iv)完成registerservice,在单工作节点的异构资源和任务组织服务整体框架(即异构计算管理框架)中注册算法分析服务。
在本示例性实施例中,工作节点n1的本地客户端应用驱动提交人工智能分析任务(以下简称为分析任务),如图11所示,在本实施例中将其简略表述成a(输入数据)和b(深度网络权重)相乘,其服务表达为multiply(mul)。工作节点n1包含本地的加速计算资源(即加速模块)、内存存储服务以及本地任务调度器(即图5中的本地任务调度模块)。其中,多个工作节点在组建集群后,会广播自身的资源信息,全局任务及资源调度器可以根据各个工作节点的资源信息,在全局状态缓存建立计算资源分布表。
如图11所示,本示例性实施例包括以下步骤:
步骤s1、工作节点n1通过应用驱动提交分析任务和数据,本地任务调度器查阅位于全局状态缓存的深度学习网络功能表;本步骤完成具备执行能力的工作节点的查询,比如可以发现工作节点n2。比如,可以通过前文描述getmemorysectionregions,完成整个算法实现涉及处理流程建议的pe(加速模块)类型、数据存储的位置及大小的查询。
步骤s2、本地任务调度器通过分析本地资源,发现无法完成分析任务。
步骤s3、本地任务调度器向全局任务及资源调度器(即上述的全局调度模块)转发分析任务。
步骤s4、全局任务及资源调度器通过查询全局状态缓存内的计算资源分分布,确定工作节点n2具备b(深度网络权重)。
步骤s5、全局任务及资源调度器将分析任务传递给工作节点n2的本地任务调度器。
步骤s6、工作节点n2的本地任务调度器查阅本地资源的内存存储服务,确定是否有执行该分析任务所需的计算资源。
步骤s7、工作节点n2结合全局状态缓存内的计算资源分布表明确所需的计算资源a(输入数据)位于工作节点n1。
步骤s8、工作节点n2的本地任务调度器会结合计算资源a(输入数据)和b(深度网络权重)在计算资源分布表(位于全局状态缓存)的完整信息,判断计算资源的搬运路径。本实施例中,全局状态缓存内的计算资源分布表可以根据工作节点n2得到的搬运路径进行更新,比如,将计算资源a更新为分布在工作节点n1和n2,工作节点n1的本地任务调度器根据计算资源分布表获知a更新为分布在工作节点n1和n2之后,可以通过加速计算资源内存存储服务将计算资源a(输入数据)同步到工作节点n2,从而实现分析任务和所需资源的物理统一。
步骤s9、工作节点n2的本地任务调度器将下发人工智能分析任务到对应的加速任务执行节点(即异构单元)。
步骤s10、加速任务执行节点通过如前述getpebin承载整个算法实现涉及处理流程可用的pe(加速模块)执行二进制流,并完成本次计算任务。
其中,关于步骤s9和s10的相关流程可以参照图8和图10的说明。
图12为本申请实施例提供的任务处理过程的另一种示例图。本示例性实施例说明基于图11所示的实施例,工作节点n1的应用驱动对分析任务的执行结果的摄取流程。
如图12所示,本示例性实施例包括以下步骤:
步骤s21、工作节点n1通过应用驱动提交执行结果摄取请求。
步骤s22、工作节点n1的本地任务调度器查询位于全局状态缓存的计算资源分布表。
步骤s23、工作节点n2的加速任务执行节点完成分析任务计算之后,将得到的执行结果提供给内存存储服务。
步骤s24、工作节点n2的内存存储服务将执行结果同步至位于全局状态缓存的计算资源分布表。
步骤s25、工作节点n1从计算资源分布表获知得到执行结果。
步骤s26、工作节点n2的本地任务调度器结合执行结果在计算资源分布表的完整信息,判断执行结果的搬运路径;本示例性实施例中,全局状态缓存内的计算资源分布表可以根据工作节点n2得到的搬运路径进行更新,比如,将执行结果c更新为分布在工作节点n1和n2,工作节点n2的本地任务调度器根据计算资源分布表获知c分布在工作节点n1和n2之后,可以通过加速计算资源内存存储服务将执行结果c同步到工作节点n1。
图11和图12所示的示例性实施例说明了在实现异构计算和存贮资源归一化的基础上,基于资源导向性调度原则,人工智能分析任务的完整调度流程。
图13为gpu的一种软硬件服务组织架构图;图14为异构单元为gpu时实现流式任务的组织框架图。
如图13所示,gpu的一种软硬件服务组织架构包括:流处理deepstreamapi(applicationprogramminginterface,应用程序编程接口)、计算流图服务(流式任务处理组织和数据管理模块)(bitstreammanagement)、深度学习服务(tensorrt、cudnn)、多媒体服务(videocodecsdk)、cuda(computeunifieddevicearchitecture,统一计算设备架构)驱动以及gpu加速卡。
如图14所示,通过cuda和gpu加速卡的硬件特性封装完成的hal实现了压缩数据包和任务数据队列的管理,同时结合其流式处理deepstream框架,可以实现任务流水线的自主定制,串接多个加速实现模块。其中,预处理模块可以结合gpu多媒体服务实现,检测模块可以结合tensorrt实现,特征提取模块可以为用户自定义的实现模块。
图15为fpga的一种软硬件服务组织架构图。图16为异构单元为fpga时实现流式任务的组织框架图。
如图15所示,以xilinxfpga为例,基础的fpga的一种软硬件服务组织架构中,硬件单元包括:xfdnn人工智能计算核心和承载的fpga器件和板卡(vcn1525);对应的软件单元包括:深度学习网络任务重配置接口和服务模块(xilinx加速器任务和数据调度管理组件);低延迟的数据搬运软件驱动(xilinxsdx运行支持库)以及深度学习模型网络优化和编译服务(xfdnn编译器和优化器,即深度学习网络模型转换fpga硬件执行流工具)。
本示例性实施例中,基于异构守护进程的异构单元运行支持部分,数据存储和搬运硬件抽象层(hal)统一服务和分级数据流的实现方法,fpga实现流式任务软件组织将借助在内核态存在的加速计算单元驱动层管理模块以及结合dram数据驱动形成hal模块来最终实现。如图16所示,加速计算器(单元)驱动层管理北向接口完成fpga示例的任务数据和网络运算硬件执行流的注册和下载,南向接口完成队列任务中具体任务摄取以及运行支持(包括运行环境支持、特定硬件加速服务的注册管理和设备参数的配置),以及对应fpga执行示例的重构。
如图16所示,不同fpga硬件器件基于pci-e总线相互连接,并完成和主控cpu的连接。特定fpga可以完成已注册任务数据的下载和运算网络的执行。cpu侧和各fpga加速单元侧dram(dynamicrandomaccessmemory,动态随机存取存储器)形成统一的hal,完成网络模型和特征图谱等运算所需数据单元的传输和存储。cpu侧加速器管理模块基于fpga加速器驱动器及软件模块,完成从任务队列分配器获取任务,并核对设备与注册任务所需设备的一致性,最终上载相应fpga执行二进制执行流,并通过加速器驱动器完成设备参数配置和执行流的下载和启动。
图17为mul100的一种软硬件服务组织架构图。本示例性实施例说明类似googletpu的人工智能推理asic构成的边缘人工智能一体机流式任务组织框架的实现方式。以下实现流程以mul100卡为例。
如图17所示,mul100的一种软硬件服务组织架构包括:流处理cnstreamapi、计算流图服务(流式任务处理组织和数据管理模块)、深度学习服务(cnrt)、多媒体服务(cncodec)、驱动以及asic加速卡。
参照图17,通过mul100卡的硬件特性及其驱动封装完成的hal,同时结合其流式处理cnstream框架,可以实现一体机流式任务组织框架。
图18为本申请实施例提供的基于异构计算的任务处理装置的示意图。如图18所示,本实施例提供的任务处理装置包括:异构计算管理模块1801以及多个异构单元(比如,1802a、1802b及1802n);异构计算管理模块1801适于将人工智能分析任务分解为一级或多级子任务,并通过一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对多个异构单元统一调度以执行相应的子任务。
在一示例性实施例中,每一分析功能单元服务可以为一个进程,对应一个运行上下文环境。
在一示例性实施例中,本实施例的任务管理装置还可以包括:hal;hal可以支持通过标准的softwareshell和hardwareshell实现的以下标准特性:任务管理装置所在的单个工作节点内存统一化;单个异构单元多任务进程并发支持;异构单元之间远程直接数据存取rdma;异构单元计算和传输并发。
在一示例性实施例中,不同分析功能单元服务之间可以通过hal提供的rdma内存服务实现数据流交互。
在一示例性实施例中,异构计算管理模块1801至少可以包括:异构守护客户端、异构守护服务端;其中,异构守护客户端适于维护和管理人工智能分析任务的加速计算任务队列,管理客户端侧任务场景,并提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口;异构守护服务端可以包括应用层任务管理模块以及内核层加速模块块型驱动管理模块;应用层任务管理模块适于提供客户端服务接口,维护和管理服务端侧人工智能分析任务的加速计算任务队列,管理服务端侧任务场景;内核层加速模块块型驱动管理模块适于提供块驱动数据读写接口,管理和调度加速模块的通道和队列。
在一示例性实施例中,异构单元可以包括以下一种或多种:cpu、gpu、fpga、asic。
另外,关于本实施例提供的任务管理装置的相关说明可以参照上述方法实施例的描述,故于此不再赘述。
本申请实施例还提供一种基于异构计算的软硬件框架系统,包括:至少一个工作节点,任一工作节点包括多个异构单元;其中,工作节点适于将人工智能分析任务分解为一级或多级子任务,并通过一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对该工作节点的多个异构单元统一调度以执行相应的子任务。
在一示例性实施例中,每一分析功能单元服务可以为一个进程,对应一个运行上下文环境。
在一示例性实施例中,任一工作节点可以适于通过标准的softwareshell和hardwareshell实现以下标准特性:单个工作节点内存统一化;单个异构单元多任务进程并发支持;异构单元之间rdma;异构单元计算和传输并发。
在一示例性实施例中,不同分析功能单元服务之间可以通过hal提供的rdma内存服务实现数据流交互。
在一示例性实施例中,任一工作节点上可以部署有异构计算管理框架,用于支持基于异构守护进程的异构单元;异构计算管理框架至少可以包括:异构守护客户端、异构守护服务端;其中,异构守护客户端适于维护和管理人工智能分析任务的加速计算任务队列,管理客户端侧任务场景,并提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口;异构守护服务端可以包括应用层任务管理模块以及内核层加速模块块型驱动管理模块;应用层任务管理模块适于提供客户端服务接口,维护和管理服务端侧人工智能分析任务的加速计算任务队列,管理服务端侧任务场景;内核层加速模块块型驱动管理模块适于提供块驱动数据读写接口,管理和调度加速模块的通道和队列。
在一示例性实施例中,异构单元可以包括以下一种或多种:cpu、gpu、fpga、asic。
在一示例性实施例中,比如图5和图6所示,本实施例的软硬件框架系统可以包括多个工作节点,且该系统中可以部署有全局调度模块;当任一工作节点确定本地资源无法满足人工智能分析任务的执行条件,该工作节点适于将该人工智能分析任务提交给全局调度模块,由全局调度模块通过查询系统中存储的全局任务状态信息,确定执行人工智能分析任务的工作节点。
另外,关于本实施例提供的软硬件框架系统的相关说明可以参照上述方法实施例的描述,故于此不再赘述。
此外,本申请实施例还提供一种计算机可读介质,存储有基于异构计算的任务处理程序,该任务处理程序被执行时实现上述任务处理方法的步骤,,比如图3所示的步骤。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
1.一种基于异构计算的任务处理方法,应用于包括多个异构单元的工作节点,所述方法包括:
将人工智能分析任务分解为一级或多级子任务,其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务;
通过所述一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成所述人工智能分析任务,其中,每一分析功能单元服务对多个异构单元统一调度以执行相应的子任务。
2.根据权利要求1所述的方法,其特征在于,每一分析功能单元服务为一个进程,对应一个运行上下文环境。
3.根据权利要求1所述的方法,其特征在于,所述多级子任务由同一异构单元流式执行,或者由至少两个异构单元流式执行。
4.根据权利要求1所述的方法,其特征在于,所述工作节点通过标准的软件标准命令解析层softwareshell和硬件标准命令解析层hardwareshell实现以下标准特性:单个工作节点内存统一化;单个异构单元多任务进程并发支持;异构单元之间远程直接数据存取rdma;异构单元计算和传输并发。
5.根据权利要求4所述的方法,其特征在于,不同分析功能单元服务之间通过硬件抽象层hal提供的rdma内存服务实现数据流交互。
6.根据权利要求1所述的方法,其特征在于,每一分析功能单元服务记录对应的子任务的运行结果快照。
7.根据权利要求1所述的方法,其特征在于,所述工作节点上部署异构计算管理框架,用于支持基于异构守护进程的异构单元;所述异构计算管理框架至少包括:异构守护客户端、异构守护服务端;
所述异构守护客户端适于维护和管理人工智能分析任务的加速计算任务队列,管理客户端侧任务场景,并提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口;
所述异构守护服务端包括应用层任务管理模块以及内核层加速模块块型驱动管理模块;所述应用层任务管理模块适于提供客户端服务接口,维护和管理服务端侧人工智能分析任务的加速计算任务队列,管理服务端侧任务场景;所述内核层加速模块块型驱动管理模块适于提供块驱动数据读写接口,管理和调度加速模块的通道和队列。
8.根据权利要求1所述的方法,其特征在于,所述异构单元包括以下一种或多种:中央处理器cpu、图形处理器gpu、现场可编程门阵列fpga、专用集成电路asic。
9.根据权利要求1所述的方法,其特征在于,所述人工智能分析任务包括视觉人工智能推理任务;所述视觉人工智能推理任务对应的分析功能单元服务包括:视频图像格式解码服务、图像中目标检测服务、图像中目标跟踪和最优选择服务、目标特征值提取服务。
10.根据权利要求1所述的方法,其特征在于,所述将人工智能分析任务分解为一级或多级子任务之前,所述方法还包括:确定所述工作节点的本地资源满足所述人工智能分析任务的执行条件。
11.根据权利要求10所述的方法,其特征在于,多个所述工作节点组成的集群中部署有全局调度模块,且所述集群中存储全局任务状态信息;
所述方法还包括:当所述工作节点确定本地资源无法满足所述人工智能分析任务的执行条件,将所述人工智能分析任务提交给所述集群的全局调度模块,由所述全局调度模块通过查询所述全局任务状态信息,确定执行所述人工智能分析任务的工作节点。
12.根据权利要求1所述的方法,其特征在于,所述将人工智能分析任务分解为一级或多级子任务,包括:
根据所述人工智能分析任务的任务类型,确定所述任务类型对应的已注册服务集合信息;根据所述已注册服务集合信息,将所述人工智能分析任务分解为一级或多级子任务,其中,每一级子任务对应一个分析功能单元服务。
13.一种基于异构计算的软硬件框架系统,其特征在于,包括:至少一个工作节点,任一所述工作节点包括多个异构单元;
所述工作节点适于将人工智能分析任务分解为一级或多级子任务,并通过所述一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成所述人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对所述工作节点的多个异构单元统一调度以执行相应的子任务。
14.根据权利要求13所述的系统,其特征在于,每一分析功能单元服务为一个进程,对应一个运行上下文环境。
15.根据权利要求13所述的系统,其特征在于,每一工作节点适于通过标准的软件标准命令解析层softwareshell和硬件标准命令解析层hardwareshell实现以下标准特性:单个工作节点内存统一化;单个异构单元多任务进程并发支持;异构单元之间远程直接数据存取rdma;异构单元计算和传输并发。
16.根据权利要求15所述的系统,其特征在于,不同分析功能单元服务之间通过硬件抽象层hal提供的rdma内存服务实现数据流交互。
17.根据权利要求13所述的系统,其特征在于,任一所述工作节点上部署有异构计算管理框架,用于支持基于异构守护进程的异构单元,所述异构计算管理框架至少包括:异构守护客户端、异构守护服务端;
所述异构守护客户端适于维护和管理人工智能分析任务的加速计算任务队列,管理客户端侧任务场景,并提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口;
所述异构守护服务端包括应用层任务管理模块以及内核层加速模块块型驱动管理模块;所述应用层任务管理模块适于提供客户端服务接口,维护和管理服务端侧人工智能分析任务的加速计算任务队列,管理服务端侧任务场景;所述内核层加速模块块型驱动管理模块适于提供块驱动数据读写接口,管理和调度加速模块的通道和队列。
18.根据权利要求13所述的系统,其特征在于,所述异构单元包括以下一种或多种:中央处理器cpu、图形处理器gpu、现场可编程门阵列fpga、专用集成电路asic。
19.根据权利要求13所述的系统,其特征在于,所述系统包括多个所述工作节点,且所述系统中部署有全局调度模块;当任一所述工作节点确定本地资源无法满足所述人工智能分析任务的执行条件,所述工作节点适于将所述人工智能分析任务提交给所述全局调度模块,由所述全局调度模块通过查询所述系统中存储的全局任务状态信息,确定执行所述人工智能分析任务的工作节点。
20.一种基于异构计算的任务处理装置,其特征在于,包括:异构计算管理模块以及多个异构单元;所述异构计算管理模块适于将人工智能分析任务分解为一级或多级子任务,并通过所述一级或多级子任务对应的一个或多个分析功能单元服务采用分级数据流的方式完成所述人工智能分析任务;其中,不同级的子任务的类型不同,同一类型的子任务对应一个分析功能单元服务,每一分析功能单元服务对多个异构单元统一调度以执行相应的子任务。
21.根据权利要求20所述的装置,其特征在于,每一分析功能单元服务为一个进程,对应一个运行上下文环境。
22.根据权利要求20所述的装置,其特征在于,所述装置还包括:硬件抽象层hal;所述hal支持通过标准的软件标准命令解析层softwareshell和硬件标准命令解析层hardwareshell实现的以下标准特性:所述任务管理装置所在的单个工作节点内存统一化;单个异构单元多任务进程并发支持;异构单元之间远程直接数据存取rdma;异构单元计算和传输并发。
23.根据权利要求22所述的装置,其特征在于,不同分析功能单元服务之间通过所述hal提供的rdma内存服务实现数据流交互。
24.根据权利要求20所述的装置,其特征在于,所述异构计算管理模块至少包括:异构守护客户端、异构守护服务端;
所述异构守护客户端适于维护和管理人工智能分析任务的加速计算任务队列,管理客户端侧任务场景,并提供客户端侧人工智能分析任务的输入数据和输出数据的读写标准接口;
所述异构守护服务端包括应用层任务管理模块以及内核层加速模块块型驱动管理模块;所述应用层任务管理模块适于提供客户端服务接口,维护和管理服务端侧人工智能分析任务的加速计算任务队列,管理服务端侧任务场景;所述内核层加速模块块型驱动管理模块适于提供块驱动数据读写接口,管理和调度加速模块的通道和队列。
25.根据权利要求20所述的装置,其特征在于,所述异构单元包括以下一种或多种:中央处理器cpu、图形处理器gpu、现场可编程门阵列fpga、专用集成电路asic。
26.一种计算机可读介质,其特征在于,存储有基于异构计算的任务处理程序,所述任务处理程序被执行时实现如权利要求1至12中任一项所述的任务处理方法的步骤。
技术总结