运算方法、装置及相关产品转让专利

申请号 : CN201811333948.3

文献号 : CN111178373B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 中科寒武纪科技股份有限公司

摘要 :

本公开涉及运算方法、装置及相关产品。机器学习装置包括至少一个数据处理装置从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;当机器学习运算装置包含多个数据处理装置时,多个数据处理装置间可以通过特定的结构进行连接并传输数据。多个数据处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个数据处理装置共享同一控制系统或拥有各自的控制系统、且共享内存或者拥有各自的内存;多个数据处理装置的互联方式是任意互联拓扑。本公开实施例所提供的运算方法、装置及相关产品,能够自动为数据添加标签,提高了数据处理的效率。

权利要求 :

1.一种数据处理装置,其特征在于,所述装置包括:数据切分模块,用于对接收到的待处理数据进行切分,获得多个切分数据,为所述多个切分数据分别设置对应的索引字符,得到索引字符组,其中,所述索引字符是预先设置的,用于对任意一个待处理数据的切分数据进行索引字符设置;

索引洗牌模块,用于对索引字符组进行洗牌处理,获得洗牌后的索引字符组;

数据生成模块,根据所述洗牌后的索引字符组对所述多个切分数据进行重排,得到输入数据,并为所述输入数据添加标签,所述标签用于描述所述输入数据与所述输入数据输入神经网络模型后得到的输出之间的对应关系,其中,所述数据生成模块,包括:标签添加子模块,将所述洗牌后的索引字符组确定为所述输入数据的标签,带有标签的输入数据用于作为所述神经网络模型的训练样本数据。

2.根据权利要求1所述的装置,其特征在于,所述索引洗牌模块,包括:洗牌子模块,用于根据洗牌算法对所述索引字符组进行洗牌,获得洗牌后的索引字符组。

3.根据权利要求2所述的装置,其特征在于,所述洗牌算法包括等概率随机排列数组算法Fisher‑Yates Shuffle、经典洗牌算法Knuth‑Durstenfeld Shuffle和内外洗牌算法Inside‑Out Algorithm中的任一种。

4.根据权利要求1所述的装置,其特征在于,所述数据切分模块,还用于获取数据切分尺寸,并根据所述数据切分尺寸对所述待处理数据进行切分,获得所述多个切分数据,其中,所述数据切分尺寸包括切分长度和切分宽度。

5.根据权利要求1所述的装置,所述装置还包括:控制模块,用于获取所述输入数据和计算指令;

处理模块,用于根据所述计算指令,对所述输入数据进行机器学习计算,得到所述计算指令的计算结果,所述机器学习计算包括人工神经网络计算,其中,所述装置还包括:存储模块和直接内存访问模块,所述存储模块包括:寄存器、缓存中一种或多种;

所述缓存,用于存储所述输入数据;

所述寄存器,用于存储所述输入数据中标量数据;

所述缓存包括高速暂存缓存。

6.根据权利要求5所述的装置,所述处理模块,包括:主处理子模块和多个从处理子模块,

所述控制模块,还用于解析所述计算指令得到多个运算指令,将所述多个运算指令以及所述输入数据发送给所述主处理子模块;

所述主处理子模块,用于对所述输入数据执行前序处理,以及与所述从处理子模块之间传输数据和运算指令;

所述从处理子模块,用于依据所述主处理子模块传输的数据及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理子模块;

所述主处理子模块,还用于对所述多个中间结果执行后续处理得到所述计算指令的指令结果。

7.根据权利要求5所述的装置,其特征在于,所述控制模块包括:指令存储子模块、指令处理子模块和存储队列子模块;

所述指令存储子模块,用于存储与人工神经网络运算关联的计算指令;

所述指令处理子模块,用于对所述计算指令解析得到多个运算指令;

所述存储队列子模块,用于存储指令队列,所述指令队列包括:按所述指令队列的前后顺序待执行的多个运算指令,

其中,所述控制模块还包括:

依赖关系处理子模块,用于在确定所述多个运算指令中的第一运算指令与所述第一运算指令之前的第零运算指令存在关联关系时,将所述第一运算指令缓存在所述指令存储子模块内,并在确定所述第零运算指令执行完毕后,从所述指令存储子模块提取所述第一运算指令传输至所述处理模块,

