发明内容
基于此,有必要针对上述技术问题,提供一种能提高算子计算结果准确性以及算力执行框架计算效率的算力执行***、算子计算流管理方法、装置、设备和介质。
第一方面,提供一种算力执行***,所述算力执行***包括深度学习模块、人工智能算力执行模块和硬件设备模块;
所述人工智能算力执行模块与所述深度学习模块连接,用于在检测到所述深度学习模块生成第一算子计算流时,确定第二算子计算流;
所述硬件设备模块与所述人工智能算力执行模块连接,用于执行所述第二算子计算流对应的任务指令;
其中,所述人工智能算力执行模块包括初始化单元和算子计算流管理单元;
所述初始化单元用于初始化所述人工智能算力执行模块;
所述算子计算流管理单元用于基于所述深度学习模块生成的第一算子计算流,对所述第二算子计算流进行管理。
可选的,所述算子计算流管理单元包括流池初始化子单元、算子计算流获取子单元、算子计算流处理子单元、算子计算流销毁子单元和流池;
所述流池初始化子单元用于对所述流池进行初始化处理;
所述算子计算流获取子单元用于获取所述人工智能算力执行模块中的第二算子计算流;
所述算子计算流处理子单元用于基于所述第一算子计算流,对所述人工智能算力执行模块中的第二算子计算流进行统一化处理;
所述算子计算流销毁子单元用于解绑及销毁算子计算流;
所述流池用于存储所述人工智能算力执行模块中硬件设备资源对应的流。
可选的,所述流池包括所述人工智能算力执行模块中至少一个硬件设备资源对应的流;
所述流池的预设大小为N,所述流池中多个流的第一标识编号依次为M至N-1,其中,N-1大于或等于M;
所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致。
第二方面,提供一种算子计算流管理方法,所述方法包括:
响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
可选的,所述深度学习模块中的第一算子计算流的获取方法包括:
响应于检测到所述深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中深度学习模型的模型文件;
对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流。
可选的,对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流包括:
基于编译器对所述深度学习模型的模型文件进行解析,得到目标算子序列;
根据所述目标算子序列对应的深度学习模型的执行顺序,对所述目标算子序列进行排序,得到所述深度学习模块中算子计算流的算子执行顺序;
基于所述算子计算流的算子执行顺序,获取所述第一算子计算流。
可选的,在所述获取人工智能算力执行模块中的第二算子计算流之前,所述方法还包括:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测所述算力执行模块中是否存在目标算子计算流;
响应于检测到存在所述目标算子计算流,则定义所述目标算子计算流为所述第二算子计算流;
响应于检测到不存在所述目标算子计算流,则利用流池初始化子单元构建流池,并对所述流池进行初始化处理,以确定所述第二算子计算流。
可选的,所述利用流池初始化子单元构建流池包括:
基于预设映射表,确定所述流池的预设大小为N;
根据所述流池的预设大小,申请硬件设备模块中的硬件设备资源,并将所述硬件设备资源分配给对应的流,生成所述流池。
可选的,在利用流池初始化子单元构建流池之后,对所述流池进行初始化处理包括:
对所述硬件设备资源对应的流进行标识编号,生成第一标识编号,所述第一标识编号依次为M至N-1,其中,N-1大于或等于M,并定义所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致;
基于目标第一标识编号与对应硬件设备资源的流,生成映射关系,预存于已构建的流池中,以完成对所述流池的初始化处理。
可选的,基于流池初始化处理结果,确定所述第二算子计算流包括:
获取多个第一标识编号与对应硬件设备资源的流的映射关系;
选取所述映射关系中第一标识编号为M对应的目标硬件设备资源的流,定义所述目标硬件设备资源的流为所述第二算子计算流。
可选的,所述获取人工智能算力执行模块中的第二算子计算流包括:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测流池是否初始化成功;
响应于检测到所述流池初始化成功时,基于流池初始化处理结果,获取所述第二算子计算流;
响应于检测到所述流池初始化未成功时,利用流池初始化子单元对所述流池进行初始化处理,以确定所述第二算子计算流。
可选的,在对所述第一算子计算流和所述第二算子计算流进行统一化处理之前,所述方法还包括:
将所述人工智能算力执行模块中的第二算子计算流回传至所述深度学习模块,并在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流;
基于比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理。
可选的,在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流包括:
分别获取所述第一算子计算流对应的第一内存地址以及所述第二算子计算流对应的第二内存地址;
比较所述第一内存地址和所述第二内存地址之间的相似度;
基于所述相似度,确定目标比较结果。
可选的,基于目标比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理包括:
响应于检测到所述相似度大于或等于第一预设值时,对所述第一算子计算流和所述第二算子计算流不进行统一化处理;
响应于检测到所述相似度小于第一预设值时,对所述第一算子计算流和所述第二算子计算流进行统一化处理。
可选的,对所述第一算子计算流和所述第二算子计算流进行统一化处理包括:
响应于检测到所述相似度小于第一预设值时,利用算子计算流处理子单元将所述第一算子计算流替换所述第二算子计算流作为人工智能算力执行模块的目标算子计算流。
可选的,基于统一化处理结果,确定是否执行算子计算任务包括:
响应于检测到所述第一算子计算流与所述第二算子计算流的相似度大于或等于第一预设值时,执行算子计算任务。
可选的,在所述算子计算任务执行完成之后,所述方法还包括:
利用算子计算流销毁子单元将深度学习模块和人工智能算力执行模块解除绑定,并销毁人工智能算力执行模块的算子计算流和流池。
另一方面,提供了一种算子计算流管理装置,所述装置包括:
第一算子计算流获取模块,用于在检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
统一化处理模块,用于在检测到所述第一算子计算流时,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
计算流管理模块,用于基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
上述算力执行***、算子计算流管理方法、装置、设备和介质,所述算力执行***包括:深度学习模块、人工智能算力执行模块和硬件设备模块;所述人工智能算力执行模块与所述深度学习模块连接,用于在检测到所述深度学习模块生成第一算子计算流时,确定第二算子计算流;所述硬件设备模块与所述人工智能算力执行模块连接,用于执行所述第二算子计算流对应的任务指令;其中,所述人工智能算力执行模块包括初始化单元和算子计算流管理单元;所述初始化单元用于初始化所述人工智能算力执行模块;所述算子计算流管理单元用于基于所述深度学习模块生成的第一算子计算流,对所述第二算子计算流进行管理,本申请通过将深度学习模块的算子计算流与人工智能算力执行模块的算子计算流进行统一化处理,很好地保证了真正算子执行时间与深度学习模块的一致性,从而解决了因算子执行时间不同步引起的获取不到正确计算结果导致出现整个模型的训练梯度弥散现象的问题,有效降低***开销,提高算子计算效率。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,在本申请的描述中,除非上下文明确要求,否则整个说明书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
还应当理解,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
需要注意的是,术语“S1”、“S2”等仅用于步骤的描述目的,并非特别指称次序或顺位的意思,亦非用以限定本申请,其仅仅是为了方便描述本申请的方法,而不能理解为指示步骤的先后顺序。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
根据背景技术可知,随着人工智能领域的技术革新的不断推进,深度学习中算法模型面向的应用场景越来越复杂,面向的硬件设备越来越多样,深度学习框架经历了萌芽阶段、成长阶段、稳定阶段来到了现在的深化阶段,伴随着深度学习框架不断发展,国际市场以由Google(谷歌)、Meta(一家经营社群网络服务、虚拟实境、元宇宙等产品的互联网科技公司)等科技巨头主导逐步形成了以Google-TensorFlow(数据流图进行数值计算的开源软件库)和Meta-PyTorch(一个基于Torch的使用Python编程语言的开源机器学习框架)为代表的双寡头格局,国内则在双寡头并驱态势下,AI框架市场格局向着多元发展,百度PaddlePaddle飞浆框架、华为MindSpore昇思框架、旷视MegEngine天元框架等相继推出,使得国内市场朝着多元化的方向发展,同时,国内的计算芯片也呈现百花齐放的发展势头,寒武纪、壁仞、昇腾等国产计算芯片的陆续推出,标志着国内计算芯片正在迈向新的台阶,在此背景下,深度学习领域部署方案由原来的单一设备、单一深度学习框架变得更加多样,搭配更丰富,如何在同一应用场景下,同时满足多深度学习框架与多计算芯片后端,成为当前的工业生产中的重点需求。
基于上述需求,现有技术相互之间无法同步计算信息,最终导致计算结果不准确,示例性的,如图2所示,深度学习框架在执行算子计算时,将计算任务一与任务二下发到StreamA(A流),并在合适的时机调用任务二的结果,任务一与任务二会通过算力执行框架调用后端硬件设备,此时算力执行框架同样会获取的任务一与任务二下发到StreamB(B流),最终硬件设备线程执行StreamB中的任务,由图2可知,StreamA是由深度学习框架维护的流,StreamB是由算力执行框架维护的流,当深度学习框架需要获取任务二的结果时,真正执行任务二的StreamB并不能返回正确的结果,导致深度学习框架获取错误结果而引发错误,且当深度学习框架调取算子计算结果时,算力执行框架中的计算还未结束或者提前结束释放了资源,导致算子计算结果提取不正确情况时有发生,这种情况会引发训练过程梯度弥散或***,使得训练终止或者算力资源的浪费。
为解决上述技术问题,本申请提供了算力执行***、算子计算流管理方法、装置、设备和介质,通过将深度学习模块的算子计算流与人工智能算力执行模块的算子计算流进行统一化处理,很好地保证了真正算子执行时间与深度学习模块的一致性,从而解决了因算子执行时间不同步引起的获取不到正确计算结果导致出现整个模型的训练梯度弥散现象的问题,有效降低***开销,提高算子计算效率。
在一个实施例中,如图3所示,提供了一种算力执行***,所述算力执行***包括深度学习模块、人工智能算力执行模块和硬件设备模块;
所述人工智能算力执行模块与所述深度学习模块连接,用于在检测到所述深度学习模块生成第一算子计算流时,确定第二算子计算流;
所述硬件设备模块与所述人工智能算力执行模块连接,用于执行所述第二算子计算流对应的任务指令;
其中,所述人工智能算力执行模块包括初始化单元和算子计算流管理单元;
所述初始化单元用于初始化所述人工智能算力执行模块;
所述算子计算流管理单元用于基于所述深度学习模块生成的第一算子计算流,对所述第二算子计算流进行管理。
具体的,深度学***台,是现阶段AI算法开发的必备工具,AI算力执行框架下接硬件、上承应用,是整个算力执行***的核心,AI算力执行框架应遵循免侵入、模块化、可拆卸的原则,其中,免侵入原则表示AI算力执行框架的开发不应侵入到深度学习框架中,避免深度学习框架更新引起的错误,模块化原则表示算力执行框架中的各部分应以模块化、小组团的形式出现,实现各部分的解耦,可拆卸原则表示深度学习框架与算力执行框架之前,算力执行框架与硬件设备之间三方可自由拆卸,不影响正常使用,基于此,在本申请中,人工智能算力执行模块向上承接多个深度学习模块,向下兼容多种硬件设备,以用于执行算子计算任务,进一步的,为保证不同模块中的算子计算流的一致性,以实现提高整个***运行效率、降低***开销的效果,本申请在人工智能算力执行模块中设置算子计算流管理单元,所述算子计算流管理单元具体包括流池初始化子单元、算子计算流获取子单元、算子计算流处理子单元、算子计算流销毁子单元和流池,其中:
所述流池初始化子单元用于对所述流池进行初始化处理;
所述算子计算流获取子单元用于获取所述人工智能算力执行模块中的第二算子计算流;
所述算子计算流处理子单元用于基于所述第一算子计算流,对所述人工智能算力执行模块中的第二算子计算流进行统一化处理;
所述算子计算流销毁子单元用于解绑及销毁算子计算流;
所述流池用于存储所述人工智能算力执行模块中硬件设备资源对应的流,该硬件设备资源为在构建流池时,从硬件设备模块中申请的硬件设备资源,并将其分配给流,从而得到硬件设备资源对应的流,存储于流池中。
在一些具体实施方式中,所述流池包括所述人工智能算力执行模块中至少一个硬件设备资源对应的流;
所述流池的预设大小为N,所述流池中多个流的第一标识编号依次为M至N-1,其中,N-1大于或等于M,其中,该流池的大小为根据专家法获得,即根据专家先验知识确定,本申请的流池预设大小的优选值为16,流池中流对应的第一标识编号依次为0至15,如附图3中StreamM、StreamM+1…StreamN-1可以是Stream0、Stream1…Stream15;
所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致。
在上述实施方式中,通过在人工智能算力执行模块中设置的算子计算流管理单元,可以将多种深度学习模块中的算子计算流与人工智能算力执行模块中的算子计算流进行统一,引入流池结构能有效减少***开销带来的性能损失,提高人工智能算力执行模块的计算效率与运行效率,同时使用流池能够更安全有效的调用资源,避免资源浪费。
上述算力执行***中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图4所示,提供了一种算子计算流管理方法,包括以下步骤:
S1:响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流。
需要说明的是,第一算子计算流即为深度学习框架的算子计算流,在检测到需要执行算子计算任务时,会获取该深度学习模块的计算流,其中,计算流指的是用于算子计算的流,一般仅存在一个。
在一些具体实施方式中,所述深度学习模块中的第一算子计算流的获取方法包括:
响应于检测到所述深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中深度学习模型的模型文件;
对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流。
在一些具体实施方式中,对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流包括:
基于编译器对所述深度学习模型的模型文件进行解析,得到目标算子序列,其中,编译器一般设置于终端设备上,该编译器可以把不同格式的深度学习模型的模型文件(如pb、tflite、onnx等)解析为目标算子序列(如一维的算子序列);
根据所述目标算子序列对应的深度学习模型的执行顺序,对所述目标算子序列进行排序,得到所述深度学习模块中算子计算流的算子执行顺序;
基于所述算子计算流的算子执行顺序,获取所述第一算子计算流,该第一算子计算流根据排序结果确定,如深度学习模块初次执行算子计算任务,则选择排序在第一位的算子计算流作为第一算子计算流。
在上述实施方式中,通过对深度学习模型进行解析,以及对解析结果进行排序以获取第一算子计算流,以用于后续对人工智能算力执行模块的第二算子计算流作统一化处理。
S2:响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理。
需要说明的是,第二算子计算流即为AI算力执行框架的算子计算流,其存在于人工智能算力执行模块的流池中,当检测到第一算子计算流时,需要在流池中调用第二算子计算流,统一化处理指的是利用统一化处理规则使两个计算流保持一致。
在一些具体实施方式中,在所述获取人工智能算力执行模块中的第二算子计算流之前,所述方法还包括:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测所述算力执行模块中是否存在目标算子计算流;
响应于检测到存在所述目标算子计算流,则定义所述目标算子计算流为所述第二算子计算流,其中,若存在目标算子计算流,则表示在之前某个时刻已经构建了流池,无需再次构建流池,可以直接提取已构建流池中的算子计算流作为第二算子计算流;
响应于检测到不存在所述目标算子计算流,则利用流池初始化子单元构建流池,并对所述流池进行初始化处理,以确定所述第二算子计算流。
在一些具体实施方式中,所述利用流池初始化子单元构建流池包括:
基于预设映射表,确定所述流池的预设大小为N,其中,预设映射表包括至少一个流池大小和硬件设备数量的映射关系,该映射关系可以根据专家法即专家先验知识,来确定不同硬件设备数量对应的流池预设大小N,在本实施例中,N的优选值可以是16;
根据所述流池的预设大小,申请硬件设备模块中的硬件设备资源,并将所述硬件设备资源分配给对应的流,生成所述流池,其中,硬件设备资源一般指物理机里的内存、CPU、显存、磁盘等,在本实施例中,硬件设备资源可以为显存的资源,比如GPU32G显存,除此之外,还有处理器CPU的占用,也可以是硬件设备资源,当申请了某个硬件设备资源,并将该硬件设备资源分配给对应流后,该流即为流池的一部分,因此,当申请预设大小的硬件设备资源并分配给对应流之后,即可生成流池。
在一些具体实施方式中,在利用流池初始化子单元构建流池之后,对所述流池进行初始化处理包括:
对所述硬件设备资源对应的流进行标识编号,生成第一标识编号,即生成对应的流ID,流ID是设置模块中对应接口中的属性,只有通过流ID才能准确的知道AI算力执行框架中用作计算流的流是哪个,以确保后续对算子计算流进行统一化处理的准确性,所述第一标识编号依次为M至N-1,其中,N-1大于或等于M,并定义所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致,即在流池中流对应的第一标识编号,在后续算子计算流调用过程中,ID依然保持一致,示例性的,算子计算流就是调用流池中的流,如Stream0,那么就是使用Stream0来做算子计算,也就是所谓的算子计算流,在这个过程中Stream0的id是不变的,其中,M优选值为0,流池中流对应的第一标识编号依次为0至15,如在申请预设大小的显存资源后,将该资源划分为16份,按照顺序依次对其进行标识编号,如Stream0、Stream1…Stream15;
基于目标第一标识编号与对应硬件设备资源的流,生成映射关系,预存于已构建的流池中,以完成对所述流池的初始化处理。
在一些具体实施方式中,基于流池初始化处理结果,确定所述第二算子计算流包括:
获取多个第一标识编号与对应硬件设备资源的流的映射关系;
选取所述映射关系中第一标识编号为M对应的目标硬件设备资源的流,定义所述目标硬件设备资源的流为所述第二算子计算流,即若需要构建流池,则表示深度学习模块初次调用人工智能算力执行模块,此时将默认M号流(即0号流)做为算子计算流回传给深度学习模块。
在一些具体实施方式中,所述获取人工智能算力执行模块中的第二算子计算流包括:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测流池是否初始化成功;
响应于检测到所述流池初始化成功时,基于流池初始化处理结果,获取所述第二算子计算流;
响应于检测到所述流池初始化未成功时,利用流池初始化子单元对所述流池进行初始化处理,以确定所述第二算子计算流。
在一些具体实施方式中,在对所述第一算子计算流和所述第二算子计算流进行统一化处理之前,所述方法还包括:
将所述人工智能算力执行模块中的第二算子计算流回传至所述深度学习模块,并在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流;
基于比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理。
在一些具体实施方式中,在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流包括:
分别获取所述第一算子计算流对应的第一内存地址以及所述第二算子计算流对应的第二内存地址,其中,算子计算流在生成时会分配内存空间,内存空间包含地址信息,两个计算流是否相等的判断标准即为判断两个计算流是否指向同一个内存地址;
比较所述第一内存地址和所述第二内存地址之间的相似度;
基于所述相似度,确定目标比较结果。
在一些具体实施方式中,基于目标比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理包括:
响应于检测到所述相似度大于或等于第一预设值时,对所述第一算子计算流和所述第二算子计算流不进行统一化处理,其中,第一预设值可以根据实际需求进行设定,一般为100%,即第一内存地址和第二内存地址完全相同,此时表示两个计算流是一致的,不需要进行统一化处理;
响应于检测到所述相似度小于第一预设值时,对所述第一算子计算流和所述第二算子计算流进行统一化处理,即第一内存地址和第二内存地址不完全相同时,此时表示两个计算流不一致的,会出现算子计算流不一致引起的梯度弥散问题,因此需要对两个算子计算流进行统一化处理。
在一些具体实施方式中,对所述第一算子计算流和所述第二算子计算流进行统一化处理包括:
响应于检测到所述相似度小于第一预设值时,利用算子计算流处理子单元将所述第一算子计算流替换所述第二算子计算流作为人工智能算力执行模块的目标算子计算流,即在两个计算流不一致时,深度学习模块将自身的第一算子计算流赋予人工智能算力执行模块,以替换人工智能算力执行模块中原有的第二算子计算流,从而使得两个模块中的计算流保持一致。
在上述实施方式中,将不同的深度学习模块中的算子计算流统一到人工智能算力执行模块中,能够保证不同的深度学习框模块面对不同的计算芯片时得到正确的计算结果,从而有效避免因模块间算子计算流的独立性引起的算子计算任务执行时间不一致,导致发生算子计算结果获取失败的问题,同时,引入流池结构,为算子计算流进行标识编号,即设置流ID,在统一管理的同时,避免出现不同模块间因频繁的交互引入大量的读写操作带来的***开销,进而导致性能损失的问题,提高了人工智能算力执行模块的计算效率。
S3:基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
需要说明的是,在一些具体实施方式中,基于统一化处理结果,确定是否执行算子计算任务包括:
响应于检测到所述第一算子计算流与所述第二算子计算流的相似小于第一预设值时,不执行算子计算任务,
响应于检测到所述第一算子计算流与所述第二算子计算流的相似度大于或等于第一预设值时,执行算子计算任务,即启用算力人工智能算力执行模块和深度学习模块多线程执行算子计算任务,示例性的,如图5所示,当深度学习模块中的算子计算流与AI算力执行模块中的算子计算流一致时,相比于图2所示的算子计算流不一致的情况,任务一与任务二的开始执行时间与结束时间相同,当深度学习模块调用任务二的结果时,因为此时AI算力执行模块已完成任务二的计算并回传给了深度学习模块,所以深度学习模块能够得到正确的任务二的结果,依此类推,整个模型的算子计算任务,深度学习模块都能够得到正确的结果,从而解决了模型训练期间,由于算子计算流不一致引起的梯度弥散问题。
在一些具体实施方式中,在所述算子计算任务执行完成之后,所述方法还包括:
当算子计算任务都被执行完毕后,利用算子计算流销毁子单元将深度学习模块和人工智能算力执行模块解除绑定,并销毁人工智能算力执行模块的算子计算流和流池,以将占用的资源释放,避免资源的浪费。
在上述实施方式中,在算子计算任务执行完毕后,将占用的资源进行回收,可以更安全有效地调用资源,避免资源的浪费。
上述算子计算流管理方法中,所述方法包括:响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理,本申请通过将深度学习模块的算子计算流与人工智能算力执行模块的算子计算流进行统一化处理,很好地保证了真正算子执行时间与深度学习模块的一致性,从而解决了因算子执行时间不同步引起的获取不到正确计算结果导致出现整个模型的训练梯度弥散现象的问题,有效降低***开销,提高算子计算效率。
应该理解的是,虽然图4-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种算子计算流管理装置,包括:第一算子计算流获取模块、统一化处理模块和计算流管理模块,其中:
第一算子计算流获取模块,用于在检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
统一化处理模块,用于在检测到所述第一算子计算流时,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
计算流管理模块,用于基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
作为一种较优的实施方式,本发明实施例中,所述第一算子计算流获取模块具体用于:
响应于检测到所述深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中深度学习模型的模型文件;
对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流。
作为一种较优的实施方式,本发明实施例中,所述第一算子计算流获取模块具体还用于:
基于编译器对所述深度学习模型的模型文件进行解析,得到目标算子序列;
根据所述目标算子序列对应的深度学习模型的执行顺序,对所述目标算子序列进行排序,得到所述深度学习模块中算子计算流的算子执行顺序;
基于所述算子计算流的算子执行顺序,获取所述第一算子计算流。
作为一种较优的实施方式,本发明实施例中,所述装置还包括判断模块,所述判断模块具体用于:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测所述算力执行模块中是否存在目标算子计算流;
响应于检测到存在所述目标算子计算流,则定义所述目标算子计算流为所述第二算子计算流;
响应于检测到不存在所述目标算子计算流,则利用流池初始化子单元构建流池,并对所述流池进行初始化处理,以确定所述第二算子计算流。
作为一种较优的实施方式,本发明实施例中,所述判断模块具体用于:
基于预设映射表,确定所述流池的预设大小为N;
根据所述流池的预设大小,申请硬件设备模块中的硬件设备资源,并将所述硬件设备资源分配给对应的流,生成所述流池。
作为一种较优的实施方式,本发明实施例中,所述判断模块具体还用于:
对所述硬件设备资源对应的流进行标识编号,生成第一标识编号,所述第一标识编号依次为M至N-1,其中,N-1大于或等于M,并定义所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致;
基于目标第一标识编号与对应硬件设备资源的流,生成映射关系,预存于已构建的流池中,以完成对所述流池的初始化处理。
作为一种较优的实施方式,本发明实施例中,所述判断模块具体还用于:
获取多个第一标识编号与对应硬件设备资源的流的映射关系;
选取所述映射关系中第一标识编号为M对应的目标硬件设备资源的流,定义所述目标硬件设备资源的流为所述第二算子计算流。
作为一种较优的实施方式,本发明实施例中,所述统一化处理模块具体用于:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测流池是否初始化成功;
响应于检测到所述流池初始化成功时,基于流池初始化处理结果,获取所述第二算子计算流;
响应于检测到所述流池初始化未成功时,利用流池初始化子单元对所述流池进行初始化处理,以确定所述第二算子计算流。
作为一种较优的实施方式,本发明实施例中,所述装置还包括比较模块,所述比较模块具体用于:
将所述人工智能算力执行模块中的第二算子计算流回传至所述深度学习模块,并在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流;
基于比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理。
作为一种较优的实施方式,本发明实施例中,所述比较模块具体还用于:
分别获取所述第一算子计算流对应的第一内存地址以及所述第二算子计算流对应的第二内存地址;
比较所述第一内存地址和所述第二内存地址之间的相似度;
基于所述相似度,确定目标比较结果。
作为一种较优的实施方式,本发明实施例中,所述比较模块具体还用于:
响应于检测到所述相似度大于或等于第一预设值时,对所述第一算子计算流和所述第二算子计算流不进行统一化处理;
响应于检测到所述相似度小于第一预设值时,对所述第一算子计算流和所述第二算子计算流进行统一化处理。
作为一种较优的实施方式,本发明实施例中,所述统一化处理模块具体还用于:
响应于检测到所述相似度小于第一预设值时,利用算子计算流处理子单元将所述第一算子计算流替换所述第二算子计算流作为人工智能算力执行模块的目标算子计算流。
作为一种较优的实施方式,本发明实施例中,所述计算流管理模块具体用于:
响应于检测到所述第一算子计算流与所述第二算子计算流的相似度大于或等于第一预设值时,执行算子计算任务。
作为一种较优的实施方式,本发明实施例中,所述装置还包括解绑销毁模块,所述解绑销毁模块具体用于:
利用算子计算流销毁子单元将深度学习模块和人工智能算力执行模块解除绑定,并销毁人工智能算力执行模块的算子计算流和流池。
关于算子计算流管理装置的具体限定可以参见上文中对于算子计算流管理方法的限定,在此不再赘述。上述算子计算流管理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种算子计算流管理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
S1:响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
S2:响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
S3:基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于检测到所述深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中深度学习模型的模型文件;
对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
基于编译器对所述深度学习模型的模型文件进行解析,得到目标算子序列;
根据所述目标算子序列对应的深度学习模型的执行顺序,对所述目标算子序列进行排序,得到所述深度学习模块中算子计算流的算子执行顺序;
基于所述算子计算流的算子执行顺序,获取所述第一算子计算流。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测所述算力执行模块中是否存在目标算子计算流;
响应于检测到存在所述目标算子计算流,则定义所述目标算子计算流为所述第二算子计算流;
响应于检测到不存在所述目标算子计算流,则利用流池初始化子单元构建流池,并对所述流池进行初始化处理,以确定所述第二算子计算流。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
基于预设映射表,确定所述流池的预设大小为N;
根据所述流池的预设大小,申请硬件设备模块中的硬件设备资源,并将所述硬件设备资源分配给对应的流,生成所述流池。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
对所述硬件设备资源对应的流进行标识编号,生成第一标识编号,所述第一标识编号依次为M至N-1,其中,N-1大于或等于M,并定义所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致;
基于目标第一标识编号与对应硬件设备资源的流,生成映射关系,预存于已构建的流池中,以完成对所述流池的初始化处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取多个第一标识编号与对应硬件设备资源的流的映射关系;
选取所述映射关系中第一标识编号为M对应的目标硬件设备资源的流,定义所述目标硬件设备资源的流为所述第二算子计算流。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测流池是否初始化成功;
响应于检测到所述流池初始化成功时,基于流池初始化处理结果,获取所述第二算子计算流;
响应于检测到所述流池初始化未成功时,利用流池初始化子单元对所述流池进行初始化处理,以确定所述第二算子计算流。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将所述人工智能算力执行模块中的第二算子计算流回传至所述深度学习模块,并在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流;
基于比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
分别获取所述第一算子计算流对应的第一内存地址以及所述第二算子计算流对应的第二内存地址;
比较所述第一内存地址和所述第二内存地址之间的相似度;
基于所述相似度,确定目标比较结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于检测到所述相似度大于或等于第一预设值时,对所述第一算子计算流和所述第二算子计算流不进行统一化处理;
响应于检测到所述相似度小于第一预设值时,对所述第一算子计算流和所述第二算子计算流进行统一化处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于检测到所述相似度小于第一预设值时,利用算子计算流处理子单元将所述第一算子计算流替换所述第二算子计算流作为人工智能算力执行模块的目标算子计算流。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于检测到所述第一算子计算流与所述第二算子计算流的相似度大于或等于第一预设值时,执行算子计算任务。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
利用算子计算流销毁子单元将深度学习模块和人工智能算力执行模块解除绑定,并销毁人工智能算力执行模块的算子计算流和流池。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
S1:响应于检测到深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中的第一算子计算流;
S2:响应于检测到所述第一算子计算流,获取人工智能算力执行模块中的第二算子计算流,并对所述第一算子计算流和所述第二算子计算流进行统一化处理;
S3:基于统一化处理结果,确定是否执行算子计算任务,以实现对算子计算流的管理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应于检测到所述深度学习模块的算子计算任务执行指令时,获取所述深度学习模块中深度学习模型的模型文件;
对所述深度学习模型的模型文件进行解析,获取所述深度学习模块中的第一算子计算流。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于编译器对所述深度学习模型的模型文件进行解析,得到目标算子序列;
根据所述目标算子序列对应的深度学习模型的执行顺序,对所述目标算子序列进行排序,得到所述深度学习模块中算子计算流的算子执行顺序;
基于所述算子计算流的算子执行顺序,获取所述第一算子计算流。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测所述算力执行模块中是否存在目标算子计算流;
响应于检测到存在所述目标算子计算流,则定义所述目标算子计算流为所述第二算子计算流;
响应于检测到不存在所述目标算子计算流,则利用流池初始化子单元构建流池,并对所述流池进行初始化处理,以确定所述第二算子计算流。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于预设映射表,确定所述流池的预设大小为N;
根据所述流池的预设大小,申请硬件设备模块中的硬件设备资源,并将所述硬件设备资源分配给对应的流,生成所述流池。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
对所述硬件设备资源对应的流进行标识编号,生成第一标识编号,所述第一标识编号依次为M至N-1,其中,N-1大于或等于M,并定义所述第一标识编号与所述算子计算流管理单元中的算子计算流对应的第二标识编号保持一致;
基于目标第一标识编号与对应硬件设备资源的流,生成映射关系,预存于已构建的流池中,以完成对所述流池的初始化处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取多个第一标识编号与对应硬件设备资源的流的映射关系;
选取所述映射关系中第一标识编号为M对应的目标硬件设备资源的流,定义所述目标硬件设备资源的流为所述第二算子计算流。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应于检测到所述第一算子计算流,通过算子计算流获取子单元检测流池是否初始化成功;
响应于检测到所述流池初始化成功时,基于流池初始化处理结果,获取所述第二算子计算流;
响应于检测到所述流池初始化未成功时,利用流池初始化子单元对所述流池进行初始化处理,以确定所述第二算子计算流。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将所述人工智能算力执行模块中的第二算子计算流回传至所述深度学习模块,并在所述深度学习模块中比较所述第一算子计算流与所述第二算子计算流;
基于比较结果,确定是否对所述第一算子计算流和所述第二算子计算流进行统一化处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
分别获取所述第一算子计算流对应的第一内存地址以及所述第二算子计算流对应的第二内存地址;
比较所述第一内存地址和所述第二内存地址之间的相似度;
基于所述相似度,确定目标比较结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应于检测到所述相似度大于或等于第一预设值时,对所述第一算子计算流和所述第二算子计算流不进行统一化处理;
响应于检测到所述相似度小于第一预设值时,对所述第一算子计算流和所述第二算子计算流进行统一化处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应于检测到所述相似度小于第一预设值时,利用算子计算流处理子单元将所述第一算子计算流替换所述第二算子计算流作为人工智能算力执行模块的目标算子计算流。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
响应于检测到所述第一算子计算流与所述第二算子计算流的相似度大于或等于第一预设值时,执行算子计算任务。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
利用算子计算流销毁子单元将深度学习模块和人工智能算力执行模块解除绑定,并销毁人工智能算力执行模块的算子计算流和流池。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。