首页 / 专利库 / 资料储存系统 / 非易失性存储器 / 数据处理方法、装置、计算机设备和存储介质

数据处理方法、装置、计算机设备和存储介质

阅读:1046发布:2020-06-18

专利汇可以提供数据处理方法、装置、计算机设备和存储介质专利检索,专利查询,专利分析的服务。并且本公开涉及一种 数据处理 方法、装置、计算机设备和存储介质。其所公开的板卡包括: 存储器 件、 接口 装置和 控制器 件以及数据处理装置;其中,数据处理装置与存储器件、控制器件以及接口装置分别连接;存储器件,用于存储数据;接口装置,用于实现数据处理装置与外部设备之间的数据传输;控制器件,用于对数据处理装置的状态进行监控。本公开 实施例 所提供的数据处理方法、装置、计算机设备和存储介质,通过标签信息对神经网络中的数据进行标记,简化了对数据进行存储等处理的过程,减少了对 硬件 资源的占用,且提高了神经网络运算的速度。,下面是数据处理方法、装置、计算机设备和存储介质专利的具体信息内容。

1.一种数据处理方法,其特征在于,应用于处理器,所述方法包括:
获取第一数据,所述第一数据用于进行神经网络运算;
确定所述第一数据的标签信息;
根据所述标签信息,将所述第一数据存入数据存储空间中,
其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一数据的标签信息,包括:
根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,
其中,所述静态标签信息包括以下至少一项:数据类别、静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值。
3.根据权利要求2所述的方法,其特征在于,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,包括:
根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别;
其中,所述数据类别包括以下任一项:指令、输入神经元、输出神经元、隐藏神经元、常量神经元、输入权值、输出权值、常量权值和辅助数据。
4.根据权利要求3所述的方法,其特征在于,根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别,包括:
获取对应所述神经网络的待标记计算图,所述待标记计算图中包括操作节点、无类别数据节点、无类别数据节点与操作节点之间的连接关系;
遍历所述待标记计算图,获得所述待标记计算图中所有的无类别数据节点的信息和操作节点的信息,所述无类别数据节点的信息包括所述第一数据、所述第一数据对应的前续操作节点和后续操作节点,所述操作节点的信息包括实现所述操作节点的操作所对应的参数、对应的输入数据节点和输出数据节点;
在数据节点队列中依次存储遍历到的所述无类别数据节点的信息,在操作节点队列中依次存储遍历到的所述操作节点的信息;
根据所述无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,并将确定了对应的数据类别的无类别数据节点从所述数据节点队列中删除。
5.根据权利要求4所述的方法,其特征在于,根据所述无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,包括:
根据所述无类别数据节点所连接的前续操作节点的数量,确定所述无类别数据节点的入度;
根据所述无类别数据节点所连接的后续操作节点的数量,确定所述无类别数据节点的出度;
根据所述无类别数据节点的前续操作节点和后续操作节点,确定所述无类别数据节点中第一数据的待定数据类别;
根据所述无类别数据节点的入度、出度,从待定数据类别中确定出无类别数据节点中第一数据的数据类别。
6.根据权利要求4所述的方法,其特征在于,根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别,还包括:
将确定出的数据类型存储至所述待标记计算图中对应的无类型数据节点中,形成具有静态标签信息的数据节点,得到已标记计算图。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述标签信息还包括动态标签信息,所述动态标签信息用于表征所述第一数据与运行所述神经网络的处理器相关的信息;
其中,确定所述第一数据的标签信息,包括:
根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,其中,所述动态标签信息包括以下至少一项:动态数据类型、动态数据维度顺序、分片参数、填充参数和数据尺寸。
8.根据权利要求4所述的方法,其特征在于,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,包括:
根据所述第一数据所参与的目标操作,从所述处理器中确定出执行所述目标操作的运算模,所述目标操作包括所述第一数据所参与的前续操作和/或后续操作;
根据所述运算模块,确定所述第一数据的动态数据类型。
9.根据权利要求8所述的方法,其特征在于,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,包括:
根据所述目标操作所对应的算法特征,确定所述第一数据的动态数据维度顺序。
10.根据权利要求8或9所述的方法,其特征在于,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,包括以下至少一项:
根据所述运算模块的单次可计算数据个数,确定所述第一数据的分片参数;
根据所述分片参数、所述动态数据维度顺序中最低维度的维度值,确定所述第一数据的填充参数;
根据所述第一数据的所有维度值、所述填充参数,确定所述第一数据的数据尺寸,其中,所述动态数据维度顺序中最低维度的维度值是根据所述静态标签信息确定的。
11.根据权利要求7所述的方法,其特征在于,所述方法还包括:
将所述第一数据的标签信息存入标签存储空间中;
其中,所述静态标签信息存入所述标签存储空间中的静态标签存储空间中;
所述动态标签信息存入所述标签存储空间中的动态标签存储空间中。
12.根据权利要求7所述的方法,其特征在于,根据所述标签信息,将所述第一数据存入数据存储空间中,包括:
在所述标签信息中包含动态标签信息时,根据所述动态标签信息,从所述数据存储空间中申请用于存储所述第一数据的第一数据存储空间;
将所述第一数据存入所述第一数据存储空间中。
13.根据权利要求12所述的方法,其特征在于,将所述第一数据存入所述第一数据存储空间中,包括:
判断所述第一数据当前的数据状态与所述动态标签信息是否一致,所述数据状态包括所述第一数据的数据类型、数据维度的顺序和维度值;
在所述第一数据当前的数据状态与动态标签信息不一致时,根据所述静态标签信息和所述动态标签信息对所述第一数据进行转换,得到转换后的第一数据,所述转换后的第一数据的数据状态与所述动态标签信息一致;
将所述转换后的第一数据存入所述第一数据存储空间中。
14.一种数据处理装置,其特征在于,应用于处理器,所述装置包括:
数据获取模块,获取第一数据,所述第一数据用于进行神经网络运算;
标签信息确定模块,确定所述第一数据的标签信息;
数据存储模块,根据所述标签信息,将所述第一数据存入数据存储空间中,其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
15.一种电子设备,其特征在于,所述电子设备包括如权利要求14所述的数据处理装置。
16.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求14所述的数据处理装置;
其中,所述数据处理装置与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述数据处理装置与外部设备之间的数据传输;
所述控制器件,用于对所述数据处理装置的状态进行监控。
17.一种非易失性计算机可读存储介质,其特征在于,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至13任一项所述的数据处理方法。

说明书全文

数据处理方法、装置、计算机设备和存储介质

技术领域

[0001] 本公开涉及计算机技术领域,特别是涉及一种数据处理方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着计算机技术的发展,神经网络(neural networks)也有了显著的进步,可以通过特定或者通用的处理器进行神经网络运算。相关技术中,在神经网络中数据类型多、运算量大、硬件限制等因素的影响下,神经网络运算的速度受到了很大限制。发明内容
[0003] 基于此,有必要针对上述技术问题,提供一种数据处理方法、装置、计算机设备和存储介质。
[0004] 根据本公开的一方面,提供了一种数据处理方法,应用于处理器,所述方法包括:
[0005] 获取第一数据,所述第一数据用于进行神经网络运算;
[0006] 确定所述第一数据的标签信息;
[0007] 根据所述标签信息,将所述第一数据存入数据存储空间中,
[0008] 其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
[0009] 根据本公开的另一方面,提供了一种数据处理装置,用于处理器,所述装置包括:
[0010] 数据获取模,获取第一数据,所述第一数据用于进行神经网络运算;
[0011] 标签信息确定模块,确定所述第一数据的标签信息;
[0012] 数据存储模块,根据所述标签信息,将所述第一数据存入数据存储空间中,[0013] 其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
[0014] 根据本公开的另一方面,提供了一种数据处理装置,所述数据处理装置包括上述数据处理装置。
[0015] 根据本公开的另一方面,提供了一种电子设备,该电子设备包括上述数据处理装置。
[0016] 根据本公开的另一方面,提供了一种板卡,该板卡包括上述数据处理装置。
[0017] 根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述数据处理方法。
[0018] 在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机扫描仪平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器端服务器、相机、摄像机、投影仪、手表机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0019] 在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调微波炉、箱、电饭煲、加湿器洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0020] 本公开实施例提供一种数据处理方法、装置、计算机设备和存储介质,通过标签信息对神经网络中的数据进行标记,且自动确定数据的标签信息,简化了对数据进行存储、运算等处理的过程,为用户提供了更为友好的API,改善了软件的性能,减少了对硬件资源的占用,且提高了神经网络运算的速度。
[0021] 通过权要中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

[0022] 包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0023] 图1示出根据本公开实施例的数据处理方法的处理器的示意图。
[0024] 图2a示出根据本公开一实施例的数据处理方法的流程图
[0025] 图2b示出根据本公开一实施例的数据处理方法中确定数据类别的流程图。
[0026] 图2c示出根据本公开一实施例的数据处理方法中确定数据类别的示意图。
[0027] 图2d示出根据本公开一实施例的数据处理方法中数据类别生成模块的示意图。
[0028] 图2e示出根据本公开一实施例的数据处理方法中动态标签信息生成模块的示意图。
[0029] 图3a示出根据本公开实施例的数据处理方法中的关联列表的示意图。
[0030] 图3b示出根据本公开实施例的数据处理方法中的计算图的示意图。
[0031] 图4a示出根据本公开实施例的数据处理方法中的数据转换的示意图。
[0032] 图4b示出根据本公开实施例的数据处理方法中所设计的用于神经网络运算的装置的示意图。
[0033] 图4c示出根据本公开实施例的数据处理方法中用于神经网络运算装置的使用示意图。
[0034] 图5示出根据本公开实施例的数据处理装置的框图
[0035] 图6示出根据本公开实施例的板卡的结构框图。

具体实施方式