其中,所述多个运算指令中的第一运算指令与第一运算指令之前的第零运算指令存在关联关系,包括:

存储所述第一运算指令所需数据的第一存储地址区间与存储所述第零运算指令所需数据的第零存储地址区间具有重叠的区域。

8.一种机器学习运算装置,其特征在于,所述装置包括:一个或多个如权利要求1‑7任一项所述的数据处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;

当所述机器学习运算装置包含多个所述数据处理装置时,所述多个所述数据处理装置间可以通过特定的结构进行连接并传输数据;

其中,多个所述数据处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述数据处理装置的互联方式是任意互联拓扑。

9.一种机器学习芯片,其特征在于,所述机器学习芯片包括:如权利要求8所述的机器学习运算装置或组合处理装置,其中,所述组合处理装置包括:如权利要求8 所述的机器学习运算装置、通用互联接口和其他处理装置,所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,

其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据;

其中,所述机器学习芯片应用于电子设备、板卡中的至少一项,其中,所述板卡还包括:存储器件、接口装置和控制器件,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接,所述存储器件,用于存储数据;

所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;

所述控制器件,用于对所述机器学习芯片的状态进行监控。

10.一种数据处理方法,其特征在于,应用于数据处理装置,所述方法包括:对接收到的待处理数据进行切分,获得多个切分数据,为所述多个切分数据分别设置对应的索引字符,得到索引字符组,其中,所述索引字符是预先设置的,用于对任意一个待处理数据的切分数据进行索引字符设置;

对索引字符组进行洗牌处理,获得洗牌后的索引字符组;

根据所述洗牌后的索引字符组对所述多个切分数据进行重排,得到输入数据,并为所述输入数据添加标签,所述标签用于描述所述输入数据与所述输入数据输入需要训练的模型后得到的输出之间的对应关系,其中,为所述输入数据添加标签,包括:将所述洗牌后的索引字符组确定为所述输入数据的标签,带有标签的输入数据用于作为所述模型的训练样本数据。

11.根据权利要求10所述的方法,其特征在于,对索引字符组进行洗牌处理,获得洗牌后的索引字符组,包括:

根据洗牌算法对所述索引字符组进行洗牌,获得洗牌后的索引字符组。

12.根据权利要求11所述的方法,其特征在于,所述洗牌算法包括等概率随机排列数组算法Fisher‑Yates Shuffle、经典洗牌算法Knuth‑Durstenfeld Shuffle和内外洗牌算法Inside‑Out Algorithm中的任一种。

13.根据权利要求10所述的方法,其特征在于,对接收到的待处理数据进行切分,获得多个切分数据,包括:

获取数据切分尺寸,并根据所述数据切分尺寸对所述待处理数据进行切分,获得所述多个切分数据,

其中,所述数据切分尺寸包括切分长度和切分宽度。

14.根据权利要求10所述的方法,其特征在于,所述方法还包括:获取所述输入数据和计算指令;

根据所述计算指令,对所述输入数据进行机器学习计算,得到所述计算指令的计算结果,所述机器学习计算包括人工神经网络计算,其中,所述方法还包括:存储所述输入数据,其中,利用寄存器、缓存中的任意一种或多种存储所述输入数据,所述缓存用于存储所述输入数据,所述寄存器用于存储所述输入数据中的标量数据,所述缓存包括高速暂存缓存。

15.根据权利要求14所述的方法,其特征在于,获取所述输入数据和计算指令,包括:解析所述计算指令得到多个运算指令;

其中,根据所述计算指令,对所述输入数据进行机器学习计算,得到所述计算指令的计算结果,包括:

对所述输入数据执行前序处理,以及传输数据和运算指令;

依据传输的数据及运算指令并行执行中间运算得到多个中间结果;

对所述多个中间结果执行后续处理得到所述计算指令的指令结果。

16.根据权利要求14所述的方法,其特征在于,获取所述输入数据和计算指令,包括:存储与人工神经网络运算关联的计算指令;

对所述计算指令解析得到多个运算指令;

存储指令队列,所述指令队列包括:按所述指令队列的前后顺序待执行的多个运算指令,

