用于处理数据的方法、装置以及相关产品与流程

文档序号:24123880发布日期:2021-03-02 12:35阅读:82来源:国知局
用于处理数据的方法、装置以及相关产品与流程

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


背景技术:

[0002]
随着计算机技术的发展,深度学习算法被越来越多的用于处理各种复杂的任务。利用深度学习算法来处理数据,在搜索技术、数据挖掘、机器学习、机器翻译、自然语言处理、多媒体学习、语音、推荐和个性化技术、以及其他相关领域都取得了很好的效果。
[0003]
随着网络层数越来越多,计算复杂度越来越高,提高设备的计算能力对深度学习的发展是十分重要。因此,人们通过各种方式来提高设备的运算能力。然而,在机器学习的过程中提高计算能力还存在许多需要解决的问题。


技术实现要素:

[0004]
有鉴于此,本公开提供一种能够用于处理数据的方法、装置以及相关产品。
[0005]
根据本公开的第一方面,提供了一种用于处理数据的方法。该方法包括获得用于机器学习模型的多个数据,数据以第一数据格式表示。该方法还包括基于多个数据的值,将多个数据分布在第一组区间中,第一组区间的数目是预先确定的。该方法还包括确定多个数据的第一平均值。该方法还包括将第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间,以用于确定按照相应映射单元的经映射的数据的第二平均值,其中映射单元包括从第一组区间的第一区间开始的预定数目的连续区间,其中映射单元的结束区间分布有多个数据中大于或位于结束区间的数据,第二组区间中区间的个数与第二数据格式有关,第二数据格式的精度低于第一数据格式。该方法还包括基于第一平均值和多个第二平均值,执行对多个数据的处理,以便经处理的多个数据以第二数据格式表示。
[0006]
根据本公开的第二方面,提供了一种用于处理数据的装置。该装置包括获取模块,被配置为获得用于机器学习模型的多个数据,所述数据以第一数据格式表示;分布模块,被配置为基于所述多个数据的值,将所述多个数据分布在第一组区间中,所述第一组区间的数目是预先确定的;第一平均值确定模块,被配置为确定所述多个数据的第一平均值;第一映射模块,被配置为将所述第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间,以用于确定按照相应映射单元的经映射的数据的第二平均值,其中所述映射单元包括从所述第一组区间的第一区间开始的预定数目的连续区间,其中所述映射单元的结束区间分布有所述多个数据中大于或位于结束区间的数据,第二组区间中区间的个数与第二数据格式有关,第二数据格式的精度低于所述第一数据格式;以及执行模块,被配置为基于所述第一平均值和所述多个第二平均值,执行对所述多个数据的处理,以便经处理的所述多个数据以所述第二数据格式表示。
[0007]
根据本公开的第三方面,提供了一种人工智能芯片。该人工智能芯片包括处理器;以及存储器,存储有计算机程序指令,所述处理器运行所述存储器中的所述计算机程序指
令以控制所述人工智能芯片执行根据第一方面所述的方法。
[0008]
根据本公开的第四方面,提供了一种电子设备。该电子设备根据本公开的第三方面所述的人工智能芯片。
[0009]
根据本公开的第五方面,提供了一种板卡。该板卡包括:存储器件、接口装置和控制器件以及根据本公开的第三方面所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0010]
通过权利要求中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
[0011]
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
[0012]
图1图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100的示意图;
[0013]
图2图示了根据本公开的实施例的用于处理数据的过程200的流程图;
[0014]
图3图示了根据本公开的实施例的用于处理数据的过程300的流程图;
[0015]
图4图示了根据本公开实施例的处理数据的装置400的结构框图。
[0016]
图5图示了根据本公开实施例的板卡500的结构框图。
[0017]
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
[0018]
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
[0019]
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0020]
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0021]
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释
为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0022]
随着神经网络算法的发展,神经网络中的网络的层数越来越多。这种发展趋势使得计算复杂度越来越高。此外,神经网络的这种发展趋势,使得计算设备的计算能力需要有较大的发展。在一些情况下,由于计算资源的限制,导致不能很好的利用有限的计算资源来处理神经网络算法。
[0023]
一般在计算设备中处理的数据为32位浮点型数据。当要处理的这种浮点型数据的量非常大时,需要计算设备提供很强的计算能力以及很大的存储空间来存储这些数据。此外,在传输过程中传输的数据量太大,也会影响机器学习模型处理的效率。
[0024]
为了解决至少一个存在的问题,本公开提出了一种用于处理数据的方法。通过将与神经网络有关的处理数据分布到预定数目的区间中,然后基于数据的平均值来选择最优的截断阈值。利用截断数据阈值来截数据,并将该数据从高精度格式量化为低精度格式的数据。例如将32位的浮点型数据转换为8位的整数型数据。通过本公开中的方法在减少数据处理量的同时,尽可能高地保证数据处理的准确性。此外,该方法还有助于显著减少数据传输量,由此极大地加速了多个计算设备的之间的数据交换。
[0025]
图1图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100的示意图。
[0026]
在示例环境100中包括与机器学习模型有关的多个数据102。多个数据102中的每个数据均具有相同的高的精度格式。数据102精度格式的高低仅是相对于转换后的多个数据104的精度而言的。图1中示出了多个数据102为例如32位浮点型数据。图1中多个数据102的数据位数为32位仅是用于示例,而非对公开的限制。数据102可以为任何合适的相对高的精度格式的数据,如64位的双精度数据或依据需要设置的任意适合精度的数据。
[0027]
在一些实施例中,机器学习模型为神经网络模型。神经网络模型包括,并不限于卷积神经网络模型,递归神经网络模型等。
[0028]
在一些实施例中,在一些实施例中,与机器学习模型有关的多个数据102可以为机器学习模型的权重值、输入神经元数据、输出神经元数据、和/或偏置值等。上述示例仅是用于描述本公开,而非对本公开的具体限定。与机器学习模型有关的多个数据102可以是机器学习模型中使用的或待处理的任何相关数据。
[0029]
与机器学习模型有关的多个数据102经过计算设备的处理来转换为低精度格式的多个数据104。如图1所示,将多个数据102从32位高精度格式的浮点型数据转换为多个低精度格式的8位整型数据104。多个数据104中的每个数据使用8位来表示。因此,多个数据104可以表示-128-127之间的范围。需要理解,多个数据104的低精度格式仅是相对于转换前的数据102的精度格式而言的。图1中示出的多个数据104中的每个数据使用8个数据位来表示仅是示例,而非对本公开的具体限定。因此,多个数据104的精度格式可以为低于多个数据102的精度格式的任意合适的数据类型。
[0030]
用于将高精度格式的数据转换为低精度格式的计算设备包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理(pda)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括上述系统或设备
中的任意一个的分布式计算环境等。
[0031]
在计算设备将多个数据102转换为多个数据104的过程中。首先确定多个数据102中的数据的绝对值的最大值。然后将从0到最大值的整个范围划分为预定数目n的一组区间。多个数据102按其绝对值的大小分布到该一组区间中。该预定数目n可以为任意合适的数值。优先地,该预定数目n大于低精度格式的数据的最大值。例如,用8个位表示一个整数时,8个比特表示的最大值是127。因此,预定数目n可以为大于127的值,如256,528,1024,2048。
[0032]
计算设备确定出在进行区间转换前的多个数据的第一平均值。计算设备还将一组区间中前j个区间形成一个映射单元,其中j为大于0的正整数,j从小于n的数值m开始一直变化到n,则可以形成n-m+1个映射单元。优先地m=低精度格式的数据表示的最大值+1。在前述数据102的示例中,例如m=127+1=128。
[0033]
计算设备可以将n-m+1个映射单元分别映射到基于低精度格式的数据的位数而划分的第二数目的第二组区间以用于确定按照相应映射单元的经映射的数据的第二平均值。针对每个映射单元,计算设备可以得到映射到第二区间后数据的第二平均值。针对每个映射单元,计算设备可以确定第一平均值和第二平均值之间的差值。在一个示例中,确定出差值最小的映射单元,即确定j的大小。根据j的大小可以确定出截断阈值。然后对数据进行截断处理,即将多个数据中大于截断阈值的数据修改为截断阈值。然后利用截断值确定缩放值。对经截断处理的多个数据,利用该缩放值进行缩放处理,将数据转换为具有第二数据格式的多个数据104。
[0034]
在将多个数据102转换为多个数据104后,可以将多个数据104提供给机器学习模型以用于由机器学习模型处理106。
[0035]
上面图1图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100的示意图,下面结合图2描述根据本公开的实施例的用于处理数据的过程200,其中图2图示了根据本公开的实施例的用于处理数据的过程200的流程图。
[0036]
如图2所示,在框202处,计算设备获得用于机器学习模型的多个数据,多个数据以第一数据格式表示。如图1所示,计算设备获得的多个数据102,多个数据102中的每个数据均为32位浮点型格式。图1中的多个数据102中的每个数据为32位浮点型格式仅是示例,而非对本公开的具体限定。
[0037]
在一些实施例中,用于机器学习模型的多个数据为机器学习模型中的权重值、输入神经元数据、输出神经元数据、和/或偏置值等。。上述示例仅是用于描述本公开,而非对本公开的具体限定。用于机器学习模型的多个数据可以是机器学习模型中使用的任何相关数据。
[0038]
在框204处,计算设备基于多个数据的值,将多个数据分布在第一组区间中,第一组区间的数目是预先确定的。为了量化数据,一般会将数据分布到预先确定的预定数目的区间中。在一些实施例中,数据区间的数目n可以设置为任意合适的数目。例如,256,1024或2048。备选地或附加地,数据区间的数目n可以选择大于转换后的数据类型所表示的最大整数。如当要转换成的数据为8位的整数时,该8位整数表示的最大整数为127,因此,可以选择大于127的数目作为区间数。例如,数据区间的数目n可以为256,512,1024或2048。
[0039]
在确定好要划分的区间数目n之后,确定多个数据中的绝对值最大的数据,然后将
0和该绝对值最大值之间的整个数据区间划分为包括n个区间的第一组区间。
[0040]
在框206处,计算设备确定多个数据的第一平均值。为了恒量转换的准确度,本公开通过转换前数据的平均值和转换后的数据的平均值之间的差来恒量转换的准确度。因此,需要计算转换前的多个数据的平均值。
[0041]
在一些实施例中,计算设备在计算接收到的多个数据的平均值时,计算设备先确定多个数据的绝对值和多个数据的数目。然后,计算设备基于多个数据中数据的绝对值和数目确定平均值。例如,对所有数据的绝对值求和,然后除以绝对值的数目来确定要处理的数据的第一平均值。
[0042]
在一些实施例中,计算设备在计算接收到的多个数据的第一平均值时,计算设备确定第一组区间中的每个区间的中间值和每个区间具有的数据的数目。为了便于计算,采用每个区间的中间值作为该区间内的数据的平均值。然后,计算设备基于每个区间的中间值和该区间中具有的数据的数目来确定平均值。更具体地为,计算设备将每个区间的中间值乘以每个区间中数据的数目后加和,然后再除以总的数据数目来确定数据的第一平均值。
[0043]
在一些实施例中,在确定多个数据的第一平均值时,第一平均值是与对应的映射单元相关联的。计算设备首先确定位于映射单元的每个区间中的数据的数目和每个区间的中间值,其中一个映射单元对应于第一组区间中从第一区间开始的前面j个区间,将j个区间中的最后一间区间作为结束区间。然后将第一组区间中位于结束区间后面的区间中的数据都放置在结束区间内。即映射单元的结束区间内数据的数目此时为第一组区间中的与结束区间对应的区间及该区间后面的所有区间内的数据的数目之和。然后,计算设备基于每个区间中数据的数目和每个区间的中间值来确定第一平均值。
[0044]
在框208处,计算设备将第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间,以用于确定按照相应映射单元的经映射的数据的第二平均值,其中映射单元包括从第一组区间的第一区间开始的预定数目的连续区间,其中映射单元的结束区间分布有多个数据中大于或位于结束区间的数据,第二组区间中区间的个数与第二数据格式有关,第二数据格式的精度低于第一数据格式。
[0045]
在将多个数据划分到第一组区间之后,从第一组区间中选取前j个区间作为映射单元,j的取值从小于n的值m到第一组区间中区间的总数目n。因此,存在n-m+1个映射单元。优先地m的取值大于低精度格式的数据表示的最大值。在一个示例中,低精度格式的数据为8位时,其表示的最大值为127,则m取128。
[0046]
计算设备然后将n-m+1个映射单元分别映射到低精度格式的数据能表示的第二数目的第二组区间。在一个示例中,如果图1中的多个数据104的格式为8位整数,则可以将每个映射单元中的区间映射到第二组区间的128个区间。因此,将映射单元中的j/128个区间映射到第二组区间中的一个区间。
[0047]
然后针对每个映射单元,计算设备均可以得到映射到第二区间后数据的第二平均值。映射到第二区间后,针对每个映射单元,映射后的平均值由第二组区间中的区间的中间值及位于区间的数目来确定。例如,将第二区间中每个区间的中间值乘以每个区间中的数据的个数,然后除于总的数据个数得到第二平均值。
[0048]
在框210处,计算设备基于第一平均值和多个第二平均值,执行对多个数据的处
理,以便经处理的多个数据以第二数据格式表示。对多个数据进行处理的过程将在下面结合图3进行详细描述。
[0049]
通过上述方法,可以将高精度格式的数据转换为低精度格式的数据进行处理。由于用于表示数据的位数变少了,可以减少用于处理数据的计算资源,同时由于从多个映射单元中选取与转换前的数据的平均值差别最小的映射单元,可以尽可能的保留处理结果的准确性。
[0050]
上面图2描述了根据本公开的实施例的用于处理数据的过程200的流程图。下面结合图3描述图2中在框210处的用于处理数据的过程,其中图3图示了根据本公开的实施例的用于处理数据的过程300的流程图。
[0051]
在框302处,计算设备基于第一平均值和多个第二平均值确定多个映射单元有关的多个差值。计算设备在获得了接收的多个数据的第一平均值和与每个映射单元相对应第二平均值后,将确定第一平均值与每个第二平均值的差值。因此,计算设备可以得到与多个映射相对应的多个差值。
[0052]
在一个示例中,将从0到多个数据的绝对值最大值之间的整个区间划分为2048个区间。将多个数据从第一精度格式变化为8位整型数时,j从128变化到2047来从2048区间中选择前j+1个区间作为映射单元。如上面描述的,可以获得多个数据的第一平均值mean1,对于每个j值,其对应于一个映射单元,将在映射单元后面的区间中的数据都放入映射单元的j+1个区间中的最后一个区间中。然后将j+1个区间映射到128个第二区间,然后确定128个第二区间中每个区间的中间值和位于第二区间中的每个区间中数据的个数。然后将j+1个区间中的每个区间的中间值与区间中数据个数的乘积相加,然后再除以总的数据个数来确定第二平均值mean2。针对每个映射单元,区间截断处理后的平均值差值为mean1-mean2。
[0053]
在框304处,基于多个差值,确定用于多个数据的截断阈值。计算设备基于多个差值确定与多个差值中最小的差值相对应的映射单元。在一个示例中,计算设备在获得多个差值后,会将多个差值中的每个差值分别除以与其对应的第一平均值以得到多个差值率。差值率最小的映射单元作为选定的映射单元。在一个示例中,计算设备在获得多个差值后,会将与多个差值中最小差值对应的映射单元作为选定的映射单元。
[0054]
在基于多个差值确定映射单元之后,即确定j的大小。然后通过j的大小便可以确定截断阈值。在一个示例中,截断阈值threshold可通过下式(1)确定:
[0055][0056]
其中best_j为与确定的最小差值或差值率相对应的映射单元的区间数,n表示划分的第一组区间中的区间数,其中absmax表示多个数据中的绝对值最大值。
[0057]
在框306处,计算设备基于截断阈值对所获得的多个数据进行截断。计算设备在获得截断阈值后,将多个数据中大于截断阈值的值调整为截断阈值。
[0058]
在框308处,计算设备基于截断阈值,确定与映射单元有关的缩放值。在一个示例中,计算设备在选择出与阈值差值对应的映射单元后,会基于与该映射单元相对应的区间数目来确定针对接收的多个数据的截断阈值。然后,通过下式(2)来利用截断阈值threshold来确定缩放值scale。
[0059]
scale=threshold/(2
n-1-1)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(2),
[0060]
其中n表示第二数据格式的数据的位数。
[0061]
在一个示例中,在转换为的数据为8位整数时,scale=threshold/127。上述示例仅是用于说明本公开,而非对本公开具体限定。
[0062]
可选地,在框310处,计算设备基于缩放值对经截断的多个数据进行缩放处理,然后得到第二数据格式的多个数据。在一些实施例中,对多个数据的缩放处理也可以在其他计算设备上进行。
[0063]
通过上述方法,可以在将数据从第一数据格式转换为第二数据格式时,找出最优的截断阈值,实现数据格式转换前后的数据之间的误差最小。
[0064]
在一个实施例中,获得用于机器学习模型的以第一数据格式表示的多个数据,例如为32位浮点数格式。为了便于减少数据的数据量,将多个数据转化为以第二数据格式表示,例如8位整型数据。从该多个数据中找出绝对值最大值absmax。然后将从0到绝取值最大值之间的间隔划分为2048个区间。在进行转换前,先将该多个数据依据绝对值的大小分布到2048个数据区间中。
[0065]
然后统计多个数据分布在2048个区间中的每个区间的个数。例如bin[i]表示多个数据中绝对值落在i/2048absmax~(i+1)/2048absmax之间的个数,即落在第i+1个区间中的个数,其中bin[0]表示多个数据中绝对值落在第1个区间0~1/2048absmax之间的个数。
[0066]
此时,可以确定多个数据的第一平均值。在一个示例中,多个数据的第一平均值mean1由多个数据的绝对值相加除以多个数据的个数来确定。在一个示例中,多个数据的第一平均值mean1可以通过将每个区间的中间值与每个区间中数据个数相乘,然后将针对所有区间的乘积相加,再除以数据个数即可确定第一平均值。在一些示例中,第一平均值mean1可以在后面确定每个映射单元时确定。
[0067]
设j为与映射单元相对应的区间的个数,在第二数据格式为8位整型的情况下,j从128变化到2047,j取128至2047中的每个值,其对应于一个映射单元。
[0068]
针对与每个j值,在bin_before[0]=bin[0],bin_before[1]=bin[1],

