1.本发明涉及处理器技术领域,尤其涉及一种数据处理方法、系统及相关设备。
背景技术:2.pytorch是一个开源的机器学习库,用于自然语言处理等应用程序,pytorch框架支持对源张量的视图类框架操作以得到视图张量,从而可以有效减少显示的张量数据拷贝所带来的性能消耗,其中,源张量和视图张量共享同一内存。
3.视图类框架操作所对应的算子可以称为视图类框架算子,其主要包括重塑(reshape)类和非连续类,reshape类算子包括view、view_as、squeeze、unsqueeze、flatten等框架算子,这些算子对应生成的视图张量称为连续张量,其特征在于视图张量的元素按照行优先展开时,对应的索引内存与源张量一致,是连续分布的。非连续类算子包括转置(transpose)、切片(narrow)、扩张(expand)等框架算子,这些算子对应生成的视图张量称为非连续张量,其特征在于视图张量的元素按照行优先展开时,对应的索引内存与源张量不同,在共享内存上呈现非连续分布。
4.在当前应用中,通常都需要将非连续张量转换为连续张量,目前的转换方案主要是将非连续张量从设备侧(例如神经网络处理器(neural-network processing unit,npu)芯片)拷贝至主机,由主机完成转换后再将其拷贝回设备侧。综上,在目前对非连续张量转换为连续张量的方案中,其转换效率较低,对设备的硬件要求较高,性能消耗较大。
5.因此,如何提高张量转换效率,减小转换过程中对设备的硬件依赖,提高设备转换性能是目前亟待解决的问题。
技术实现要素:6.本发明实施例公开了一种数据处理方法、系统及相关设备,通过对非连续场景推导,特别是对多个视图类操作融合的场景进行递归推导,从而将非连续场景逐个提取出来,并确定与每个非连续场景匹配的操作,最后依次执行所确定的操作从而完成转换过程,可以有效提升非连续张量转换为连续张量的转换效率,减小对设备硬件的依赖,提高转换性能。
7.第一方面,本技术提供了一种数据处理方法,所述方法由数据处理系统执行,所述系统包括处理器和计算核,该方法包括:所述处理器获取第一数据的元数据和第二数据的元数据,所述第二数据由所述第一数据经过第一操作集得到,所述第一操作集包括至少两个第一操作,所述第二数据中每一行相邻位置的元素对应的内存地址是非连续的;所述处理器根据所述第二数据的元数据对所述第一操作集进行识别,确定所述第一操作集中的每个第一操作;所述处理器确定与所述第一操作集匹配的第二操作集,所述第一操作集中的每一个第一操作在所述第二操作集中存在与之匹配的第二操作;所述计算核根据所述第一数据和所述第二操作集得到第三数据,所述第三数据中的每一行相邻位置的元素对应的内存地址是连续的。
8.可选的,第一数据可以是源张量,第二数据可以是源张量经过第一操作集后得到的非连续张量,第三数据可以是源张量经过第二操作集后得到的连续张量,第一操作集可以是非连续类框架算子,例如transpose、narrow、expand等。
9.在本技术实施例中,处理器通过对非连续张量的元数据进行分析,对非连续张量的产生场景进行递归推导,从而确定对源张量所执行的一系列操作,进而确定与该一系列操作匹配的多个张量加速引擎(tensor boost engine,tbe)算子,由计算核依次对源张量执行该多个tbe算子完成转连续过程,这样,可以提升转换效率,减小对芯片的ai cpu的性能依赖,有效提高转换性能。
10.结合第一方面,在第一方面一种可能的实现方式中,所述处理器按照预设优先级对所述第一操作集中包括的第一操作依次进行识别;所述处理器根据每一次识别出的第一操作,确定与所述第一操作对应的特征场景,并将所述特征场景依次放入场景信息栈中。
11.在本技术实施例中,处理器在对第一操作集中的第一操作进行推导和识别时,按照预设优先级顺序,例如可以先识别转置操作,再识别切片操作,最后识别形变操作,对第一操作集所包含的第一操作进行一一识别,这样可以有效减小多个第一操作之间的融合干扰,提高识别的准确性和识别效率。
12.结合第一方面,在第一方面一种可能的实现方式中,所述处理器判断所述第二数据的元数据与待识别的第一操作的至少一个特征信息是否匹配,并在匹配的情况下,所述处理器确定所述待识别的第一操作,其中,所述第二数据的元数据包括所述第二数据的形状shape、步幅stride和内存偏移量storage_offset。
13.在本技术提供的方案中,处理器通过比对第二数据的元数据与待识别的第一操作的特征信息进行识别,不需要进行严格的一一对应,仅需要匹配其中的一个或部分特征信息即可确定待识别的第一操作,这样可以有效减小多个第一操作之间的融合干扰,提高识别效率。
14.结合第一方面,在第一方面一种可能的实现方式中,所述处理器遍历算子信息库,所述算子信息库包括多个张量加速引擎tbe算子;所述处理器针对每一个从所述第一操作集中识别出的第一操作,将所述算子信息库中与所述第一操作特征相同的算子确定为与所述第一操作匹配的第二操作,并将所述第二操作依次放入算子信息栈中。
15.在本技术提供的方案中,处理器在确定对源张量所执行的一系列第一操作之后,针对每一个第一操作,可以进一步在当前算子信息库中进行寻找,当查找到某个算子的元数据所描述的特征与该操作所对应的特征相同时,可以确定该算子与该操作类型相同,即该算子为与该操作匹配的tbe算子,从而得到第二操作集。
16.结合第一方面,在第一方面一种可能的实现方式中,所述处理器将转换命令下发至所述计算核,所述转换命令包括所述第二操作集,所述转换命令用于指示所述计算核根据所述第二操作集对所述第一数据执行运算得到所述第三数据。
17.在本技术提供的方案中,处理器在算子信息库中查找到与第一操作集匹配的多个tbe算子后,通知计算核对源张量执行该多个tbe算子,从而得到连续张量,该张量中每一行相邻位置的元素对应的索引内存是连续的,这样可以不必依赖于ai cpu就能完成张量转换过程,减小了对芯片硬件的依赖。
18.结合第一方面,在第一方面一种可能的实现方式中,所述处理器构建第四数据,所
述第四数据与所述第一数据的元数据相同,所述第四数据与所述第一数据共享同一内存;所述计算核对所述第四数据依次执行所述第二操作集中的第二操作,得到所述第三数据。
19.在本技术提供的方案中,计算核在进行计算之前,处理器根据确定的tbe算子可以获取到该算子所需要的入参信息,该入参信息中包括输入张量,该输入张量可以采用共享内存的方式构建的临时连续张量,这个临时连续张量的元数据与源张量的元数据相同,在完成临时连续张量构建后,计算核方可以执行相应的运算,从而保证计算核能够正确的执行相应的tbe算子,完成张量转换过程。
20.结合第一方面,在第一方面一种可能的实现方式中,所述第一操作集包括转置transpose算子、切片narrow算子、扩张expand算子。
21.结合第一方面,在第一方面一种可能的实现方式中,所述系统包括主机和芯片,所述处理器位于所述主机中,所述计算核位于所述芯片中。
22.结合第一方面,在第一方面一种可能的实现方式中,所述芯片包括神经网络处理器npu、图形处理器gpu、张量处理单元tpu、深度学习处理器dpu中的至少一个。
23.在本技术提供的方案中,对组合类非连续张量的产生场景进行递归推导的过程可以由数据处理系统中的主机完成,也可以由数据处理系统中的芯片完成,不管是通过主机完成场景递归推导还是通过芯片完成场景递归推导,最终都将由计算核执行tbe算子完成非连续张量转换为连续张量,从而减少数据拷贝和对ai cpu的硬件依赖,提升转换效率和转换性能。
24.第二方面,本技术提供了一种数据处理系统,该系统包括:处理器和计算核,
25.所述处理器,用于获取第一数据的元数据和第二数据的元数据,所述第二数据由所述第一数据经过第一操作集得到,所述第一操作集包括至少两个第一操作,所述第二数据中每一行相邻位置的元素对应的内存地址是非连续的;根据所述第二数据的元数据对所述第一操作集进行识别,确定所述第一操作集中的每个第一操作;确定与所述第一操作集匹配的第二操作集,所述第一操作集中的每一个第一操作在所述第二操作集中存在与之匹配的第二操作;
26.所述计算核,用于根据所述第一数据和所述第二操作集得到第三数据,所述第三数据中每一行相邻位置的元素对应的内存地址是连续的。
27.应理解,该芯片可以同时包括多个处理器和计算核,它们可以并行执行各自的任务,互不影响和干涉,本技术对芯片的处理器和计算核数量不作限定。
28.结合第二方面,在第二方面一种可能的实现方式中,所述处理器,具体用于:按照预设优先级对所述第一操作集中包括的第一操作依次进行识别;根据每一次识别出的第一操作,确定与所述第一操作对应的特征场景,并将所述特征场景依次放入场景信息栈中。
29.结合第二方面,在第二方面一种可能的实现方式中,所述处理器,具体用于:判断所述第二数据的元数据与待识别的第一操作的至少一个特征信息是否匹配,并在匹配的情况下,确定所述待识别的第一操作,其中,所述第二数据的元数据包括所述第二数据的形状shape、步幅stride和内存偏移量storage_offset。
30.结合第二方面,在第二方面一种可能的实现方式中,所述处理器,具体用于:遍历算子信息库,所述算子信息库包括多个tbe算子;针对每一个从所述第一操作集中识别出的第一操作,将所述算子信息库中与所述第一操作特征相同的算子确定为与所述第一操作匹
配的第二操作,并将所述第二操作依次放入算子信息栈中。
31.结合第二方面,在第二方面一种可能的实现方式中,所述处理器,还用于将转换命令下发至所述计算核,所述转换命令包括所述第二操作集,所述转换命令用于指示所述计算核根据所述第二操作集对所述第一数据执行运算得到所述第三数据。
32.结合第二方面,在第二方面一种可能的实现方式中,所述处理器,还用于构建第四数据,所述第四数据与所述第一数据的元数据相同,所述第四数据与所述第一数据共享同一内存;所述计算核,还用于对所述第四数据执行所述第二操作集中的第二操作,得到所述第三数据。
33.结合第二方面,在第二方面一种可能的实现方式中,所述第一操作集包括转置transpose算子、切片narrow算子、扩张expand算子。
34.结合第二方面,在第二方面一种可能的实现方式中,所述处理器位于所述系统的主机中,所述计算核位于所述系统的芯片中。
35.结合第二方面,在第二方面一种可能的实现方式中,所述芯片包括神经网络处理器npu、图形处理器gpu、张量处理单元tpu、深度学习处理器dpu中的至少一个。
36.第三方面,本技术提供了一种芯片,包括:处理器和计算核,
37.所述处理器,用于获取第一数据的元数据和第二数据的元数据,所述第二数据由所述第一数据经过第一操作集得到,所述第一操作集包括至少两个第一操作,所述第二数据中每一行相邻位置的元素对应的内存地址是非连续的;根据所述第二数据的元数据对所述第一操作集进行识别,确定所述第一操作集中的每个第一操作;确定与所述第一操作集匹配的第二操作集,所述第一操作集中的每一个第一操作在所述第二操作集中存在与之匹配的第二操作;
38.所述计算核,用于根据所述第一数据和所述第二操作集得到第三数据,所述第三数据中每一行相邻位置的元素对应的内存地址是连续的。
39.第四方面,本技术提供了一种计算设备,包括上述第一方面中的任意一种实现方式所提供的数据处理系统。
40.第五方面,本技术提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法。
41.第六方面,本技术提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法。
附图说明
42.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1是本技术实施例提供的一种张量转换的示意图;
44.图2是本技术实施例提供的一种系统结构的示意图;
45.图3是本技术实施例提供的一种组合类非连续场景拆分示意图;
46.图4是本技术实施例提供的一种组合类非连续张量转连续的示意图;
47.图5是本技术实施例提供的一种数据处理方法的流程示意图;
48.图6是本技术实施例提供的一种第一操作集的示意图;
49.图7是本技术实施例提供的一种转置算子的入参信息示意图;
50.图8是本技术实施例提供的一种组合非连续场景识别和提取的示意图;
51.图9是本技术实施例提供的另一种张量转换过程的示意图;
52.图10是本技术实施例提供的一种芯片结构的示意图。
具体实施方式
53.下面结合附图对本技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。
54.首先,结合附图对本技术中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
55.元数据为描述实际数据的数据,用于描述实际数据的属性信息,可以是实际数据的文件名或者该实际数据的存储地址指针等,例如,张量的元数据可以描述张量的形状、维数、格式等特征信息,同时,元数据还可以具有对应的标识,用于对该元数据进行标识,元数据以及其对应的标识可以构成键值对,每组键值对可以包括关键字(key)以及该key对应的值(value),value即为元数据本身,key用于对value进行标识。
56.主机又可以称为客户端,其连接了硬盘、硬盘子系统或者文件服务器,并能存储数据和io访问的计算机系统,具体可以包括物理机、虚拟机、容器等,用于与设备进行通信并进行数据处理,例如应用服务器、多处理器机器、工作站、个人电脑等。
57.设备为集成了乘加、激活函数、二维数据运算、解压缩等模块的处理芯片,能够加速神经网络的运算,有效提高神经网络运算的效率,例如npu、gpu、tpu、dpu等,处理芯片中可以包含多个处理器和计算核,它们可以并行执行各自的任务。
58.目前为了减少显示的张量数据拷贝带来的性能消耗,pytorch框架支持对源张量的视图类框架操作以得到视图张量,源张量中的元素和视图张量中的元素共享同一块内存。而在实际处理数据时,通常需要将非连续张量转换为连续张量,从而进一步进行数据处理,例如统一计算设备架构(compute unified device architecture,cuda)会计算非连续张量每个元素的内存地址,依赖于装填(load)和储存(store)指令,处理芯片(例如gpu)可以访问任意内存位置的元素,并将其存储至一块指定的联系内存区域,保证非连续张量的元素按照行优先展开时,对应的索引内存是连续的,从而完成对该非连续张量的转换。然而当前很多处理芯片无法按照上述这种数据迁移逻辑进行高效的数据拷贝,例如npu无法通过上述方式完成非连续张量到连续张量的转换,对于这类处理芯片,在进行转连续操作时,通常需要借助主机完成,如图1所示,主机110与设备120通过网络或高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)接口直接建立连接,主机110可以是一个服务器,设备120可以为插置于该服务器上的npu加速卡,首先,主机110下发流同步指令至设备120,该指令将阻塞当前流所有任务执行,设备120在接收到指令后,将非连续张量拷贝至主机110,主机110根据当前非连续张量的信息计算其中每个元素的内存地址,然后根据cpu的load/store指令将每个元素拷贝至指定的内存区域,在完成拷贝之后可
以实现对该非连续张量转换为连续张量,然后将该连续张量再拷贝至设备120,最后主机110下发结束流同步指令至设备120,释放相关资源。可以看出,在对非连续张量进行转换时,阻碍了其它任务正常执行,其次张量数据需要在主机和设备之间来回拷贝,拷贝效率较低且对主机的性能消耗较大,整个转换过程性能较差。
59.另外,非连续张量还可能是源张量经过多个视图类框架操作以后得到的张量,多个视图类框架操作之间存在相互叠加和干扰,加大了对该类非连续张量的产生场景进行识别和推导的难度,只能利用主机或设备中的处理器进行转连续操作,无法充分利用设备中的计算核的能力,其整体转换效率较低。
60.基于上述,本技术提供了一种数据处理方法,利用处理器对非连续张量的产生场景进行推导,特别是对多个视图类操作融合的组合类非连续场景进行递归推导,确定与该组合类非连续场景匹配的操作集,并由ai core依次执行该操作集完成数据的重新拷贝,从而实现将非连续张量转换为连续张量,有效提升转换效率,减小对设备硬件,尤其是ai cpu的依赖,提高转换性能。
61.本技术实施例的技术方案可以应用于任何需要进行非连续张量转换的系统中,尤其适用于组合类非连续张量且对ai cpu依赖较低的场景。
62.参见图2,图2是本技术提供的一种系统结构的示意图。如图2所示,该系统包括主机210和芯片220,该主机210中可以包括硬件层和软件层,软件层包括客户操作系统2110、任务调度器2120,硬件层包括一个或多个处理器、内存等硬件,该芯片220可以是神经网络处理器npu、图形处理器gpu、张量处理单元tpu、深度学习处理器dpu中的至少一个。其也包括硬件层和软件层,硬件层包括一个或多个处理器(如ai cpu2220)、一个或多个计算核(ai core2230)、内存等硬件,软件层包括各种处理单元(例如i/o处理单元2210等)以处理非连续张量转换为连续张量的相关流程,主机210和芯片220可以通过接口进行连接。在一些实施例中,芯片220可以和主机210位于不同的设备上,在另一些实施例中,芯片220可以以插卡的方式挂载于主机210上。
63.主机210用于协同芯片完成非连续张量的转换。处理器2130可以是cpu,还可以是其他通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
64.内存2140可以用于存储算子信息库。可以包括只读存储器和随机存取存储器,还可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data date sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直
接内存总线随机存取存储器(direct rambus ram,drram)。
65.在一种可能的实现方式中,主机210中的任务调度器2120将张量转换任务发送至处理器2130,处理器2130从内存2140中提取当前非连续张量的元数据,该元数据包括非连续张量的形状、步幅、内存偏移量等信息,然后对该元数据进行分析并按照预设优先级顺序进行推导,例如可以首先判断stride信息是否非单调,若单调,则确定存在转置场景,提取该场景放入场景信息栈中,并可以确定与该装置场景对应的第一操作(即转置操作),然后处理器2130遍历内存2140中的算子信息库,查找到与该第一操作类型相同的tbe算子,并获知该tbe算子所需的信息,将其放入算子信息栈中,之后,对残存的场景再次进行识别和推导,并将推导得到的非连续场景和tbe算子分别依次放入场景信息栈和算子信息栈中,直至残存的场景不可再拆分为止,其推导过程如图3所示,源张量经过n个视图类操作得到非连续视图张量,然后对该非连续视图张量按照预设优先级顺序依次进行识别,每次都将识别出一个视图类操作,从而提取特征场景并匹配对应的tbe算子,将其分别放入场景信息栈和算子信息栈中。最后处理器2130通过pcie接口向芯片220下发指令,在芯片220中通过共享非连续张量内存的方式构建一个临时连续张量,并将算子信息栈中的tbe算子下发至ai core2230,ai core2230依次调度该算子信息栈中的tbe算子对该临时连续张量进行运算,将内存2240中非连续张量的每个元素重新拷贝至指定的区域,得到一个连续张量,该连续张量每一行中相邻两个元素对应的索引内存在内存2240中是连续的,其具体的转连续过程如图4所示,在完成构建临时连续张量之后,从场景信息栈中取出第一单算子非连续场景,重新构建第一个非连续场景,并从算子信息栈中调对应的tbe算子执行转连续操作,直至场景信息栈和算子信息栈均为空时,停止重建,其结果张量即为目的连续视图张量。
66.可以看出,在进行张量转换时,利用已知的非连续张量和源张量,对非连续张量的产生场景进行递归推导,从而可以推导得到与每一个非连续场景对应的操作,然后根据该操作可以从算子信息库中映射得到相匹配的tbe算子,并将其放入算子信息栈中,最后由ai core执行该算子信息栈中的多个tbe算子,生成连续张量,不依赖于ai cpu等硬件性能,可以有效提升转换效率,提高转换性能。
67.结合图2所示的芯片的示意图,下面将描述本技术实施例提供的数据处理方法,参阅图5,图5示出了本技术实施例提供的一种数据处理方法的流程示意图,该方法可以应用于如上述图2所示的数据处理系统中。该方法具体可以包括:
68.s501:处理器获取第一数据的元数据和第二数据的元数据。
69.具体地,在本技术实施例中,第一数据可以是源张量数据,源张量为一种n维的数据结构,其具体形式包括标量、矢量、矩阵等,如第0维张量即为一个标量,源张量的元数据即为描述该源张量的数据,包括张量的shape、stride、storage_offset等,相应的,第二数据可以是非连续张量,该非连续张量中的元素按照行优先展开时,每一行相邻位置的元素对应的内存地址是非连续的。
70.另外,处理器可以是上述图2所示的主机中处理器2130,即下述步骤s502中的场景推导和步骤s503中的算子映射匹配由主机完成,处理器也可以是上述图2所示的ai cpu2220,即步骤s502中的场景推导和步骤s503中的算子映射匹配由芯片完成,本技术对此不作限定。
71.需要说明的是,第二数据是由第一数据经过第一操作集得到的,即上述非连续张
量是对源张量执行一系列第一操作得到的。第一操作为非连续操作,例如,在pytorch架构下,第一操作为对源张量执行非连续视图类框架算子对应的操作,可选的,非连续视图类框架算子包括transpose、narrow、expand等。
72.示例性的,以第一操作集包括切片操作、形变操作和转置操作为例,如图6所示,源张量610包括视图信息和源信息,其中,视图信息和源信息一致,其shape都为{8,451143,4},stride都为{1804572,4,1},该源张量是一个连续张量,现在利用非连续操作单元620对该源张量610执行第一操作集,即对源张量依次进行切片操作、形变操作和转置操作,产生一个非连续视图张量630,可以看出,非连续视图张量630中的视图信息与源信息不一致,且非连续视图张量630与源张量610相比,视图信息中的shape和stride都发生了明显改变。
73.应理解,在对源张量执行非连续组合类视图类框架操作得到视图张量时,仅仅是改变了源张量的元数据,源张量和视图张量还是共享同一内存,即源张量中的元素和视图张量的元素是一样的,而且所占用的内存也是相同的。
74.s502:处理器根据第二数据的元数据对第一操作集进行识别,确定所述第一操作集中的每个第一操作。
75.具体地,处理器在获取到源张量的元数据和非连续张量的元数据后,通过对非连续张量的各个特征(如上述shape、stride和storage_offset)进行分析,确定对源张量所执行的一系列非连续操作。
76.在一种可能的实现方式中,处理器按照预设优先级对第一操作集中包括的第一操作依次进行识别,所述处理器根据每一次识别出的第一操作,确定与所述第一操作对应的特征场景,并将所述特征场景依次放入场景信息栈中。
77.具体地,由于组合类视图类操作之间存在相互叠加与干扰,为了减小各个视图类操作之间的相互影响,提高识别和推导的准确性,处理器在进行特征场景识别时,可以按照预设优先级识别顺序依次进行识别,例如转置操作为第一优先级,切片操作为第二优先级,形变操作为第三优先级,那么处理器在进行场景识别时,将优先识别转置场景,然后识别切片场景,最后识别形变场景。
78.值得说明的是,处理器在对每个场景进行识别的过程中,需要放宽该场景对应的判定条件,不需要满足该场景所有的判定条件,只需要满足其中的部分判定条件即可,例如某个特征场景的判定条件为3个,该非连续张量的元数据满足其中的一个判定条件,此时就可以确定存在该特征场景。容易理解,通过适当放宽场景的判定条件,可以进一步排除场景融合的干扰,提高场景识别的效率和准确性。
79.示例性的,如上述图6所示,处理器在已知非连续视图张量630和源张量610的情况下,需要对非连续操作单元620进行推导,处理器通过对非连续视图张量630的stride信息进行分析,发现stride信息是非单调的,即可以确定存在转置场景和转置操作。
80.同理,对于其它非连续性场景和非连续性操作也可以通过上述逻辑进行推导,例如,对于非连续性操作为narrow时,处理器通过对shape信息进行分析,发现shape中某些轴的元素减少,则处理器可以确定存在切片场景和切片操作。
81.在处理器完成场景识别后,需要进行特征场景提取,即将一个组合非连续场景分为两部分,第一部分为构造出的被识别场景,另一部分为残存的场景,该残存的场景仍有可能是组合非连续场景,若残存场景仍为组合非连续场景,则继续进行进一步的识别,直至残
存场景不可再割分。构建场景信息栈,对于提取得到的每个特征场景依次放入该场景信息栈中,每个特征场景都对应一个第一操作,即对应一个非连续视图操作。
82.s503:处理器确定与所述第一操作集匹配的第二操作集。
83.具体地,处理器通过对非连续张量产生场景进行递归推导,在每一次识别出非连续操作并提取特征场景之后,需要进一步确定与该非连续操作及特征场景匹配的第二操作,即确定是否存在某个张量加速引擎(tensor boost engine,tbe)算子的特征与该非连续操作及特征场景对应的特征相同。
84.应理解,tbe算子是由tbe语言编写的,可以直接被计算核ai core调用执行,从而生成一个连续张量,在本技术实施例中,每一个非连续操作对应一个tbe算子,例如,转置操作对应transpose算子、切片操作对应slice算子、形变操作对应broadcast算子等。
85.处理器通过遍历当前算子信息库,寻找与该非连续操作匹配的tbe算子,例如,在上述图6所示的场景中,第一操作集包括转置操作,transpose算子的特征为:张量的stride信息非单调、张量指定轴发生shape和stride信息的置换、张量的storage_offset为0且不变,非连续视图张量的stride信息也是非单调的,因此,处理器可以确定与该转置操作匹配的tbe算子是transpose,直接将算子信息库中的transpose算子确定为与非连续操作(即转置操作)匹配的算子。
86.进一步的,处理器在确定与非连续操作匹配的tbe算子后,可以获取到该tbe算子所需的入参信息,示例性的,如图7所示,是transpose算子所需的入参信息示意图,其入参信息包括输入张量、结果张量和转置的轴信息,其中输入张量是采用共享内存方式构建的临时连续张量,结果张量接收算子执行结果,是根据非连续张量的视图信息新建的空的连续张量,转置的轴信息与推导得到的转置操作对应的转置轴信息相同。
87.在处理器确定每个第一操作对应的第二操作且找到与之匹配的tbe算子之后,处理器构建算子信息栈,将推导得到的tbe算子依次放入算子信息栈中。
88.需要说明的是,处理器在确定第二操作之后,若在算子信息库中没有找到与之匹配的tbe算子,可以由研发人员编写与第二操作相匹配的tbe算子,并将其加入算子信息库中,这样在软件层面更改算子实现,可以有效扩展适用场景,提高转换的灵活性,充分发挥ai core的性能,解除对ai cpu的硬件依赖。
89.为了进一步说明对于组合非连续场景是如何进行识别和特征场景提取,请参阅图8,如图8所示,源张量810经过切片操作得到非连续张量820,再经过形变操作得到非连续张量830,左后经过转置操作得到非连续张量840,对于非连续张量840,通过对其视图信息和源信息进行比较和分析,首先识别出转置场景,然后进行第一次迭代推导,针对非连续张量840,构造出转置非连续张量850以及残存非连续张量860,针对转置非连续张量850,将其放入场景信息栈中,并从算子信息库中找出与之匹配的tbe算子,将其放入算子信息栈中;之后识别出切片操作并进行第二次迭代推导,针对残存非连续张量860,构造出切片非连续张量870以及残存非连续张量880,针对切片非连续张量870将其放入场景信息栈中,并从算子信息库中找出与之匹配的tbe算子,将其放入算子信息栈中;由于残存非连续张量880不是组合类非连续张量,其为形变非连续张量,此时停止迭代,结束推导流程。
90.需要说明的是,上述场景构造策略遵从固定的场景刷新策略,例如上述转置非连续张量850的视图信息与非连续张量840的视图信息一致,残存非连续张量860的视图信息
与转置非连续张量850的源信息一致,残存非连续张量860的源信息与非连续张量840的源信息一致,每次迭代的场景信息刷新策略均一致。
91.s504:计算核根据所述第一数据和所述第二操作集得到第三数据。
92.具体地,处理器在将tbe算子放入算子信息栈之后,将该算子信息栈下发至计算核ai core,计算核ai core通过依次执行该算子信息栈中的tbe算子得到连续张量。
93.应理解,tbe算子在算子信息库中是以文件的形式存在的,文件记录了tbe算子的入参信息,处理器将tbe算子对应的文件发送给计算核ai core,计算核ai core通过执行该tbe算子对应的文件从而输出连续张量。
94.在一种可能的实现方式中,处理器在将tbe算子下发至计算核ai core之前,通过与非连续视图张量共享内存的方式构建临时连续张量,该临时连续张量元数据与源张量的元数据相同,且与源张量共享同一内存,即该临时连续张量可以理解为源张量的复原,当然也可以通过其它方式构建临时连续张量,本技术对此不作限定。
95.示例性的,在上述图6所示的场景中,处理器根据非连续视图张量630构建临时连续张量作为输入张量910,如图9所示,输入张量910与非连续视图张量630相同,首先从场景信息栈中提取形变场景,再从算子信息栈中调用对应的tbe算子,例如broadcast算子920,利用broadcast算子对输入张量910进行计算,其计算结果为一个连续张量,之后再从场景信息栈中提取切片场景,并从算子信息栈中调用对应的slice算子930,例如slice算子对第一次计算结果进行计算,其计算结果也同样为一个连续张量,最后从场景信息栈中提取转置场景,并从算子信息栈中调用对应的transpose算子940,利用transpose算子940对第二次计算结果进行计算,计算后得到输出张量950,该输出张量950是一个连续张量,即输出张量950亦可以称为连续张量950,对于连续张量950来说,该张量中的元素按照行优先展开时,每一行相邻位置的元素对应的内存地址是连续的。
96.值得说明的是,计算核ai core在执行tbe算子时,在主存中将重新确定一块内存区域,将源张量中的元素按照连续张量所确定的内存读取方式将其有序迁移至该内存区域中,从而保证连续张量在按照行优先展开时,相邻元素的内存地址是连续的。
97.可以看出,执行本发明实施例,不需要改变pytorch框架本身的视图类框架算子语义,通过对非连续张量产生场景进行递归推导确定非连续操作,进而确定与之匹配的tbe算子,最后利用计算核ai core执行tbe算子生成内存连续分布的连续张量,不依赖于ai cpu硬件性能,提升了转换效率和转换性能,且在软件层面更加灵活,便于扩展,能充分发挥计算核ai core的性能。
98.应理解,上述方法不仅适用于pytorch框架,对于其它具有转置、切片等非连续操作的ai框架都可以利用本发明所提供的方法进行场景反推,从而根据反推结果完成对非连续张量的转换,尤其是组合类非连续张量的转换。
99.还应理解,上述仅以第一操作集包括切片操作、形变操作和转置操作为例说明了如何进行组合场景递归推导以及如何根据推导结果完成张量转连续过程,对于包括其它非连续性操作的第一操作集,也可以按照同样的方法进行递归推导以及张量转换。
100.本技术所提供的数据处理方法可以广泛应用于pytorch的模型训练与推理场景中,能够显著改善模型训练与推理的效率,减少训练耗时,加速模型训练。可以理解,若模型训练涉及将非连续张量转换为连续张量,本技术由ai core执行tbe算子进行内存拷贝从而
实现转连续,相较于主机进行内存拷贝完成转连续过程,可以减少数据来回拷贝时延,提高转换效率,从而有效改善模型训练和推理效率,产生巨大的商业价值。
101.上述详细阐述了本技术实施例的方法,为了便于更好的实施本技术实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
102.参见图10,图10是本技术实施例提供的一种芯片的结构示意图。如图10所示,该芯片10包括:处理器11和计算核12,该芯片10可以是npu芯片、gpu芯片、tpu芯片或其它ai芯片,其中可以包含多个处理器和计算核,它们可以并行执行各自的任务,图10中以一个为例。其中,本发明实施例中所描述的芯片的功能,可以参见图2-图9中所述的发明实施例中的相关描述,此处不再赘述。
103.本技术实施例提供了一种计算设备,该计算设备可以是上述图2所示的数据处理系统中的主机,芯片以插卡的方式集成在主机上。主机和芯片可以协同执行如图2-图9中所述的发明实施例中的相关描述,此处不再赘述。
104.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤。
105.本技术实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
106.在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
107.应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本技术的范围。
108.应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
109.还应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
110.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
111.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
112.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或
讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
113.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
114.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
115.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
116.本技术实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
117.本技术实施例装置中的模块可以根据实际需要进行合并、划分和删减。
118.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。