掌桥专利:专业的专利平台
掌桥专利
首页

数据处理装置、方法、电子设备和存储介质

文献发布时间:2024-01-17 01:16:56


数据处理装置、方法、电子设备和存储介质

技术领域

本公开涉及人工智能技术领域,尤其涉及深度学习技术领域和芯片技术领域。更具体地,本公开提供了一种数据处理装置、方法、电子设备和存储介质。

背景技术

随着人工智能技术的发展,深度学习模型可以包括动态深度学习模型和静态深度学习模型。静态深度学习模型的输入张量的规模(shape)可以是固定的。动态深度学习模型的输入张量的规模是可变的。

发明内容

本公开提供了一种深度学习模型的多算子并行处理方法、装置、设备以及存储介质。

根据本公开的一方面,提供了一种数据处理装置,该装置包括:存储单元,包括多个初始存储空间,多个初始存储空间与目标模型的多个张量对应,其中,目标模型包括多个算子,多个张量包括目标模型的当前输入张量和多个算子各自的输出张量;处理器,配置为:读取当前输入张量;根据当前输入张量的数据量,确定多个算子各自的输出张量的数据量;响应于确定算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量,生成重分配信息,其中,重分配信息用于指示重新分配张量的存储空间;以及根据重分配信息,在存储单元中确定多个目标存储区域。

根据本公开的另一方面,提供了一种数据处理方法,该方法包括:从存储单元读取目标模型的当前输入张量,其中,存储单元包括多个初始存储空间,多个初始存储空间与目标模型的多个张量对应,目标模型包括多个算子,多个张量包括当前输入张量和多个算子各自的输出张量;根据当前输入张量的数据量,确定多个算子各自的输出张量的数据量;响应于确定算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量,生成重分配信息,其中,重分配信息用于指示重新分配张量的存储空间;以及根据重分配信息,在存储单元确定多个目标存储区域。

根据本公开的另一方面,提供了一种电子设备,包括本公开提供的数据处理装置。

根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开提供的方法。

根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行根据本公开提供的方法。

根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开提供的方法。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本公开的限定。其中:

图1是根据本公开的一个实施例的数据处理装置的示意框图;

图2是根据本公开的一个实施例的数据处理装置的原理图;

图3是根据本公开的一个实施例的利用不同批尺寸的输入张量进行模型推理的效果图;

图4是根据本公开的另一个实施例的数据处理装置的原理图;

图5是根据本公开的一个实施例的电子设备的框图;

图6是根据本公开的一个实施例的数据处理方法的流程图;以及

图7是根据本公开的一个实施例的可以应用深度学习模型的多算子并行处理方法的电子设备的框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

深度学习模型可以包括静态深度学习模型和动态深度学习模型。静态深度学习模型的输入张量的规模可以是固定的。例如,在不同场景中,深度学习模型处理的输入张量的维度可以是相同的。由此,在模型初始化时,可以高效地确定静态深度学习模型在运行过程中各种中间张量的规模,以便在存储单元中确定这些中间张量所需的存储空间。加速线性代数(Accelerated Linear Algebra,XLA)引擎、TVM引擎和TensorRT引擎可以为模型的中间张量提供良好的存储优化,可以更好的利用不同级别的高速缓存(cache),实现较好的推理或训练效果。

与静态深度学习模型相比,动态深度学习模型可以适应更多的场景。动态深度学习模型的输入张量的规模是不固定的。由此,在模型初始化时,难以确定动态深度学习模型在运行过程中各种中间张量的规模,难以在推理前进行存储空间优化,也难以有效地利用高速缓存或高效地使用全局存储单元。

在一些实施例中,根据用户输入的最大批尺寸(batchsize),可以为张量确定存储空间。由此,每个中间张量的存储空间可以相同,与最大批尺寸对应。然而,中间张量所需的存储空间可以小于与最大批尺寸对应的空间。按照最大批尺寸为张量分配空间可以导致存储空间的利用率下降。

在一些实施例中,可以根据张量的规模,动态地申请存储空间以及动态地释放存储空间。然而,动态申请或释放空间可以导致存储空间碎片化。此外,频繁地分配、释放存储空间也降低了推理效率。

为了高效地运行动态深度学习模型,本公开提供了一种数据处理装置,下面将进行详细说明。