[0036] 下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0037] 应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0038] 还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0039] 如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0040] 相关技术中,对神经网络加速器的研究已经取得了显著成就,并为很多深度学习算法提供了有的硬件支持。为了提高神经网络加速器的性能,神经网络开发工具包(neural network development kit,简称NDK)中的算法优化和数据布局(包括数据的存储、变形、转移等与数据相关的处理)是不可缺少的。神经网络算法中丰富的数据类型导致了数据布局信息的多样性。如何将复杂的数据布局信息添加至NDK,从而引导软件全方面的工作,以避免用户感知,同时提供用户友好的API,并能改善软件的性能,提供神经网络运算的速度是亟待解决的问题。本公开实施例提供一种数据处理方法、装置、计算机设备和存储介质,通过标签信息对神经网络中的数据进行标记,且自动确定数据的标签信息,简化了对数据进行存储、运算等处理的过程,为用户提供了更为友好的API,改善了软件的性能,减少了对硬件资源的占用,且提高了神经网络运算的速度。
[0041] 根据本公开实施例的数据处理方法可应用于处理器中,该处理器可以包括通用处理器,例如CPU(Central Processing Unit,中央处理器),其中,通用处理器可以对该电子设备接收的数据及指令进行预处理等操作,该通用处理器也可以实现指令编译等功能。该处理器也可以包括执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对人工智能处理器的具体类型不作限制。
[0042] 在一种可能的实现方式中,本公开中所提及的人工智能处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。该人工智能处理器可以根据该通用处理器传送的编译后的指令执行机器学习运算,如该人工智能处理器可以根据编译后的指令执行神经网络推理或训练等运算,以实现图像识别语音识别等。
[0043] 当然,在其他可能的实施例中,该人工智能处理器也可以实现上述的指令编译等功能。进一步可选地,本公开一实施例的电子设备可以包括上述的处理器,即该电子设备可以包括上述的通用处理器和人工智能处理器。
[0044] 图1示出根据本公开实施例的数据处理方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,存储单元102可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
[0045] 图2a示出根据本公开一实施例的数据处理方法的流程图。如图2a所示,该方法应用于处理器,该方法包括步骤S10、步骤S11和步骤S12。
[0046] 在步骤S10中,获取第一数据,第一数据用于进行神经网络运算。
[0047] 在步骤S11中,确定第一数据的标签信息。其中,标签信息包括静态标签信息,静态标签信息用于表征第一数据参与神经网络运算相关的信息。
[0048] 在本实施例中,静态标签信息可以包括描述第一数据本身性质的数据类型、维度、维度值等信息,还包括基于第一数据所参与的神经网络运算相关的信息。静态标签信息可以在神经网络建立之后确定,第一数据的静态标签信息可以适用于任意运行神经网络的处理器,也即在不同的处理器中第一数据的静态标签信息是不变的。同一第一数据在不同的神经网络中的静态标签信息可能不同。可选地,第一数据的静态标签信息可以是获取第一数据的过程(用户输入第一数据的过程)中处理器自动检测确定的,也可以是根据用户输入的信息确定的,本公开对此不作限制。
[0049] 在步骤S12中,根据标签信息,将第一数据存入数据存储空间中。
[0050] 在本实施例中,处理器可以根据标签信息确定存储第一数据所需的数据存储空间大小,进而申请所需的数据存储空间,而后将第一数据存储至申请到的数据存储空间中。具体地,处理器可以直接根据静态标签信息进行数据存储空间申请,存储第一数据。例如,根据第一数据的静态标签信息确定第一数据的数据量,进而根据确定的数据量申请存储第一数据的数据存储空间,进而存储第一数据。
[0051] 可选地,静态标签信息可以包括以下至少一项:数据类别、静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值。
[0052] 在该实现方式中,数据类别表示的第一数据在神经网络中属于何种类别的数据,是基于用户是否可见、在神经网络中所参与操作等信息确定的。静态数据类型表示的是第一数据的类型和位数,如静态数据类型可以为32位浮点数等。静态数据维度可以是一维、二维、多维等维度,静态数据维度顺序可以表示第一数据的存储和/或读取的维度顺序。对应每个静态数据维度的维度值表示的是对应静态数据维度的长度或尺寸。例如,某第一数据为矩阵,静态数据维度包括行和列,静态数据维度顺序为行优先,行的维度值为10、列的维度值为4。某第一数据为三维数据,静态数据维度包括第一维、第二维、第三维,静态数据维度顺序为第三维>第二维>第一维,第一维的维度值为10、第二维的维度值为4、第三维的维度值为8。
[0053] 在一种可能的实现方式中,获取第一数据的标签信息,可以包括:根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息。
[0054] 在该实现方式中,输入信息可以是在获得第一数据时根据用户输入的或者处理器对第一数据进行检测所确定的,可以描述第一数据在输入处理器时的维度、尺寸、数据类型等数据状态。静态标签信息中的静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值等静态标签信息可以是根据输入信息确定的。例如,在处理器接收到用户输入某一个第一数据时,根据用户输入的输入信息确定静态标签信息。或者处理器在接收用户输入的某一个第一数据时,可以对第一数据进行检测,以确定输入信息。处理器可以根据第一数据所对应的神经网络确定第一数据的数据类别。
[0055] 在一种可能的实现方式中,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,可以包括:根据第一数据对应于神经网络的出度、入度和第一数据参与的神经网络中的操作,确定第一数据的数据类别。
[0056] 在该实现方式中,入度表示该第一数据作为数据节点所参与的前续操作节点的数量(该第一数据为前续操作节点的输出),出度表示第一数据作为数据节点所参与的后续操作节点的数量(该第一数据为后续操作节点的输入)。例如,某第一数据cc可以是1个前续操作节点的输出、3个后续操作节点的输入,则该第一数据cc的出度为3、入度为1。可以为不同的数据类别设置不同的代码,以进行区分。如下表1所示,描述了不同数据类别的数据所具有的特点和对应的标识。
[0057] 可选地,数据类别可以包括以下任一项:指令(Instruction)、输入神经元(Input Neuron)、输出神经元(Output Neuron)、隐藏神经元(Hidden Neuron)、常量神经元(Constant Neuron)、输入权值(Input Weight)、输出权值(Output Weight)、常量权值(Constant Weight)和辅助数据(Auxiliary)。
[0058] 表1数据类别、对应标识及数据特点
[0059]
[0060] 其中,指令的出度和入度为零,用于触发神经网络运算。输入神经元、常量神经元、输入权值、常量权值、辅助数据的出度可以大于1、入度可以为0。输出神经元、输出权值的出度可以为0、入度可以大于或等于1。隐藏神经元的出度和入度均可以大于或等于1。
[0061] 在一种可能的实现方式中,第一数据的静态标签信息可以表示为:
[0062] Static:classification,type1,DIM_A1…An,{x1…xn}
[0063] 其中,static为表示标签信息为静态标签信息的标识。classification表示数据类别,type1表示静态数据类型。DIM_A1…An中的n表示静态数据维度,A1…An表示静态数据维度顺序为A1…An。A1的维度值为x1…An的维度值为xn。“,”、“{}”仅用于在本公开中分隔静态标签信息中的不同参数,并非静态标签信息的必备内容,实际应用中“,”、“{}”可以不存在,也可以由其他标识替代,本公开对此不作限制。
[0064] 应当理解的是,本领域技术人员可以根据实际需要对静态标签信息、数据类别的标识,以及静态标签信息中各参数的位置进行设置,本公开对此不作限制。
[0065] 例如,某第一数据的静态标签信息为:Static:IW,Float32,DIM_HW,{10,4},则表示该第一数据为输入权值(数据类别)、32位浮点数(静态数据类型)、二维行优先(静态数据维度及静态数据维度顺序)、行具有10个数(维度值)、列具有4个数(维度值)。
[0066] 图2b示出根据本公开一实施例的数据处理方法中确定数据类别的流程图。在一种可能的实现方式中,如图2b所示,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,可以包括步骤S31至步骤S34。
[0067] 在步骤S31中,获取对应神经网络的待标记计算图。其中,待标记计算图中包括无类别数据节点、操作节点、以及无类别的数据节点与操作节点之间的连接关系。无类别数据节点可以用于表示神经网络中所涉及的数据。操作节点可以用于表示神经网络中对数据所进行的操作处理。
[0068] 在步骤S32中,遍历待标记计算图,获得待标记计算图中所有的无类别数据节点的信息和操作节点的信息。
[0069] 无类别数据节点的信息可以包括参与神经网络运算的数据(包括第一数据以及下文所提及的第二数据)、数据的除数据类别之外的其余静态标签信息、与该数据节点相连接的前续操作节点和后续操作节点。操作节点的信息可以包括实现操作节点的操作所对应的参数、与该操作节点连接的输入数据节点和输出数据节点(也即上述无类别数据节点)。
[0070] 在该实现方式中,待标记计算图可以用于存储神经网络结构的图结构,也可以是用于存储的数据图结构,该数据图结构仅用于存储数据,本公开对此不作限制。
[0071] 在该实现方式中,处理器可以从待标记计算图的某一个无类别数据节点(如,输入神经元)开始进行遍历,先确定该无类别数据节点的前续操作节点和后续操作节点,之后再获取新的无类别数据节点,继续确定该新的无类别数据节点的前续操作节点和后续操作节点,直至遍历到所有的节点(包括无类别数据节点和操作节点)。
[0072] 在步骤S33中,在数据节点队列中依次存储遍历到的无类别数据节点的信息,在操作节点队列中依次存储遍历到的操作节点的信息。
[0073] 其中,数据节点队列中仅存储无类别数据节点的信息,处理器每次存储遍历到无类别数据节点之后,需先判断数据节点队列中该无类别数据节点的信息是否已经进行了存储,若数据节点队列中已存则不再存储该无类别数据节点的信息。若数据节点队列中未存储该无类别数据节点的信息,则存储该无类别数据节点的信息。处理器每次存储遍历到的操作节点之前,需先判断操作节点队列中该操作节点的信息是否已存,若操作节点队列中已存则不再存储该操作节点的信息。若操作节点队列中未存储该操作节点的信息,则存储该操作节点。这样,可以节省存储空间,提高遍历速度。
[0074] 在步骤S34中,根据无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,并将确定了对应的数据类别的无类别数据节点从数据节点队列中删除。
[0075] 在该实现方式中,直至数据节点队列为空,确定出待标记计算图中所有无类别数据节点的数据类别后,结束节点扫描和数据类别确定。在数据节点队列中删除已经确定了数据类别的无类别数据节点,可以节省数据节点队列所需占用的存储空间,且删除后也不会出现数据类别过程的二次重复,提高处理器确定待标记计算图中所有无类别数据节点的确定速度。
[0076] 在一种可能的实现方式中,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,还可以包括:
[0077] 将确定出的数据类型存储至所述待标记计算图中对应的无类型数据节点中,形成具有静态标签信息的数据节点,得到已标记计算图。
[0078] 在该实现方式中,可以将数据类别存入对应的无类别数据节点的静态标签信息中。此时,待标记计算图中的该无类别数据节点由于已存储了其对应的数据类别,变为具备完整内容的数据节点。直至数据节点队列为空,确定出待标记计算图中所有无类别数据节点的数据类别后,结束节点扫描和数据类别确定,得到已标记计算图。已标记计算图中所有数据节点均已确定其对应的数据类别。该已标记计算图可以用于数据存储或数据搬运过程中。
[0079] 在一种可能的实现方式中,步骤S34可以包括:
[0080] 根据所述无类别数据节点所连接的前续操作节点的数量,确定所述无类别数据节点的入度;
[0081] 根据所述无类别数据节点所连接的后续操作节点的数量,确定所述无类别数据节点的出度;
[0082] 根据所述无类别数据节点的前续操作节点和后续操作节点,确定所述无类别数据节点中第一数据的待定数据类别;
[0083] 根据所述无类别数据节点的入度、出度,从待定数据类别中确定出无类别数据节点中第一数据的数据类别。
[0084] 在该实现方式中,可以根据前续操作节点和后续操作节点的操作,确定能够参与该操作的数据所对应的一个或多个数据类别,并将其确定为第一数据的待定数据类别。在确定了待定数据类别之后,在结合无类别数据节点的入度、出度就可以确定出无类别数据节点中第一数据的数据类别。例如,某个无类别数据节点的前续操作节点和后续操作节点所对应的操作均为卷积运算,则待定数据类别可以包括能够作为卷积运算输入和卷积运算输出的隐藏神经元。若某个无类别数据节点仅有后续操作节点,且该后续操作节点的操作为卷积运算,则对应的待定数据类别可以包括输入权值、输入神经元、常量神经元,且无类别数据节点的出度为2,可以确定无类别数据节点中第一数据的数据类别为输入神经元。
[0085] 举例来说,图2c示出根据本公开一实施例的数据处理方法中确定数据类别的示意图。如图2c所示,确定数据类别包括节点扫描过程和数据类别确定过程。可以在处理器中设置用于确定数据类别的数据类别生成模块,图2d示出根据本公开一实施例的数据处理方法中数据类别生成模块的示意图。如图2d所示,该数据类别生成模块可以包括计算图节点遍历器和静态标签设置器,其中,计算图节点遍历器包括节点扫描器、操作节点缓存器、数据节点缓存器,静态标签设置器包括算子特征存储器、出入度计数器、静态标签保存器。处理器利用数据类别生成模块确定数据类别的过程如下:
[0086] 节点扫描过程:
[0087] 节点扫描器获取到待标记计算图之后对其进行遍历。节点扫描器可以先获取到无类别数据节点1,并将无类别数据节点1的信息发送至数据节点缓存器。数据节点缓存器判断自身的数据节点队列中是否已存储无类别数据节点1的信息,若没有存储则将无类别数据节点存储至数据节点队列的头部(或称首位)。而后,节点扫描器扫描获得无类别数据节点1的后续操作节点1’的信息,并将后续操作节点1’的信息发送至操作节点缓存器。操作节点缓存器判断自身的操作节点队列中是否已存储该后续操作节点1’的信息,若没有存储则将该后续操作节点1’的信息存储至操作节点队列的尾部。
[0088] 节点扫描器之后继续进行扫描获取无类别数据节点2以及无类别数据节点2的后续操作节点1’,并将无类别数据节点2的信息、后续操作节点1’的信息分别发送至数据节点缓存器和操作节点缓存器。数据节点缓存器在确定数据节点队列中并未存储无类别数据节点2的信息之后,将无类别数据节点2的信息存储至数据节点队列的尾部。操作节点缓存器通过查询操作节点队列,确定操作节点1’的信息已存,则不存储无类别数据节点2的后续操作节点1’的信息。
[0089] 基于同样过程,节点扫描器继续进行扫描,将无类别数据节点3的信息及其对应的后续操作节点1’的信息分别发送至数据节点缓存器和操作节点缓存器。数据节点缓存器通过判断将获取到的无类别数据节点3的信息存储至数据节点队列的尾部。节点扫描器继续进行扫描,将无类别数据节点4的信息及其对应的后前续操作节点1’和后续操作节点2’的信息分别发送至数据节点缓存器和操作节点缓存器。数据节点缓存器在确定数据节点队列中并未存储无类别数据节点4的信息之后,将无类别数据节点4的信息存储至数据节点队列的尾部。操作节点缓存器判断操作节点队列中是否存储无类别数据节点4的前续操作节点1’和后续操作节点2’的信息,由于操作节点队列中已存储操作节点1’的信息,则将操作节点2’的信息存入操作节点队列的尾部。节点扫描器继续进行扫描,将无类别数据节点5的信息及其对应的前续操作节点2’的信息分别发送至数据节点缓存器和操作节点缓存器。数据节点缓存器在确定数据节点队列中并未存储无类别数据节点5的信息之后,将无类别数据节点5的信息存储至数据节点队列的尾部。操作节点缓存器判断操作节点队列中是否存储无类别数据节点5的前续操作节点2’的信息,由于操作节点队列中已存储操作节点2’的信息,则不对操作节点2’的信息进行存储。
[0090] 数据类别确定过程:
[0091] 节点扫描器在扫描节点、数据节点缓存器存储无类别数据节点、操作节点缓存器存储操作节点的过程中,
[0092] 出入度计数器,根据每个无类别数据节点的前续操作节点的数量确定对应的入度,根据每个无类别数据节点的后续操作节点的数量确定对应的出度,并将无类别数据节点的信息以及对应的出度、入度发送至静态标签保存器,并将该无类别数据节点及其对应的前续操作节点和后续操作节点发送至算子特征存储器。
[0093] 算子特征存储器根据接收到的无类别数据节点及其对应的前续操作节点和后续操作节点,确定无类别数据节点中的数据可能对应的待选数据类别,并将该待选数据类别发送至静态标签保存器。
[0094] 静态标签保存器,根据无类别数据节点的出度、入度,从待选数据类别中确定出该无类别数据节点所对应的数据类别,并将该数据类别存储至数据节点中,并控制数据节点缓存器从数据节点队列中删除该已确定数据类别的数据节点的信息。
[0095] 节点扫描器,还用于完成对待标记计算图的扫描之后,对数据节点队列进行扫描,在确定数据节点队列为空时,结束数据类别确定过程,输出已标记计算图,并控制操作节点缓存器情况操作节点队列。若数据节点队列不为空时,继续数据类别确定过程。
[0096] 例如,可以先根据数据节点队列的头部的无类别数据节点1的信息确定无类别数据节点1的数据类别为“输入神经元”(确定过程参考步骤S34的相关描述),进而将“输入神经元”的标识添加到待标记计算图中的无类别数据节点1中,如添加到该数据节点1中第一数据的静态标签信息中;同时,需在数据节点队列中删除已经确定出数据类别的无类别数据节点1的信息。继续查询数据节点队列的头部,若数据节点队列的头部存储有无类别数据节点,则执行上述数据类别确定过程;若数据节点队列的头部为空,则结束,并确定已完成该待标记计算图中所有数据节点的数据类别的确定,形成已标记计算图。
[0097] 在一种可能的实现方式中,标签信息还可以包括动态标签信息,动态标签信息用于表征第一数据与运行神经网络的处理器相关的信息。其中,上述操作S11,获取第一数据的标签信息,可以包括:根据处理器和静态标签信息,生成第一数据的动态标签信息。可选地,处理器可以根据处理器的硬件特性以及上述的已标记计算图,获得第一数据的动态标签信息。进一步地,处理器可以根据该第一数据的动态标签信息以及上述的已标记计算图,生成标记有动态标签信息和静态标签信息的计算图,该计算图可以用于数据存储或数据搬运等。
[0098] 在该实现方式中,动态标签信息是在确定运行神经网络的处理器之后,根据静态标签信息以及处理器的算力、性能等确定的,以使得具有动态标签信息的第一数据能够适用于处理器的运算。当神经网络采用不同的处理器进行运算时,第一数据的动态标签信息可以不同。当两个处理器的性能、算力等参数相同时,第一数据的动态标签信息可能相同。
[0099] 在一种可能的实现方式中,动态标签信息可以包括以下至少一项:动态数据类型、动态数据维度顺序、分片参数、填充参数和数据尺寸。
[0100] 在该实现方式中,动态数据类型可以是根据运行神经网络的处理器所能处理的数据的类型、算力等确定的。如,某处理器能够处理16位浮点数,那么在利用该处理器运行神经网络时,第一数据的动态数据类型即为16位浮点数。动态数据维度顺序可以是根据运行神经网络的处理器读取或存储数据的需求确定。分片参数可以根据运行神经网络的处理器的算力确定的,例如,某处理器每一次能够进行8个数的运算,则可以将分片参数设置为8。填充参数可以根据该第一数据的静态数据维度的维度值、分片参数确定的。数据尺寸或者称为数据的大小、数据量,其是根据静态数据维度的维度值、分片参数以及填充参数确定的。
[0101] 在一种可能的实现方式中,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,可以包括:
[0102] 根据所述第一数据所参与的目标操作,从所述处理器中确定出执行所述目标操作的运算模块,所述目标操作包括所述第一数据所参与的前续操作和/或后续操作;
[0103] 根据所述运算模块,确定所述第一数据的动态数据类型。
[0104] 在该实现方式中,处理器可以借助与第一数据对应的、仅带有静态标签信息的数据节点,以及对应的计算图或者数据节点的连接指针来确定第一数据所参与的目标操作,例如,如图2c所示,无类别数据节点4中所参与的目标操作包括操作节点1’和操作节点2’所对应的操作。或者处理器也可以通过第一数据的静态标签信息确定其所参与的目标操作,处理器还可以通过其他任意方式确定第一数据所参与的目标操作,本公开对此不作限制。
[0105] 在该实现方式中,根据目标操作确定能够执行该目标操作的运算模块,进而根据运算模块的硬件计算需求,确定第一数据的动态数据类型,其中,运算模块中可以包括对应的运算器,或者也可将运算模块设置为运算器。例如,目标操作为卷积运算,而对应的运算模块只能进行浮点数的卷积运算,则可以确定第一数据的动态数据类型为浮点数。处理器也可以将能够执行该目标操作的所有模块中计算性能最高的确定为该第一数据的运算模块。例如,第一数据为矩阵,目标操作为矩阵乘法运算,可执行矩阵乘法运算的模块包括整数运算器和浮点运算器,而由于整数运算器计算矩阵乘法的性能比浮点运算器高,因此将整数运算器确定为运算模块。
[0106] 在一种可能的实现方式中,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,还可以包括:
[0107] 根据所述目标操作所对应的算法特征,确定所述第一数据的动态数据维度顺序。
[0108] 在该实现方式中,处理器可以根据算法特征,确定实现该算法的若干实现方式,并将该若干实现方式中效率最高的实现方式对应的数据维度顺序,确定为第一数据采用特定的维度顺序,这样更有利于后续运算处理。例如,假定第一数据包括两个需要进行乘法运算的第一矩阵和第二矩阵,由于两矩阵采用不同的维度顺序更有利于进行乘法运算,可以将第一矩阵的动态数据维度顺序确定为列优先,将第二矩阵的动态数据维度顺序确定为行优先,这样,该第一矩阵与第二矩阵的乘法运算的效率较高。其中,行优先可以是指将第一数据中数按照行的方式存储,列优先可以是指将第一数据中数按照列的方式存储。举例来说,假定某矩阵为 行优先存储是指将该矩阵按照1、2、3、4的顺序存储,列优先是指将该矩阵按照1、3、2、4的方式存储。
[0109] 在一种可能的实现方式中,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,还可以包括以下至少一项:
[0110] 根据所述运算模块的单次可计算数据个数,确定所述第一数据的分片参数;
[0111] 根据所述分片参数、所述动态数据维度顺序中最低维度的维度值,确定所述第一数据的填充参数;
[0112] 根据所述第一数据的所有维度值、所述填充参数,确定所述第一数据的数据尺寸。
[0113] 其中,所述动态数据维度顺序中最低维度的维度值是根据所述静态标签信息确定的。
[0114] 在该实现方式中,处理器可以将运算模块的单次可计算数据个数直接确定为分片参数,或者确定的分片参数也可以小于运算模块的单次可计算数据个数。例如,若运算模块的单次可计算数据个数为8,分片参数可以为8、6等。
[0115] 在该实现方式中,处理器可以根据静态数据维度顺序中最低维度的维度值确定为动态数据维度顺序中最低维度的维度值。例如,若动态数据维度顺序中最低维度的维度值为10、分片参数为8,则先用于最低维度的维度值10除以分片参数8得到余数2,而后后用分片参数8减余数2得到填充参数padding,也即padding=8-(10%8)=6,其中%表示取余数。
[0116] 在该实现方式中,处理器可以根据动态数据维度顺序中最低维度S的维度值、填充参数,确定第一数据进行填充后动态数据维度顺序中最低维度S的填充后维度值。根据填充后维度值和其他维度的维度值,确定数据尺寸。例如,若动态数据维度顺序中最低维度的维度值为10、填充参数为6,其余维度的维度值为4,则可以先将最低维度的维度值10与填充参数6相加得到填充后维度值为16,填充后数据的数据量为填充后维度值16与其余维度的维度值4的乘积为64,最终数据尺寸为每个数据所占用的比特数4与数据量64的乘积为256,也即填充后维度值为10+6=16,数据的数据量为(10+6)*4=64,数据尺寸size=64*4=256Bytes。
[0117] 在一种可能的实现方式中,第一数据的动态标签信息可以表示为:
[0118] dynamic:type2,DIM_B1…Bn,tiling,padding,size
[0119] 其中,dynamic表示该标签信息为动态标签信息的标识。type2表示动态数据类型。DIM_B1…Bn表示动态数据维度顺序为B1…Bn。Tiling为分片参数。Padding为填充参数,size为数据尺寸。“,”、“{}”仅用于在本公开中分隔动态标签信息中的不同参数,并非动态标签信息的必备内容,实际应用中“,”、“{}”可以不存在,也可以由其他标识替代,本公开对此不作限制。
[0120] 举例来说,假定某第一数据的静态标签信息为Static:IW,Float32,DIM_HW,{10,4}。且运行第一数据所参与的神经网络的处理器,采用列优先方式存储数据,能够对16位浮点数进行处理,每次最多可进行8个数的计算。那么,第一数据的动态标签信息中tiling=
8,padding=tiling-(10-tiling)=6,size=(10+6)×4×2(16位浮点数所占用的字节为
2)=128Bytes。那么,该第一数据的动态标签信息可以为dynamic:Float16,DIM_WH,8,6,
128Bytes。
[0121] 在本实施例中,可以根据实际需要对动态标签信息和静态标签信息中的各参数的位置进行调整,本公开对此不作限制。
[0122] 举例来说,可以在处理器中设置用于确定动态标签信息的动态标签生成模块,该动态标签信息生成模块可以包括操作节点提取器、运算模块查询器、操作查询器、分片查询器、数据补充器、数据尺寸计算器。图2e示出根据本公开一实施例的数据处理方法中动态标签信息生成模块的示意图。如图2e所示,动态标签信息生成模块如下:
[0123] 操作节点提取器,用于根据第一数据所对应的数据节点(仅带有静态标签信息)的连接指针确定其对应的目标操作节点,得到目标操作节点的信息。
[0124] 运算模块查询器,用于根据目标操作节点的信息确定其对应的目标操作,进而根据目标操作确定对应的运算模块。根据该运算模块确定第一数据的动态数据类型,并将其记录在数据节点中第一数据的动态标签信息中。
[0125] 操作查询器,用于根据目标操作节点的信息确定其所进行的目标操作,根据目标操作所对应的算法特征,确定第一数据的动态数据维度顺序,并将其记录在数据节点中第一数据的动态标签信息中。
[0126] 分片查询器,用于根据运算模块的单次可计算数据个数,确定第一数据的分片参数,并将其记录在数据节点中第一数据的动态标签信息中。
[0127] 数据补充器,用于根据分片参数、动态数据维度顺序中最低维度的维度值,确定第一数据的填充参数,并将其记录在数据节点中第一数据的动态标签信息中。
[0128] 数据尺寸计算器,用于根据第一数据的所有维度值、填充参数,确定第一数据的数据尺寸,并将其记录在数据节点中第一数据的动态标签信息中。
[0129] 在一种可能的实现方式中,处理器可以存储上述第一数据的标签信息。可选地,上述第一数据的标签信息可以与第一数据分离单独存储,即该第一数据有其对应的数据存储空间,该第一数据的标签信息有其对应的标签存储空间,该标签存储空间与上述的数据存储空间可以不重叠。具体地,该方法还可以包括:将第一数据的标签信息存入标签存储空间中。其中,该标签存储空间进一步可以包括静态标签存储空间和动态标签存储空间,静态标签信息存入标签存储空间中的静态标签存储空间中;动态标签信息存入标签存储空间中的动态标签存储空间中。可选地,处理器还可以将第一数据的静态标签信息和动态标签信息存储在同一标签存储空间中,本公开对此不作限制。
[0130] 在该实现方式中,可以将第一数据的静态标签信息和动态标签信息存储至不同的标签存储空间中,以便于处理器对静态标签信息和动态标签信息进行管理。并且,由于第一数据的数量庞大,存在多个第一数据具有相同的标签信息的情况,将第一数据、静态标签信息、动态标签信息分开存储更有利于进行标签信息的复用,节省存储空间。
[0131] 在一种可能的实现方式中,该方法还可以包括:将标签信息的标签标识和第一数据的数据标识对应存储至关联列表,关联列表用于记录第一数据与标签信息的对应关系。进一步可选地,该关联列表可以存储至存储器中,处理器可以通过查询该关联列表确定第一数据对应的标签信息,或者通过相应的标签信息确定相应的第一数据。
[0132] 在该实现方式中,第一数据的数据标识以及第一数据的标签信息的标签标识可以是相同或者相匹配的标识,标签标识和数据标识可以是编号、符号等标识。数据标识还可以是对应的第一数据的存储地址(如物理地址的首地址、指示存储地址的指针等能够表示第一数据存储地址的信息),对应的标签标识可以是存储第一数据的标签信息的存储地址(如物理地址的首地址、指示存储地址的指针等能够表示第一数据存储地址的信息)。本领域技术人员可以根据实际需要对标签标识、数据标识进行设置,本公开对此不作限制。
[0133] 图3a示出根据本公开实施例的数据处理方法中的关联列表的示意图,如图3a所示,根据关联列表中的对应关系1可以确定第一数据A的标签信息为静态标签信息a和动态标签信息1。根据对应关系2可以确定第一数据B的标签信息为静态标签信息b和动态标签信息1。根据对应关系3可以确定第一数据C的标签信息为静态标签信息c和动态标签信息2。根据对应关系4可以确定第一数据D的标签信息为静态标签信息c和动态标签信息3。第一数据A和第一数据B公用相同的动态标签信息1。第一数据C和第一数据D公用相同的静态标签信息c。
[0134] 通过上述方式,处理器可以根据关联列表准确、快速地确定第一数据与标签信息之间的对应关系。在其他可选的实现方式中,该第一数据与标签信息之间的对应关系还可以采用关联列表之外的其他方式进行存储。
[0135] 在一种可能的实现方式中,将第一数据的标签信息存入标签存储空间中,可以包括:为标签信息添加第一标识,并将带有第一标识的标签信息存储至标签存储空间中。其中,根据标签信息,将第一数据存入数据存储空间中,可以包括:为第一数据添加与第一标识匹配的第二标识,并将带有第二标识的第一数据存入数据存储空间。
[0136] 在该实现方式中,第一标识和第二标识可以是相同、或者唯一对应的标识,例如,相同的编号、编码等标识。第一标识可以是表示对应的第一数据的存储地址的标识,第二标识可以是表示第一数据的标签信息的存储地址的标识。这样,处理器可以根据第一标识和第二标识快速、准确地确定第一数据和对应的标签信息。
[0137] 进一步可选地,处理器可以根据标签信息及神经网络的结构数据存储神经网络,例如,处理器可以根据标签信息和神经网络的结构图存储神经网络,其中,神经网络的结构图可以包括数据节点和操作节点,其中,该数据节点中包含数据的标签信息。
[0138] 在一种可能的实现方式中,该方法还可以包括:
[0139] 获取神经网络中的数据节点的信息,数据节点的信息包括参与神经网络运算的第二数据、第二数据的标签信息、第二数据的出度、入度和数据节点与操作节点的连接关系,第二数据可以包括第一数据;
[0140] 获取神经网络中的操作节点(也可称运算节点)的信息,操作节点的信息包括实现操作节点的操作所对应的参数、对应的输入数据节点和输出数据节点;
[0141] 获取神经网络所对应的计算图,计算图中包括神经网络所包含的操作节点、所对应的数据节点以及数据节点与操作节点之间的连接关系;
[0142] 存储数据节点、操作节点和计算图。
[0143] 在该实现方式中,图3b示出根据本公开实施例的数据处理方法中的计算图的示意图,如图3b所示,在构建神经网络之后,可以根据构建的神经网络确定对应的数据节点、操作节点和计算图。其中,数据节点用于记录第二数据的结构或标记(包括第二数据的标签信息),根据第二数据的出度、入度以及第二数据与操作节点之间的连接关系,可以确定第二数据可以作为哪些前续操作节点的输出、以及可以作为哪些后续操作节点的输入。操作节点用于记录对输入的一个或多个输入数据节点所进行的操作或运算所需的参数,以及执行相应的操作或运算后输出的一个或多个输出数据节点。例如,假定某操作节点为对输入的3个输入数据节点的数据进行卷积运算得到一个输出数据节点的数据,则操作节点中需记录的参数包括卷积核的尺寸、步幅以及填充等。计算图以图的形式来表示神经网络,计算图中包括数据节点、操作节点和表征数据节点和操作节点的连接关系的有向的“边”。
[0144] 在一种可能的实现方式中,处理器可以根据计算图生成一个或多个对应的指令,以通过执行一个或多个指令实现神经网络运算。可选地,处理器包含的通用处理器可以根据计算图以及该计算图中包含的标签信息等,对计算图进行编译处理,获得一个或多个指令,之后,该通用处理器可以执行指令以实现神经网络训练或推理等运算。可选地,处理器包含的通用处理器可以编译获得指令,处理器包含的人工智能处理器可以根据该编译后的指令进行神经网络训练或推理等运算。
[0145] 在一种可能的实现方式中,根据标签信息,将第一数据存入数据存储空间中,包括:
[0146] 在标签信息中包含动态标签信息时,根据动态标签信息中的数据尺寸,从数据存储空间中申请用于存储第一数据的第一数据存储空间;
[0147] 将第一数据存入第一数据存储空间中。
[0148] 在该实现方式中,在第一数据的标签信息中有动态标签信息时,处理器可以根据用户的请求,或者自动根据动态标签信息中的数据尺寸为第一数据申请第一数据存储空间,并将第一数据存储至第一数据存储空间。
[0149] 举例来说,可以通过如“labelMalloc(&wp,weight)”等方式实现第一数据存储空间的申请,其中,weight所需的第一数据存储空间的大小,其可以根据动态标签信息中的数据尺寸确定的,可以是用户根据处理器提供的第一数据的动态标签信息中的数据尺寸输入(也可以是处理器自动识别第一数据的动态标签信息中的数据尺寸)确定的。通过上述方式,可以从某个指定的数据存储空间wp(wp为数据存储空间的编号、编码等标识)中为第一数据申请到第一数据存储空间。
[0150] 进一步地,将第一数据存入第一数据存储空间中,可以包括:
[0151] 判断第一数据当前的数据状态与动态标签信息是否一致,数据状态包括第一数据的数据类型、数据维度的顺序和维度值;可选地,该数据状态可以是根据第一数据的静态标签信息确定的。
[0152] 在第一数据当前的数据状态与动态标签信息不一致时,根据静态标签信息和动态标签信息对第一数据进行转换,得到转换后的第一数据,转换后的第一数据的数据状态与动态标签信息一致;
[0153] 将转换后的第一数据存入第一数据存储空间中。
[0154] 在该实现方式中,在将第一数据存储至数据存储空间之前,在判断出第一数据当前的数据状态与第一数据的动态标签信息一致时,可以直接将第一数据存储至第一数据存储空间。第一数据当前的数据状态与第一数据的动态标签信息是否一致,可以是第一数据当前的数据类型与动态数据类型相同、当前的数据维度的顺序与动态数据维度顺序相同、当前对应维度的维度值与根据分片参数、填充参数和静态数据维度的维度值所计算出的维度值相同。
[0155] 在一种可能的实现方式中,根据静态标签信息和动态标签信息对第一数据进行转换,得到转换后的第一数据,可以包括以下至少一项处理:
[0156] 将第一数据的数据类型转换为动态数据类型;
[0157] 对第一数据的数据维度的顺序进行调整;
[0158] 根据填充参数,对第一数据进行填充;
[0159] 根据分片参数,对第一数据进行切分。
[0160] 在一种可能的实现方式中,处理器可以先判断第一数据当前的数据类型与动态数据类型是否一致,若不一致,可以先将第一数据的数据类型转换为动态数据类型。对类型转换后的第一数据的数据维度的顺序进行调整,使其与动态数据维度顺序相同。根据填充参数对调整了维度顺序的第一数据进行填充。根据分片参数对填充后的第一数据进行分片,得到转换后的第一数据,转换后的第一数据包括多个数据分片,每个数据分片的尺寸与分片参数相对应。处理器也可以先对调整了维度顺序的第一数据进行分片,而后对分片后剩余的尺寸与分片参数不对应的一个或多个待填充分片进行填充,以得到转换后的第一数据。
[0161] 举例来说,图4a示出根据本公开实施例的数据处理方法中的数据转换的示意图。如图4a所示,该第一数据的静态标签信息为“Static:IW,Float32,DIM_HW,{10,4}”。第一数据当前的数据状态与静态标签信息一致。第一数据的动态标签信息为“dynamic:Float16,DIM_WH,8,6,128Bytes”。处理器可以先将第一数据的数据类型由32位浮点数转换为16位浮点数。而后对第一数据进行转置处理,使其数据维度顺序与“DIM_WH”一致。基于分片参数“8”,将第一数据切分为两个数据分片。而后根据填充参数“6”对尺寸与分片参数不对应的数据分片进行填充,如均用0进行填充补位。最终,得到转换后的第一数据。
[0162] 在将上述方法进行实际应用的过程中,用于利用上述带有标签信息的第一数据进行神经网络运算时,需要将上述方法以软件的形式体现,以供用户使用。软件中为用户提供的API中需要为用户提供输入第一数据的输入接口。由于用户已知或者可见的是通过输入接口输入的第一数据对应静态标签信息的数据量(或称尺寸),而在实际应用过程中第一数据的存储和运算中其数据状态是与动态标签信息相对应的,而动态标签信息对用户是不可见的。假定处理器需要根据用户输入数据量或数据尺寸之后,申请存储数据状态与动态标签信息相对应的第一数据的第一数据存储空间,则可以在为用户提供的API中添加输入数据量的另一输入接口,处理器为用户显示第一数据的动态标签信息中的数据尺寸,以便于用于输入,进而使处理器进行第一数据存储空间的申请。或者,处理器可以直接根据第一数据的动态标签信息中的数据尺寸进行第一数据存储空间的申请,用户所提供的API更无需添加输入接口。以上两种方式对用户而言其所需进行的操作都是非常简便的,为用户所提供的API都是非常友好的。并且,实时根据第一数据的动态标签信息进行存储空间申请,能够节省存储空间,减少资源占用。
[0163] 通过上述方式,在第一数据有动态标签信息时,按照动态标签信息存储第一数据,该第一数据能够与处理器的性能相匹配。处理器在再次使用该第一数据时,可以直接对其进行处理,无需进行数据变形或转换,简化了处理器使用第一数据的过程,能够提升处理器的运算速度,节省运算时间。在一种可能的实现方式中,在第一数据参与神经网络运算的过程中,第一数据可能需要在不同的数据存储空间之间进行转移(如Load或Store等访存操作),次数,处理器可以根据该第一数据的标签信息,实现上述的数据访存操作。具体地,该方法还可以包括:根据标签信息,将第一数据从当前数据存储空间中转存到第二数据存储空间中。
[0164] 具体地,处理器在接收到进行第一数据转移(或称转存)的转移请求时,进行第一数据的转移。处理器在接收到进行第一数据转移请求时可以获取第一数据的当前数据存储空间地址、第二数据存储空间地址、数据尺寸以及转移方向,进而实现第一数据的转移。其中,当前数据存储空间地址、第二数据存储空间地址和转移方向可以是根据用户的输入或者根据接收到的转移请求确定。数据尺寸可以根据第一数据的动态标签信息确定,或者在第一数据仅具有静态标签信息时可根据静态数据维度以及对应的维度值确定数据尺寸。转移方向可以为从一个存储器转移至另一存储器、存储器内部进行转移,在处理器包括主处理器和一个或多个从处理器时,“从一个存储器转移至另一存储器”包括:从主处理器对应的存储器转移至从处理器对应的存储器中、从一个从处理器对应的存储器转移至主处理器对应的存储器中、从一个从处理器对应的存储器转移至另一个从处理器对应的存储器中。其中,该主处理器可以是CPU等通用处理器,该从处理器可以是人工智能处理器。
[0165] 举例来说,可以通过如“labelMemcpy(wp,wp_cpu,weight,HostToDevice)”等方式实现第一数据的转移,其表示为从主机(如CPU端)的存储器中的当前数据存储空间wp_cpu(可以为当前数据存储空间的物理地址等)中获取第一数据,并将第一数据存储至设备(如人工智能处理器端)中申请到的大小为weight的第二数据存储空间wp中。其中,在进行数据转移的过程中、将第一数据存储至第二数据存储空间wp之前,需要处理器申请到大小为weight的第二数据存储空间wp。在处理器所包括的主处理器为CPU、从处理器也为CPU时,在进行数据转移的过程中,可以是主处理器或从处理器进行数据存储空间的申请。在处理器包括的主处理器为CPU、从处理器为IPU时,在进行数据转移的过程中,可以是主处理器进行数据存储空间的申请。
[0166] 在一种可能的实现方式中,根据标签信息,将第一数据从当前数据存储空间中转存到第二数据存储空间中,可以包括:
[0167] 判断第一数据当前的数据状态是否与第一数据的动态标签信息一致,数据状态可以包括第一数据的数据类型、数据维度的顺序和维度值;
[0168] 在第一数据当前的数据状态与动态标签信息不一致时,根据静态标签信息和动态标签信息对第一数据进行数据转换,得到转换后的第一数据,转换后的第一数据的数据状态与动态标签信息一致;
[0169] 将转换后的第一数据转存入第二数据存储空间中。
[0170] 在该实现方式中,在对第一数据进行转移时,若该第一数据有静态标签信息和动态标签信息,则先判断第一数据的数据状态是否与第一数据的动态标签信息一致。若一致,可以对第一数据做处理直接将第一数据转存至第二数据存储空间,若不一致,可以根据静态标签信息和动态标签信息对第一数据进行数据转换,并将得到的转换后的第一数据转存入第二数据存储空间中。若该第一数据仅含有静态标签信息,可以不对第一数据做处理直接将第一数据转存至第二数据存储空间。
[0171] 通过上述方式,在进行数据转移的过程中,优先按照第一数据的动态标签信息对第一数据的数据状态进行判断,保证转存至第二数据储存空间中的第一数据(包含动态标签信息)能够与处理器的性能相匹配。处理器在再次使用该第一数据时,可以直接对其进行处理,无需进行数据变形,简化了处理器使用第一数据的过程,能够提升处理器的运算速度,节省运算时间。
[0172] 在本实施例中,由于标签信息和第一数据存储在不同的存储空间中,需要通过相应的策略,保证处理器能够根据第一数据确定对应的标签信息。
[0173] 在一种可能的实现方式中,该方法还可以包括用于对进行神经网络开发、执行的装置进行设置,使得装置能够实现以下步骤:开发创建步骤、开发编译步骤和开发运行步骤,通过上述步骤对用于对进行神经网络开发、执行的装置进行设置,可以使得该装置能够进行神经网络开发、执行神经网络运算,该装置可以包括处理器(处理器可以包括CPU等通用处理器和人工智能处理器),其中,CPU用于执行开发创建步骤、开发编译步骤和开发运行步骤。具体如下:
[0174] 开发创建步骤,创建神经网络运算所需的数据节点、操作节点,并根据数据节点与操作节点之间的连接关系生成计算图,并存储数据节点、操作节点和计算图。
[0175] 开发编译步骤,对计算图进行扫描,确定每个数据节点中数据所对应的数据类别和动态标签信息,并根据计算图生成对应的一个或多个指令。可选地,通用处理器可以根据该计算图及其中的标签信息对计算图进行编译处理,获得指令。
[0176] 开发运行步骤,根据数据节点中数据的动态标签信息,对数据节点中的数据进行转换,得到转换后的数据。其中,该转换后的数据的动态标签信息可以与人工智能处理器等用于指令的设备的硬件信息一致。
[0177] 在一种可能的实现方式中,开发运行步骤还可以包括:对装置(如IPU等处理器)进行管理,对装置所进行的管理包括以下至少一项:控制装置执行神经网络运算的开始、结束,对装置进行配置,进行寄存器设置,进行检查中断等与装置的运行相关的处理,本公开对此不作限制。
[0178] 在一种可能的实现方式中,开发运行步骤还可以包括:对装置(如IPU等处理器)的内存进行管理,对装置的内存所进行的关联包括内存申请、内存释放等与内存的使用相关的关联。例如,开发运行步骤包括根据数据节点中数据的动态标签信息,申请用于存储对应的数据的第一数据存储空间。开发运行步骤包括根据数据节点中数据的标签信息将数据从当前数据存储空间中转移到第二数据存储空间中。开发运行步骤包括释放闲置的内存资源。
[0179] 在一种可能的实现方式中,图4b示出根据本公开实施例的数据处理方法中所设计的用于神经网络运算的装置的示意图,如图4b所示,处理器可以包括开发创建模块41、开发编译模块42和开发运行模块43,该开发创建模块41、开发编译模块42和开发运行模块43可以集成于处理器的通用处理器中。其中,
[0180] 开发创建模块41包括:用于创建并存储数据节点的数据节点子模块、用于创建并存储操作节点的操作节点子模块、用于创建并存储计算图的计算图子模块。开发创建模块41用于向开发编译模块42发送计算图。
[0181] 开发编译模块42中包括:用于扫描计算图生成数据节点的标签信息(包括数据类别和动态标签信息)的计算图扫描子模块、用于生成数据节点的动态标签信息以及根据计算图生成指令的指令生成子模块。开发编译模块42用于向开发运行模块43发送指令和标签信息。
[0182] 开发运行模块43包括:用于进行数据变换的数据变换子模块、用于对装置进行管理的装置管理子模块、用于对装置的内存进行管理的内存管理子模块。
[0183] 在该实现方式中,用户根据上述用于进行神经网络开发的步骤可以简单、快捷地对执行神经网络运算的装置进行设计。
[0184] 在一种可能的实现方式中,图4c示出根据本公开实施例的数据处理方法中用于神经网络运算装置的使用示意图,如图4c所示,该方法还可以包括用于执行神经网络的以下执行创建步骤、执行编译步骤和执行运行步骤,通过上述步骤可以对用于神经网络运算的装置进行使用,进而实现神经网络运算。该用于神经网络运算的装置可以包括CPU和IPU等处理器。
[0185] 执行创建步骤(如步骤S61),CPU等通用处理器可以用于创建执行神经网络运算所需的数据节点、操作节点,并根据数据节点与操作节点之间的连接关系生成计算图。
[0186] 执行编译步骤(如步骤S62),CPU等通用处理器可以用于扫描计算图生成数据节点的标签信息(包括数据类别和动态标签信息)的计算图,并用于对计算图进行编译,生成对应计算图的硬件指令。
[0187] 执行运行步骤(如步骤S63),IPU等人工智能处理器用于运行硬件指令,实现训练或推理等神经网络运算。基于硬件指令调用对应的函数对数据进行运算,完成神经网络运算过程。当然,CPU等通用处理器也可以用于运行硬件指令,实现神经网络训练或推理等运算。
[0188] 在一种可能的实现方式中,执行运算步骤还可以包括:IPU或CPU等处理器用于基于硬件指令进行数据存储空间(如上文所述的申请第一数据存储空间)、标签存储空间申请,以及进行数据的移动(如上文所述的将数据转移至第二数据存储空间)。
[0189] 在一种可能的实现方式中,执行运算步骤还可以包括:IPU或CPU等处理器用于释放不再使用的资源。
[0190] 在该实现方式中,用户根据上述用于执行神经网络的步骤,可以简便、快捷地使用对应的处理器等装置执行神经网络运算。
[0191] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0192] 进一步需要说明的是,虽然图2a、图2b的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2a、图2b中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0193] 图5示出根据本公开实施例的数据处理装置的框图。如图5所示,该装置可以应用于处理器100,该装置包括数据获取模块50、标签信息确定模块51和数据存储模块52。其中,数据获取模块50、标签信息确定模块51和数据存储模块52可以设置于处理器100的任意一个处理单元101中,或者也可以将数据获取模块50、标签信息确定模块51和数据存储模块52分别设置于不同的处理单元101中。也可以将数据获取模块50、标签信息确定模块51和数据存储模块52任意两个设置于同一处理单元、剩余一个设置于另外一个处理单元101,本公开对此不作限制。
[0194] 数据获取模块50,获取第一数据,所述第一数据用于进行神经网络运算;
[0195] 标签信息确定模块51,确定所述第一数据的标签信息;
[0196] 数据存储模块52,根据所述标签信息,将所述第一数据存入数据存储空间中,[0197] 其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
[0198] 在一种可能的实现方式中,所述标签信息确定模块51,包括:
[0199] 第一确定子模块,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,
[0200] 其中,所述静态标签信息包括以下至少一项:数据类别、静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值。
[0201] 在一种可能的实现方式中,所述第一确定子模块,包括:
[0202] 数据类别确定子模块,根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别;
[0203] 其中,所述数据类别包括以下任一项:指令、输入神经元、输出神经元、隐藏神经元、常量神经元、输入权值、输出权值、常量权值和辅助数据。
[0204] 在一种可能的实现方式中,所述数据类别确定子模块,包括:
[0205] 计算图获取子模块,获取对应所述神经网络的待标记计算图,所述待标记计算图中包括操作节点、无类别数据节点、无类别数据节点与操作节点之间的连接关系;
[0206] 遍历子模块,遍历所述待标记计算图,获得所述待标记计算图中所有的无类别数据节点的信息和操作节点的信息,所述无类别数据节点的信息包括所述第一数据、所述第一数据对应的前续操作节点和后续操作节点,所述操作节点的信息包括实现所述操作节点的操作所对应的参数、对应的输入数据节点和输出数据节点;
[0207] 信息存储子模块,在数据节点队列中依次存储遍历到的所述无类别数据节点的信息,在操作节点队列中依次存储遍历到的所述操作节点的信息;
[0208] 类别确定子模块,根据所述无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,并将确定了对应的数据类别的无类别数据节点从所述数据节点队列中删除。
[0209] 在一种可能的实现方式中,所述类别确定子模块被配置为:
[0210] 根据所述无类别数据节点所连接的前续操作节点的数量,确定所述无类别数据节点的入度;
[0211] 根据所述无类别数据节点所连接的后续操作节点的数量,确定所述无类别数据节点的出度;
[0212] 根据所述无类别数据节点的前续操作节点和后续操作节点,确定所述无类别数据节点中第一数据的待定数据类别;
[0213] 根据所述无类别数据节点的入度、出度,从待定数据类别中确定出无类别数据节点中第一数据的数据类别。
[0214] 在一种可能的实现方式中,所述数据类别确定子模块,还包括:
[0215] 计算图标记子模块,将确定出的数据类型存储至所述待标记计算图中对应的无类型数据节点中,形成具有静态标签信息的数据节点,得到已标记计算图。
[0216] 在一种可能的实现方式中,所述标签信息还包括动态标签信息,所述动态标签信息用于表征所述第一数据与运行所述神经网络的处理器相关的信息;
[0217] 其中,所述标签信息确定模块51,包括:
[0218] 动态标签生成模块,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,
[0219] 其中,所述动态标签信息包括以下至少一项:动态数据类型、动态数据维度顺序、分片参数、填充参数和数据尺寸。
[0220] 在一种可能的实现方式中,所述动态标签生成模块,包括:
[0221] 目标操作确定子模块,根据所述第一数据所参与的目标操作,从所述处理器中确定出执行所述目标操作的运算模块,所述目标操作包括所述第一数据所参与的前续操作和/或后续操作;
[0222] 动态数据类型确定子模块,根据所述运算模块,确定所述第一数据的动态数据类型。
[0223] 在一种可能的实现方式中,所述动态标签生成模块,还包括:
[0224] 维度顺序确定子模块,根据所述目标操作所对应的算法特征,确定所述第一数据的动态数据维度顺序。
[0225] 在一种可能的实现方式中,所述动态标签生成模块,还包括以下至少一个子模块:
[0226] 分片参数确定子模块,根据所述运算模块的单次可计算数据个数,确定所述第一数据的分片参数;
[0227] 填充参数确定子模块,根据所述分片参数、所述动态数据维度顺序中最低维度的维度值,确定所述第一数据的填充参数;
[0228] 数据尺寸确定子模块,根据所述第一数据的所有维度值、所述填充参数,确定所述第一数据的数据尺寸,
[0229] 其中,所述动态数据维度顺序中最低维度的维度值是根据所述静态标签信息确定的。
[0230] 在一种可能的实现方式中,所述装置还包括:
[0231] 标签信息存储模块,将所述第一数据的标签信息存入标签存储空间中;
[0232] 其中,所述静态标签信息存入所述标签存储空间中的静态标签存储空间中;
[0233] 所述动态标签信息存入所述标签存储空间中的动态标签存储空间中。
[0234] 在一种可能的实现方式中,所述数据存储模块,包括:
[0235] 空间申请子模块,在所述标签信息中包含动态标签信息时,根据所述动态标签信息,从所述数据存储空间中申请用于存储所述第一数据的第一数据存储空间;
[0236] 将所述第一数据存入所述第一数据存储空间中。
[0237] 在一种可能的实现方式中,所述数据存储子模块,包括:
[0238] 状态确定子模块,判断所述第一数据当前的数据状态与所述动态标签信息是否一致,所述数据状态包括所述第一数据的数据类型、数据维度的顺序和维度值;
[0239] 数据转换子模块,在所述第一数据当前的数据状态与动态标签信息不一致时,根据所述静态标签信息和所述动态标签信息对所述第一数据进行转换,得到转换后的第一数据,所述转换后的第一数据的数据状态与所述动态标签信息一致;
[0240] 存储子模块,将所述转换后的第一数据存入所述第一数据存储空间中
[0241] 在一种可能的实现方式中,该装置还可以包括:
[0242] 数据转移模块,根据标签信息,将第一数据从当前数据存储空间中转移到第二数据存储空间中。
[0243] 在一种可能的实现方式中,根据标签信息,将第一数据从当前数据存储空间中转存到第二数据存储空间中,可以包括:
[0244] 判断第一数据当前的数据状态是否与第一数据的动态标签信息一致,数据状态包括第一数据的数据类型、数据维度的顺序和维度值;
[0245] 在第一数据当前的数据状态与动态标签信息不一致时,根据静态标签信息和动态标签信息对第一数据进行数据转换,得到转换后的第一数据,转换后的第一数据的数据状态与动态标签信息一致;
[0246] 将转换后的第一数据转存入第二数据存储空间中。
[0247] 在一种可能的实现方式中,该装置还可以包括:
[0248] 列表存储模块,将标签信息的标签标识和第一数据的数据标识对应存储至关联列表,关联列表用于记录第一数据与标签信息的对应关系。
[0249] 在一种可能的实现方式中,标签信息存储模块,可以包括:
[0250] 第一标记子模块,为标签信息添加第一标识,并将带有第一标识的标签信息存储至标签存储空间中,
[0251] 数据存储模块,可以包括:
[0252] 第二标记子模块,为第一数据添加与第一标识匹配的第二标识,并将带有第二标识的第一数据存入数据存储空间。
[0253] 在一种可能的实现方式中,该装置还可以包括:
[0254] 数据节点获取模块,获取神经网络中的数据节点的信息,数据节点的信息包括参与神经网络运算的第二数据、第二数据的标签信息、第二数据的出度、入度和数据节点与操作节点的连接关系,第二数据包括第一数据;
[0255] 操作节点获取模块,获取神经网络中的操作节点的信息,操作节点的信息包括实现操作节点的操作所对应的参数、对应的输入数据节点和输出数据节点;
[0256] 计算图获取模块,获取神经网络所对应的计算图,计算图中包括操作节点、所对应的数据节点以及数据节点与操作节点之间的连接关系;
[0257] 存储模块,存储数据节点、操作节点和计算图。
[0258] 本公开实施例还提供一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述数据处理方法。
[0259] 应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0260] 另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0261] 所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
[0262] 所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0263] 在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述数据处理装置;其中,所述数据处理装置与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述数据处理装置与外部设备之间的数据传输;所述控制器件,用于对所述数据处理装置的状态进行监控。
[0264] 图6示出根据本公开实施例的板卡的结构框图,参阅图6,上述板卡除了包括上述数据处理装置389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
[0265] 所述存储器件390与所述数据处理装置通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述数据处理装置通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
[0266] DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述数据处理装置内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
[0267] 在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述数据处理装置中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0268] 所述接口装置与所述数据处理装置电连接。所述接口装置用于实现所述数据处理装置与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述数据处理装置,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述数据处理装置的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0269] 所述控制器件与所述数据处理装置电连接。所述控制器件用于对所述数据处理装置的状态进行监控。具体的,所述数据处理装置与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述数据处理装置可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述数据处理装置可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述数据处理装置中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
[0270] 在一种可能的实现方式中,公开了一种电子设备,其包括了上述数据处理装置。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0271] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0272] 依据以下条款可更好地理解前述内容:
[0273] 条款A1.一种数据处理方法,应用于处理器,所述方法包括:
[0274] 获取第一数据,所述第一数据用于进行神经网络运算;
[0275] 确定所述第一数据的标签信息;
[0276] 根据所述标签信息,将所述第一数据存入数据存储空间中,
[0277] 其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
[0278] 条款A2.根据条款A1所述的方法,所述确定所述第一数据的标签信息,包括:
[0279] 根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,
[0280] 其中,所述静态标签信息包括以下至少一项:数据类别、静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值。
[0281] 条款A3.根据条款A2所述的方法,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,包括:
[0282] 根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别;
[0283] 其中,所述数据类别包括以下任一项:指令、输入神经元、输出神经元、隐藏神经元、常量神经元、输入权值、输出权值、常量权值和辅助数据。
[0284] 条款A4.根据条款A3所述的方法,根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别,包括:
[0285] 获取对应所述神经网络的待标记计算图,所述待标记计算图中包括操作节点、无类别数据节点、无类别数据节点与操作节点之间的连接关系;
[0286] 遍历所述待标记计算图,获得所述待标记计算图中所有的无类别数据节点的信息和操作节点的信息,所述无类别数据节点的信息包括所述第一数据、所述第一数据对应的前续操作节点和后续操作节点,所述操作节点的信息包括实现所述操作节点的操作所对应的参数、对应的输入数据节点和输出数据节点;
[0287] 在数据节点队列中依次存储遍历到的所述无类别数据节点的信息,在操作节点队列中依次存储遍历到的所述操作节点的信息;
[0288] 根据所述无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,并将确定了对应的数据类别的无类别数据节点从所述数据节点队列中删除。
[0289] 条款A5.根据条款A4所述的方法,根据所述无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,包括:
[0290] 根据所述无类别数据节点所连接的前续操作节点的数量,确定所述无类别数据节点的入度;
[0291] 根据所述无类别数据节点所连接的后续操作节点的数量,确定所述无类别数据节点的出度;
[0292] 根据所述无类别数据节点的前续操作节点和后续操作节点,确定所述无类别数据节点中第一数据的待定数据类别;
[0293] 根据所述无类别数据节点的入度、出度,从待定数据类别中确定出无类别数据节点中第一数据的数据类别。
[0294] 条款A6.根据条款A4所述的方法,根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别,还包括:
[0295] 将确定出的数据类型存储至所述待标记计算图中对应的无类型数据节点中,形成具有静态标签信息的数据节点,得到已标记计算图。
[0296] 条款A7.根据条款A1-条款A6任一项所述的方法,所述标签信息还包括动态标签信息,所述动态标签信息用于表征所述第一数据与运行所述神经网络的处理器相关的信息;
[0297] 其中,确定所述第一数据的标签信息,包括:
[0298] 根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,[0299] 其中,所述动态标签信息包括以下至少一项:动态数据类型、动态数据维度顺序、分片参数、填充参数和数据尺寸。
[0300] 条款A8.根据条款A4所述的方法,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,包括:
[0301] 根据所述第一数据所参与的目标操作,从所述处理器中确定出执行所述目标操作的运算模块,所述目标操作包括所述第一数据所参与的前续操作和/或后续操作;
[0302] 根据所述运算模块,确定所述第一数据的动态数据类型。
[0303] 条款A9.根据条款A8所述的方法,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,包括:
[0304] 根据所述目标操作所对应的算法特征,确定所述第一数据的动态数据维度顺序。
[0305] 条款A10.根据条款A8或条款A9所述的方法,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,包括以下至少一项:
[0306] 根据所述运算模块的单次可计算数据个数,确定所述第一数据的分片参数;
[0307] 根据所述分片参数、所述动态数据维度顺序中最低维度的维度值,确定所述第一数据的填充参数;
[0308] 根据所述第一数据的所有维度值、所述填充参数,确定所述第一数据的数据尺寸,[0309] 其中,所述动态数据维度顺序中最低维度的维度值是根据所述静态标签信息确定的。
[0310] 条款A11.根据条款A7所述的方法,所述方法还包括:
[0311] 将所述第一数据的标签信息存入标签存储空间中;
[0312] 其中,所述静态标签信息存入所述标签存储空间中的静态标签存储空间中;
[0313] 所述动态标签信息存入所述标签存储空间中的动态标签存储空间中。
[0314] 条款A12.根据条款A7所述的方法,根据所述标签信息,将所述第一数据存入数据存储空间中,包括:
[0315] 在所述标签信息中包含动态标签信息时,根据所述动态标签信息,从所述数据存储空间中申请用于存储所述第一数据的第一数据存储空间;
[0316] 将所述第一数据存入所述第一数据存储空间中。
[0317] 条款A13.根据条款A12所述的方法,将所述第一数据存入所述第一数据存储空间中,包括:
[0318] 判断所述第一数据当前的数据状态与所述动态标签信息是否一致,所述数据状态包括所述第一数据的数据类型、数据维度的顺序和维度值;
[0319] 在所述第一数据当前的数据状态与动态标签信息不一致时,根据所述静态标签信息和所述动态标签信息对所述第一数据进行转换,得到转换后的第一数据,所述转换后的第一数据的数据状态与所述动态标签信息一致;
[0320] 将所述转换后的第一数据存入所述第一数据存储空间中。
[0321] 条款A14.一种数据处理装置,应用于处理器,所述装置包括:
[0322] 数据获取模块,获取第一数据,所述第一数据用于进行神经网络运算;
[0323] 标签信息确定模块,确定所述第一数据的标签信息;
[0324] 数据存储模块,根据所述标签信息,将所述第一数据存入数据存储空间中,[0325] 其中,所述标签信息包括静态标签信息,所述静态标签信息用于表征所述第一数据参与所述神经网络运算相关的信息。
[0326] 条款A15.根据条款A14所述的装置,所述标签信息确定模块,包括:
[0327] 第一确定子模块,根据所述第一数据所对应的神经网络和/或获取到的所述第一数据的输入信息,确定所述第一数据的静态标签信息,
[0328] 其中,所述静态标签信息包括以下至少一项:数据类别、静态数据类型、静态数据维度、静态数据维度顺序以及对应每个静态数据维度的维度值。
[0329] 条款A16.根据条款A15所述的装置,所述第一确定子模块,包括:
[0330] 数据类别确定子模块,根据所述第一数据对应于所述神经网络的出度、入度和所述第一数据参与的所述神经网络中的操作,确定所述第一数据的数据类别;
[0331] 其中,所述数据类别包括以下任一项:指令、输入神经元、输出神经元、隐藏神经元、常量神经元、输入权值、输出权值、常量权值和辅助数据。
[0332] 条款A17.根据条款A16所述的装置,所述数据类别确定子模块,包括:
[0333] 计算图获取子模块,获取对应所述神经网络的待标记计算图,所述待标记计算图中包括操作节点、无类别数据节点、无类别数据节点与操作节点之间的连接关系;
[0334] 遍历子模块,遍历所述待标记计算图,获得所述待标记计算图中所有的无类别数据节点的信息和操作节点的信息,所述无类别数据节点的信息包括所述第一数据、所述第一数据对应的前续操作节点和后续操作节点,所述操作节点的信息包括实现所述操作节点的操作所对应的参数、对应的输入数据节点和输出数据节点;
[0335] 信息存储子模块,在数据节点队列中依次存储遍历到的所述无类别数据节点的信息,在操作节点队列中依次存储遍历到的所述操作节点的信息;
[0336] 类别确定子模块,根据所述无类别数据节点的信息,确定对应的无类别数据节点中第一数据的数据类别,并将确定了对应的数据类别的无类别数据节点从所述数据节点队列中删除。
[0337] 条款A18.根据条款A17所述的装置,所述类别确定子模块被配置为:
[0338] 根据所述无类别数据节点所连接的前续操作节点的数量,确定所述无类别数据节点的入度;
[0339] 根据所述无类别数据节点所连接的后续操作节点的数量,确定所述无类别数据节点的出度;
[0340] 根据所述无类别数据节点的前续操作节点和后续操作节点,确定所述无类别数据节点中第一数据的待定数据类别;
[0341] 根据所述无类别数据节点的入度、出度,从待定数据类别中确定出无类别数据节点中第一数据的数据类别。
[0342] 条款A19.根据条款A17所述的装置,所述数据类别确定子模块,还包括:
[0343] 计算图标记子模块,将确定出的数据类型存储至所述待标记计算图中对应的无类型数据节点中,形成具有静态标签信息的数据节点,得到已标记计算图。
[0344] 条款A20.根据条款A14至条款A19任一项所述的装置,所述标签信息还包括动态标签信息,所述动态标签信息用于表征所述第一数据与运行所述神经网络的处理器相关的信息;
[0345] 其中,所述标签信息确定模块,包括:
[0346] 动态标签生成模块,根据所述处理器和所述静态标签信息,生成所述第一数据的动态标签信息,
[0347] 其中,所述动态标签信息包括以下至少一项:动态数据类型、动态数据维度顺序、分片参数、填充参数和数据尺寸。
[0348] 条款A21.根据条款A20所述的装置,所述动态标签生成模块,包括:
[0349] 目标操作确定子模块,根据所述第一数据所参与的目标操作,从所述处理器中确定出执行所述目标操作的运算模块,所述目标操作包括所述第一数据所参与的前续操作和/或后续操作;
[0350] 动态数据类型确定子模块,根据所述运算模块,确定所述第一数据的动态数据类型。
[0351] 条款A22.根据条款A21所述的装置,所述动态标签生成模块,还包括:
[0352] 维度顺序确定子模块,根据所述目标操作所对应的算法特征,确定所述第一数据的动态数据维度顺序。
[0353] 条款A23.根据条款A21或条款A22所述的装置,所述动态标签生成模块,还包括以下至少一个子模块:
[0354] 分片参数确定子模块,根据所述运算模块的单次可计算数据个数,确定所述第一数据的分片参数;
[0355] 填充参数确定子模块,根据所述分片参数、所述动态数据维度顺序中最低维度的维度值,确定所述第一数据的填充参数;
[0356] 数据尺寸确定子模块,根据所述第一数据的所有维度值、所述填充参数,确定所述第一数据的数据尺寸,
[0357] 其中,所述动态数据维度顺序中最低维度的维度值是根据所述静态标签信息确定的。
[0358] 条款A24.根据条款A20所述的装置,所述装置还包括:
[0359] 标签信息存储模块,将所述第一数据的标签信息存入标签存储空间中;
[0360] 其中,所述静态标签信息存入所述标签存储空间中的静态标签存储空间中;
[0361] 所述动态标签信息存入所述标签存储空间中的动态标签存储空间中。
[0362] 条款A25.根据条款A20所述的装置,所述数据存储模块,包括:
[0363] 空间申请子模块,在所述标签信息中包含动态标签信息时,根据所述动态标签信息,从所述数据存储空间中申请用于存储所述第一数据的第一数据存储空间;
[0364] 将所述第一数据存入所述第一数据存储空间中。
[0365] 条款A26.根据条款A25所述的装置,所述数据存储子模块,包括:
[0366] 状态确定子模块,判断所述第一数据当前的数据状态与所述动态标签信息是否一致,所述数据状态包括所述第一数据的数据类型、数据维度的顺序和维度值;
[0367] 数据转换子模块,在所述第一数据当前的数据状态与动态标签信息不一致时,根据所述静态标签信息和所述动态标签信息对所述第一数据进行转换,得到转换后的第一数据,所述转换后的第一数据的数据状态与所述动态标签信息一致;
[0368] 存储子模块,将所述转换后的第一数据存入所述第一数据存储空间中。
[0369] 条款A27.一种电子设备,所述电子设备包括如条款A14至条款A26任意一项所述的数据处理装置。
[0370] 条款A28.一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A14至条款A26任意一项所述的数据处理装置;
[0371] 其中,所述数据处理装置与所述存储器件、所述控制器件以及所述接口装置分别连接;
[0372] 所述存储器件,用于存储数据;
[0373] 所述接口装置,用于实现所述数据处理装置与外部设备之间的数据传输;
[0374] 所述控制器件,用于对所述数据处理装置的状态进行监控。
[0375] 条款A29.根据条款A28所述的板卡,
[0376] 所述存储器件包括:多组存储单元,每一组所述存储单元与所述数据处理装置通过总线连接,所述存储单元为:DDR SDRAM;
[0377] 所述数据处理装置包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
[0378] 所述接口装置为:标准PCIE接口。
[0379] 条款A30.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款A1至条款A13任一项所述的数据处理方法。
[0380] 以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