,bin_before[j-2]=bin[j-2],即前j-1区间的中数据的个数保持不变。而即第j个区间中分布的数据的个数为原先分布在区间j以及区间j之后的数据的数目之和。
[0069]
此时,在对数据区间进行截断处理之后,也可以将区间截断后的数据的平均值作为第一平均值。将区间截断后针对每个区间用中间值乘以区间中的数据的个数,然后将每个区间的乘积相加来除以总的数据个数来确定针对每个映射单元的第一平均值mean1。
[0070]
对于每个j值,即对应于每个映射单元,将bin_before[0],bin_before[1],

,bin_before[j-1]压缩到bin_next[0],bin_next[1],

,bin_next[127]。即将第j/128个bin_before对应于一个bin_next。然后计算调整后的多个区间的平均值,即通过每个区间的中间值乘以每个区间中数据的个数,将所有的区间的乘积之和除以总的数据个数,得到与该映射单元相对应的第二组区间的平均值mean2。然后可以确定第一平均值和第二平均值的差mean1-mean2。
[0071]
通过下式(3)来计算第一平均值mean1和第二平均值mean2的差值比率:
[0072]
diff_mean = abs(mean1

mean2)/mean1
ꢀꢀ
(3),
[0073]
其中abs(mean1-mean2)表示(mean1-mean2)的绝对值。
[0074]
使j从128变化到2047,对于每个j值具有对应的diff_mean,从所有的j值中选出最小的diff_mean对应的j值。在确定j值之后,可以通过上面的公式(1)确定截断阈值。然后对多个数据进行截断处理。在截断处理完成后,通过上面的公式(2)完成对多个数据的量化。
[0075]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0076]
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0077]
图4示出了用于处理数据的装置400,包括获取模块402,被配置为获得用于机器学习模型的多个数据,所述数据以第一数据格式表示;分布模块404,被配置为基于所述多个数据的值,将所述多个数据分布在第一组区间中,所述第一组区间的数目是预先确定的;第一平均值确定模块406,被配置为确定所述多个数据的第一平均值;第一映射模块408,被配置为将所述第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间,以用于确定按照相应映射单元的经映射的数据的第二平均值,其中所述映射单元包括从所述第一组区间的第一区间开始的预定数目的连续区间,其中所述映射单元的结束区间分布有所述多个数据中大于或位于结束区间的数据,第二组区间中区间的个数与第二数据格式有关,第二数据格式的精度低于所述第一数据格式;以及执行模块410,被配置为基于所述第一平均值和所述多个第二平均值,执行对所述多个数据的处理,以便经处理的所述多个数据以所述第二数据格式表示。
[0078]
在一些实施例中,第一映射模块408包括:重新分布模块,被配置为将所述多个数据中大于所述映射单元的结束区间的数据重新分布到所述映射单元的结束区间;以及第二映射模块,被配置为将所述多个映射单元分别映射到第二组区间以用于确定按照相应映射单元的经映射的数据的第二平均值。
[0079]
在一些实施例中,所述执行模块410包括:差值确定模块,被配置为基于所述第一平均值和多个所述第二平均值确定多个所述映射单元有关的多个差值;截断阈值确定模块,被配置为基于所述多个差值,确定用于所述多个数据的截断阈值;截断模块,被配置为基于所述截断阈值对所获得的所述多个数据进行截断;以及缩放值确定模块,被配置为基于所述截断阈值,确定与所述映射单元有关的缩放值。
[0080]
在一些实施例中,所述执行模块410还包括:缩放模块,被配置为基于所述缩放值对经截断的所述多个数据进行缩放。
[0081]
在一些实施例中,该装置还包括:区间确定模块,被配置为基于所述数据的绝对值
最大值确定与所述多个数据有关的第一组区间。
[0082]
在一些实施例中,所述第一平均值确定模块406包括:绝对值和数目确定模块,被配置为确定所述多个数据中数据的绝对值和所述多个数据的数目;以及第二平均值确定模块,被配置为基于所述多个数据中数据的绝对值和所述数目确定所述平均值。
[0083]
在一些实施例中,所述第一平均值确定模块406包括:第一中间值和数目确定模块,被配置为确定所述第一组区间中的每个区间的中间值和每个区间具有的数据的数目;以及第三平均值确定模块,被配置为基于所述中间值和所述数目来确定所述平均值。
[0084]
在一些实施例中,所述第一平均值确定模块406包括:第二中间值和数目确定模块,被配置为确定位于所述映射单元的每个区间中的数据的数目和每个区间的中间值;以及第四平均值确定模块,被配置为基于所述数目和所述中间值确定所述第一平均值。
[0085]
在一些实施例中,其中第二组区间中区间的个数是基于与所述第二数据格式有关的位数确定的。
[0086]
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0087]
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0088]
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如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)等等。
[0089]
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0090]
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。
[0091]
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制
器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0092]
图5示出根据本公开实施例的板卡500的结构框图,参阅图5,上述板卡除了包括上述芯片506-1-506-n(其中,n为正整数,为了便于描述可以统称为芯片506)以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件502、接口装置507和控制器件504;
[0093]
所述存储器件502与所述人工智能芯片通过总线505连接,用于存储数据。所述存储器件可以包括多组存储单元503-1,