图1是根据本公开的一个实施例的数据处理装置的示意框图。

如图1所示,该装置100可以包括存储单元110和处理器120。

存储单元11O,包括多个初始存储空间。

在本公开实施例中,多个初始存储空间与目标模型的多个张量对应。例如,可以按照各种方式,为多个张量确定初始存储空间。

在本公开实施例中,存储单元可以包括三级缓存单元(L3)和全局存储单元(Global Memory)中的至少一个。

在本公开实施例中,目标模型可以包括多个算子。多个张量可以包括目标模型的当前输入张量和多个算子各自的输出张量。例如,目标模型可以是动态深度学习模型。当前输入张量的规模可以是不确定的。

处理器120可以配置为:读取当前输入张量。例如,可以从存储单元110读取当前输入张量。

处理器120还可以配置为:根据当前输入张量的数据量,确定多个算子各自的输出张量的数据量。例如,根据当前输入张量的数据量,可以利用预设函数确定多个算子各自的输出张量的数据量。预设函数可以是规模推导(infershape)函数。

处理器120还可以配置为:响应于确定算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量,生成重分配信息。例如,重分配信息可以指示重新分配张量的存储空间。对于目标模型中的一个算子,若该算子的输出张量的数据量大于该算子的初始存储空间的容量,可以确定初始存储空间的容量不足,可以生成重分配信息,以便为输出张量重新分配存储空间。

处理器120还可以配置为:根据重分配信息,在存储单元中确定多个目标存储区域。例如,根据重分配信息,可以执行与重新分配张量的存储空间对应的至少一个指令,以便确定多个目标存储区域。目标存储区域可以存储至少一个算子的输出张量。目标存储区域的数量可以小于或等于全部算子的输出张量的数量。

通过本公开实施例,在算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量的情况下,重新分配了张量的尺寸空间,可以优化存储使用效率。此外,也不需要用户设置最大批尺寸参数,降低了人工成本。在重新分配了存储区域之后,若当前输入张量的在后输入张量的规模不变,与该在后输入张量对应的多个算子的输出张量可以存储于目标存储区域,降低了重新分配存储空间的次数,减少了重新分配所需的资源开销。

可以理解,上文对本公开的数据处理装置进行了说明,下面将对处理器生成重新分配信息的一些方式进行说明。

图2是根据本公开的一个实施例的数据处理装置的原理图。

如图2所示,处理器可以配置为执行至少一个指令,以实现操作S201。在操作S201,确定算子的输出张量的数据量是否是确定的。

在本公开实施例中,在目标模型的多个算子各自的输出张量的数据量是确定的情况下,处理器可以配置为执行至少一个指令,以实现操作S202。在操作S202,根据多个算子各自的输出张量的数据量,确定多个存储空间。例如,在目标模型是静态深度学习模型的情况下,输出张量的数据量是已知的。由此,可以为多个算子各自的输出张量分别确定存储空间。

在本公开实施例中,在目标模型的多个算子各自的输出张量的数据量是不确定的情况下,处理器可以配置为执行至少一个指令,以实现操作S210。在操作S210,读取当前输入张量。例如,可以从存储单元读取当前输入张量。在读取了当前输入张量之后,可以确定当前输入张量的数据量。

在本公开实施例中,处理器还可以配置为:根据当前输入张量的数据量,确定多个算子各自的输出张量的数据量。例如,处理器可以配置为执行至少一个指令,以实现操作S220。在操作S220,确定目标模型的当前算子的输出张量的数据量。例如,以当前算子是目标模型的第1个算子为例,可以根据当前输入张量,利用预设函数确定当前算子的输出张量的数据量。

在一些实施例中,处理器还可以配置为生成重分配信息。下面将结合操作S231至操作S236进行说明。

在本公开实施例中,处理器还可以配置为执行至少一个指令,以实现操作S231。在操作S231,确定当前算子的输出张量的数据量是否大于与当前算子的输出张量对应的初始存储空间。例如,下面以第1个算子的输出张量的数据量大于与第1个算子的输出张量对应的初始存储空间为示例进行进一步说明。

在本公开实施例中,响应于确定当前算子的输出张量的数据量大于与当前算子的输出张量对应的初始存储空间,处理器还可以配置为释放与算子的输出张量对应的初始存储空间。例如,处理器可以配置为执行至少一个指令,以实现操作S232。在操作S232,释放与当前算子的输出张量对应的初始存储空间。与第1个算子对应的初始存储空间可以位于三级缓存单元。可以释放位于三级缓存单元的该初始存储空间。