其中,获取所述输入数据和计算指令,还包括:在确定所述多个运算指令中的第一运算指令与所述第一运算指令之前的第零运算指令存在关联关系时,缓存所述第一运算指令,并在确定所述第零运算指令执行完毕后,控制进行所述第一运算指令的执行,其中,所述多个运算指令中的第一运算指令与第一运算指令之前的第零运算指令存在关联关系,包括:

存储所述第一运算指令所需数据的第一存储地址区间与存储所述第零运算指令所需数据的第零存储地址区间具有重叠的区域。

说明书 :

运算方法、装置及相关产品

技术领域

[0001] 本公开涉及计算机技术领域,尤其涉及一种数据处理方法、装置及相关产品。

背景技术

[0002] 随着科技的不断进步,神经网络(neural network)的应用也越来越广泛。相关技术中,常通过监督学习训练获得所需的神经网络模型。监督学习通过对已有的训练样本数
据进行训练得到神经网络模型。再利用神经网络模型将所有的输入数据映射为对应的输
出,对输出进行判断从而实现对输入数据进行分类的目的。为了保证上述过程,需要对监督
学习中所用的训练样本数据添加标签,以描述输入数据与输出之间的对应关系。但相关技
术中,训练样本数据的标签均需要人工进行标记,所需人力成本巨大,耗时严重。

发明内容

[0003] 有鉴于此,本公开提出了一种数据处理方法、装置及相关产品。
[0004] 根据本公开的第一方面,提供了一种数据处理装置,所述装置包括:
[0005] 数据切分模块,用于对接收到的待处理数据进行切分,获得多个切分数据,为所述多个切分数据分别设置对应的索引字符,得到索引字符组;
[0006] 索引洗牌模块,用于对索引字符组进行洗牌处理,获得洗牌后的索引字符组;
[0007] 数据生成模块,根据所述洗牌后的索引字符组对所述多个切分数据进行重排,得到输入数据,并为所述输入数据添加标签。
[0008] 根据本公开的第二方面,提供了一种机器学习运算装置,所述装置包括:
[0009] 一个或多个上述第一方面所述的数据处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理
装置;
[0010] 当所述机器学习运算装置包含多个所述数据处理装置时,所述多个所述数据处理装置间可以通过特定的结构进行连接并传输数据;
[0011] 其中,多个所述数据处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理装置共享同一控制系统或
拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述数
据处理装置的互联方式是任意互联拓扑。
[0012] 根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:
[0013] 上述第二方面所述的机器学习运算装置、通用互联接口和其他处理装置;
[0014] 所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
[0015] 根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。
[0016] 根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。
[0017] 根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
[0018] 根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。
[0019] 根据本公开的第八方面,提供了一种数据处理方法,所述方法应用于数据处理装置,所述方法包括:
[0020] 对接收到的待处理数据进行切分,获得多个切分数据,为所述多个切分数据分别设置对应的索引字符,得到索引字符组;
[0021] 对索引字符组进行洗牌处理,获得洗牌后的索引字符组;
[0022] 根据所述洗牌后的索引字符组对所述多个切分数据进行重排,得到输入数据,并为所述输入数据添加标签。
[0023] 在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、
相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗
设备。
[0024] 在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括
核磁共振仪、B超仪和/或心电图仪。
[0025] 本公开实施例所提供的数据处理方法、装置及相关产品,该装置包括:数据切分模块,用于对接收到的待处理数据进行切分,获得多个切分数据,为多个切分数据分别设置对
应的索引字符,得到索引字符组;索引洗牌模块,用于对索引字符组进行洗牌处理,获得洗
牌后的索引字符组;数据生成模块,根据洗牌后的索引字符组对多个切分数据进行重排,得
到输入数据,并为输入数据添加标签。本公开实施例所提供的数据处理方法、装置及相关产
品,能够自动为数据添加标签,提高了数据处理的效率少。
[0026] 根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