,503-n,n为正整数,为了便于描述可以统称为存储单元503。每一组所述存储单元503与所述人工智能芯片506通过总线505连接。可以理解,每一组所述存储单元503可以是ddr sdram(英文:double data rate sdram,双倍速率同步动态随机存储器)。
[0094]
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。
[0095]
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0096]
所述接口装置507与所述人工智能芯片506电连接。所述接口装置507用于实现所述人工智能芯片与外部设备501(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置507可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie 3.0x 16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置507还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片506的计算结果仍由所述接口装置507传送回外部设备501(例如服务器)。
[0097]
所述控制器件504与所述人工智能芯片506电连接。所述控制器件504用于对所述人工智能芯片506的状态进行监控。具体的,所述人工智能芯片506与所述控制器件504可以通过spi接口电连接。所述控制器件可以包括单片机(micro controller unit,mcu)。如所述人工智能芯片506可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片506可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0098]
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0099]
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
[0100]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0101]
依据以下条款可更好地理解前述内容:
[0102]
条款a1,一种用于处理数据的方法,包括:获得用于机器学习模型的多个数据,所述数据以第一数据格式表示;基于所述多个数据的值,将所述多个数据分布在第一组区间中,所述第一组区间的数目是预先确定的;确定所述多个数据的第一平均值;将所述第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间,以用于确定按照相应映射单元的经映射的数据的第二平均值,其中所述映射单元包括从所述第一组区间的第一区间开始的预定数目的连续区间,其中所述映射单元的结束区间分布有所述多个数据中大于或位于结束区间的数据,第二组区间中区间的个数与第二数据格式有关,第二数据格式的精度低于所述第一数据格式;以及基于所述第一平均值和所述多个第二平均值,执行对所述多个数据的处理,以便经处理的所述多个数据以所述第二数据格式表示。
[0103]
条款a2,根据条款a1所述的方法,其中将所述第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间包括:将所述多个数据中大于所述映射单元的结束区间的数据重新分布到所述映射单元的结束区间;以及将所述多个映射单元分别映射到第二组区间以用于确定按照相应映射单元的经映射的数据的第二平均值。
[0104]
条款a3,根据条款a1所述的方法,其中执行对所述多个数据的处理包括:基于所述第一平均值和多个所述第二平均值确定多个所述映射单元有关的多个差值;基于所述多个差值,确定用于所述多个数据的截断阈值;基于所述截断阈值对所获得的所述多个数据进行截断;以及基于所述截断阈值,确定与所述映射单元有关的缩放值。
[0105]
条款a4,根据条款a1所述的方法,其中执行对所述多个数据的处理还包括:基于所述缩放值对经截断的所述多个数据进行缩放。
[0106]
条款a5,根据条款a1所述的方法,还包括:基于所述数据的绝对值最大值确定与所述多个数据有关的第一组区间。
[0107]
条款a6,根据条款a1所述的方法,其中确定所述多个数据的第一平均值包括:确定所述多个数据中数据的绝对值和所述多个数据的数目;以及基于所述多个数据中数据的绝对值和所述数目确定所述平均值。
[0108]
条款a7,根据条款a1的所述的方法,其中确定所述多个数据的第一平均值包括:确定所述第一组区间中的每个区间的中间值和每个区间具有的数据的数目;以及基于所述中间值和所述数目来确定所述平均值。
[0109]
条款a8,根据条款a1所述的方法,其中确定所述多个数据的第一平均值包括:确定位于所述映射单元的每个区间中的数据的数目和每个区间的中间值;以及基于所述数目和所述中间值确定所述第一平均值。
[0110]
条款a9,根据条款a1所述的方法,其中第二组区间中区间的个数是基于与所述第
二数据格式有关的位数确定的。
[0111]
条款a10,一种用于处理数据的装置,包括:获取模块,被配置为获得用于机器学习模型的多个数据,所述数据以第一数据格式表示;分布模块,被配置为基于所述多个数据的值,将所述多个数据分布在第一组区间中,所述第一组区间的数目是预先确定的;第一平均值确定模块,被配置为确定所述多个数据的第一平均值;第一映射模块,被配置为将所述第一组区间中分布的数据按照多个不同的映射单元映射到第二组区间,以用于确定按照相应映射单元的经映射的数据的第二平均值,其中所述映射单元包括从所述第一组区间的第一区间开始的预定数目的连续区间,其中所述映射单元的结束区间分布有所述多个数据中大于或位于结束区间的数据,第二组区间中区间的个数与第二数据格式有关,第二数据格式的精度低于所述第一数据格式;以及执行模块,被配置为基于所述第一平均值和所述多个第二平均值,执行对所述多个数据的处理,以便经处理的所述多个数据以所述第二数据格式表示。
[0112]
条款a11,根据条款a10所述的装置,其中将所述第一映射模块包括:重新分布模块,被配置为将所述多个数据中大于所述映射单元的结束区间的数据重新分布到所述映射单元的结束区间;以及第二映射模块,被配置为将所述多个映射单元分别映射到第二组区间以用于确定按照相应映射单元的经映射的数据的第二平均值。
[0113]
条款a12,根据条款a10所述的装置,其中所述执行模块包括:差值确定模块,被配置为基于所述第一平均值和多个所述第二平均值确定多个所述映射单元有关的多个差值;截断阈值确定模块,被配置为基于所述多个差值,确定用于所述多个数据的截断阈值;截断模块,被配置为基于所述截断阈值对所获得的所述多个数据进行截断;以及缩放值确定模块,被配置为基于所述截断阈值,确定与所述映射单元有关的缩放值。
[0114]
条款a13,根据条款a12所述的装置,其中所述执行模块还包括:缩放模块,被配置为基于所述缩放值对经截断的所述多个数据进行缩放。
[0115]
条款a14,根据条款a10所述的装置,还包括:区间确定模块,被配置为基于所述数据的绝对值最大值确定与所述多个数据有关的第一组区间。
[0116]
条款a15,根据条款a10所述的装置,其中所述第一平均值确定模块包括:绝对值和数目确定模块,被配置为确定所述多个数据中数据的绝对值和所述多个数据的数目;以及第二平均值确定模块,被配置为基于所述多个数据中数据的绝对值和所述数目确定所述平均值。
[0117]
条款a16,根据条款a10的所述的装置,其中所述第一平均值确定模块包括:第一中间值和数目确定模块,被配置为确定所述第一组区间中的每个区间的中间值和每个区间具有的数据的数目;以及第三平均值确定模块,被配置为基于所述中间值和所述数目来确定所述平均值。
[0118]
条款a17,根据条款a10所述的装置,其中所述第一平均值确定装置包括:第二中间值和数目确定模块,被配置为确定位于所述映射单元的每个区间中的数据的数目和每个区间的中间值;以及第四平均值确定模块,被配置为基于所述数目和所述中间值确定所述第一平均值。
[0119]
条款a18,根据条款a10所述的装置,其中第二组区间中区间的个数是基于与所述第二数据格式有关的位数确定的。
[0120]
条款a19,一种人工智能芯片,包括处理器;以及存储器,存储有计算机程序指令,所述处理器运行所述存储器中的所述计算机程序指令以控制所述人工智能芯片执行根据条款a1-a9中任意一项所述的方法。
[0121]
条款a20,一种电子设备,其特征在于,所述电子设备包括如条款a19所述的人工智能芯片。
[0122]
条款a21,一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如条款a19所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0123]
条款a22,根据条款a21所述的板卡,其特征在于,所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:ddr sdram;所述芯片包括:ddr控制器,用于对每个所述存储单元的数据传输与数据存储的控制;所述接口装置为:标准pcie接口。
[0124]
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1