在本公开实施例中,处理器还可以配置为:根据算子的输出张量的数据量,在存储单元中确定与算子的输出张量对应的临时存储空间。例如,处理器可以配置为执行至少一个指令,以实现操作S233。在操作S233,确定与当前算子的输出张量对应的临时存储空间。可以在全局存储单元确定与第1个算子的输出张量对应的第一临时存储空间。

在本公开实施例中,处理器还可以配置为:生成重分配信息。例如,处理器可以配置为执行至少一个指令,以实现操作S234。在操作S234,生成重分配信息。目标模型可以与重分配变量值对应。重分配变量值默认为假(False)。可以将重分配变量值设为真(True),以生成重分配信息。

在本公开实施例中,处理器还可以配置为:根据当前输入张量,确定当前处理周期的多个算子各自的输出张量。例如,处理器可以配置为执行至少一个指令,以实现操作S235。在操作S235,运行当前算子。可以运行第1个算子,得到第1个算子的输出张量。该输出张量可以写入上述的第一临时存储空间。

在本公开实施例中,处理器还可以配置为执行至少一个指令,以实现操作S236。在操作S236,确定全部算子是否运行完成。在目标模型包括多个算子的情况下,在第1个算子运行完成之后,可以确定全部算子未运行完成,可以返回至操作S231,将第2个算子作为当前算子,执行操作S231至操作S236,直至全部算子运行完成。若第2个算子的输出张量的数据量也大于与其对应的初始存储空间,可以在全局存储单元确定与第2个算子的输出张量对应的第二临时存储空间。

可以理解,上文对生成重分配信息的一些方式进行了说明。在一些实施例中,处理器还可以配置为:根据重分配信息,在存储单元中确定多个目标存储区域。下面将结合操作S241至操作S243进行说明。

在本公开实施例中,处理器还可以配置为执行至少一个指令,以实现操作S241。在操作S241,确定是否重新分配存储空间。例如,在检测到重分配变量值为真的情况下,可以对存储空间进行重新分配。

在本公开实施例中,处理器还可以配置为:根据重分配信息,将多个算子各自的输出张量写入第一预设存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S242。在操作S242,将多个算子各自的输出张量写入第一预设存储区域。第一预设存储区域可以包括多个第一预设存储空间。第一预设存储区域可以位于全局存储单元。第一预设存储区域可以暂存全部算子的输出变量。

在本公开实施例中,处理器还可以配置为:根据多个算子各自的输出张量的数据量,在存储单元中确定多个目标存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S243。在操作S243,在存储单元中确定多个目标存储区域。在上述的操作S231至操作S236执行之后,三级缓存中可以存在至少一个初始存储空间和至少一个临时存储空间。可以将这些存储空间释放。接下来,可以在三级缓存中重新分配多个目标存储区域。

在本公开实施例中,处理器还可以配置为:从第一预设存储区域,将多个算子各自的输出张量写入多个目标存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S250。在操作S250,将多个算子各自的输出张量写入目标存储区域。如上述,第一预设存储单元可以暂存全部的输出张量。在重新分配了目标存储区域之后,可以将多个算子各自的输出张量恢复至多个目标存储区域。通过本公开实施例,先将张量暂存,再将张量恢复至重新分配得到的目标存储区域中,可以高效地保存全部张量数据,可以有效地防止数据丢失。

在本公开实施例中,处理器还可以配置为:利用目标模型处理当前输入张量的在后输入张量,得到当前处理周期的在后处理周期的多个算子各自的输出张量。将在后处理周期的多个算子各自的输出张量写入多个目标存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S260。在操作S260,用目标模型处理当前输入张量的在后输入张量。在后输入张量的数据量可以与当前输入张量的数据量一致。在利用在后输入张量进行模型推理或模型训练的过程中,可以将算子的输出张量写入上述的目标存储区域。

在本公开另一些实施例中,在检测到重分配变量值为假的情况下,可以对不存储空间进行重新分配。例如,在任一算子的输出变量均小于或等于与该算子对应的初始存储空间的情况下,可以不进行重新分配,直接执行操作S260。在完成了重分配之后,可以将重分配变量值恢复为默认值。

