一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

深度学习的稀疏数据存储方法、计算机设备和存储介质与流程

2022-11-09 23:15:02 来源:中国专利 TAG:


1.本发明深度学习技术领域,尤其涉及深度学习的稀疏数据存储方法、计算机设备和存储介质。


背景技术:

2.随着深度学习的快速发展,卷积神经网络已经大量应用于机器视觉应用,例如图像识别与图像分类。由于深度学习的特性,随着运算的进行,数据中会出现大量的0,但是其位置是随机的。存储于ddr(double data rate,双倍速率同步动态随机存储器)上的包括大量0的数据需要传输至sram(static random-access memory,静态随机存取存储器)进行卷积计算,大量的0将会导致传输的数据量较大,从而使得传输数据时对传输带宽的要求较高。
3.为了满足对传输带宽的要求,采用hbm(high band width memory,高带宽内存)传输,将很多ddr叠在一起,通过数量来解决速度的问题,hbm传输带来的问题是成本和功耗的上升。


技术实现要素:

4.基于此,有必要针对上述问题,提出了深度学习的稀疏数据存储方法、计算机设备和存储介质,能够有效减少深度学习运算时所需传输的数据量,降低了深度学习运算对数据传输带宽的需求,从而降低了深度学习运算所需的功耗和成本。
5.一种深度学习的稀疏数据存储方法,包括:获取当前非零数据和所述当前非零数据的上一笔非零数据之间的偏移量,根据所述当前非零数据和所述偏移量生成传输数据,所述传输数据存储于第一存储器中;获取所述传输数据,根据所述偏移量计算出地址增量,根据所述地址增量获取所述当前非零数据存储于第二存储器中的存储地址;将所述当前非零数据传输至所述第二存储器,并存储于所述第二存储器中所述存储地址。
6.其中,所述存储于所述第二存储器中所述存储地址的步骤之后,包括:生成用于标记所述存储地址的有效标记;根据所述有效标记读取所述存储地址上存储的数据是否为非零数据,选择采用当前非零数据或零进行计算。
7.其中,所述生成用于标记所述存储地址的有效标记的步骤,包括:生成标记字符串,将所述标记字符串中与所述存储地址对应的字符标记为1,其余的字符标记为0。
8.其中,所述生成用于标记所述存储地址的有效标记的步骤,包括:将所述有效标记存储于第二存储器中,或将所述有效标记存储于第三存储器中。
9.其中,所述第一存储器为倍速率同步动态随机存储器,所述第二存储器为静态随机存取存储器,所述第三存储器为缓存器。
10.其中,所述传输数据的预设位置为所述当前非零数据,所述传输数据的剩余位置为所述偏移量。
11.其中,所述根据所述当前非零数据和所述偏移量生成传输数据的步骤之前,包括:根据一轮运算支持的最大数据量确定所述剩余位置的位数;根据深度学习采用的数据类型确定所述预设位置的位数。
12.其中,所述当前非零数据包括深度学习中用于计算的计算数据和神经网络参数中的至少一个。
13.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上所述方法的步骤。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述方法的步骤。
15.采用本发明实施例,具有如下有益效果:在进行将第一存储器中的数据传输至第二存储器中的操作时,获取当前非零数据和相较于上一笔非零数据的偏移量,仅仅传输第一存储器中的非零数据,并将非零数据存储于第二存储器中的基于偏移量计算出的存储地址中即可,与深度学习运算无关的0不进行传输,够有效减少传输时所需的数据量,降低了深度学习运算对数据传输带宽的需求,从而提升了数据传输的效率,降低了数据传输的成本和功耗。
16.进一步地,通过生成标记存储地址的有效标记,能够方便后续在利用存储地址上的当前非零数据进行卷积计算时,能够灵活读取当前非零数据,提升运算处理的便捷性。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.其中:图1是本发明提供的深度学习的稀疏数据存储方法的第一实施例的流程示意图;图2是本发明提供的深度学习系统的一实施例的结构示意图;图3是本发明提供的深度学习的稀疏数据存储方法的第二实施例的流程示意图;图4是本发明提供的计算机设备的一实施例的结构示意图;图5是本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
19.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.请参阅图1和图2,图1是本发明提供的深度学习的稀疏数据存储方法的第一实施例的流程示意图。图2是本发明提供的深度学习系统的一实施例的结构示意图。本发明提供的深度学习的稀疏数据存储方法应用于深度学习系统,深度学习系统10包括深度学习芯片11和位于深度学习芯片11之外的第一存储器12,深度学习芯片11内设置有第二存储器13,第一存储器12可以第二存储器13进行数据传输。深度学习芯片11内还可以设置有运算单元14,运算单元14用于读取第二存储器13中的数据进行深度学习的相关运算。
21.本发明提供的深度学习的稀疏数据存储方法包括如下步骤:s101:获取当前非零数据和当前非零数据的上一笔非零数据之间的偏移量,根据当前非零数据和偏移量生成传输数据,传输数据存储于第一存储器中。
22.在一个具体的实施场景中,深度学习所需的数据一般包括用于计算的计算数据,例如图片数据,和/或神经网络参数。在本实施场景中以计算数据为例进行说明,神经网络参数的原理大致相同,不再进行赘述。深度学习所需的数据一般存储于作为外部存储装置的第一存储器中,第一存储器可以是ddr(double data rate,双倍速率同步动态随机存储器)。由于深度学习的特性,数据稀疏化是无法避免的问题,随着运算的进行,这些深度学习所需的数据中会出现大量的0,但是其位置是随机的,因此数据与数据之间可能存在若干个无用的0。这些0并不需要参与到运算中去,因此可以不进行传输,而是仅仅传输数据中的非零数据,以减少需要传输的运算量,从而降低对传输带宽的需求。
23.获取当前非零数据和该当前非零数据的上一笔非零数据之间的偏移量,偏移量可以是当前非零数据和上一笔非零数据之间的0的位数。当前非零数据和上一笔非零数据都是非0数据,上一数据之后到当前非零数据有n笔数据的值都是0,则偏移量为n。
24.根据当前非零数据和偏移量生成传输数据,可以是将当前非零数据和偏移量进行组合,生成传输数据。在一个实施场景中,可以预设一个传输数据的结构格式,规定传输数据的中的某些位置作为预设位置用于填写当前非零数据,剩余的某些位置作为剩余位置用于填写偏移量。当前非零数据的预设位置和偏移量的剩余位置可以是相邻的,也可以是中间间隔有空位,在此不做限定。当前非零数据的便宜位置和/或偏移量的剩余位置可以是连续的位置,也可以是间隔的位置,可以由用户根据实际需求进行设置。
25.在一个实施场景中,传输数据的结构格式中的剩余位置的位数和预设位置位数预先设定。例如,根据一轮运算支持的最大数据量确定剩余位置的位数。如深度学习运算一次最多支持4096笔数据运算,则偏移量最多需要log2(4096)=12 bit。因此为了确保剩余位置能够满足偏移量的最大值,设置剩余位置的位数最少为12 bit,可以是12 bit、16bit等等。根据深度学习采用的数据类型确定预设位置的位数,深度学习运算中常用的数据可能有8/16/32 bit,根据实际使用的数据类型确定预设位置的位数,例如在本实施场景中可以设置为16bit。
26.s102:获取传输数据,根据偏移量计算出地址增量,根据地址增量获取当前非零数据存储于第二存储器中的存储地址。
27.在一个具体的实施场景中,获取到存储于第一存储器中的传输数据后,读取传输数据中的偏移量,例如传输数据为0x10010008,16bit高位数据用于表示当前非零数据,16bit低位数据用于表示偏移量。因此,偏移量为8,也就是说当前非零数据和上一笔非零数据之间间隔了7个0。根据偏移量计算出地址增量,具体地说,结合深度学习运算所采用的数
据格式计算地址增量。例如,如果使用int 8数据,偏移量每增加1,地址增加1 byte。如果使用int 16数据,偏移量每增加1,地址增加2 byte。
28.根据地址增量获取当前非零数据存储于第二存储器中的存储地址,例如,在深度学习使用int 8数据的情况下,偏移量每增加1,地址增加1 byte。结合第二存储器宽度为16bit获取当前非零数据在第二存器中的存储地址。
29.s103:将当前非零数据传输至第二存储器,并存储于第二存储器中存储地址。
30.在一个具体的实施场景中,将当前非零数据传输至第二存储器,并存储于上述步骤中获取的存储地址。例如,第一笔传输数据为0x12340000,则当前非零数据为0x1234,在第二存储器的地址0写入数据0x1234。第二笔传输数据为0x10010008,则当前非零数据为0x1001,偏移量为8,在第二存储器的地址8写入数据0x1001。
31.通过上述描述可知,在本实施例中,在进行将第一存储器中的数据传输至第二存储器中的操作时,获取当前非零数据和相较于上一笔非零数据的偏移量,仅仅传输第一存储器中的非零数据,并将非零数据存储于第二存储器中的基于偏移量计算出的存储地址中即可,与深度学习运算无关的0不进行传输,够有效减少传输时所需的数据量,降低了深度学习运算对数据传输带宽的需求,从而提升了数据传输的效率,降低了数据传输的成本和功耗。
32.请结合参阅图3和图2,图3是本发明提供的深度学习的稀疏数据存储方法的第二实施例的流程示意图。本发明提供的数据传输和存储方法包括如下步骤:s201:获取当前非零数据和当前非零数据的上一笔非零数据之间的偏移量,根据当前非零数据和偏移量生成传输数据,传输数据存储于第一存储器中。
33.s202:获取传输数据,根据偏移量计算出地址增量,根据地址增量获取当前非零数据存储于第二存储器中的存储地址。
34.s203:将当前非零数据传输至第二存储器,并存储于第二存储器中存储地址。
35.在一个具体的实施场景中,步骤s201-s203与本发明提供的深度学习的稀疏数据存储方法的第一实施例中的步骤s101-s103基本一致,此处不再进行赘述。
36.s204:生成用于标记存储地址的有效标记,根据有效标记读取存储地址上存储的数据是否为非零数据,选择采用当前非零数据或零进行计算。
37.在一个具体的实施场景中,生成用于标记存储地址的有效标记,可以是在存储地址上添加标识记号,也可以是记录下存储地址的位置。根据有效标记读取存储地址上存储的当前非零数据进行计算,第二存储器上除了存地址外的其他地址上的数据原本应该是0,但是在本步骤中不对其他地址上的数据进行处理,因为在深度学习运算中,进行卷积运算时,0对应的计算结果还是0,是否将0加入到计算中,对于卷积运算的结果没有影响,因此在本实施场景中,不对其他地址上的数据进行处理,节省了存储数据所需的时间。仅仅提取存储地址上存储的当前非零数据进行计算,不仅不影响计算结果的正确性,还能有效降低运算所需的计算量。
38.在本实施场景中,能够根据有效标记判断第二存储器的每个地址上存储的是否为非零数据,从而根据实际需求选择采用非零数据进行计算,或者采用0进行计算。例如,可以根据有效标记读取一次卷积计算所覆盖的范围内的全部非零数据和这些非零数据的存储地址,以进行卷积计算,或者可以根据有效标记获取计算所覆盖范围内的哪些地址对应的
数据实际为0,选择采用这些0进行计算。
39.有效标记可以存储于第二存储器中也可以存出于第三存储器中。在一个实施场景中,第一存储器为倍速率同步动态随机存储器,第二存储器为静态随机存取存储器,第三存储器为缓存器。
40.在一个实施场景中,生成标记字符串,通过读取标记字符串获取第二存储器中的存储地址。将标记字符串中与存储地址对应的字符标记为1,其余的字符标记为0,读取标记为1的字符对应的存储地址上存储的当前非零数据进行计算。
41.在一个实施场景中,传输数据中的16bit高位数据用于表示当前非零数据,16bit低位数据用于表示偏移量。深度学习运算输入图片为4
×
4,卷积运算的核为3
×
3。数据储存按行