[0027] 包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0028] 图1示出根据本公开一实施例的数据处理装置的框图。
[0029] 图2示出根据本公开一实施例的数据处理装置的框图。
[0030] 图3a‑图3d示出根据本公开一实施例的数据处理装置中处理模块的框图。
[0031] 图4示出根据本公开一实施例的数据处理装置的应用场景的示意图。
[0032] 图5a、图5b示出根据本公开一实施例的组合处理装置的框图。
[0033] 图6示出根据本公开一实施例的板卡的结构示意图。
[0034] 图7示出根据本公开一实施例的数据处理方法的流程图。

具体实施方式

[0035] 以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除
非特别指出,不必按比例绘制附图。
[0036] 在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0037] 另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于
本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0038] 图1示出根据本公开一实施例的数据处理装置的框图。如图1所示,该装置包括数据切分模块11、索引洗牌模块12和数据生成模块13。
[0039] 数据切分模块11,用于对接收到的待处理数据进行切分,获得多个切分数据,为多个切分数据分别设置对应的索引字符,得到索引字符组。
[0040] 索引洗牌模块12,用于对索引字符组进行洗牌处理,获得洗牌后的索引字符组。
[0041] 数据生成模块13,根据洗牌后的索引字符组对多个切分数据进行重排,得到输入数据,并为输入数据添加标签。
[0042] 在本实施例中,待处理数据可以是图像数据、语音数据、文字数据等数据,本公开对此不作限制。不同的切分数据所对应的索引字符并不相同,切分数据与索引字符之间存
在唯一对应的关系。索引字符可以是数字、字母或者其他符号中的一种或多种,本公开对此
不作限制。
[0043] 在本实施例中,为输入数据所添加的标签可以是数字、字母或者其他符号中的一种或多种,不同的输入数据对应不同的标签,以通过标签区分输入数据。
[0044] 本公开实施例所提供的数据处理装置包括数据切分模块、索引洗牌模块和数据生成模块。数据切分模块用于对接收到的待处理数据进行切分,获得多个切分数据,为多个切
分数据分别设置对应的索引字符,得到索引字符组。索引洗牌模块用于对索引字符组进行
洗牌处理,获得洗牌后的索引字符组。数据生成模块根据洗牌后的索引字符组对多个切分
数据进行重排,得到输入数据,并为输入数据添加标签。本公开实施例所提供的数据处理装
置,能够自动为数据添加标签,提高了数据处理的效率。且通过装置自动为数据添加标签的
速度、效率、准确程度相比于人工标记会得到显著提高,添加标签所耗费的时间也能够大幅
度减少。
[0045] 图2示出根据本公开一实施例的数据处理装置的框图。在一种可能的实现方式中,如图2所示,索引洗牌模块12可以包括洗牌子模块121。
[0046] 洗牌子模块121,用于根据洗牌算法对索引字符组进行洗牌,获得洗牌后的索引字符组。其中,洗牌算法包括等概率随机排列数组算法Fisher‑Yates Shuffle、经典洗牌算法
Knuth‑Durstenfeld Shuffle和内外洗牌算法Inside‑Out Algorithm中的任一种。
[0047] 其中,Fisher‑Yates Shuffle算法的基本思想是从原始的索引字符组中随机取一个之前没有取到过的字符到新的索引字符组中,得到洗牌后的索引字符组。Knuth‑
Durstenfeld Shuffle的基本思想是每次从未处理的索引字符中随机取出一个字符,然后
把该字符放在索引字符组的尾部,得到洗牌后的索引字符组。Inside‑Out Algorithm的基
本思想是从前向后扫描索引字符,把位置i的索引字符随机插入到前i个(包括第i个)位置
中(假设为k),这个操作是在新索引字符组中进行,然后把原始索引字符组中位置k的字符
替换新索引字符组位置i的字符。
[0048] 在该实现方式中,还可以使用Fisher‑Yates随机置乱算法(也被称做高纳德置乱算法)等洗牌算法对索引字符组进行洗牌。
[0049] 在一种可能的实现方式中,如图2所示,数据生成模块13可以包括标签添加子模块131。标签添加子模块131,将洗牌后的索引字符组确定为输入数据的标签。
[0050] 在一种可能的实现方式中,数据切分模块11,还可以用于获取数据切分尺寸,并根据数据切分尺寸对待处理数据进行切分,获得多个切分数据。其中,数据切分尺寸包括切分
长度和切分宽度。
[0051] 在该实现方式中,数据切分模块可以根据切分长度和切分宽度,对待处理数据进行切分。切分长度和切分宽度可以是大于或等于1的正整数,且切分长度小于或等于待处理
数据的长度、切分宽度小于或等于待处理数据宽度。可以根据用户设置确定切分长度和切
分宽度。还可以设置默认切分长度和默认切分宽度,在未查询到用户设置的切分长度和切
分宽度时,数据切分模块可以根据默认切分长度和默认切分宽度对待处理数据进行切分。
[0052] 在一种可能的实现方式中,对带有标签的输入数据可以作为训练样本数据进行模型训练,也可以作为输入数据进行人工神经网络计算等,本公开对此不作限制。
[0053] 在一种可能的实现方式中,如图2所示,该装置还可以包括控制模块14和处理模块15。控制模块14,用于获取输入数据和计算指令。处理模块15,用于根据计算指令,对输入数
据进行机器学习计算,得到计算指令的计算结果。其中,机器学习计算可以包括人工神经网
络计算。
[0054] 在该实现方式中,此处所获得的数据可以为上述带有标签的输入数据,计算指令可以是用于进行人工神经网络运算的任意指令。计算指令可以包括对数据进行逻辑运算或
算术运算的指令,例如,向量逻辑计算指令、标量计算指令、卷积指令等;还可以包括对数据
进行搬运的指令,例如,写指令、读指令等;亦可以包括进行控制指令流进行跳转的指令,例
如,跳转指令等。本领域技术人员可以根据实际需要对计算指令进行设置,本公开对此不作
限制。
[0055] 在一种可能的实现方式中,如图2所示,处理模块15可以包括:主处理子模块151和多个从处理子模块152。
[0056] 控制模块14,还可以用于解析计算指令得到多个运算指令,将多个运算指令以及输入数据发送给主处理子模块151。
[0057] 主处理子模块151,用于对输入数据执行前序处理,以及与从处理子模块152之间传输数据和运算指令。
[0058] 从处理子模块152,用于依据主处理子模块151传输的数据及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理子模块151。
[0059] 主处理子模块151,还用于对多个中间结果执行后续处理得到计算指令的指令结果。
[0060] 需要说明的是,本领域技术人员可以根据实际需要对主处理子模块和多个从处理子模块之间的连接方式进行设置,以实现对处理模块的架构设置,例如,处理模块的架构可
以是“H”型架构、阵列型架构、树型架构等,本公开对此不作限制。
[0061] 图3a示出根据本公开一实施例的数据处理装置中处理模块的框图。在一种可能的实现方式中,如图3a所示,处理模块15还可以包括一个或多个分支处理子模块153,该分支
处理子模块153用于转发主处理子模块151和从处理子模块152之间的数据和/或运算指令。
其中,主处理子模块151与一个或多个分支处理子模块153连接。这样,处理模块中的主处理
子模块、分支处理子模块和从处理子模块之间采用“H”型架构连接,通过分支处理子模块转
发数据和/或运算指令,节省了对主处理子模块的资源占用,进而提高指令的处理速度。
[0062] 图3b示出根据本公开一实施例的数据处理装置中处理模块的框图。在一种可能的实现方式中,如图3b所示,多个从处理子模块152呈阵列分布。
[0063] 每个从处理子模块152与相邻的其他从处理子模块152连接,主处理子模块151连接多个从处理子模块152中的k个从处理子模块152,k个从处理子模块152为:第1行的n个从
处理子模块152、第m行的n个从处理子模块152以及第1列的m个从处理子模块152。
[0064] 其中,如图3b所示,k个从处理子模块仅包括第1行的n个从处理子模块、第m行的n个从处理子模块以及第1列的m个从处理子模块,即该k个从处理子模块为多个从处理子模
块中直接与主处理子模块连接的从处理子模块。其中,k个从处理子模块,用于在主处理子
模块以及多个从处理子模块之间的数据以及指令的转发。这样,多个从处理子模块呈阵列
分布,可以提高主处理子模块向从处理子模块发送数据和/或运算指令速度,进而提高指令
的处理速度。
[0065] 图3c示出根据本公开一实施例的数据处理装置中处理模块的框图。在一种可能的实现方式中,如图3c所示,处理模块还可以包括树型子模块154。该树型子模块154包括一个
根端口401和多个支端口402。根端口401与主处理子模块151连接,多个支端口402与多个从
处理子模块152分别连接。其中,树型子模块154具有收发功能,用于转发主处理子模块151
和从处理子模块152之间的数据和/或运算指令。这样,通过树型子模块的作用使得处理模
块呈树型架构连接,并利用树型子模块的转发功能,可以提高主处理子模块向从处理子模
块发送数据和/或运算指令速度,进而提高指令的处理速度。
[0066] 在一种可能的实现方式中,树型子模块154可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备运算功能。最下层的节点与
从处理子模块连接,以转发主处理子模块151和从处理子模块152之间的数据和/或运算指
令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。
[0067] 在一种可能的实现方式中,树型子模块154可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。
[0068] 举例来说,图3d示出根据本公开一实施例的数据处理装置中处理模块的框图。如图3d所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从处
理子模块152连接,以转发主处理子模块151和从处理子模块152之间的数据和/或运算指
令。
[0069] 在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,
本公开对此不作限制。
[0070] 在一种可能的实现方式中,如图2所示,该装置还可以包括:存储模块16和直接内存访问模块17,存储模块16可以包括:寄存器、缓存中一种或多种。其中,缓存,用于存储输
入数据;寄存器,用于存储输入数据中标量数据;缓存包括高速暂存缓存。直接内存访问模
块17用于从存储模块16中读取或者存储数据。
[0071] 在一种可能的实现方式中,如图2所示,控制模块14可以包括:指令存储子模块141、指令处理子模块142和存储队列子模块143。
[0072] 指令存储子模块141,用于存储与人工神经网络运算关联的计算指令。
[0073] 指令处理子模块142,用于对计算指令解析得到多个运算指令。
[0074] 存储队列子模块143,用于存储指令队列,指令队列包括:按指令队列的前后顺序待执行的多个运算指令。
[0075] 在该实现方式中,可以根据运算指令的接收时间、优先级别等对多运算指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个运算指令。
[0076] 在一种可能的实现方式中,如图2所示,控制模块14还可以包括:依赖关系处理子模块144。
[0077] 依赖关系处理子模块144,用于在确定多个运算指令中的第一运算指令与第一运算指令之前的第零运算指令存在关联关系时,将第一运算指令缓存在指令存储子模块141
内,并在确定第零运算指令执行完毕后,从指令存储子模块141提取第一运算指令传输至处
理模块15。
[0078] 其中,多个运算指令中的第一运算指令与第一运算指令之前的第零运算指令存在关联关系,包括:存储第一运算指令所需数据的第一存储地址区间与存储第零运算指令所
需数据的第零存储地址区间具有重叠的区域。反之,第一运算指令与第一运算指令之前的
第零运算指令没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
[0079] 通过这种方式,可以根据运算指令之间的依赖关系,使得在先的运算指令执行完毕之后,再执行在后的运算指令,保证运算结果的准确性。
[0080] 在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)、机器学习处理器(MLU)和嵌入式
神经网络处理器(Neural‑network Processing Unit,简称NPU)的一种或多种之中。
[0081] 需要说明的是,尽管以上述实施例作为示例介绍了数据处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用
场景灵活设定各模块,只要符合本公开的技术方案即可。
[0082] 应用示例
[0083] 以下结合“利用数据处理装置进行数据处理”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解数据处理装置的流程。本领域技术人员应理解,以下
应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
[0084] 图4示出根据本公开一实施例的数据处理装置的应用场景的示意图。如图4所示,数据处理装置对进行数据处理的过程如下。其中,待处理数据为图像数据,该图像数据的长
度为W、宽度为H,共有W*H个像素。
[0085] 数据切分模块11在接收到W*H的图像数据时,首先获取数据切分尺寸,例如,获取到切分长度为w‑b,切分宽度为h‑b。之后,数据切分模块11根据切分长度w‑b和切分宽度h‑b
对对W*H图像数据进行切分,获得多个切分数据,例如,获得第一切分数据Q1、第二切分数据
Q2、…、第九切分数据Q9共9个切分数据。数据切分模块11为每个切分数据设置对应的索引
字符(例如,数字),得到索引字符组。例如,将1、2、…、9分别设置为对第一切分数据Q1、第二
切分数据Q2、…、第九切分数据Q9的索引字符,则索引字符组为(1,2,3,4,5,6,7,8,9)。
[0086] 索引洗牌模块12可以采用Fisher‑Yates Shuffle算法、Knuth‑Durstenfeld Shuffle算法和Inside‑Out Algorithm算法中的任一种算法,对索引字符组进行洗牌,获得
洗牌后的索引字符组(2,5,4,3,1,8,9,6,7)。
[0087] 数据生成模块13根据洗牌后的索引字符组(2,5,4,3,1,8,9,6,7),对第一切分数据Q1、第二切分数据Q2、…、第九切分数据Q9进行重排,得到输入数据,并将洗牌后的索引字
符组(2,5,4,3,1,8,9,6,7)确定为该输入数据的标签。
[0088] 以上各模块的工作过程可参考上文的相关描述。
[0089] 而后,控制模块14可以获取上述输入数据和计算指令,处理模块15可以根据计算指令对输入数据进行机器学习计算,得到计算指令的计算结果。
[0090] 这样,能够自动为待处理数据添加标签,得到带有标签的输入数据,提高了数据处理的效率。且通过装置自动为数据添加标签的速度、效率、准确程度相比于人工标记会得到
显著提高,添加标签所耗费的时间也能够大幅度减少。
[0091] 本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述数据处理装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学
习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得
计算指令,并将执行结果通过I/O接口传递给外围设备(也可称其他处理装置)。外围设备譬
如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上数据处理装置时,
数据处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联
并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有
各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式
可以是任意互联拓扑。
[0092] 该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
[0093] 图5a示出根据本公开一实施例的组合处理装置的框图。如图5a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其
他处理装置进行交互,共同完成用户指定的操作。
[0094] 其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其
他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机
器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作
共同完成运算任务。
[0095] 通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置
片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控
制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
[0096] 图5b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图5b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置
和所述其他处理装置连接。存储装置用于保存在机器学习运算装置和所述其他处理装置的
数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中
无法全部保存的数据。
[0097] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理
装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,
网卡,wifi接口。
[0098] 本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
[0099] 本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
[0100] 本公开提供一种板卡,图6示出根据本公开一实施例的板卡的结构示意图。如图6所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器
学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、
接口装置391和控制器件392。
[0101] 存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单
元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是DDR SDRAM
(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
[0102] DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。
[0103] 在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个DDR4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位
DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当
每一组存储单元393中采用DDR4‑3200颗粒时,数据传输的理论带宽可达到25600MB/s。
[0104] 在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制DDR的
控制器,用于对每个存储单元393的数据传输与数据存储的控制。
[0105] 接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之
间的数据传输。例如在一个实施例中,接口装置391可以为标准PCIE接口。比如,待处理的数
据由服务器通过标准PCIE接口传递至机器学习芯片289,实现数据转移。优选的,当采用
PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置391还
可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现
转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务
器)。
[0106] 控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过SPI接口电连接。控制器
件392可以包括单片机(Micro Controller Unit,MCU)。如机器学习芯片389可以包括多个
处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处
于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理
芯片、多个处理和/或多个处理电路的工作状态的调控。
[0107] 本公开提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。
[0108] 电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影
仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0109] 交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、B超仪
和/或心电图仪。
[0110] 图7示出根据本公开一实施例的数据处理方法的流程图。如图7所示,该方法应用于上述数据处理装置,该方法包括步骤S11至步骤S13。
[0111] 在步骤S11中,对接收到的待处理数据进行切分,获得多个切分数据,为多个切分数据分别设置对应的索引字符,得到索引字符组。
[0112] 在步骤S12中,对索引字符组进行洗牌处理,获得洗牌后的索引字符组。
[0113] 在步骤S13中,根据洗牌后的索引字符组对多个切分数据进行重排,得到输入数据,并为输入数据添加标签。
[0114] 在一种可能的实现方式中,步骤S12可以包括:根据洗牌算法对索引字符组进行洗牌,获得洗牌后的索引字符组。其中,洗牌算法包括等概率随机排列数组算法Fisher‑Yates 
Shuffle、经典洗牌算法Knuth‑Durstenfeld Shuffle和内外洗牌算法Inside‑Out 
Algorithm中的任一种。
[0115] 在一种可能的实现方式中,为输入数据添加标签,可以包括:将洗牌后的索引字符组确定为输入数据的标签。
[0116] 在一种可能的实现方式中,对接收到的待处理数据进行切分,获得多个切分数据,可以包括:获取数据切分尺寸,并根据数据切分尺寸对待处理数据进行切分,获得多个切分
数据。其中,数据切分尺寸包括切分长度和切分宽度。
[0117] 在一种可能的实现方式中,该方法还可以包括:
[0118] 获取输入数据和计算指令;
[0119] 根据计算指令,对输入数据进行机器学习计算,得到计算指令的计算结果,
[0120] 其中,机器学习计算包括人工神经网络计算。
[0121] 在一种可能的实现方式中,获取输入数据和计算指令,可以包括:
[0122] 解析计算指令得到多个运算指令;
[0123] 其中,根据计算指令,对输入数据进行机器学习计算,得到计算指令的计算结果,包括:
[0124] 对输入数据执行前序处理,以及传输数据和运算指令;
[0125] 依据传输的数据及运算指令并行执行中间运算得到多个中间结果;
[0126] 对多个中间结果执行后续处理得到计算指令的指令结果。
[0127] 在一种可能的实现方式中,该方法还可以包括:存储输入数据,
[0128] 其中,利用寄存器、缓存中的任意一种或多种存储输入数据,缓存用于存储输入数据,寄存器用于存储输入数据中的标量数据,缓存包括高速暂存缓存。
[0129] 在一种可能的实现方式中,获取输入数据和计算指令,可以包括:
[0130] 存储与人工神经网络运算关联的计算指令;
[0131] 对计算指令解析得到多个运算指令;
[0132] 存储指令队列,指令队列包括:按指令队列的前后顺序待执行的多个运算指令。
[0133] 在一种可能的实现方式中,取输入数据和计算指令,还可以包括:
[0134] 在确定多个运算指令中的第一运算指令与第一运算指令之前的第零运算指令存在关联关系时,缓存第一运算指令,并在确定第零运算指令执行完毕后,控制进行第一运算
指令的执行,
[0135] 其中,多个运算指令中的第一运算指令与第一运算指令之前的第零运算指令存在关联关系,包括:
[0136] 存储第一运算指令所需数据的第一存储地址区间与存储第零运算指令所需数据的第零存储地址区间具有重叠的区域。
[0137] 需要说明的是,尽管以上述作为示例介绍了数据处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵
活设定步骤,只要符合本公开的技术方案即可。
[0138] 本公开实施例所提供的数据处理方法,对接收到的待处理数据进行切分,获得多个切分数据,为多个切分数据分别设置对应的索引字符,得到索引字符组。对索引字符组进
行洗牌处理,获得洗牌后的索引字符组。根据洗牌后的索引字符组对多个切分数据进行重
排,得到输入数据,并为输入数据添加标签。本公开实施例所提供的数据处理方法,能够自
动为待处理数据添加标签,得到带有标签的输入数据,提高了数据处理的效率。且通过装置
自动为数据添加标签的速度、效率、准确程度相比于人工标记会得到显著提高,添加标签所
耗费的时间也能够大幅度减少。
[0139] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为
依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知
悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开
所必须的。
[0140] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0141] 在本公开所提供的实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如模块的划分,仅仅为一种逻辑功
能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一
个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接
耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或
其它的形式。
[0142] 作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络
单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0143] 另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模
块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0144] 集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说
对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出
来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为
个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。
而前述的存储器包括:U盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,
Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0145] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器
可以包括:闪存盘、只读存储器(英文:Read‑Only Memory,简称:ROM)、随机存取器(英文:
Random Access Memory,简称:RAM)、磁盘或光盘等。
[0146] 以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;
同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会
有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。