在本公开另一些实施例中,可以利用多个数据量一致的输入张量进行模型推理或训练。将第1个输入张量作为当前输入张量,利用处理器执行上述的操作的过程中,可以重新分配存储空间。在将第2个输入张量作为当前输入张量时,可以不生成重分配信息,利用根据第1个输入张量分配的多个目标存储区域存储算子的输出张量,也可以执行操作S241之后直接执行操作S260。

可以理解,上文以操作S220、操作S231至操作S236是先后执行的为示例,对本公开进行了说明。但本公开不限于此,也可以在多次执行操作S220以得到全部算子的输出张量的数据量之后,执行操作S231至操作S236。

可以理解,上文以多个张量包括算子的输出张量为示例对本公开进行了说明。但本公开不限于此,多个张量还可以包括多个算子各自的预设张量。例如,算子的预设张量可以包括权重张量。在动态深度学习模型中,算子的预设张量的数据量可以是固定的。在一些实施例中,根据重分配信息,也可以确定预设张量的目标存储区域。

可以理解,可以利用多个批尺寸相同的输入张量进行多次模型训练或模型推理。在这些批尺寸相同的输入张量中,利用第1个输入张量进行模型训练或推理时,可以生成重分配信息,以确定目标存储区域。利用与第1个输入张量的批尺寸相同的输入张量进行模型训练或推理时,可以使用根据第1个输入张量分配的多个目标存储区域来存储输出张量。

也可以理解,在利用不同批尺寸的输入张量进行模型训练或模型推理的过程中,批尺寸增大,模型的输入张量的数据量也可以增大,多个算子各自的输出张量的数据量也可以增大。由此,可能会生成多个重分配信息,进而多次确定目标存储空间,下面将结合图3进行说明。

图3是根据本公开的一个实施例的利用不同批尺寸的输入张量进行模型推理的效果图。

可以利用第一输入张量、第二输入张量、第三输入张量以及第四输入张量分别进行模型推理。第一输入张量的规模可以为[1,3,224,224]。对于第一输入张量,第一批尺寸batch1为1,通道数为3,数据高度为224,数据宽度为224。对于第二输入张量,第二批尺寸batch2为2,通道数为3,数据高度为224,数据宽度为224。对于第三输入张量,第三批尺寸batch4为4,通道数为3,数据高度为224,数据宽度为224。对于第四输入张量,第四批尺寸batch8为8,通道数为3,数据高度为224,数据宽度为224。可以理解,第一输入张量至第四输入张量可以分别与RGB图像对应。在本实施例中,算子的预设张量可以存储于初始存储空间。在根据重分配信息确定目标存储区域时,可以为预设张量也确定目标存储区域。

可以利用不同的第一输入张量进行多次推理。在利用第一输入张量进行第1次推理(batch1,1st infer)时,可以生成重分配信息,在存储单元中确定了多个目标存储区域。由此,第1次推理用时为194.34毫秒(ms)。在第2次推理和第3次推理过程中,第一输入张量的数据量未发生变化,可以使用该多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为2.508毫秒。在第3次推理时,推理用时约为2.357毫秒。

接下来,可以利用第二输入张量进行第1次推理(batch2,1st infer)时,第二输入张量的第二批尺寸(2)大于第一输入张量的第一批尺寸(1),可以再次生成重分配信息,在存储单元中再次确定了多个目标存储区域。由此,第1次推理用时为153.228毫秒。在第2次推理和第3次推理过程中,第二输入张量的数据量未发生变化,可以使用该多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为3.604毫秒。在第3次推理时,推理用时约为3.451毫秒。

接下来,可以利用第三输入张量进行第1次推理(batch4,1st infer)时,第三输入张量的第三批尺寸(4)大于第二输入张量的第二批尺寸(2),可以再次生成重分配信息,在存储单元中再次确定了多个目标存储区域。由此,第1次推理用时为148.431毫秒。在第2次推理和第3次推理过程中,第三输入张量的数据量未发生变化,可以使用该多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为5.694毫秒。在第3次推理时,推理用时约为5.604毫秒。