列的顺序排布。第一存储器中存储的传输数据为:0x12340000;0x10010008;0xabcd0002;0x5a5a0004。根据传输数据依次往第二存储器的地址0写入0x1234,地址8写入0x1001,地址a写入0xabcd,地址e写入0x5a5a。其余地址可能残留之前的数据,不用进行任何处理,或者可以默认为这些数据实际都是0。同时,传输开始前数据有效标记清空,传输过程中将bit 0/bit 8/bit 10/bit 14置1,生成标记字符串。此时的数据有效标记为0b0100_0101_0000_0001,sram中存储的数据表1所示:0x12340xxxxx0xxxxx0xxxxx0xxxxx0xxxxx0xxxxx0xxxxx0x10010xxxxx0xabcd0xxxxx0xxxxx0xxxxx0x5a5a0xxxxx表1运算开始后,卷积核第一个位置的运算需要依次读取坐标为(0,0)、(0,1)、(0,2)、(1,0)、(1,1)、(1,2)、(2,0)、(2,1)、(2,2)的数据。其中,(0,0)、(2,0)、(2,2)的数据对应的有效标记分别为bit 0/bit 8/bit 10,对应值为1,读取存储地址(0,0)、(2,0)、(2,2)的当前非零数据0x1234、0x1001、0xabcd,其他地址的数据对应的有效标记为0,跳过运算。再例如,卷积核在后续运算中第二个位置的运算需要依次读取坐标为(0,1)、(0,2)、(0,3)、(1,1)、(1,2)、(1,3)、(2,2)、(2,2)、(2,3)的数据。其中,(2,2)的数据对应的有效标记为bit 10,对应值为1,读取存储地址(2,2)上存储的当前非零数据,其他地址的数据对应的有效标记为0,跳过运算。
42.后续运算同理,此处不再进行赘述。
43.通过上述描述可知,在本实施例中将当前非零数据传输至第二存储器,并存储于第二存储器中存储地址,生成用于标记存储地址的有效标记;根据有效标记读取存储地址上存储的当前非零数据进行计算,能够有效降低需要存储在第二存储器中的数据量,对第二存储器中其余地址不需要重新置0,有效降低了在第二存储器中存储数据的时间,提升存储数据的效率,同时,通过有效标记能够灵活获取第二存储器上存储的当前非零数据进行运算,能够很好地支持类似卷积运算这种不按照顺序进行数据运算的运算方式。
44.在一个实施场景中,图1和/或图2所示的方法应用于深度学习系统,深度学习系统包括深度学习芯片和第一存储器(例如,ddr),深度学习芯片上设置有第二存储器(例如,sram)。第一存储器和第二存储器通过数据存储电路连接。深度学习芯片上还设置有数据读取电路和运算单元,数据读取电路连接第二存储器和第三存储器(当有效标记存储于第三
存储器(register)上时),数据读取电路获取存储地址上的当前非零数据,并传输至深度学习芯片中的运算单元进行卷积运算。
45.请参阅图4,图4是本发明提供的计算机设备的一实施例的结构示意图。智能设备10包括处理器21、存储器22。处理器21耦接存储器22。存储器22中存储有计算机程序,处理器21在工作时执行该计算机程序以实现如上所述的方法。详细的步骤可参见上述,在此不再赘述。
46.请参阅图5,图5是本发明提供的计算机可读存储介质的一实施例的结构示意图。计算机可读存储介质30中存储有至少一个计算机程序31,计算机程序31用于被处理器执行以实现如上所述方法,详细的步骤可参见上述,在此不再赘述。在一个实施例中,计算机可读存储介质30可以是终端中的存储芯片、硬盘或者是移动硬盘或者优盘、光盘等其他可读写存储的工具,还可以是服务器等等。
47.所述存储介质可以由任何类型的易失性或非易失性存储设备、或者它们的组合来实现。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasableprogrammable read-only memory)、电可擦除可编程只读存储器(eepromelectricallyerasable programmable read-only memory)、磁性随机存取存储器(fram,ferromagneticrandom access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronousstatic random access memory)、动态随机存取存储器(dram,dynamic random accessmemory)、同步动态随机存取存储器(sdram,synchronous dynamic randomaccessmemory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data ratesynchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
48.在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
49.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
50.另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可
以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
51.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟者光盘等各种可以存储程序代码的介质。
52.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
53.本发明所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
54.本发明所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
55.本发明所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
56.以上内容是结合具体的优选实施方式对本发明所做的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献