首页> 中国专利> 算术处理装置、算术处理方法及算术处理程序

算术处理装置、算术处理方法及算术处理程序

摘要

本发明提供了算术处理装置、算术处理方法及算术处理程序。算术处理装置包括运算单元、管理器、小数点位置确定器和索引值转换控制器。运算单元被配置成执行预定运算。管理器被配置成:通过使运算单元使用输入数据作为在第一小数点位置处具有第一小数点的第一定点数执行预定运算来计算第一运算结果的统计信息。小数点位置确定器被配置成:使用统计信息来确定第二小数点位置。索引值转换控制器被配置成:当使用输入数据作为在第二小数点位置处具有第二小数点的第二定点数来执行预定运算时,使运算单元计算第二运算结果。

著录项

  • 公开/公告号CN113220344A

    专利类型发明专利

  • 公开/公告日2021-08-06

    原文格式PDF

  • 申请/专利权人 富士通株式会社;

    申请/专利号CN202110042933.7

  • 发明设计人 葛毅;依田胜洋;伊藤真纪子;

    申请日2021-01-13

  • 分类号G06F9/30(20060101);G06F7/544(20060101);G06N3/04(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人唐京桥;杨林森

  • 地址 日本神奈川县

  • 入库时间 2023-06-19 12:07:15

说明书

技术领域

本文中讨论的实施方式涉及算术处理装置、算术处理方法和算术处理程序。

背景技术

最近,对深度学习的需求正在增长。在深度学习中,执行包括乘法、乘积和运算(product-sum operation)以及向量乘法的各种运算。在深度学习中,对单个运算的精确度的要求不像其他计算机处理那么严格。例如,对于现有的信号处理等,程序员开发计算机程序,同时尽可能地避免数字溢出。另一方面,在深度学习中,大的值被认为在一定程度上是饱和的。这是由于以下事实:在深度学习中,调节对多个输入数据项执行卷积运算时要使用的系数(权重)是主处理,并且在许多情况下,在输入数据项之中并且与其他输入数据项有很大不同的输入数据项不被视为重要数据项。这是由于以下事实:因为重复使用大量数据来调节系数,因此基于学习的进展来调节饱和了一次的值的数字,使得该值不饱和并被反映在系数的调节中。

考虑到深度学习的这样的特性,为了减小用于深度学习的算术处理装置的芯片的面积并提高功率性能等,考虑使用定点数而不使用浮点数来执行运算。这是由于以下事实:用于使用定点数执行运算的电路配置比用于使用浮点数执行运算的电路配置更简单。

近年来,已经积极开发了用于深度学习的专用加速器。优选的是,针对要在专用加速器中执行的运算,使用要采用定点数执行的运算以提高面积效率。例如,已经开发了如下硬件:将运算位的数目例如32位浮点数减少为8位定点数,以提高单位面积的运算性能。通过将32位浮点数减少为8位定点数,可以简单地获得如下单位面积的性能,该性能是使用32位浮点数时的性能的4倍。使用少量的位来表示足够精确的实际数字的处理称为量化。

然而,由于定点数的动态范围较小,因此在某些情况下,使用定点数执行运算的精确度低于使用浮点数执行运算的精确度。因此,即使在深度学习中,也要求考虑表示小的值的精确度,例如有效数字的数目。存在一种用于使用运算结果的位的位置的统计信息来确定定点数的有效数字的数目并优化小数点位置的技术。

在现有技术中,使用先前迭代的统计信息来确定下一迭代的小数点位置,并且使用所确定的小数点位置来执行下一迭代的运算。迭代(iteration)也被称为小批量(小批量)。

作为使用统计信息来确定定点数的小数点位置的技术,存在用于使用指示从最低有效位的位置到最高有效位的位置的范围的信息以及指示从符号位的位置到最低有效位的位置的范围的信息来确定小数点位置的现有技术。作为用于执行定点运算的技术,存在用于对基于指示特定小数点位置的数据而输出的运算结果执行舍入处理和饱和处理并执行定点运算的现有技术。

[引用列表]

[专利文献]

[专利文献1]日本公开特许公报第2018-124681号

[专利文献2]日本公开特许公报第2019-74951号

[专利文献3]日本公开特许公报第2009-271598号

发明内容

[技术问题]

然而,在最近的深度学习框架例如pyTorch或chainer中引入被称为“按运行定义(Define-by-Run)”的处理方案的情况的数量已经增加。在下文中,“按运行定义”被缩写为DbR。在DbR中,在执行深度学些过程的同时,构建用作神经网络的结构的计算图。在DbR中,在最早的情况下,计算图(computational graph)针对学习的迭代中的每个迭代而改变。因此,难以存储过去估计的小数点位置。计算图的改变指示:当经由特定层进行运算时存在多个计算图,并且难以识别在特定迭代中要用于该特定层的任何计算图。在现有深度学习中执行的并且不是DbR的算术处理被称为“定义并运行(Define-and-Run)”,并且在学习开始时识别计算图。

当使用DbR执行深度学习时,即使使用了关于先前迭代的统计信息,在一些情况下,先前迭代也不存在;或者在一些情况下,关于先前迭代的统计信息是关于在当前迭代之前通过许多迭代的迭代的信息。因此,当使用DbR执行深度学习并且使用过去的统计信息时,学习可能会失败并且难以使用过去的统计信息来确定小数点位置。

即使在用于使用指示从最低有效位的位置到最高有效位的位置的范围的信息以及指示从符号位的位置到最低有效位的位置的范围的信息来确定小数点位置的技术中,也使用过去的统计信息。因此,难以将该技术应用于使用DbR的深度学习。在用于对基于指示特定小数点位置的数据而输出的运算结果执行舍入处理和饱和处理的现有技术中,没有考虑如何确定小数点位置,并且难以执行使用DbR的深度学习。

在前述情况下发明了本文中公开的技术。本文中公开的技术旨在提供当使用“按运行定义”执行深度学习时提高使用固定的小数点的学习的准确性的算术处理装置、用于控制算术处理装置的方法以及算术处理程序。

[问题的解决方案]

在本申请中公开的算术处理单元、算术处理单元的控制方法和算术处理程序的一个方面中,运算部执行预定运算。此外,管理器使运算部使用输入数据作为在第一小数点位置处具有小数点的定点数来执行预定运算,并且计算第一运算结果的统计信息。此外,小数点位置确定器使用统计信息来确定第二小数点位置。此外,当使用输入数据作为由小数点位置确定器确定的在第二小数点位置处具有小数点的定点数来执行预定运算时,索引值转换控制器使运算部计算第二运算结果。

[发明的效果]

根据一个方面,当使用“按运行定义”来执行深度学习时,本发明可以提高使用固定小数点的学习的准确性。

附图说明

图1是示出服务器的概要的配置图;

图2是神经网络中的深度学习的示例的图;

图3是运算电路的框图;

图4是示出控制器的细节的框图;

图5是描述根据实施方式1的更新小数点位置的整个处理的图;

图6是示出根据实施方式1的由运算电路进行的包括对小数点位置进行更新的运算处理的概要的图;

图7是根据实施方式1的由运算电路进行的深度学习过程的流程图;

图8是描述根据实施方式2的更新小数点位置的整个处理的图;

图9是描述N%运算数据的选择的图;

图10是示出基于选择的识别率选择的运算数据项的比率的图;

图11是描述根据实施方式3的更新小数点位置的整个处理的图;

图12是根据实施方式3的由运算电路进行的深度学习过程的流程图;

图13是描述根据实施方式4的更新小数点位置的整个处理的图;

图14是示出根据实施方式4的由运算电路进行的包括对小数点位置进行更新的运算处理的概要的图;

图15是根据实施方式1至4的用于执行运算处理的时间段的图;

图16是示出深度学习中的层的示例的图;

图17是示出选择用于更新小数点位置的方法的结果的图;

图18是根据实施方式5的更新小数点位置的过程的选择的流程图;

图19是示出选择用于更新小数点位置的方法的定时的图;

图20是示出包括计算电路的服务器的配置的示例的图;

图21是描述根据实施方式6的运算规程的图;

图22A是根据实施方式6的由服务器进行的深度学习中的运算处理的流程图;

图22B是根据实施方式6的由服务器进行的深度学习中的运算处理的流程图;

图23是描述根据实施方式7的运算规程的图;

图24是描述根据实施方式8的运算规程的图;

图25A是根据实施方式8的由服务器进行的深度学习中的运算处理的流程图;

图25B是根据实施方式8的由服务器进行的深度学习中的运算处理的流程图;以及

图26是描述根据实施方式9的运算规程的图。

具体实施方式

在下文中,基于附图详细描述本文公开的算术处理装置、本文公开的用于控制该算术处理装置的方法以及本文公开的算术处理程序的实施方式。本文公开的算术处理装置、本文公开的用于控制算术处理装置的方法以及本文公开的算术处理程序不受以下实施方式的限制。

[实施方式1]

图1是示出服务器的概要的配置图。服务器1执行深度学习。服务器1包括中央处理单元(CPU)2、存储器3和运算电路4。CPU 2、存储器3和运算电路4经由外围部件互连高速(PCIe)总线5彼此耦接。

CPU 2执行存储在存储器3中的程序,并实现作为服务器1的各种功能。例如,CPU 2经由PCIe总线5发送控制信号并激活包括在运算电路4中的控制核。CPU 2向运算电路4输出要用于运算的数据和要执行运算的指令,并且使运算电路4执行运算。

运算电路4是执行深度学习中的每个层的运算的电路。参照图2来描述神经网络中的深度学习的示例。图2是示出神经网络中的深度学习的示例的图。例如,神经网络在向前方向上执行用于识别和标识图像的处理,并且在向后方向上执行用于确定在向前方向上的处理要使用的参数的处理。朝向图2的纸张的右侧的方向由图2的上部中示出的箭头指示并且是向前方向,而朝向纸张的左侧的方向是向后方向。

图2所示的神经网络对输入图像执行卷积层处理和池化层处理,提取图像的特征并识别图像。图2的纸张的中央部分所示的处理指示向前方向的处理。

在图2中,在向前方向的处理中,特征提取器对输入图像执行卷积层处理和池化层处理,并生成特征图(characteristic map)。此后,识别部对特征图执行完全连接,并从输出层输出识别结果。卷积层处理也被称为卷积运算。池化层处理也被称为池化运算。将识别结果与正确数据进行比较,并且获得作为比较结果的差异值。接下来,作为向后方向的处理,执行学习处理以根据差异值计算卷积层和完全连接层中的每一个中的在向前方向上的误差,并针对每个层计算下一权重。

深度学习被划分为处理单元并被执行。处理单元被称为小批量。小批量是通过将要进行学习的输入数据集划分为预定数目的组而获得的多个数据项的组合。在图2中,N个图像形成一个小批量。对每个小批量在向前方向和向后方向上的一系列处理的单元被称为迭代。

运算电路4在深度学习中执行预定数目的小批量中的每个小批量中的各层的运算,获取并累积各层的变量的统计信息,并自动调节用于深度学习的变量的固定的小数点位置。接下来,详细描述运算电路4。

图3是运算电路的框图。如图3所示,运算电路4包括处理器40、指令随机存取存储器(RAM)41和数据RAM 42。

处理器40包括控制器10、寄存器文件11、运算部12、统计信息聚合器13、存储器接口14和存储器接口15。存储器接口14将处理器40耦接至指令RAM 41。存储器接口15将处理器40耦接至数据RAM 42。在下面的描述中,从由处理器40的各部分中的每一个访问指令RAM41或数据RAM 42的描述中,省略了对处理器40的各部分与RAM 41和42之间的存储器接口14和15的描述。

指令RAM 41是用于存储从CPU 2发送的指令的存储装置。存储在指令RAM 41中的指令由控制器10取出并执行。数据RAM 42是用于存储要用于执行指令所指定的运算的数据的存储装置。数据RAM 42中存储的数据用于由运算部12执行的运算。

寄存器文件11包括标量寄存器文件111、向量寄存器文件112、累加器寄存器113、向量累加器寄存器114和统计信息存储部115。

标量寄存器文件111和向量寄存器文件112存储要用于运算的数据。数据是输入数据、学习处理的执行期间的数据等。当运算部12执行诸如累加的运算时,累加器寄存器113和向量累加器寄存器114临时存储数据。

统计信息存储部115获取并存储由统计信息聚合器13聚合的统计信息。统计信息是关于运算结果的小数点位置的信息。例如,统计信息是无符号的最高有效位位置的分布、非零的最低有效位位置的分布以及包括无符号的最高有效位位置中的最大值、非零的最低有效位位置中的最小值等的多个信息项中的任何一个或其组合。

接下来,描述运算部12。运算部12包括标量单元121和向量单元122。

标量单元121耦接至控制器10、寄存器文件11和存储器接口15。标量单元121包括运算器211、统计信息获取器212和数据转换器213。在本实施方式中,标量单元121执行两个运算,这两个运算是获取统计信息的在前运算(preceding operation)以及使用基于在前运算的统计信息确定的小数点位置来执行计算以获得运算结果的主运算(mainoperation)。

运算器211使用保存在数据RAM 42、标量寄存器文件111和累加器寄存器113中的数据项中的一个或一些来执行运算,例如乘积和运算。运算器211使用的用于该运算的一个或一些数据项是“输入数据”的示例。在在前运算中要由运算器211执行的运算与在主运算中要由运算器211执行的运算相同或相似。运算器211使用足以表示运算结果的位宽来执行运算。运算器211将运算结果输出至数据RAM 42、统计信息获取器212和数据转换器213。

统计信息获取器212从运算器211接收运算结果的数据的输入。统计信息获取器212根据运算结果的数据获取统计信息。统计信息获取器212将获取的统计信息输出至统计信息聚合器13。然而,在主运算中,统计信息获取器212可以不获取统计信息并且可以不输出所获取的统计信息。

数据转换器213获取由运算器211获得的运算结果。接下来,在主运算中,数据转换器213从控制器10接收基于在在前运算中获取的统计信息而确定的小数点位置的输入。数据转换器213将定点数数据移位由接收到的小数点位置指定的移位量。数据转换器213在移位的同时对高位执行饱和处理并对低位执行舍入处理。通过这样执行,数据转换器213更新定点数数据的小数点位置。在在前运算中,数据转换器213可以不更新小数点位置。数据转换器213使指示更新的小数点位置的运算结果被存储在标量寄存器文件111和数据RAM 42中。运算器211和数据转换器213要对输入数据执行的处理是“预定运算”的示例。

向量单元122耦接至控制器10、寄存器文件11和存储器接口15。向量单元122包括运算器221、统计信息获取器222和数据转换器223的多个组合。在本实施方式中,向量单元122还执行在前运算和主运算这两个运算。

运算器221中的每一个使用保存在数据RAM 42、向量寄存器文件112或向量累加器寄存器114中的一个或更多个中的数据来执行运算,例如乘积和运算。运算器221使用足以表示运算结果的位宽来执行运算。在在前运算中要由运算器221执行的运算与在主运算中要由运算器221执行的运算相同或相似。运算器221将运算结果输出至数据RAM 42、相应的统计信息获取器222和相应的数据转换器223。

统计信息获取器222从运算器221接收运算结果的数据的输入。在这种情况下,统计信息获取器222获取使用足以保持精确度的位宽表示的运算结果的数据。

统计信息获取器222根据运算结果的数据获取统计信息。例如,为了获取无符号的最高有效位位置,统计信息获取器222使用无符号的最高有效位检测器来生成在无符号的最高有效位位置处的值为1并且在其他位位置处的值为0的输出数据。统计信息获取器222将获取的统计信息输出至统计信息聚合器13。然而,在主运算中,统计信息获取器222可以不获取统计信息并且可以不输出所获取的统计信息。

数据转换器223获取由运算器221获得的运算结果。接下来,在主运算中,数据转换器223从控制器10接收基于在在前运算中获取的统计信息而确定的小数点位置的输入。数据转换器223将定点数数据移位由接收到的小数点位置指定的移位量。数据转换器223在移位的同时对高位执行饱和处理并对低位执行舍入处理。通过这样执行,数据转换器223更新定点数数据的小数点位置。在在前运算中,数据转换器223可以不更新小数点位置。数据转换器223使指示更新的小数点位置的运算结果被存储在标量寄存器文件112和数据RAM 42中。

统计信息聚合器13从统计信息获取器212接收从由运算器211获得的运算结果的数据获取的统计信息的输入。统计信息聚合器13从统计信息获取器222接收从由运算器221获得的运算结果的数据获取的统计信息的输入。统计信息聚合器13聚合从统计信息获取器212获取的统计信息和从统计信息获取器222获取的统计信息,并将聚合的统计信息输出至统计信息存储部115。

接下来,描述控制器10。图4是示出控制器的细节的框图。如图4所示,控制器10包括总体管理器100、小数点位置确定器101和索引值转换控制器102。

总体管理器100管理由运算部12执行在前运算和由运算部12执行主运算。总体管理器100保存其中总体管理器100使运算部12执行深度学习中的运算的层的信息。当其中总体管理器100使运算部12执行运算的层转移到下一层时,总体管理器100确定执行在前运算。总体管理器100指示索引值转换控制器102输出在前一层中使用的小数点位置,并使运算部12执行在前运算。在本实施方式中,在前一层中使用的小数点位置用于在前运算,但是可以使用另一个值,只要该值接近要执行的在前运算中的适当小数点位置即可。前一层中使用的小数点位置是“第一小数点位置”的示例。

当运算部12执行在前运算被完成时,总体管理器100确定执行主运算。总体管理器100指示索引值转换控制器102输出新确定的小数点位置,并且指示运算部12执行主运算。总体管理器100在每个层中重复执行控制,以使运算部12执行前述的在前运算和前述的主运算。

总体管理器100管理要在深度学习中执行的迭代。例如,当要执行预定次数的迭代的指令被提供时,总体管理器100对执行的迭代的数量进行计数。当执行的迭代的数量达到预定数量时,总体管理器100确定学习的终止。例如,总体管理器100向CPU 2通知学习的终止并终止学习。总体管理器100是“管理器”的示例。

当在每个层中终止由运算部12执行的在前运算时,小数点位置确定器101从统计信息存储部115获取统计信息。小数点位置确定器101使用获取的统计信息确定最佳小数点位置。小数点位置确定器101将所确定的小数点位置输出至索引值转换控制器102。小数点位置确定器101在每个层中重复执行在在前运算之后确定小数点位置的处理。由小数点位置确定器101确定的小数点位置是“第二小数点位置”的示例。

索引值转换控制器102从总体管理器100接收用于输出在前一层中使用的小数点位置的指令。索引值转换控制器102将在前一层中使用的小数点位置输出至运算部12。然而,当该层是深度学习中的初始层时,索引值转换控制器102将作为第一小数点位置的初始小数点位置视为预定小数点位置。

在由运算部12进行的在前运算被完成之后,索引值转换控制器102从总体管理器100接收输出新确定的小数点位置的指令的输入。接下来,索引值转换控制器102从小数点位置确定器101接收使用在前运算的运算结果新确定的小数点位置的输入。索引值转换控制器102将新确定的小数点位置的信息输出至运算部12。

图5是描述根据实施方式1的更新小数点位置的整个过程的图。参照图5来描述根据本实施方式的由运算电路4更新每个层中的固定小数点位置的过程。在图5中,在图5的纸张上的虚线的上侧上示出的区域指示要由处理器40执行的处理。在图5中,在图5的纸张上的虚线的下侧上示出的区域指示存储在统计信息存储部115中的信息。

处理器40的运算器211和221获取输入数据31。输入数据31包括多个运算数据项。运算器211和221使用输入数据31执行在前运算并获得在前运算的运算结果。处理器40的统计信息获取器212和222根据由运算器211和221计算的运算结果来计算统计信息(步骤S101)。处理器40的统计信息聚合器13从统计信息获取器212和222获取统计信息,并使获取的统计信息被存储在统计信息存储部115中(步骤S102)。

处理器40的控制器10中包括的小数点位置确定器101使用存储在统计信息存储部115中的统计信息来确定小数点位置(步骤S103)。

处理器40的运算器211和221使用输入数据31再次执行运算。在这种情况下,运算器211和221使用输入数据31执行两次相同的计算。处理器40的数据转换器213和223从小数点位置确定器101获取新确定的小数点位置的信息。数据转换器213和223使用新确定的小数点位置使运算结果的小数点位置移位,对高位执行饱和处理,对低位执行舍入处理,并更新作为定点数数据的运算结果的小数点位置。数据转换器213和223输出指示更新的小数点位置的运算结果(步骤S104)。

处理器40通过在每个层中重复执行步骤S101至S104的处理来执行深度学习。

图6是示出根据实施方式1的由运算电路进行的包括对小数点位置进行更新的运算处理的概要的图。参照图6来描述根据本实施方式的由运算电路4进行的包括对小数点位置进行更新的运算处理的概要。

运算部12使用输入数据301执行在前运算(步骤S111)。在前运算是第一运算。通过执行在前运算,获得运算结果302。

控制器10的小数点位置确定器101使用在前运算的运算结果302的统计信息来确定新的小数点位置303。运算部12通过使用输入数据301执行主运算来获得运算结果304(步骤S112)。主运算是第二运算。

运算部12使用新的小数点位置303来更新第二运算的运算结果304的小数点位置并计算运算结果305,运算结果305是被表示为在新的小数点位置处具有固定小数点的定点数。

接下来,参考图7来描述根据本实施方式的由运算电路4进行的深度学些过程的流程。图7是根据实施方式1的由运算电路进行的深度学些过程的流程图。

控制器10的索引值转换控制器102将预定的小数点位置确定为初始小数点位置(步骤S121)。

小数点位置确定器101初始化存储在统计信息存储部115中的统计信息(步骤S122)。

运算器211和221使用输入数据执行在前运算(步骤S123)。

统计信息获取器212和222根据由相应的运算器211和221进行的在前运算的运算结果来计算统计信息(步骤S124)。统计信息聚合器13聚合来自统计信息获取器212和222的统计信息,并将聚合的统计信息存储在统计信息存储部115中。

控制器10的小数点位置确定器101使用在前运算的运算结果302的统计信息来确定新的小数点位置(步骤S125)。

控制器10的索引值转换控制器102将由小数点位置确定器101通知的小数点位置输出至运算部12的数据转换器213和223。运算部12的运算器211和221使用输入数据来执行运算。数据转换器213和223使用从索引值转换控制器102输入的小数点位置来更新由运算器211和221进行的运算的运算结果的小数点位置。以这种方式,运算部12执行主运算(步骤S126)。

控制器10的总体管理器100确定是否已经在所有层中完全执行了迭代(步骤S127)。当尚未完全执行迭代的层保留时(步骤S127中的“否”),总体管理器100开始下一层中的运算(步骤S128)。深度学些过程返回到步骤S122。

另一方面,当已经在所有层中完全执行了迭代时(步骤S127中的“是”),控制器10的总体管理器100确定是否要终止学习(步骤S129)。

当学习不被终止时(步骤S129中的“否”),总体管理器100开始在所有层中执行下一次迭代(步骤S130)。深度学些过程返回到步骤S122。

另一方面,当学习要被终止时(步骤S129中的“是”),总体管理器100将学习的完成通知给CPU 2并终止学习。

如上所述,根据本实施方式的运算电路使用输入数据来执行在前运算,使用从在前运算的结果获得的统计信息来确定对于使用输入数据执行的运算而言适当的小数点位置。运算电路使用输入数据执行主运算,并获得被表示为在所确定的小数点位置处具有固定的小数点的运算结果。

因此,当在执行深度学些过程的同时使用其中构建用作神经网络的结构的计算图的“按运行定义”来执行深度学习时,可以确定适当的固定小数点位置并且可以提高要使用固定小数点执行的学习的准确性。

[实施方式2]

接下来,描述实施方式2。根据本实施方式的运算电路4使用包括在输入数据中的多个运算数据项中的一些来执行运算,并且基于运算结果的统计信息来确定小数点位置。该特征与实施方式1不同。在图3和图4的框图中也示出了根据本实施方式的运算电路4。下面将不描述与实施方式1中描述的部分相同的功能。

总体管理器100选择其与输入数据中包括的运算数据项的比率等于预定比率的运算数据项。在下文中,预定比率是N%,并且所选择的运算数据项被称为N%运算数据。总体管理器100指示运算部12使用N%运算数据执行在前运算。

在使用N%运算数据完成在前运算之后,总体管理器100指示索引值转换控制器102输出根据在前运算的结果计算的新索引值,并指示运算部12使用包括在输入数据中的所有运算数据项执行主运算。

小数点位置确定器101从统计信息存储部115获取根据使用N%运算数据执行运算的运算结果计算的统计信息。当输入数据的运算结果由定点数表示时,小数点位置确定器101使用根据使用N%运算数据执行运算的运算结果计算的统计信息来确定适当的小数点位置。小数点位置确定器101将所确定的小数点位置的信息输出至索引值转换控制器102。

运算部12从总体管理器100接收使用N%运算数据执行在前运算的指令。运算部12选择运算器211和221,使得所选择的运算器211和221的数量对应于N%运算数据。

所选择的运算器211和221使用N%运算数据执行在前运算。所选择的运算器211和221将在前运算的运算结果输出至统计信息获取器212和222。

当运算部12接收到使用输入数据中包括的所有运算数据项执行主运算的指令时,运算器211和221使用输入数据中包括的所有运算数据项执行主运算。运算器211和221将使用输入数据中包括的所有运算数据项执行主运算的运算结果输出至数据转换器213和223。

与已经使用N%运算数据执行了在前运算的运算器211和221对应的统计信息获取器212和222获取运算结果。统计信息获取器212和222获取运算结果的统计信息,并将统计信息输出至统计信息聚合器13。

统计信息聚合器13从与已经使用N%运算数据执行了在前运算的运算器211和221对应的统计信息获取器212和222接收统计信息的输入。统计信息聚合器13对使用N%运算数据执行在前运算的运算结果的统计信息进行聚合,并使聚合的统计信息被存储在统计信息存储部115中。

图8是描述根据实施方式2的更新小数点位置的整个过程的图。参考图8来描述根据本实施方式的由运算电路在每个层中更新固定小数点位置的过程。

由运算部12选择的运算器211和221获取输入数据中包括的N%运算数据33。所选择的运算器211和221使用N%运算数据33执行在前运算,并且获得执行在前运算的运算结果。与已经使用N%运算数据33执行了在前运算的运算器211和221对应的统计信息获取器212和222根据使用N%运算数据33执行在前运算的运算结果来计算统计信息(步骤S131)。

处理器40的统计信息聚合器13从统计信息获取器212和222获取使用N%运算数据33执行在前运算的运算结果的统计信息,并使获取的统计信息被存储在统计信息存储部115中(步骤S132)。

包括在处理器40的控制器10中的小数点位置确定器101使用如下统计信息来确定小数点位置,所述统计信息是根据使用N%运算数据33执行在前运算的运算结果计算出来的并且已经被存储在统计信息存储部115中(步骤S133)。

处理器40的运算器211和221使用输入数据中包括的所有运算数据项34执行主运算。处理器40的数据转换器213和223从小数点位置确定器101获取新确定的小数点位置的信息。数据转换器213和223基于指定的小数点位置使主运算的结果移位,对高位执行饱和处理,对低位执行舍入处理,并更新定点数数据的小数点位置。运算部12输出指示经更新的小数点位置的定点数数据(步骤S134)。

下面描述用于选择N%运算数据的方法。图9是描述N%运算数据的选择的图。数据500表示一个多维排列的数据项。B表示小批量。输入数据501包括在三个张量的轴延伸的维度方向上排列的运算数据。张量是通道C、宽度W和高度H。在从输入数据501选择运算数据时,优选地选择没有偏差的运算数据。

例如,可以通过在张量的轴上以相等的间隔选择运算数据来减小偏差。例如,在通道C方向上以固定间隔选择运算数据,并且在高度H方向上以固定间隔选择运算数据。例如,在图9中,在高度H方向上以间隔b选择在高度H方向上具有距离a的运算数据。

如上所述,根据本实施方式的运算电路使用包括在输入数据中的N%运算数据来执行在前运算,并且使用从执行在前运算的结果获得的统计信息来确定对于使用输入数据执行的运算而言适当的小数点位置。运算电路使用包括在输入数据中的所有运算数据项执行主运算,并且获得被表示为在所确定的小数点位置处具有固定小数点的运算结果。

因此,当使用“按运行定义”来执行深度学习时,与实施方式1相比,可以使用固定的小数点来提高学习的准确性,通过减少执行第一运算的次数来减少运算的开销,并且减少执行学习的时间段。

(修改)

当使用大量的运算数据时,可以基于运算结果来获得统计信息并计算适当的小数点位置。然而,当重复学习并且识别率增加时,运算结果之间的差异减小。因此,即使使用少量的运算数据,也可以计算出适当的小数点位置。尽管在实施方式2中选择了其比率等于预定比率的运算数据项并执行了运算,但是可以改变基于识别率要选择的运算数据项的比率。

图10是示出基于选择的识别率所选择的运算数据项的比率的图。在图10中,纵坐标表示识别率,横坐标表示迭代。如图10所示,在深度学习中,随着执行的迭代的数量增加和学习的进行,识别率得到提高。通过基于执行的迭代的数量来改变要选择的运算数据项的比率,可以改变基于识别率要选择的运算数据项的比率。

例如,如图10所示,控制器10的总体管理器100将要在深度学习中执行的迭代划分为一些组,并保存用作组的边界的迭代已经被执行的次数。总体管理器100存储执行的迭代的数量。总体管理器100将在图10的纸张的上侧上指示的N%视为要选择的运算数据项的比率。例如,总体管理器100在学习开始时将要选择的运算数据项的比率设置为100%。当执行的迭代的数量达到用作组的边界的迭代已经被执行的次数时,总体管理器100改变要选择的运算数据项的比率,将改变的比率通知给运算部12,并且顺序地改变从中获取统计信息的运算数据项的比率。

如上所述,根据该修改的运算电路将要用于获取统计信息的运算的运算数据项的比率改变成要基于深度学习的中间的识别率选择的运算数据项的比率。因此,可以减少在整个学习中使用运算数据项执行运算的次数,并减轻处理负荷。

[实施方式3]

接下来,描述实施方式3。根据本实施方式的运算电路4保存在前运算的运算结果,使用根据统计信息计算出的小数点位置来更新所保存的运算结果的小数点位置,并获得在适当的小数点位置处具有小数点的定点数。该特征与实施方式1不同。在图3和图4中也示出了根据本实施方式的运算电路4。下面将不描述与实施方式1中描述的部分相同的功能。

当从总体管理器100接收到指令时,运算部12的运算器211和221使用输入数据执行在前运算。运算部12的运算器211和221使在前运算的运算结果被存储在数据RAM 42中。在这种情况下,运算器211和221使具有不降低运算结果的精确度的全部位的运算结果被存储在数据RAM42中。不降低精确度的全部位是有符号整数,其具有比用浮点小数点或固定小数点等表示的位宽更宽的位宽。运算部12的统计信息获取器212和222根据在前运算的运算结果来计算统计信息,并将统计信息输出至统计信息聚合器13。

运算部12的数据转换器213和223从索引值转换控制器102接收小数点位置的输入。数据转换器213和223从总体管理器100接收更新在前运算的运算结果的小数点位置的指令。数据转换器213和223从数据RAM42获取在前运算的运算结果,并将运算结果的小数点位置更新为指定的小数点位置。例如,数据转换器213和223对在前运算的运算结果进行量化。数据转换器213和223输出指示更新的小数点位置的运算结果。

总体管理器100指示运算部12执行在前运算。在在前运算终止之后,总体管理器100指示索引值转换控制器102更新在前运算的运算结果的小数点位置。

索引值转换控制器102将从小数点位置确定器101获取的小数点位置的信息输出至运算部12的数据转换器213和223。索引值转换控制器102指示运算部12使用已经从数据RAM 42获取的在前运算的运算结果来更新小数点位置。

图11是描述根据实施方式3的更新小数点位置的整个过程的图。参考图11来描述由根据本实施方式的运算电路4更新每个层中的固定小数点位置的过程。在图11中,在图11的纸张上的虚线的上侧上示出的区域表示要由处理器40执行的处理。在图11中,在图11的纸张上的虚线的下侧上示出的区域表示被存储在统计信息存储部115和数据RAM 42中的信息。

处理器40的运算器211和221获取输入数据35。运算器211和221使用输入数据35执行在前运算,并且获得在前运算的运算结果。处理器40的统计信息获取器212和222根据由运算器211和221计算出的运算结果来计算统计信息(步骤S201)。

处理器40的统计信息聚合器13从统计信息获取器212和222获取统计信息,并使获取的统计信息被存储在统计信息存储部115中(步骤S202)。运算器211和221使具有不降低运算结果的精确度的全部位的运算结果被存储在数据RAM 42中(步骤S203)。

处理器40的控制器10中包括的小数点位置确定器101使用存储在统计信息存储部115中的统计信息来确定小数点位置(步骤S204)。

处理器40的数据转换器231和232获取已经被存储在数据RAM 42中的在前运算的运算结果。数据转换器213和223从小数点位置确定器101获取新确定的小数点位置的信息。数据转换器213和223使用新确定的小数点位置使获取的运算结果的小数点位置移位,对高位执行饱和处理并对低位执行舍入处理,并且更新作为定点数数据的运算结果的小数点位置。数据转换器213和223输出指示更新的小数点位置的运算结果(步骤S205)。

接下来,参考图12来描述根据本实施方式的由运算电路4进行的深度学习过程的流程。图12是根据实施方式3的由运算电路进行的深度学些过程的流程图。

控制器10的索引值转换控制器102将预定的小数点位置确定为初始小数点位置(步骤S211)。

小数点位置确定器101初始化存储在统计信息存储部115中的统计信息(步骤S212)。

运算器211和221使用输入数据执行在前运算(步骤S213)。

运算器211和221获得在前运算的运算结果,并使获得的具有不降低运算结果的精确度的全部位的运算结果被存储在数据RAM 42中(步骤S214)。

统计信息获取器212和222根据由相应的运算器211和221进行的在前运算的运算结果来计算统计信息(步骤S215)。统计信息聚合器13聚合来自统计信息获取器212和222的统计信息,并使聚合的统计信息被存储在统计信息存储部115中。

控制器10的小数点位置确定器101使用在前运算的运算结果302的统计信息来确定新的小数点位置(步骤S216)。

控制器10的索引值转换控制器102将由小数点位置确定器101通知的小数点位置输出至运算部12的数据转换器213和223。运算部12的数据转换器213和223从数据RAM 42获取在前运算的运算结果。数据转换器213和223使用从索引值转换控制器102输入的小数点位置来量化在前运算的运算结果(步骤S217)。

控制器10的总体管理器100确定是否已经在所有层中完全执行了迭代(步骤S218)。当尚未完全执行迭代的层保留时(步骤S218中的“否”),总体管理器100开始下一层中的运算(步骤S219)。深度学些过程返回到步骤S212。

另一方面,当已经在所有层中完全执行迭代时(步骤S218中的“是”),控制器10的总体管理器100确定是否要终止学习(步骤S220)。

当将不终止学习时(步骤S220中的“否”),总体管理器100开始在所有层中执行下一迭代(步骤S221)。深度学些过程返回到步骤S212。

另一方面,当要终止学习时(步骤S220中的“是”),总体管理器100将学习的完成通知给CPU 2并终止学习。

如上所述,根据本实施方式的运算电路使用输入数据执行在前运算,存储运算结果,并使用从在前运算的结果获得的统计信息来确定对于使用输入数据执行的运算而言适当的小数点位置。运算电路使用所确定的小数点位置来量化在前运算的运算结果,并获得被表示为在指定的小数点位置处具有固定的小数点的运算结果。

以这种方式,根据本实施方式的运算电路在运算结果的量化中使用输入数据执行一次运算。因此,当使用“按运行定义”来执行深度学习时,可以使用固定的小数点来提高学习的准确性,减少运算的开销,并且减少学习的时间段。

[实施方式4]

接下来,描述实施方式4。在实施方式3中,使用当前运算结果的统计信息来确定适当的小数点位置,并且使用在所确定的小数点位置处具有小数点的数的有效数字的数量来再次执行当前运算。在这种情况下,相同的计算被执行两次,并且运算的开销可能会增加。当使用DbR执行深度学习时,优选地,基于当前运算结果的统计信息来确定小数点位置,但是如上所述开销可能会增加,并且用于执行运算的时间段可能会增加。

为了减少运算的开销的增加,根据本实施方式的运算电路4使用输入数据中包括的多个运算数据项中的一些来执行在前运算,并根据在前运算的运算结果的统计信息来确定小数点位置。该特征与实施方式3不同。在图3和图4的框图中还示出了根据本实施方式的运算电路4。下面将不描述与实施方式3中描述的部分相同的功能。

总体管理器100选择如下运算数据项,所述运算数据项与输入数据中包括的运算数据项的比率等于预定比率。在下文中,预定比率是N%,所选择的运算数据项被称为N%运算数据。总体管理器100指示运算部12使用N%运算数据执行在前运算。

总体管理器100指示索引值转换控制器102输出新的索引值,并且指示运算部12使用输入数据中包括的所有运算数据项来执行主运算。

小数点位置确定器101从统计信息存储部115获取根据使用N%运算数据执行运算的运算结果计算出的统计信息。当输入数据的运算结果由定点数表示时,小数点位置确定器101使用从使用N%运算数据执行运算的运算结果计算出的统计信息来确定适当的小数点位置。小数点位置确定器101将所确定的小数点位置的信息输出至索引值转换控制器102。

运算部12从总体管理器100接收使用N%运算数据执行在前运算的指令。运算部12选择运算器211和221,使得所选择的运算器211和221的数目对应于N%运算数据。

所选择的运算器211和221使用N%运算数据来执行在前运算。所选择的运算器211和221将在前运算的运算结果输出至统计信息获取器212和222。所选择的运算器211和221使具有不会降低运算结果的精确度的全部位的在前运算结果被存储在数据RAM 42中。

当运算部12接收到对输入数据中包括的所有运算数据项进行量化的指令时,运算器211和221使用包括在输入数据中并排除N%运算数据的其余运算数据项来执行主运算。运算器211和221将使用其余运算数据项执行主运算的运算结果输出至数据转换器213和223。

数据转换器213和223从索引值转换控制器102接收新的小数点位置的信息的输入。数据转换器213和223从数据RAM 42获取使用N%运算数据执行在前运算的运算结果。数据转换器213和223从运算器211和221接收使用其余运算数据项执行运算的运算结果的输入。数据转换器213和223使用指定的小数点位置来对包括使用N%运算数据执行在前运算的运算结果以及使用其余运算数据项执行运算的运算结果的所有运算结果进行量化,并且计算被表示为在指定的小数点位置处具有小数点的定点数的运算结果。

与已经使用N%运算数据执行了在前运算的运算器211和221相对应的统计信息获取器212和222获取运算结果。统计信息获取器212和222获取运算结果的统计信息,并且将统计信息输出至统计信息聚合器13。

统计信息聚合器13从与已经使用N%运算数据执行了在前运算的运算器211和221相对应的统计信息获取器212和222接收统计信息的输入。统计信息聚合器13对使用N%运算数据执行在前运算的运算结果的统计信息进行聚合,并且使聚合的统计信息被存储在统计信息存储部115中。

图13是描述根据实施方式4的更新小数点位置的整个处理的图。参照图13来描述根据本实施方式的由运算电路4更新层中的每一层中的固定小数点位置的处理。

由运算部12选择的运算器211和221获取输入数据中包括的N%运算数据37。所选择的运算器211和221使用N%运算数据37来执行在前运算,并且获得执行在前运算的运算结果。与已经使用N%运算数据37执行了在前运算的运算器211和221相对应的统计信息获取器212和222根据使用N%运算数据37执行在前运算的运算结果来计算统计信息(步骤S221)。

处理器40的统计信息聚合器13从统计信息获取器212和222获取使用N%运算数据37执行在前运算的运算结果的统计信息,并且使获取的统计信息被存储在统计信息存储部115中(步骤S222)。

运算器211和221使使用N%运算数据37执行在前运算的运算结果被存储在数据RAM 42中(步骤S223)。

包括在处理器40的控制器10中的小数点位置确定器101使用如下统计信息来确定小数点位置,所述统计信息是根据使用N%运算数据37执行在前运算的运算结果计算出的并且已经被存储在统计信息存储部115中(步骤S224)。

处理器40的运算器211和221使用包括在输入数据中并排除N%运算数据的其余运算数据项38和39来执行运算。数据转换器213和223从运算器211和221获取使用其余运算数据项38和39执行运算的运算结果。数据转换器213和223从数据RAM 42获取使用N%运算数据执行在前运算的运算结果。数据转换器213和223从小数点位置确定器101获取新确定的小数点位置的信息。数据转换器213和223基于指定的小数点位置使通过对使用运算数据项38和39执行运算的运算结果进行组合而获得的数据结果移位,对高位执行饱和处理并对低位执行舍入处理,以及更新定点数数据的小数点位置。运算部12输出指示小数点位置的定点数数据(步骤S225)。

图14是示出根据实施方式4的由运算电路进行的包括对小数点位置的更新的运算处理的概要的图。参照图14来描述根据本实施方式的由运算电路4进行的包括对小数点位置的更新的运算处理的概要。

运算部12使用输入数据401来执行在前运算(步骤S231)。在前运算是第一个运算。运算部12通过执行在前运算来获得运算结果402。

控制器10的小数点位置确定器101使用在前运算的运算结果402的统计信息来确定新的小数点位置403。运算部12对使用N%运算数据执行在前运算的运算结果进行量化(步骤S232)并获得N%运算结果404。

运算部12使用输入数据401中包括的其余(100-N)%运算数据项来执行第二运算,并且获取运算结果405(步骤S233)。

运算部12使用新的小数点位置403来对运算结果405进行量化并且计算运算结果406,该运算结果406是在新的小数点位置处具有固定的小数点的定点数。

如上所述,根据本实施方式的运算电路使用输入数据中包括的N%运算数据来执行在前运算,并且使用根据执行在前运算的结果而获得的统计信息来确定对使用输入数据执行的运算而言适当的小数点位置。运算电路使用包括在输入数据中并排除N%运算数据的其余运算数据项来执行运算,并且对其余运算数据项和使用N%运算数据执行在前运算的运算结果进行组合,以获得被表示为在确定的小数点位置处具有固定的小数点的运算结果。

因此,与实施方式3相比,当使用“按运行定义”来执行深度学习时,可以使用固定的小数点来提高学习的准确性,可以通过减少执行第一运算的次数来减少运算的开销,并且减少学习的时间段。

图15是示出根据实施方式1至4的用于执行运算处理的时间段的图。参照图15来描述根据实施方式的用于执行运算处理的时间段。图15中示出的处理#0指示使用先前迭代的统计信息来更新小数点位置的运算处理。处理#1指示通过实施方式1中描述的方法更新小数点位置的运算处理。处理#2指示通过实施方式2中描述的方法更新小数点位置的运算处理。处理#3指示通过实施方式3中描述的方法更新小数点位置的运算处理。处理#4指示通过实施方式4中描述的方法更新小数点位置的运算处理。处理#0的时间段被控制为运算时间段和通过将读取时间段和写入时间段相加而获得的数据传输时间段中的较长一个的情况被描述为先决条件。

处理#0的时间段等于运算时间段和通过将读取时间段和写入时间段相加而获得的时间段中的较长一个。在这种情况下,通过将读取时间段和写入时间段相加而获得的时间段较长并且处理#0的时间段为2.1ms。

处理#1的时间段是在前运算的时间段、用于计算小数点位置的时间段以及主运算的时间段的总和。在这种情况下,用于计算小数点位置的时间段是读取时间段和运算时间段中的较长一个。然而,用于计算小数点位置的时间段可能被相对忽略。主运算的时间段等于或几乎等于处理#0的时间段。在这种情况下,处理#1的时间段为4.1ms。

假设在处理#2中作为要选择的运算数据项的比率的N%是12.5%。处理#2的时间段是在前运算的时间段、用于计算小数点位置的时间段以及主运算的时间段的总和。处理#2中在前运算的时间段是处理#1中在前运算的时间段的12.5%。用于计算小数点位置的时间段可能相对被忽略。主运算的时间段等于或几乎等于处理#0的时间段。在这种情况下,处理#2的时间段为2.35ms。

下面描述在处理#3中要量化的位的数量是不要量化的位的数量的1/4的情况。例如,量化的表示是8位整数,而非量化的表示是32位浮点数。在这种情况下,用于读取和写入不要量化的位的时间段是用于读取和写入要量化的位的时间段的4倍长。处理#3的时间段是运算时间段和用于读取要量化的位的时间段与作为用于写入要量化的位的时间段的4倍长的时间段的总和中的较长一个、作为用于读取要量化的位的时间段的4倍长的时间段、以及用于写入要量化的位的时间段的总和。在这种情况下,处理#3的时间段为15.7ms。

假设在处理#4中作为要选择的运算数据项的比率的N%是12.5%。处理#4的时间段是处理#3的时间段的N%与处理#0的时间段的(100-N)%的总和。在这种情况下,处理#4的时间段为3.8ms。上面以数据传输时间段长于运算时间段的情况为例进行了描述。在相反的情况下,处理#3和#4的时间段可以短于#1和#2的时间段。

[实施方式5]

接下来,描述实施方式5。根据本实施方式的运算电路4针对深度学习中的层中的每个层选择根据实施方式2的用于更新小数点位置的方法和根据实施方式4的用于更新小数点位置的方法中的任一个,并且执行所选择的方法。根据实施方式2的用于更新小数点位置的方法是“第一处理”的示例。根据实施方式4的用于更新小数点位置的方法是“第二处理”的示例。在图3和图4中还示出了根据本实施方式的运算电路4。以下将不描述与实施方式1或2中描述的部分相同的功能。在以下描述中,根据实施方式2的用于更新小数点位置的方法被称为“通过两个运算对小数点位置的更新”,根据实施方式4的用于更新小数点位置的方法被称为“通过运算结果保存对小数点位置的更新”。以下描述假设在更新中要选择的运算数据项与每个小数点位置的比率是20%。

图16是示出深度学习中的各层的示例的图。下面描述深度学习具有图15中示出的层510的情况。图16中示出的矩形框中的每一个指示层510中的相应一个。在本实施方式中,由于使用“按运行定义”来执行深度学习,因此在深度学习的中间处路线分岔。

控制器10的总体管理器100在层中的每个层中执行通过两个运算更新小数点位置的处理和通过运算结果保存单元更新小数点位置的处理二者直到执行的迭代的数量达到预定数量为止。总体管理器100保存已经执行了在层中的每个层中通过两个运算来更新小数点位置的处理的时间段以及已经执行了在层中的每个层中通过运算结果保存来更新小数点位置的处理的时间段。

当执行的迭代的数量达到预定数量时,总体管理器100针对层中的每个层计算已经执行了通过两个运算来更新小数点位置的处理的时间段的平均值以及已经执行了通过运算结果保存来更新小数点位置的处理的时间段的平均值。总体管理器100将计算出的平均值视为处理的时间段。总体管理器100从通过两个运算来更新小数点位置的处理和通过运算结果保存来更新小数点位置的处理中选择要在较短时间段内执行的处理作为在层中的每个层中用于更新小数点位置的方法。总体管理器100控制运算部12,使得通过针对层中的每个层选择的用于更新小数点位置的方法来更新小数点位置。

图17是示出选择用于更新小数点位置的方法的结果的图。图17中示出的行中的每一个对应于图16中示出的层510中的相应一个。由实线框包围的行指示执行更新小数点位置的处理的层。列511指示通过两个运算来更新小数点位置的处理的时间段。列512指示通过运算结果保存来更新小数点位置的处理的时间段。列513指示在层中的每个层中选择更新小数点位置的处理的结果。选择结果中的每一个指示用于更新小数点位置使得模式匹配的方法。

在根据本实施方式的深度学习中,在图16中示出的层中的每个层中,用于通过两个运算来更新小数点位置的时间段比用于通过运算结果保存来更新小数点位置的时间段更短。如列513所指示的,总体管理器100在层中的每个层中选择通过两个运算来更新小数点位置的处理。

参照图18来描述根据实施方式5的用于更新小数点位置的方法的选择的流程。图18是根据实施方式5的更新小数点位置的过程的选择的流程图。

总体管理器100在层中的每个层中执行通过两个运算来更新小数点位置的处理和通过运算结果保存来更新小数点位置的处理二者直到这些处理达到指定的迭代为止(步骤S301)。总体管理器100保存处理的经过的时间段。

当处理达到指定的迭代时,总体管理器100针对层中的每个层计算所保存的经过的时间段的平均值,并且计算在层中的每个层中通过两个运算来更新小数点位置的处理的时间段以及在层中的每个层中通过运算结果保存来更新小数点位置的处理的时间段。总体管理器100从上述两个处理中选择要在较短时间段内执行的处理作为在层中的每个层中用于更新小数点位置的方法(步骤S302)。

总体管理器100从指定的迭代的下一个迭代起使用选择的用于更新小数点位置的方法来执行运算(步骤S303)。

图19是示出选择用于更新小数点位置的方法的定时的图。例如,第预定数迭代被称为第A迭代。在这种情况下,总体管理器100执行用于更新小数点位置的两种方法直到处理达到第A迭代为止。例如,在时间段T期间,在层中的每个层中使用用于更新小数点位置的两种方法来执行运算。总体管理器100针对层中的每个层选择用于更新小数点位置的方法,并且在第A+1迭代和以后的迭代中使用所选择的用于更新小数点位置的方法来执行运算。

(修改)

在实施方式5中,针对层中的每个层选择用于更新小数点位置的方法。然而,选择方法不限于此。例如,可以基于要在层中的每个层中执行的运算的类型来选择用于更新小数点位置的方法。

在这种情况下,总体管理器100计算在层中的每个层中更新小数点位置的处理的时间段。在计算之后,总体管理器100针对运算类型将层划分为组,针对运算类型中的每一个计算处理的时间段的平均值,以及针对运算类型中的每一个将该平均值视为处理时间段。例如,当这些层是图16中示出的层时,运算类型是卷积和批量归一化(batch norm)这两种类型。总体管理器100计算用于执行卷积的层的处理时间段和用于执行批量归一化的层的处理时间段。总体管理器100针对运算类型中的每一个从要执行的前述两个处理中选择要在较短时间段内执行的处理作为在层中的每个层中用于更新小数点位置的方法。

图17中示出的列514指示基于运算类型选择用于更新小数点位置的方法的结果。在这种情况下,在用于执行卷积的层中的每个层中,通过运算结果保存来更新小数点位置的处理的时间段比通过两个运算来更新小数点位置的处理的时间段更短。在用于执行批量归一化的层中的每个层中,通过两个运算来更新小数点位置的处理的时间段比通过运算结果保存来更新小数点位置的处理的时间段更短。总体管理器100针对用于执行卷积的层中的每个层选择通过运算结果保存来更新小数点位置的处理,并且针对用于执行批量归一化的层中的每个层选择通过两个运算来更新小数点位置的处理。

在这种情况下,在图18中示出的步骤S302中,在更新小数点位置的处理的选择的流程中,总体管理器100针对运算类型中的每一个计算处理时间段,并且针对运算类型中的每一个从前述两个处理中选择要在较短时间段内执行的处理作为在层中的每个层中用于更新小数点位置的方法。

如上所述,根据本实施方式的运算电路和根据修改的运算电路中的每一个在特定层中从通过两个运算来更新小数点位置的处理和通过运算结果保存来更新小数点位置的处理中选择要在较短时间段内执行的处理,并执行学习处理。这可以减少学习处理的时间段。

尽管前述实施方式中的每一个均未描述要用于计算小数点位置并执行运算的资源,但是确定要分配给处理的资源很重要。以下实施方式描述了资源分配的示例。

[实施方式6]

下面描述实施方式6。图20是示出包括计算电路的服务器的配置的示例的图。在本实施方式中,服务器1中的每一个包括加速器51至56。服务器1中包括的CPU 2经由有线局域网(LAN)彼此耦接。在服务器1中的每一个中,CPU 2经由PCIe总线耦接至加速器51至56。

加速器51是包括作为运算电路4A至4D的4个运算电路4的LSI。加速器52至54中的每一个还包括4个运算电路4。加速器55和56中的每一个是包括单个运算电路4的简化版LSI。

图21是描述根据实施方式6的运算规程的图。在本实施方式中,由于加速器51至54中的每一个以与其他加速器相同的方式进行运算,因此下面以加速器51为例进行描述。

图21的上侧指示在实施方式2中描述且要在层#1至#N中的每个层中执行的在前运算处理,而图21的下侧指示在实施方式2中描述且要在层#1至#N中的每个层中执行的主运算处理。与图21的上侧和下侧相对应的加速器51中包括的运算电路4A至4D之中的且由斜线指示的运算电路执行运算。

运算电路4A中包括的控制器10的总体管理器100指示运算电路4A的运算部12在层#1至#N中的每个层中使用N%运算数据来执行在前运算。

运算电路4A中包括的控制器10的小数点位置确定器101从运算电路4A的统计信息存储部115获取由运算电路4A的使用N%运算数据来执行在前运算的运算部12计算出的运算结果的统计信息。小数点位置确定器101使用获取的统计信息来确定最佳小数点位置。小数点位置确定器101将所确定的小数点位置输出至运算电路4A中包括的控制器10的索引值转换控制器102。运算电路4A中包括的控制器10的小数点位置确定器101确定层#1至#N中的小数点位置,并且输出所确定的小数点位置。

运算电路4A中包括的控制器10的索引值转换控制器102将由运算电路4A中包括的控制器10的小数点位置确定器101确定的小数点位置通知给运算电路4B至4D的控制器10。

运算电路4A的运算部12使用N%运算数据来执行在前运算。运算电路4A的运算部12在层#1至#N中的每个层中执行在前运算。因此,运算电路4A的运算部12可以针对层#1至#N中的每个层流水线进行在前运算。运算电路4A的运算部12是“第一运算部”的示例。

运算电路4B至4D的控制器10在层#1至#N中从运算电路4A中包括的控制器10的索引值转换控制器102接收小数点位置的通知。运算电路4B至4D的控制器10的总体管理器100指示运算电路4B至4D的控制器10的索引值转换控制器102输出所获取的小数点位置。运算电路4B至4D的总体管理器100指示运算电路4B至4D的运算部12使用从运算电路4B至4D的索引值转换控制器102输出的小数点位置来执行主运算。

运算电路4B至4D的控制器10的索引值转换控制器102将所获取的小数点位置输出至运算电路4B至4D的运算部12。

运算电路4B至4D的运算部12在层#1至#N中的每个层中使用从运算电路4B至4D的索引值转换控制器102输入的小数点位置来执行主运算。因此,运算电路4B至4D的运算部12中的每一个可以针对层#1至#N中的每个层流水线进行主运算。运算电路4B至4D的运算部12中的每一个是“第二运算部”的示例。

在这种情况下,如图21中所示,运算电路4B至4D的运算部12可以与通过运算电路4A的运算部12流水线进行在前运算的处理601并行地执行流水线进行主运算的处理602。因此,在深度学习中引起运算处理的开销的时间段T1对应于如下单个层,在所述单个层中,在各层中的处理的时间段之中的最长时间段内执行处理。

图22A至图22B描述了根据本实施方式的由服务器1进行的深度学习中的运算处理的流程。图22A至22B是根据实施方式6的由服务器进行的深度学习中的运算处理的流程图。

运算电路4A的总体管理器100将指示正在执行在前运算的层的编号的i设置为1(步骤S401)。

运算电路4A的总体管理器100指示运算电路4A的运算部12在第i层中使用N%运算数据来执行在前运算。运算电路4A的运算部12在第i层中使用N%运算数据来执行在前运算(步骤S402)。

运算电路4A的总体管理器100确定在第i层中是否已经完全执行了在前运算(步骤S403)。当尚未完全执行在前运算时(步骤S403中的“否”),在前运算处理返回至步骤S402。

另一方面,当已经完全执行了在前运算时(步骤S403中的“是”),运算电路4A的小数点位置确定器101使用从在前运算的运算结果获取的统计信息来确定适当的小数点位置(步骤S404)。

运算电路4A的索引值转换控制器102将由小数点位置确定器101确定的小数点位置通知给运算电路4B至4D的控制器10(步骤S405)。

运算电路4A的总体管理器100确定在正在执行的当前迭代中在所有层中是否已经完全执行了在前运算(步骤S406)。当尚未完全执行在前运算的层保留在当前迭代中时(步骤S406中的“否”),运算电路4A的总体管理器100使i增加1(步骤S407)。在前运算处理返回至步骤S402。

另一方面,当在当前迭代中在所有层中已经完全执行了在前运算时(步骤S406中的“是”),运算电路4A的总体管理器100确定在所有迭代中是否已经完成在前运算(步骤S408)。当在所有迭代中的一个或更多个迭代中尚未完全执行在前运算时(步骤S408中的“否”),运算电路4A的总体管理器100开始下一个迭代(步骤S409)并且在前运算处理返回至步骤S402。

另一方面,当在所有迭代中已经完全执行了在前运算时(步骤S408中的“是”),运算电路4A的总体管理器100终止深度学习中的在前运算处理。

运算电路4B至4D的总体管理器100将指示正在执行主运算的层的编号的j设置为1(步骤S410)。

运算电路4B至4D的索引值转换控制器102针对层中的每个层获取并保存由运算电路4A的索引值转换控制器102发送的小数点位置(步骤S411)。运算电路4B至4D的索引值转换控制器102从运算电路4B至4D的总体管理器100接收输出用于层中的每个层的小数点位置的指令,并将要用于各层的小数点位置输出至运算电路4B至4D的运算部12。

运算电路4B至4D的运算部12针对层中的每个层使用从索引值转换控制器102输入的小数点位置来执行主运算(步骤S412)。

运算电路4B至4D的总体管理器100确定在当前迭代中在所有层中是否已经完全执行了主运算(步骤S413)。当尚未完全执行主运算的层保留在当前迭代中时(步骤S413中的“否”),运算电路4B至4D的总体管理器100使j增加1(步骤S414)。主运算处理返回至步骤S411。

另一方面,当在当前迭代中在所有层中已经完全执行了主运算时(步骤S413中的“是”),运算电路4B至4D的总体管理器100确定是否要终止学习(步骤S415)。当不要终止学习时(步骤S415中的“否”),运算电路4B至4D的总体管理器100开始下一个迭代(步骤S416)并且主运算处理返回至步骤S410。

另一方面,当要终止学习时(步骤S415中的“是”),运算电路4B至4D的总体管理器100终止深度学习中的主运算处理。

如上所述,根据本实施方式的服务器包括加速器,加速器中的每一个包括多个运算电路。加速器中的每一个使单个运算电路执行在前运算,并且使加速器中包括的其他运算电路使用基于在前运算的运算结果所确定的小数点位置来执行主运算。这可以流水线进行在前运算和主运算。由于处理可以并行地被执行,因此可以减少开销并减少处理的时间段。

[实施方式7]

下面描述实施方式7。根据本实施方式的服务器1具有图20中示出的配置。根据本实施方式的服务器1使用加速器56来执行在前运算,并且使用加速器51和52来执行主运算。该特征与实施方式6不同。加速器56是简化版LSI。图23是描述根据实施方式7的运算规程的图。

加速器55和56中的每一个中包括的运算电路4的数量小于加速器51至54中的每一个中包括的运算电路4的数量。加速器51至54中的每一个具有足以执行学习的性能。加速器55和56中的每一个具有与加速器51至54的功能相同的功能。加速器55和56中的每一个主要执行控制并且具有低计算能力。例如,加速器55和56中的每一个的计算能力大约是加速器51至54中的每一个的计算能力的1/4。在前运算是要对输入数据中包括的运算数据项中的一些执行的运算,并且在前运算的处理负荷低于主运算的处理负荷。因此,由加速器55和56中的每一个进行的在前运算的处理时间段不长。

加速器56起到与实施方式6中描述的运算电路4A的作用相同的作用。例如,加速器56在层#1至#N中的每个层中执行在前运算,并且使用从在前运算的运算结果获得的统计信息来确定适当的小数点位置。加速器56将所确定的小数点位置输出至加速器51和52。这可以流水线进行要由加速器56执行的在前运算。

加速器51和52起到与实施方式6中描述的运算电路4B至4D的作用相同的作用。例如,加速器51和52获取由加速器56确定的小数点位置,并且在层#1至#N中的每个层中使用小数点位置来执行主运算。这可以流水线进行要由加速器51和52执行的在前运算。

在这种情况下,加速器51和52可以与由加速器56执行的流水线进行的在前运算并行地执行流水线进行的主运算。因此,在深度学习中引起运算处理的开销的时间段T2对应于如下单个层,在所述单个层中,在各层中的处理的时间段之中的最长时间段内执行处理。

如上所述,根据本实施方式的服务器使用具有低处理性能的加速器来执行在前运算,并且使用具有足够的处理性能的加速器来使用基于在前运算的运算结果所确定的小数点位置来执行主运算。这可以流水线进行在前运算和主运算。由于处理可以并行地被执行,因此可以减少开销并减少处理的时间段。

[实施方式8]

下面描述实施方式8。根据本实施方式的服务器1具有图20中示出的配置。图24是描述根据实施方式8的运算规程的图。在本实施方式中,由于加速器51至54中的每一个以与其他加速器相同的方式进行运算,因此下面以加速器51为例进行描述。

图24的上侧指示在实施方式4中描述的且要在层#1至#N中的每个层中执行的在前运算,而图24的下侧指示实施方式4中描述的且要在层#1至#N中的每个层中执行的主运算。与图21的上侧和下侧相对应的加速器51中包括的运算电路4A至4D之中的且由斜线指示的运算电路执行运算。

图24中示出的数据RAM 42A至42D是在相应运算电路4A至4D中包括的存储器,但是与图24中的运算电路4A至4D分开地示出以清楚地理解以下描述。数据RAM 42A至42D中的每一个可以从运算电路4A至4D中的任一个读取数据以及向运算电路4A至4D中的任一个写入数据。

运算电路4B至4D中包括的控制器10的总体管理器100指示运算电路4B至4D的运算部12针对层#1至#N中的每个层使用N%运算数据来执行在前运算。运算电路4B至4D中包括的控制器10的总体管理器100从总体管理器100所属的运算电路4B至4D中包括的数据RAM42B至42D获取由使用N%运算数据执行在前运算的运算部12计算的运算结果。运算电路4B至4D中包括的控制器10的总体管理器100使由运算电路4B至4D的使用N%运算数据执行在前运算的运算部12计算的运算结果被存储在运算电路4A中包括的数据RAM 42A中。

运算电路4B至4D中包括的控制器10的小数点位置确定器101从运算电路4A的统计信息存储部115获取由使用N%运算数据执行在前运算的运算部12计算的运算结果的统计信息。小数点位置确定器101使用获取的统计信息来确定最佳小数点位置。小数点位置确定器101将所确定的小数点位置输出至小数点位置确定器101所属的运算电路4B至4D中包括的控制器10的索引值转换控制器102。运算电路4B至4D中包括的控制器10的小数点位置确定器101确定层#1至#N中的小数点位置,并且输出所确定的小数点位置。

运算电路4B至4D中包括的控制器10的索引值转换控制器102将由运算电路4B至4D中包括的控制器10的小数点位置确定器101确定的小数点位置通知给运算电路4A的控制器10。

运算电路4B至4D的运算部12在层#1至#N中的每个层中使用N%运算数据来执行在前运算。运算电路4B至4D的运算部12使在前运算的运算结果被存储在运算部12所属的运算电路4B至4D中包括的数据RAM42B至42D中。因此,运算电路4B至4D的运算部12可以针对层#1至#N中的每个层流水线进行在前运算。

运算电路4A的控制器10在层#1至#N中的每个层中从运算电路4B至4D中包括的控制器10的索引值转换控制器102接收小数点位置的通知。运算电路4A的控制器10的总体管理器100指示索引值转换控制器102输出所获取的小数点位置。运算电路4A的总体管理器100指示运算电路4A的运算部12使用从索引值转换控制器102输出的小数点位置来更新执行在前运算的运算结果的小数点位置。运算电路4A的总体管理器100指示运算电路4A的运算部12使用相同的小数点位置以使用除要用于在前运算的运算数据项之外的(100-N)%运算数据项来执行主运算。

运算电路4A的控制器10的索引值转换控制器102将所获取的小数点位置输出至运算电路4A的运算部12。

运算电路4A的运算部12从运算电路4A中包括的数据RAM 42A获取在前运算的运算结果。运算电路4A的运算部12使用从索引值转换控制器102输入的小数点位置来将在层#1至#N中的每个层中已经获取的在前运算结果的小数点位置更新为指定的小数点位置。例如,运算电路4A的运算部12对在前运算结果进行量化。运算电路4A的运算部12使用从索引值转换控制器102输入的小数点位置来对(100-N)%运算数据项执行主运算。因此,运算电路4A的运算部12可以针对层#1至#N中的每个层流水线进行N%运算数据的量化以及如下运算,所述运算包括要使用(100-N)%运算数据项执行的运算并且要使用基于从在前运算获得的统计信息确定的小数点位置被执行。

在这种情况下,运算电路4A的运算部12可以与流水线进行要由运算电路4A的运算部12执行的在前运算的处理603并行地执行流水线进行要使用基于从在前运算获得的统计信息确定的小数点位置来执行的运算的处理604。因此,在深度学习中引起运算处理的开销的时间段T3对应于如下单个层,在所述单个层中,在各层中的处理的时间段之中的最长时间段内执行处理。

执行在前运算的运算电路4的数量大于对在前运算的结果进行量化并对其余运算数据项执行运算的运算电路4的数量。因此,优选的是,要用于在前运算的运算数据项的比率高于其余运算数据项的比率。

图25A至图25B描述了根据本实施方式的由服务器1进行的深度学习中的运算处理的流程。图25A至图25B是根据实施方式8的由服务器进行的深度学习中的运算处理的流程图。

运算电路4B至4D的总体管理器100将指示正在执行在前运算的层的编号的i设置为1(步骤S501)。

运算电路4B至4D的总体管理器100指示运算电路4A的运算部12在第i层中使用N%运算数据来执行在前运算。运算电路4B至4D的运算部12在第i层中使用N%运算数据来执行在前运算(步骤S502)。

运算电路4B至4D的总体管理器100确定在第i层中是否已经完全执行了在前运算(步骤S503)。当尚未完全执行在前运算时(步骤S503中的“否”),在前运算处理返回至步骤S502。

另一方面,当在前运算已经被完全执行时(步骤S503中的“是”),运算电路4B至4D的总体管理器100将在前运算的运算结果发送至运算电路4A中包括的数据RAM 42A(步骤S504)。

运算电路4B至4D的小数点位置确定器101使用从在前运算的运算结果获得的统计信息来确定适当的小数点位置(步骤S505)。

运算电路4B至4D的索引值转换控制器102将由小数点位置确定器101确定的小数点位置通知给运算电路4A的控制器10(步骤S506)。

运算电路4B至4D的总体管理器100确定在正在执行的当前迭代中在所有层中是否已经完全执行了在前运算(步骤S507)。当尚未完全执行在前运算的层保留在当前迭代中时(步骤S507中的“否”),运算电路4B至4D的总体管理器100使i增加1(步骤S508)。在前运算处理返回至步骤S502。

另一方面,当在当前迭代中在所有层中已经完全执行了在前运算时(步骤S507中的“是”),运算电路4B至4D的总体管理器100确定在所有迭代中是否已经完全执行了在前运算(步骤S509)。当在所有迭代中的一个或更多个迭代中尚未完全执行在前运算时(步骤S509中的“否”),运算电路4B至4D的总体管理器100开始下一个迭代(步骤S510)并且在前运算处理返回至步骤S501。

另一方面,当在所有迭代中已经完全执行了在前运算时(步骤S509中的“是”),运算电路4B至4D的总体管理器100终止深度学习中的在前运算处理。

运算电路4A的总体管理器100将指示正在执行主运算的层的编号的j设置为1(步骤S510)。

运算电路4A的数据RAM 42A存储由运算电路4B至4D的在层中的每个层中执行在前运算的总体管理器100发送的结果(步骤S511)。

运算电路4A的索引值转换控制器102获取并保存在各层中计算的并由运算电路4B至4D的索引值转换控制器102发送的小数点位置(步骤S512)。运算电路4A的索引值转换控制器102从总体管理器100接收输出用于层中的每个层的小数点位置的指令,并且将要用于各层的小数点位置输出至运算部12。

运算电路4A的运算部12从索引值转换控制器102接收用于层中的每个层的小数点位置的输入。运算电路4A的运算部12从数据RAM 42A获取在前运算结果。运算电路4A的运算部12使用所获取的小数点位置对在前运算结果进行量化(步骤S513)。

运算电路4A的运算部12使用获取的小数点位置对(100-N)%运算数据项执行主运算(步骤S514)。

运算电路4A的总体管理器100确定在当前迭代中在所有层中是否已经完全执行了主运算(步骤S515)。当尚未完全执行主运算的层保留在当前迭代中时(步骤S515中的“否”),运算电路4B至4D的总体管理器100使j增加1(步骤S516)。主运算处理返回至步骤S511。

另一方面,当在当前迭代中在所有层中已经完全执行了主运算时(步骤S515中的“是”),运算电路4A的总体管理器100确定是否要终止学习(步骤S517)。当不要终止学习时(步骤S517中的“否”),运算电路4A的总体管理器100开始下一个迭代(步骤S518)并且在前运算处理返回至步骤S511。

另一方面,当要终止学习时(步骤S517中的“是”),运算电路4A的总体管理器100终止深度学习中的主运算处理。

本实施方式描述了运算电路4B至4D使用输入数据中的一些来执行在前运算的情况。然而,运算电路4B至4D可以使用所有输入数据来执行在前运算。在这种情况下,运算电路4A通过对在前运算的运算结果进行量化来终止运算。

如上所述,根据本实施方式的服务器包括加速器,加速器中的每一个包括多个运算电路。加速器中的每一个使单个运算电路执行在前运算以基于在前运算的统计信息确定适当的小数点位置,并且将在前运算的运算结果存储在存储器中。其余加速器使用确定的小数点位置来对在前运算的结果进行量化,并且使用基于从在前运算获得的统计信息确定的小数点位置来执行运算。这可以流水线进行在前运算以及要使用基于从在前运算获得的统计信息确定的小数点位置来执行的运算。由于处理可以并行地被执行,因此可以减少开销并减少处理时间段。

[实施方式9]

下面描述实施方式9。根据本实施方式的服务器1具有图20中示出的配置。根据本实施方式的服务器1使用加速器51和52来执行在前运算,并且使用加速器56来执行主运算。该特征与实施方式8不同。加速器56是简化版LSI。图26是描述根据实施方式9的运算规程的图。

根据本实施方式的使用在前运算的量化的处理负荷低。通过增加要用于在前运算的运算数据项的比率,可以抑制要在其余运算数据上执行的运算的处理负荷。因此,使用由加速器55和56中的每一个进行的在前运算的量化以及对其余运算数据项执行运算的处理时间段不长。

加速器51和52起到与实施方式8中描述的运算电路4B至4D的作用相同的作用。例如,加速器51和52在层#1至#N中的每个层中执行在前运算,存储在前运算的运算结果,以及使用从运算结果获得的统计信息来确定合适的小数点位置。加速器51和52将所确定的小数点位置输出至加速器56。这可以流水线进行要由加速器51和52执行的在前运算。

加速器56起到与实施方式8中描述的运算电路4A的作用相同的作用。例如,加速器56获取由加速器51和52确定的小数点位置,并且使用小数点位置对在层#1至#N中的每个层中执行在前运算的结果进行量化并对其余运算数据执行主运算。这可以使用由加速器51和52确定的小数点位置来流水线进行要由加速器56执行的量化和主运算。

在这种情况下,加速器56可以与由加速器51和52所执行的流水线进行的在前运算并行地使用所确定的小数点位置来执行流水线进行的运算。因此,在深度学习中引起运算处理的开销的时间段T4对应于如下单个层,在所述单个层中,在各层中的处理的时间段之中的最长时间段内执行处理。

本实施方式描述了加速器51和52使用输入数据中的一些来执行在前运算的情况。然而,加速器51和52可以使用所有输入数据来执行在前运算。在这种情况下,加速器56通过对在前运算的运算结果进行量化来终止运算。

如上所述,根据本实施方式的服务器使用具有足够处理性能的加速器来计算在前运算的结果并确定适当的小数点位置。服务器使用基于运算结果确定的小数点位置来使具有低处理性能的加速器对在前运算结果进行量化并使用其余运算数据项来执行运算。这可以流水线进行在前运算和主运算。由于处理可以并行地被执行,因此可以减少开销并减少处理的时间段。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号