接下来,可以利用第四输入张量进行第1次推理(batch8,1stinfer)时,第四输入张量的第四批尺寸(8)大于第三输入张量的第三批尺寸(4),可以再次生成重分配信息,在存储单元中再次确定了多个目标存储区域。由此,第1次推理用时为172.809毫秒。在第2次推理和第3次推理过程中,第四输入张量的数据量未发生变化,可以使用重新分配后的多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为10.168毫秒。在第3次推理时,推理用时约为10.368毫秒。

可以理解,在利用相同批尺寸的输入张量进行多次模型推理时,输入张量可以不同。例如,可以利用三个不同的第一输入张量进行三次推理。

如图3所示,随着输入张量的规模增加,算子的输出张量所需的存储空间也变大,需要进行重分配,导致第1次推理的用时较长。这种现象可以被称为毛刺现象。

为了缓解毛刺现象,存储单元还可以包括多个第二预设存储空间。第二预设存储空间配置为存储算子的预设张量。在本公开实施例中,预设张量可以具有目标参数值。下面将结合图4进行进一步说明。

图4是根据本公开的另一个实施例的数据处理装置的原理图。

如图4所示,处理器可以配置为执行至少一个指令,以实现操作S401’。在操作S401’,确定算子的张量的数据量是否是确定的。

在本公开实施例中,在目标模型的多个算子各自的输出张量和预设张量的数据量是确定的情况下,处理器可以配置为执行至少一个指令,以实现操作S402’。在操作S402’,根据多个算子各自的张量的数据量,确定多个存储空间。例如,在目标模型是静态深度学习模型的情况下,输出张量的数据量是已知的。由此,可以为多个算子各自的输出张量和预设张量分别确定存储空间。

在本公开实施例中,在目标模型的多个算子各自的输出张量的数据量是不确定的情况下,处理器可以配置为执行至少一个指令,以实现操作S403。在操作S403,将多个算子各自的预设张量写入多个第二预设存储空间。例如,多个第二预设存储空间可以位于三级缓存单元,也可以位于全局存储单元。

在本公开实施例中,处理器可以配置为执行至少一个指令,以实现操作S410。在操作S410,读取当前输入张量。例如,可以从存储单元读取当前输入张量。在读取了当前输入张量之后,可以确定当前输入张量的数据量。

在本公开实施例中,处理器还可以配置为:根据当前输入张量的数据量,确定多个算子各自的输出张量的数据量。例如,处理器可以配置为执行至少一个指令,以实现操作S420。在操作S420,确定目标模型的当前算子的输出张量的数据量。例如,以当前算子是目标模型的第1个算子为例,可以根据当前输入张量,利用预设函数确定当前算子的输出张量的数据量。

在一些实施例中,处理器还可以配置为生成重分配信息。下面将结合操作S431至操作S436进行说明。

在本公开实施例中,处理器还可以配置为执行至少一个指令,以实现操作S431。在操作S431,确定当前算子的输出张量的数据量是否大于与当前算子的输出张量对应的初始存储空间。例如,第1个算子的输出张量的数据量可以大于与第1个算子的输出张量对应的初始存储空间的容量。

在本公开实施例中,响应于确定当前算子的输出张量的数据量大于与当前算子的输出张量对应的初始存储空间,处理器还可以配置为释放与算子的输出张量对应的初始存储空间。例如,处理器可以配置为执行至少一个指令,以实现操作S432。在操作S432,释放与当前算子的输出张量对应的初始存储空间。与第1个算子对应的初始存储空间可以位于三级缓存单元。可以释放位于三级缓存单元的该初始存储空间。

在本公开实施例中,处理器还可以配置为:根据算子的输出张量的数据量,在存储单元中确定与算子的输出张量对应的临时存储空间。例如,处理器可以配置为执行至少一个指令,以实现操作S433。在操作S433,确定与当前算子的输出张量对应的临时存储空间。可以在全局存储单元确定与第1个算子的输出张量对应的第一临时存储空间。

在本公开实施例中,处理器还可以配置为:生成重分配信息。例如,处理器可以配置为执行至少一个指令,以实现操作S434。在操作S434,生成重分配信息。目标模型可以与重分配变量值对应。可以将重分配变量值设为真,以生成重分配信息。

在本公开实施例中,处理器还可以配置为:根据当前输入张量,确定当前处理周期的多个算子各自的输出张量。例如,处理器可以配置为执行至少一个指令,以实现操作S435’。在操作S435’,运行当前算子。

