任务处理方法、装置、电子设备以及存储介质与流程
未命名
08-12
阅读:129
评论:0
1.本公开涉及人工智能技术领域,尤其涉及深度学习技术领域。具体涉及一种任务处理方法、装置、电子设备以及存储介质。
背景技术:
2.随着深度学习技术在各个技术领域的普及和应用,深度学习框架需要解决的任务也更加复杂。而作为深度学习框架的运算的实际承载对象,算子需要实现的运算功能也更加复杂。
技术实现要素:
3.本公开提供了一种任务处理方法、装置、电子设备以及存储介质。
4.根据本公开的一方面,提供了一种任务处理方法,包括:响应于任务处理请求,对于上述任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与上述高阶微分运算操作对应的组合算子,其中,上述高阶微分运算操作表示二阶或二阶以上的微分运算操作;以及调用执行器运行上述组合算子的执行代码,处理上述高阶微分运算操作。
5.根据本公开的另一方面,提供了一种任务处理装置,包括:第一确定模块,用于响应于任务处理请求,对于上述任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与上述高阶微分运算操作对应的组合算子,其中,上述高阶微分运算操作表示二阶或二阶以上的微分运算操作;以及第一处理模块,用于调用执行器运行上述组合算子的执行代码,处理上述高阶微分运算操作。
6.根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。
7.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如上所述的方法。
8.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。
9.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
10.附图用于更好地理解本方案,不构成对本公开的限定。其中:
11.图1示意性示出了根据本公开实施例的可以应用任务处理方法及装置的示例性系统架构。
12.图2示意性示出了根据本公开实施例的任务处理方法的流程图。
13.图3示意性示出了根据本公开实施例的第一运算操作的运算图的示意图。
14.图4示意性示出了根据本公开实施例的算子拆分流程的示意图。
15.图5示意性示出了根据本公开另一实施例的算子拆分流程的示意图。
16.图6示意性示出了根据本公开实施例的任务处理装置的框图。
17.图7示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
18.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
19.在与科学计算相关的深度学习任务中,一般需要处理大量的高阶微分运算。对于深度学习框架,则需要提供相应的算子为高阶微分运算提供支持,使得深度学习框架的维护成本不断提高。
20.为了降低类似自动高阶微分这样功能框架的支持成本,业界提出了使用基础算子体系的方案,即利用基础算子体系简化复杂的高阶微分运算。如何高效、合理地将基础算子体系融入深度学习框架执行体系,对于实现深度学习框架对类似自动高阶微分功能的支持十分重要。
21.而在相关技术中,对于基础算子体系的应用普遍为单一的拆分方案,即对于给定的算子要么拆分,要么不拆分,无法根据具体的任务、框架的算子拆分策略、硬件提供的算子情况等因素进行动态决定是否拆分和如何拆分。例如,jax会在运算图前向组网的时候,将大部分算子拆分为基础算子。如要求解softmax的自动微分,jax会将softmax算子拆分成exp/max/div/sum/sub基础算子组成的运算图,然后在这个运算图上添加基础算子的反向算子exp_grad/max_grad/div_grad/sum_grad/sub_grad,其中基础算子的反向算子会继续拆解为基础算子的表示,如exp_grad可以用exp表示。如果是求二阶微分,那么只需要在基础算子的运算图上在运用一次上诉反向变换的过程即可。再例如,pytorch的动态执行模式,不会拆解算子(如softmax)的前向,但会将一些算子的一阶反向算子(softmax_grad)拆分为更加基础的算子。然后可以继续求解二阶微分。
22.相关技术中的方案都倾向于将算子粒度拆分得比较小,导致执行速度变慢、显存占用增加,在很多场景下并不是最优的。如果将所有的一阶微分算子利用基础算子进行简化,那么在动态图模式下执行传统的深度学习任务时,则会因为基础算子的实现的微分逻辑会引入更多算子调用和中间变量生成,导致性能很差,显存开销过大。
23.有鉴于此,本公开的实施例提供了一种任务处理方法、装置、电子设备以及存储介质,可以自动根据需要选择进行使用基础算子简化高阶微分计算的方式,从而灵活的为框架提供高效的高阶自动微分的能力,从而可以至少部分地克服相关技术中存在的问题。该任务处理方法包括:响应于任务处理请求,对于任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与高阶微分运算操作对应的组合算子。高阶微分运算操作表示二阶或二阶以上的微分运算操作。调用执行器运行组合算子的执行代码,处理高阶微分运算操作。
24.图1示意性示出了根据本公开实施例的可以应用任务处理方法及装置的示例性系统架构。
25.需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。例如,在另一实施例中,可以应用任务处理方法及装置的示例性系统架构可以包括终端设备,但终端设备可以无需与服务器进行交互,即可实现本公开实施例提供的任务处理方法及装置。
26.如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
27.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
28.服务器105可以是提供各种服务的服务器,也可以是云服务器等,在此不作限定。
29.需要说明的是,本公开实施例所提供的任务处理方法一般可以由服务器105执行。相应地,本公开实施例所提供的任务处理装置也可以设置于服务器105中。
30.例如,用户可以通过终端设备101、102、103中的任意一个(例如,终端设备101)来输入深度学习模型,终端设备101可以将深度学习模型处理成深度学习任务,并发送通过网络104发送给服务器105。服务器105可以调用处理器资源,使用本公开实施例提供的任务处理方法,确定任务执行模式,有选择地针对深度学习任务中包括的高阶微分算子进行拆分,从而完成对深度学习任务的处理。服务器105可以将任务处理结果返回给终端设备101,以便终端设备101将任务处理结果向用户进行展示。
31.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
32.在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
33.在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
34.图2示意性示出了根据本公开实施例的任务处理方法的流程图。
35.如图2所示,该方法200包括操作s210~s220。
36.在操作s210,响应于任务处理请求,对于任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与高阶微分运算操作对应的组合算子。
37.在操作s220,调用执行器运行组合算子的执行代码,处理高阶微分运算操作。
38.根据本公开的实施例,任务处理请求可以是由前端设备基于任意的通信协议发送的请求报文。任意的通信协议例如可以是http协议(hypertext transfer protocol,超文本传输协议)、ftp协议(file transfer protocol,文本传输协议)等。任务处理请求可以包括请求行、请求头、请求体等部分。请求行可以包括请求方法、采用的通信协议及版本等信息。请求头可以包括前端设备的信息。请求体可以包括前端设备发送的数据,例如包括多个运算操作等。
39.根据本公开的实施例,多个运算操作可以属于一个深度学习任务。深度学习任务可以表示为使用深度学习框架完成用户意图的任务。用户意图可以表示为用户通过前端设备输入的待处理的深度学习模型。深度学习模型可以包括基于任意的模型架构来实现的模型。任意的模型架构例如可以包括resnet(residual network,残差网络)、dcnn(dynamic convolution neural network,深度卷积神经网络)等。深度学习模型可以包括用于实现各种功能的模型。各种功能例如可以包括分类、回归、聚类、异常检测等。具体地,深度学习模型可以是针对各类对象进行功能实现的模型,如音频生成模型、图像识别模型等,相应的,处理深度学习任务得到的结果可以是音频数据、图像识别结果等。每个运算操作可以表示为与深度学习任务对应的深度学习模型的一个网络层所实现的操作。例如,与深度学习任务对应的深度学习模型可以是resnet,则resnet的多个网络层可以和多个运算操作分别对应。
40.根据本公开的实施例,高阶微分运算操作可以表示二阶或二阶以上的微分运算操作。例如,对于前向运算操作softmax,其二阶反向运算操作softmax_grad_grad,或三阶反向运算操作softmax_grad_grad_grad均可以视为高阶微分运算操作。
41.根据本公开的实施例,基于是否对高阶微分运算操作进行拆分,与高阶微分运算操作对应的组合算子可以是框架算子,也可以是基础算子的组合。
42.根据本公开的实施例,组合算子的执行代码可以指与组合算子相关的机器码,如二进制编码。电子设备可以通过执行器来运行机器码,实现对电子设备包括的cpu(central processing unit,中央处理器)、gpu(graphics processing unit,图形处理器)、内存等硬件设施的电平状态的控制,从而控制上述硬件设施完成运算操作。执行代码可以通过对组合算子的源代码进行编译而得到。执行器可以是cpu、gpu等处理器中配置的机器码执行装置,可以与开关组等设备组合,将机器码翻译为电平信号的变化。或者,执行器也可以是cpu、gpu等处理器中配置的开关设备,在此不作限定。
43.根据本公开的实施例,在需要处理包括高阶微分运算操作的深度学习任务时,可以确定与高阶微分运算操作对应的组合算子,调用执行器运行该组合算子的执行代码,可以完成对高阶微分运算操作的处理。在对高阶微分运算操作的处理过程中,可以根据实际运行的情况来确定是否使用基础算子体系,从而可以提高运算操作处理的灵活性。
44.下面参考图3~图5,结合具体实施例对图2所示的方法做进一步说明。
45.根据本公开的实施例,多个运算操作的执行模式可以为动态图执行模式。
46.根据本公开的实施例,在动态图执行模式下,在进行高阶微分运算操作的处理时,可以采取优先使用高阶的大粒度算子,当缺少高阶的大粒度算子时,再回退到基础算子组合的执行策略。具体地,对于每个高阶微分运算操作,可以将该高阶微分运算操作分别与算子库包括的多个框架算子进行匹配。在算子库中存在与高阶微分运算操作匹配的框架算子的情况下,可以确定存在高阶的大粒度算子,即该框架算子。相应地,可以确定该框架算子即为与该高阶微分运算操作对应的组合算子。
47.根据本公开的实施例,在算子库包括的多个框架算子均与高阶微分运算操作不匹配的情况下,可以确定缺少高阶的大粒度算子。由于在动态图执行模式下,处理高阶微分运算操作时,与该高阶微分运算操作相关的前向运算操作及低阶反向运算操作均已完成,而动态图执行模式下运算操作的执行不会生成序列化的运算图。因此,可以采用回退的方式
来确定与该高阶微分运算操作对应的组合算子。具体地,可以确定与高阶微分运算操作相关的第一运算操作。基于第一运算操作,生成与高阶微分运算操作对应的组合算子。
48.根据本公开的实施例,与高阶微分运算操作相关的第一运算操作可以包括与该高阶微分运算操作相关的其他阶数的运算操作,具体地,第一运算操作可以是前向运算操作或至少一个低阶微分运算操作中的任意一个低阶微分运算操作。低阶微分运算操作表示的微分运算操作的阶数低于高阶微分运算操作表示的微分运算操作的阶数。
49.例如,该高阶微分运算操作为三阶微分运算操作,则低阶运算操作可以包括与该高阶微分运算操作对应的运算的一阶微分运算操作和二阶微分运算操作。相应的,与该高阶微分运算操作相关的第一运算操作可以指与该高阶微分运算操作对应的运算的前向运算操作、一阶微分运算操作和二阶微分运算操作中的任意一个。
50.根据本公开的实施例,基于第一运算操作,生成与高阶微分运算操作对应的组合算子可以通过重计算的方式来实现。重计算可以按单个算子为单位,使用基础算子组成算子的前向运算图和反向运算图。具体地,可以通过重计算,确定第一运算操作的运算图。基于运算图,将第一运算操作拆分为多个基础算子。基于多个基础算子各自的高阶微分结果,得到与高阶微分操作对应的组合算子。
51.根据本公开的实施例,第一运算操作的运算图可以表示为由多个基础算子排列组合构成的序列化的图。运算图中可以包括多个节点和节点之间的有向线段,节点可以表示基础算子,节点之间的有向线段可以表示基础算子之间的执行顺序。
52.图3示意性示出了根据本公开实施例的第一运算操作的运算图的示意图。
53.如图3所示,第一运算操作例如可以是softmax操作,通过重计算得到的softmax操作的运算图依序可以包括基础算子exp、基础算子sum和基础算子div。softmax_c可以表示为该运算图,也可以表示为第一运算操作的微分运算使用基础算子组合实现。
54.根据本公开的实施例,基于运算图,将第一运算操作拆分为多个基础算子,即是对运算图包括的基础算子进行去重处理,以得到该第一运算操作拆分得到的基础算子。例如,运算操作a的运算图依序可以包括基础算子a1、基础算子a2、基础算子a3、基础算子a2和基础算子a1。则对该运算图包括的基础算子进行去重后,得到的运算操作a拆分得到的基础算子包括基础算子a1、基础算子a2和基础算子a3。
55.根据本公开的实施例,可以通过不断调用框架的自动微分逻辑,重计算基于基础算子的微分结果到高阶微分运算操作的组合实现。具体地,可以通过高阶微分的微分规则,确定高阶微分运算操作的实现所涉及的基础算子及基础算子的微分结果,再根据涉及的的基础算子及基础算子的微分结果来组合得到高阶微分运算操作的组合算子。
56.根据本公开的实施例,第一运算操作可以从对应的运算的前向运算操作和低阶微分运算操作中随机选择得到。作为一种可选实施方式,为了减少计算量,回退可以优先拆分和重计算反向算子的运算图,当深度学习框架不提供反向算子的运算图,或该反向算子的运算图不满足回退需求的情况下,可以进一步拆分和重计算前向算子的运算图。具体地,可以基于前向运算操作或至少一个低阶微分运算操作各自的微分运算操作的阶数由高阶至低阶的顺序,对于前向运算操作和至少一个低阶微分运算操作中的每个运算操作,在运算操作满足第一预设条件的情况下,确定运算操作为第一运算操作。
57.根据本公开的实施例,前向运算操作的微分运算操作的阶数可以表示为零阶,以
便进行回退顺序的排序。
58.根据本公开的实施例,例如,在对三阶微分运算操作进行拆分时,可以优先拆分和重计算对应的二阶微分运算操作的运算图。在确定二阶微分运算操作不满足第一预设条件的情况下,可以跳过该二阶微分运算操作,选择拆分和重计算对应的一阶微分运算操作的运算图,以此类推。
59.根据本公开的实施例,第一预设条件可以包括算子库中不存在与运算操作对应的框架算子。即在算子库中不存在与前向运算操作对应的算子,或与低阶微分运算操作对应的算子时,需要进行额外地对与前向运算操作对应的算子或与低阶微分运算操作对应的算子的拆分操作,从而带来性能的损耗。因此,在算子库中不存在对应的框架算子的情况下,可以暂时不对该运算操作进行回退处理。
60.根据本公开的实施例,第一预设条件也可以包括拆分运算操作得到的基础算子的数量低于预设数量。该预设数量可以与高阶微分运算操作相关。例如,基于微分规则确定高阶微分运算操作b至少需要基础算子b1、基础算子b2和基础算子b3的高阶微分结果组合得到,与预设数量为3。而低阶微分运算操作c的运算图中涉及的基础算子为基础算子b2和基础算子b3,即拆分运算操作得到的基础算子的数量为2,该数量低于预设数量,即该低阶微分运算操作的运算图无法提供基础算子b1的相关信息,进而也无法提供基础算子b1的高阶微分结果。因此,基于该低阶微分运算操作c的运算图,无法满足高阶微分运算操作b的回退需求。
61.以下结合图4,对动态图执行模式下的算子拆分流程作进一步的说明书。
62.图4示意性示出了根据本公开实施例的算子拆分流程的示意图。
63.如图4所示,多个运算操作可以包括前向运算操作add、tanh和softmax,一阶反向运算操作add_g、tanh_g和softmax_g,二阶反向运算操作add_g_g、tanh_g_g和softmax_g_g。
64.根据本公开的实施例,在动态图执行模式下,可以依次执行运算操作add、tanh、softmax、softmax_g、tanh_g、add_g、add_g_g、tanh_g_g和softmax_g_g。add和tanh可以表示为基础算子,tanh_g、add_g、add_g_g和tanh_g_g可以通过深度学习框架的自动微分功能生成。softmax和softmax_g可以是算子库中已存在的框架算子。因此,softmax和softmax_g在执行时,可以直接从算子库中调用相应的框架算子。
65.根据本公开的实施例,在执行至二阶反向运算操作softmax_g_g时,由于算子库中不存在对应的框架算子,因此,需要进行回退操作,以实现对二阶反向运算操作softmax_g_g的拆分。
66.根据本公开的实施例,优选地,可以基于softmax_g的运算图来完成回退操作。一阶反向运算操作softmax_g的运算图例如可以包括基础算子exp和基础算子div,而基于二阶微分的原理,二阶反向运算操作softmax_g_g的实现还需要基础算子sum的参与,因此可以确定基于softmax_g的运算图无法完成回退操作。此时可以基于softmax的运算图来完成回退操作。softmax的运算图可以包括基础算子exp、基础算子sum和基础算子div,与二阶反向运算操作softmax_g_g的实现需求。
67.根据本公开的实施例,在回退得到基础算子exp、基础算子sum和基础算子div之后,可以分别根据基础算子exp、基础算子sum和基础算子div各自的二阶微分结果来得到
softmax_g_g的组合实现,即softmax_g_g的组合算子。
68.根据本公开的实施例,多个运算操作的执行模式还可以是静态图执行模式。
69.根据本公开的实施例,在多个运算操作的执行模式为静态图执行模式下,确定与多个运算操作中的第二运算操作对应的目标算子。基于与多个运算操作中的高阶微分运算操作对应的组合算子和与多个运算操作中的第二运算操作对应的目标算子,生成静态图。确定静态图的目标执行代码。调用执行器运行目标执行代码,处理多个运算操作。
70.根据本公开的实施例,第二运算操作可以包括多个运算操作中的非高阶微分运算操作。例如,多个运算操作可以包括多个前向运算操作、多个一阶反向运算操作和多个二阶反向运算操作,则第二运算操作可以指多个前向运算操作和多个一阶反向运算操作。
71.根据本公开的实施例,与第二运算操作对应的目标算子可以是对第二运算操作进行拆分后得到的基础算子的组合。
72.根据本公开的实施例,在静态图执行模式下,由于可以在执行之前获取到运算图,因此可以通过多次遍历计算的方式,选择最优的组合方法。因此,可以使用神经网络编译器来实现多种组合方式的遍历,得到多种执行代码,再基于多种执行代码各自的性能指标,来确定最优的组合方法。执行代码的性能指标例如可以是硬件资源的消耗数据,包括但不限于处理器核的占用数量、内存的占用量、寄存器的占用量等。具体地,确定静态图的目标执行代码可以包括如下操作:
73.调用执行器处理静态图的第一执行代码,得到第一资源消耗数据;利用神经网络编译器处理静态图,得到第二执行代码;调用执行器处理静态图的第二执行代码,得到第二资源消耗数据;以及基于第一资源消耗数据和第二资源消耗数据,从第一执行代码和第二执行代码中确定目标执行代码。
74.根据本公开的实施例,可以比较第一资源消耗数据和第二资源消耗数据之间的大小,在第一资源消耗数据较小时,可以确定第一执行代码为目标执行代码。进一步地,利用神经网络编译器处理静态图后,可以得到多个第二执行代码,此时,可以确定第一执行代码和多个第二执行代码各自的资源消耗数据中的最小资源消耗数据所对应的执行代码即为目标执行代码。
75.根据本公开的实施例,对于多个运算操作,无论执行模式为动态图执行模式或静态图执行模式,均可以通过预先配置或参数出入的方式来决定是否对算子进行拆分。具体地,对于每个运算操作,在运算操作满足第二预设条件的情况下,将运算操作拆分为多个基础算子。调用执行器依次运行多个基础算子各自的执行代码,处理运算操作。
76.根据本公开的实施例,第二预设条件例如可以包括各种人为预设的规则条件。
77.例如,第二预设条件可以包括与运算操作对应的标识字段的值为第一预设值,即人为配置的该标识字段的值为第一预设值。该标识字段例如可以是flag字段。第一预设值可以根据具体应用场景进行设置,在此不作限定。
78.再例如,第二预设条件可以包括处理任务处理请求的电子设备包括预设型号的硬件设施。预设型号的硬件设施可以与运算操作相关。即可以根据深度学习框架中配置的算子与硬件设施的适配情况,确定是否进行算子的拆分,具体的,运算操作d的算子与型号为e的硬件设施适配,则在电子设备包括该型号为e的硬件设施时,可以任务运算操作d满足第二预设条件。
79.又例如,第二预设条件可以表示为控制列表中包括该运算操作。控制列表可以表示为一张黑白名单。控制列表中包括该运算操作,可以表示为该运算操作位于该黑白名单的黑名单之内。
80.根据本公开的实施例,第二预设条件也可以通过传入的参数来设置。具体地,在计算高阶微分时通常需要调用类似grad、autograd等微分接口。因此,可以通过使用此类接口的接口参数来进行是否拆分算子的控制。如果有求解超过一阶微分的诉求时,可以使用基础算子来替换原有的融合的一阶微分运算,从而使得该部分逻辑支持高阶微分。例如,第二预设条件可以包括与运算操作对应的接口参数的值为第二预设值。
81.图5示意性示出了根据本公开另一实施例的算子拆分流程的示意图。
82.如图5所示,在进行运算操作add、tanh和softmax的处理时,可以依次检测每个运算操作是否满足第二预设条件。例如,在softmax满足第二预设条件时,可以对该运算操作softmax进行拆分,得到基础算子exp、基础算子sum和基础算子div。相应的,一阶反向算子softmax_g也可以满足第二预设条件,则可以将该一阶反向算子softmax_g进行拆分,得到基础算子反向组合exp_g_c、基础算子反向组合sum_g_c和基础算子反向组合div_g_c。
83.根据本公开的实施例,任务处理方法可以由单个设备,如cpu等实现。作为一种可选实施方式,任务处理方法也可以由多个设备联合实现。多个设备例如可以是cpu和处理设备。该处理设备例如可以是gpu。在多个设备联合实现的场景下,调用执行器运行组合算子的执行代码,处理高阶微分运算操作可以包括如下操作:
84.向处理设备发送组合算子的执行代码,其中,处理设备被配置为调用执行器运行组合算子的执行代码,处理高阶微分运算操作。
85.根据本公开的实施例,通过如上所述的任务处理方法,可以降低高阶微分功能的实现成本,仅仅需要对所有运算的一阶微分利用基础算子实现相应规则。同时也可以高性能地实现动态图的低阶微分,对于低阶微分可以使用融合的高性能反向算子。此外,也可以实现动态图高阶微分按环境切换,可以在执行高阶微分的情况下利用基础算子支持高阶自动微分。
86.图6示意性示出了根据本公开实施例的任务处理装置的框图。
87.如图6所示,任务处理装置600可以包括第一确定模块610和第一处理模块620。
88.第一确定模块610,用于响应于任务处理请求,对于任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与高阶微分运算操作对应的组合算子,其中,高阶微分运算操作表示二阶或二阶以上的微分运算操作。
89.第一处理模块620,用于调用执行器运行组合算子的执行代码,处理高阶微分运算操作。
90.根据本公开的实施例,第一确定模块610包括第一确定单元和第二确定单元。
91.第一确定单元,用于对于每个高阶微分运算操作,在算子库包括的多个框架算子均与高阶微分运算操作不匹配的情况下,确定与高阶微分运算操作相关的第一运算操作。
92.第二确定单元,用于基于第一运算操作,生成与高阶微分运算操作对应的组合算子。
93.根据本公开的实施例,第二确定单元包括第一确定子单元、第二确定子单元和第三确定子单元。
94.第一确定子单元,用于通过重计算,确定第一运算操作的运算图。
95.第二确定子单元,用于基于运算图,将第一运算操作拆分为多个基础算子。
96.第三确定子单元,用于基于多个基础算子各自的高阶微分结果,得到与高阶微分操作对应的组合算子。
97.根据本公开的实施例,第一运算操作为前向运算操作或至少一个低阶微分运算操作中的任意一个低阶微分运算操作,其中,低阶微分运算操作表示的微分运算操作的阶数低于高阶微分运算操作表示的微分运算操作的阶数。
98.根据本公开的实施例,任务处理装置600还包括第二确定模块。
99.第二确定模块,用于基于前向运算操作或至少一个低阶微分运算操作各自的微分运算操作的阶数由高阶至低阶的顺序,对于前向运算操作和至少一个低阶微分运算操作中的每个运算操作,在运算操作满足第一预设条件的情况下,确定运算操作为第一运算操作,其中,前向运算操作的微分运算操作的阶数表示为零阶。
100.根据本公开的实施例,第一预设条件包括:算子库中不存在与运算操作对应的框架算子。或者拆分运算操作得到的基础算子的数量低于预设数量,其中,预设数量与高阶微分运算操作相关。
101.根据本公开的实施例,任务处理装置600还包括第三确定模块。
102.第三确定模块,用于在算子库中存在与高阶微分运算操作匹配的目标框架算子的情况下,确定目标框架算子为与高阶微分运算操作对应的组合算子。
103.根据本公开的实施例,多个运算操作的执行模式为动态图执行模式。
104.根据本公开的实施例,任务处理装置600还包括第四确定模块、生成模块、第五确定模块和第二处理模块。
105.第四确定模块,用于在多个运算操作的执行模式为静态图执行模式下,确定与多个运算操作中的第二运算操作对应的目标算子,其中,第二运算操作包括多个运算操作中的非高阶微分运算操作。
106.生成模块,用于基于与多个运算操作中的高阶微分运算操作对应的组合算子和与多个运算操作中的第二运算操作对应的目标算子,生成静态图。
107.第五确定模块,用于确定静态图的目标执行代码。
108.第二处理模块,用于调用执行器运行目标执行代码,处理多个运算操作。
109.根据本公开的实施例,第五确定模块包括第三确定单元、第四确定单元、第五确定单元和第六确定单元。
110.第三确定单元,用于调用执行器处理静态图的第一执行代码,得到第一资源消耗数据。
111.第四确定单元,用于利用神经网络编译器处理静态图,得到第二执行代码。
112.第五确定单元,用于调用执行器处理静态图的第二执行代码,得到第二资源消耗数据。
113.第六确定单元,用于基于第一资源消耗数据和第二资源消耗数据,从第一执行代码和第二执行代码中确定目标执行代码。
114.根据本公开的实施例,任务处理装置600还包括拆分模块和第三处理模块。
115.拆分模块,用于对于每个运算操作,在运算操作满足第二预设条件的情况下,将运
算操作拆分为多个基础算子。
116.第三处理模块,用于调用执行器依次运行多个基础算子各自的执行代码,处理运算操作。
117.根据本公开的实施例,第二预设条件包括以下任意一项:处理任务处理请求的电子设备包括预设型号的硬件设施,其中,预设型号的硬件设施与运算操作相关。与运算操作对应的标识字段的值为第一预设值。控制列表中包括运算操作。与运算操作对应的接口参数的值为第二预设值。
118.根据本公开的实施例,第一处理模块620包括处理单元。
119.处理单元,用于向处理设备发送组合算子的执行代码,其中,处理设备被配置为调用执行器运行组合算子的执行代码,处理高阶微分运算操作。
120.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
121.根据本公开的实施例,一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上所述的方法。
122.根据本公开的实施例,一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如上所述的方法。
123.根据本公开的实施例,一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如上所述的方法。
124.图7示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
125.如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(rom)702中的计算机程序或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
126.设备700中的多个部件连接至输入/输出(i/o)接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
127.计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如任务处理方法。例如,在一些实施例中,任务处理方法可被实现为计算机软件程序,其
被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到ram 703并由计算单元701执行时,可以执行上文描述的任务处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行任务处理方法。
128.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
129.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
130.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
131.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
132.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
133.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以是分布式系统的服务器,或者是结合了区块链的服务器。
134.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
135.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
技术特征:
1.一种任务处理方法,包括:响应于任务处理请求,对于所述任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与所述高阶微分运算操作对应的组合算子,其中,所述高阶微分运算操作表示二阶或二阶以上的微分运算操作;以及调用执行器运行所述组合算子的执行代码,处理所述高阶微分运算操作。2.根据权利要求1所述的方法,其中,所述对于所述任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与所述高阶微分运算操作对应的组合算子,包括:对于每个所述高阶微分运算操作,在算子库包括的多个框架算子均与所述高阶微分运算操作不匹配的情况下,确定与所述高阶微分运算操作相关的第一运算操作;以及基于所述第一运算操作,生成与所述高阶微分运算操作对应的组合算子。3.根据权利要求2所述的方法,其中,所述基于所述第一运算操作,生成与所述高阶微分运算操作对应的组合算子,包括:通过重计算,确定所述第一运算操作的运算图;基于所述运算图,将所述第一运算操作拆分为多个基础算子;以及基于所述多个基础算子各自的高阶微分结果,得到与所述高阶微分操作对应的组合算子。4.根据权利要求2或3所述的方法,其中,所述第一运算操作为前向运算操作或至少一个低阶微分运算操作中的任意一个低阶微分运算操作,其中,所述低阶微分运算操作表示的微分运算操作的阶数低于所述高阶微分运算操作表示的微分运算操作的阶数。5.根据权利要求4所述的方法,还包括:基于所述前向运算操作或至少一个低阶微分运算操作各自的微分运算操作的阶数由高阶至低阶的顺序,对于所述前向运算操作和所述至少一个低阶微分运算操作中的每个运算操作,在所述运算操作满足第一预设条件的情况下,确定所述运算操作为所述第一运算操作,其中,所述前向运算操作的微分运算操作的阶数表示为零阶。6.根据权利要求5所述的方法,其中,所述第一预设条件包括:所述算子库中不存在与所述运算操作对应的框架算子;或者拆分所述运算操作得到的基础算子的数量低于预设数量,其中,所述预设数量与所述高阶微分运算操作相关。7.根据权利要求2所述的方法,还包括:在所述算子库中存在与所述高阶微分运算操作匹配的目标框架算子的情况下,确定所述目标框架算子为与所述高阶微分运算操作对应的组合算子。8.根据权利要求1~7中任一项所述的方法,其中,所述多个运算操作的执行模式为动态图执行模式。9.根据权利要求1所述的方法,还包括:在所述多个运算操作的执行模式为静态图执行模式下,确定与所述多个运算操作中的第二运算操作对应的目标算子,其中,所述第二运算操作包括所述多个运算操作中的非高阶微分运算操作;基于与所述多个运算操作中的高阶微分运算操作对应的组合算子和与所述多个运算操作中的第二运算操作对应的目标算子,生成静态图;
确定所述静态图的目标执行代码;以及调用执行器运行所述目标执行代码,处理所述多个运算操作。10.根据权利要求9所述的方法,其中,所述确定所述静态图的目标执行代码,包括:调用所述执行器处理所述静态图的第一执行代码,得到第一资源消耗数据;利用神经网络编译器处理所述静态图,得到第二执行代码;调用所述执行器处理所述静态图的第二执行代码,得到第二资源消耗数据;以及基于所述第一资源消耗数据和所述第二资源消耗数据,从所述第一执行代码和所述第二执行代码中确定所述目标执行代码。11.根据权利要求1所述的方法,还包括:对于每个所述运算操作,在所述运算操作满足第二预设条件的情况下,将所述运算操作拆分为多个基础算子;以及调用执行器依次运行所述多个基础算子各自的执行代码,处理所述运算操作。12.根据权利要求11所述的方法,其中,所述第二预设条件包括以下任意一项:处理所述任务处理请求的电子设备包括预设型号的硬件设施,其中,所述预设型号的硬件设施与所述运算操作相关;与所述运算操作对应的标识字段的值为第一预设值;控制列表中包括所述运算操作;以及与所述运算操作对应的接口参数的值为第二预设值。13.根据权利要求1所述的方法,其中,所述调用执行器运行所述组合算子的执行代码,处理所述高阶微分运算操作,包括:向处理设备发送所述组合算子的执行代码,其中,所述处理设备被配置为调用执行器运行所述组合算子的执行代码,处理所述高阶微分运算操作。14.一种任务处理装置,包括:第一确定模块,用于响应于任务处理请求,对于所述任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与所述高阶微分运算操作对应的组合算子,其中,所述高阶微分运算操作表示二阶或二阶以上的微分运算操作;以及第一处理模块,用于调用执行器运行所述组合算子的执行代码,处理所述高阶微分运算操作。15.根据权利要求14所述的装置,其中,所述第一确定模块包括第一确定单元和第二确定单元;所述第一确定单元,用于对于每个所述高阶微分运算操作,在算子库包括的多个框架算子均与所述高阶微分运算操作不匹配的情况下,确定与所述高阶微分运算操作相关的第一运算操作;以及所述第二确定单元,用于基于所述第一运算操作,生成与所述高阶微分运算操作对应的组合算子。16.根据权利要求15所述的装置,其中,所述第二确定单元包括第一确定子单元、第二确定子单元和第三确定子单元;所述第一确定子单元,用于通过重计算,确定所述第一运算操作的运算图;所述第二确定子单元,用于基于所述运算图,将所述第一运算操作拆分为多个基础算
子;以及所述第三确定子单元,用于基于所述多个基础算子各自的高阶微分结果,得到与所述高阶微分操作对应的组合算子。17.根据权利要求15或16所述的装置,其中,所述第一运算操作为前向运算操作或至少一个低阶微分运算操作中的任意一个低阶微分运算操作,其中,所述低阶微分运算操作表示的微分运算操作的阶数低于所述高阶微分运算操作表示的微分运算操作的阶数。18.根据权利要求17所述的装置,还包括第二确定模块;所述第二确定模块,用于基于所述前向运算操作或至少一个低阶微分运算操作各自的微分运算操作的阶数由高阶至低阶的顺序,对于所述前向运算操作和所述至少一个低阶微分运算操作中的每个运算操作,在所述运算操作满足第一预设条件的情况下,确定所述运算操作为所述第一运算操作,其中,所述前向运算操作的微分运算操作的阶数表示为零阶。19.根据权利要求18所述的装置,其中,所述第一预设条件包括:所述算子库中不存在与所述运算操作对应的框架算子;或者拆分所述运算操作得到的基础算子的数量低于预设数量,其中,所述预设数量与所述高阶微分运算操作相关。20.根据权利要求15所述的装置,还包括第三确定模块;所述第三确定模块,用于在所述算子库中存在与所述高阶微分运算操作匹配的目标框架算子的情况下,确定所述目标框架算子为与所述高阶微分运算操作对应的组合算子。21.根据权利要求14~20中任一项所述的装置,其中,所述多个运算操作的执行模式为动态图执行模式。22.根据权利要求14所述的装置,还包括第四确定模块、生成模块、第五确定模块和第二处理模块;所述第四确定模块,用于在所述多个运算操作的执行模式为静态图执行模式下,确定与所述多个运算操作中的第二运算操作对应的目标算子,其中,所述第二运算操作包括所述多个运算操作中的非高阶微分运算操作;所述生成模块,用于基于与所述多个运算操作中的高阶微分运算操作对应的组合算子和与所述多个运算操作中的第二运算操作对应的目标算子,生成静态图;所述第五确定模块,用于确定所述静态图的目标执行代码;以及所述第二处理模块,用于调用执行器运行所述目标执行代码,处理所述多个运算操作。23.根据权利要求22所述的装置,其中,所述第五确定模块包括第三确定单元、第四确定单元、第五确定单元和第六确定单元;第三确定单元,用于调用所述执行器处理所述静态图的第一执行代码,得到第一资源消耗数据;第四确定单元,用于利用神经网络编译器处理所述静态图,得到第二执行代码;第五确定单元,用于调用所述执行器处理所述静态图的第二执行代码,得到第二资源消耗数据;以及第六确定单元,用于基于所述第一资源消耗数据和所述第二资源消耗数据,从所述第一执行代码和所述第二执行代码中确定所述目标执行代码。24.根据权利要求14所述的装置,还包括拆分模块和第三处理模块;
拆分模块,用于对于每个所述运算操作,在所述运算操作满足第二预设条件的情况下,将所述运算操作拆分为多个基础算子;以及第三处理模块,用于调用执行器依次运行所述多个基础算子各自的执行代码,处理所述运算操作。25.根据权利要求24所述的装置,其中,所述第二预设条件包括以下任意一项:处理所述任务处理请求的电子设备包括预设型号的硬件设施,其中,所述预设型号的硬件设施与所述运算操作相关;与所述运算操作对应的标识字段的值为第一预设值;控制列表中包括所述运算操作;以及与所述运算操作对应的接口参数的值为第二预设值。26.根据权利要求14所述的装置,其中,所述第一处理模块包括处理单元;处理单元,用于向处理设备发送所述组合算子的执行代码,其中,所述处理设备被配置为调用执行器运行所述组合算子的执行代码,处理所述高阶微分运算操作。27.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-13中任一项所述的方法。28.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-13中任一项所述的方法。29.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-13中任一项所述的方法。
技术总结
本公开公开了一种任务处理方法、装置、电子设备以及存储介质,涉及人工智能技术领域,尤其涉及深度学习技术领域。具体实现方案为:响应于任务处理请求,对于任务处理请求包括的多个运算操作中的每个高阶微分运算操作,确定与高阶微分运算操作对应的组合算子,其中,高阶微分运算操作表示二阶或二阶以上的微分运算操作。调用执行器运行组合算子的执行代码,处理高阶微分运算操作。处理高阶微分运算操作。处理高阶微分运算操作。
技术研发人员:王海峰 杨嘉彬 高翔 胡晓光 马艳军 于佃海
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.05.19
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