与操作S235不同之处在于,在本公开实施例中,处理器还可以配置为:响应于确定算子的预设张量的目标参数值大于或等于预设参数阈值,从第二预设存储空间读取算子的预设张量。例如,预设参数阈值可以为1。若利用数据量相同的三个输入张量进行模型推理或模型训练,在当前输入张量为第1个输入张量的情况下,目标参数值可以为3。在目标参数值大于预设参数阈值的情况下,可以从第二预设存储空间读取第1个算子的预设张量。通过本公开实施例,将预设张量存储在第二预设存储空间,并为预设张量设置了目标参数值。由此,可以在目标参数值大于预设参数阈值的情况下,高效地保存预设张量,防止权重张量等张量丢失。此外,也可以节约为预设张量重新分配空间所需的资源开销和时间成本,有助于提高数据处理装置的动态推理能力。

在本公开实施例中,处理器还可以配置为:利用算子的预设张量处理算子的输入张量,得到算子的输出张量。例如,若预设张量为权重张量,可以利用预设张量为算子的输入张量加权,得到当前算子的输出张量。该输出张量可以写入上述的第一临时存储空间。

在本公开实施例中,处理器还可以配置为:利用预设处理参数更新目标参数值。例如,预设处理参数可以为1。利用目标参数值减去预设参数值,得到处理后目标参数值。

在本公开另一实施例中,处理器还可以配置为:响应于确定算子的预设张量的目标参数值小于预设参数阈值,释放与预设张量对应的第二预设存储空间。例如,若利用数据量相同的三个输入张量进行模型推理或模型训练,在利用了第3个输入张量进行模型训练或推理后,目标参数被调整为0,小于预设参数阈值,可以释放与该预设张量对应的第二预设存储空间。

在本公开实施例中,处理器还可以配置为执行至少一个指令,以实现操作S436。在操作S436,确定全部算子是否运行完成。在目标模型包括多个算子的情况下,在第1个算子运行完成之后,可以确定全部算子未运行完成,可以返回至操作S431,将第2个算子作为当前算子,执行操作S431至操作S436,直至全部算子运行完成。

可以理解,上文对生成重分配信息的一些方式进行了说明。在一些实施例中,处理器还可以配置为:根据重分配信息,在存储单元中确定多个目标存储区域。下面将结合操作S441至操作S443进行说明。

在本公开实施例中,处理器还可以配置为执行至少一个指令,以实现操作S441。在操作S441,确定是否重新分配存储空间。例如,在检测到重分配变量值为真的情况下,可以对存储空间进行重新分配。

在本公开实施例中,处理器还可以配置为:根据重分配信息,将多个算子各自的输出张量写入第一预设存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S442。在操作S442,将多个算子各自的输出张量写入第一预设存储区域。第一预设存储区域可以包括多个第一预设存储空间。第一预设存储区域可以位于全局存储单元。第一预设存储区域可以暂存全部算子的输出变量。

在本公开实施例中,处理器还可以配置为:根据多个算子各自的输出张量的数据量,在存储单元中确定多个目标存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S443。在操作443,在存储单元中确定多个目标存储区域。在上述的操作S431至操作S436执行之后,三级缓存中可以存在至少一个初始存储空间和至少一个临时存储空间。可以将这些存储空间释放。接下来,可以在三级缓存单元中重新分配多个目标存储区域。可以理解,多个算子的预设张量存储于多个第二预设存储空间。可以仅为输出张量确定目标存储区域。由此,降低了重新分配所需的资源开销,有助于提高数据处理装置的性能。

在本公开实施例中,处理器还可以配置为:从第一预设存储区域,将多个算子各自的输出张量写入多个目标存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S450。在操作S450,将多个算子各自的输出张量写入目标存储区域。

在本公开实施例中,处理器还可以配置为:利用目标模型处理当前输入张量的在后输入张量,得到当前处理周期的在后处理周期的多个算子各自的输出张量。将在后处理周期的多个算子各自的输出张量写入多个目标存储区域。例如,处理器还可以配置为执行至少一个指令,以实现操作S460。在操作S460,用目标模型处理当前输入张量的在后输入张量。可以理解,关于操作S450和操作S460的说明,可以参考上述的操作S250和操作S260的详细说明,本公开在此不再赘述。

可以理解,上文以操作S420、操作S431至操作S436是先后执行的为示例,对本公开进行了说明。但本公开不限于此,也可以在多次执行操作S420以得到全部算子的输出张量的数据量之后,执行操作S431至操作S436。

可以理解,上文对本公开的处理器进行了进一步说明,下面将对本公开的目标存储区域进行进一步说明。

在本公开实施例中,目标存储区域包括多个目标存储空间。目标存储空间配置为存储算子的输出张量。目标存储区域内存储的多个算子的输出张量之间不存在依赖关系。依赖关系可以表征:当前算子的在后算子的输出张量是将当前算子的输出张量输入在后算子得到的。例如,第1个算子的输出张量可以分别作为第2个算子的输入张量和第4个算子的输入张量。第2个算子的输出张量可以作为第3个算子的输入张量。第3个算子的输出张量也可以作为第4个算子的输入张量。在当前算子为第1个算子的情况下,第2个算子的输出张量与第1个算子的输出张量之间存在依赖关系,第4个算子的输出张量与第1个算子的输出张量之间存在依赖关系。第1个算子的输出张量可以存储于第一目标存储区域的第一目标存储空间。第2个算子的输出张量可以存储于第二目标存储区域的第二目标存储空间。第3个算子的输出张量可以存储于第三目标存储区域的第三目标存储空间。第4个算子的输出张量可以存储于第二目标存储区域的第四目标存储空间。第二目标存储区域内的第2个算子的输出张量和第4个算子的输出张量之间不存在依赖关系。

在本公开实施例中,处理器还可以配置为:响应于确定至少一个目标存储区域内已存储与目标算子的输出张量存在依赖关系的全部输出张量,可以释放目标算子的输出张量的目标存储空间。例如,在第二目标存储区域中已存在第2个算子的输出张量和第4个算子的输出张量的情况下,可以释放上述的第一目标存储空间。通过本公开实施例,可以动态的释放存储空间,有助于实现存储空间的高效复用,有助于进一步优化存储空间的使用效率。

可以理解,上文对本公开的目标存储区域进行了说明,下面将对本公开的数据处理装置的效果进行进一步说明。

在一些实施例中,可以将预设张量存储于第二预设存储空间。在根据重分配信息确定目标存储区域时,可以为输出张量也确定目标存储区域,预设张量仍存储于第二预设存储空间。

在利用第一输入张量进行第1次推理时,可以生成重分配信息,在存储单元中确定了多个目标存储区域。由此,第1次推理用时为7.6毫秒。在第2次推理和第3次推理过程中,第一输入张量的数据量未发生变化,可以使用重新分配后的多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为2.5毫秒。在第3次推理时,推理用时约为2.5毫秒。

在利用第二输入张量进行第1次推理时,可以生成重分配信息,在存储单元中确定了多个目标存储区域。由此,第1次推理用时为8.5毫秒。在第2次推理和第3次推理过程中,第二输入张量的数据量未发生变化,可以使用重新分配后的多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为3.6毫秒。在第3次推理时,推理用时约为3.6毫秒。

在利用第三输入张量进行第1次推理时,可以生成重分配信息,在存储单元中确定了多个目标存储区域。由此,第1次推理用时为6.1毫秒。在第2次推理和第3次推理过程中,第三输入张量的数据量未发生变化,可以使用重新分配后的多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为5.7毫秒。在第3次推理时,推理用时约为5.7毫秒。

在利用第四输入张量进行第1次推理时,可以生成重分配信息,在存储单元中确定了多个目标存储区域。由此,第1次推理用时为10.91毫秒。在第2次推理和第3次推理过程中,第四输入张量的数据量未发生变化,可以使用重新分配后的多个目标存储区域来存储输出张量。在第2次推理时,推理用时约为10.8毫秒。在第3次推理时,推理用时约为10.8毫秒。

通过本公开实施例,在利用数据量一致的不同输入张量进行模型推理过程中,第1次推理所需的时间大幅降低。由此,将预设张量存储与第二预设存储空间可以有效的缓解毛刺现象。

可以理解,上文中目标模型为动态深度学习模型。在另一些实施例中,将目标模型设置为与动态深度学习模的参数量等同的静态深度学习模型,利用静态深度学习模型分别利用上述的第一输入张量至第四输入张量进行模型推理。例如,在利用第一输入张量进行三次模型推理的过程中,静态深度学习模型所需的推理用时均为2.4毫秒。在利用第二输入张量进行三次模型推理的过程中,静态深度学习模型所需的推理用时均为3.4毫秒。在利用第三输入张量进行三次模型推理的过程中,静态深度学习模型所需的推理用时均为5.6毫秒。在利用第四输入张量进行三次模型推理的过程中,静态深度学习模型所需的推理用时均为10.1毫秒。

由此,在将预设张量存储于第二预设存储空间的情况下,重分配所需的资源开销和时间成本大幅降低,动态深度学习模型的推理用时大幅降低,接近静态深度学习模型的推理能力。

可以理解,上文对本公开的数据处理装置进行了说明,下面将对包括数据处理装置的电子设备进行说明。

图5是根据本公开的另一个实施例的电子设备的示意框图。

如图5所示,该设备50可以包括数据处理装置500。数据处理装置500可以为上述的数据处理装置100。

可以理解,上文对本公开的一种电子设备进行了说明,下面将对本公开的数据处理方法进行说明。

图6是根据本公开的一个实施例的数据处理方法的流程图。

如图6所示,方法600可以包括操作S610至操作S640。

在操作S610,从存储单元读取目标模型的当前输入张量。

在本公开实施例中,存储单元包括多个初始存储空间。多个初始存储空间与目标模型的多个张量对应。目标模型包括多个算子。多个张量包括当前输入张量和多个算子各自的输出张量。

在操作S620,根据当前输入张量的数据量,确定多个算子各自的输出张量的数据量。

在操作S630,响应于确定算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量,生成重分配信息。

在本公开实施例中,重分配信息用于指示重新分配张量的存储空间。

在操作S640,根据重分配信息,在存储单元确定多个目标存储区域。

可以理解,可以利用上述的处理器120执行多个指令,以实现方法600。

在一些实施例中,响应于确定算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量,生成重分配信息包括:响应于确定算子的输出张量的数据量大于与算子的输出张量对应的初始存储空间的容量,释放与算子的输出张量对应的初始存储空间。根据算子的输出张量的数据量,在存储单元中确定与算子的输出张量对应的临时存储空间。生成重分配信息。

在一些实施例中,还包括:根据当前输入张量,确定当前处理周期的多个算子各自的输出张量。

在一些实施例中,根据重分配信息,在存储单元中确定多个目标存储区域包括:根据重分配信息,将多个算子各自的输出张量写入第一预设存储区域。例如,第一预设存储区域包括多个第一预设存储空间。根据多个算子各自的输出张量的数据量,在存储单元中确定多个目标存储区域。

在一些实施例中,还包括:从第一预设存储区域,将多个算子各自的输出张量写入多个目标存储区域。

在一些实施例中,存储单元还包括多个第二预设存储空间,多个张量还包括多个算子各自的预设张量,第二预设存储空间配置为存储算子的预设张量。根据当前输入张量,确定当前处理周期的多个算子各自的输出张量包括:响应于确定算子的预设张量的目标参数值大于或等于预设参数阈值,从第二预设存储空间读取算子的预设张量。利用算子的预设张量处理算子的输入张量,得到算子的输出张量。利用预设处理参数更新目标参数值。

在一些实施例中,据当前输入张量,确定当前处理周期的多个算子各自的输出张量还包括:响应于确定目标参数值小于预设参数阈值,释放与预设张量对应的第二预设存储空间。

在一些实施例中,还包括:利用目标模型处理当前输入张量的在后输入张量,得到当前处理周期的在后处理周期的多个算子各自的输出张量。将在后处理周期的多个算子各自的输出张量写入多个目标存储区域。

在一些实施例中,目标存储区域包括多个目标存储空间,目标存储空间配置为存储算子的输出张量。目标存储区域内存储的多个算子的输出张量之间不存在依赖关系。依赖关系用于表征:当前算子的在后算子的输出张量是将当前算子的输出张量输入在后算子得到的。

在一些实施例中,方法还包括:响应于确定至少一个目标存储区域内已存储与目标算子的输出张量存在依赖关系的全部输出张量,释放用于存储目标算子的输出张量的目标存储空间。

本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。

设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如数据处理方法。例如,在一些实施例中,数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)显示器或者LCD(液晶显示器));以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术分类

06120116104928