1.本文所讨论的实施方式涉及计算机可读记录介质、信息处理方法和信息处理
装置。
背景技术:
2.近年来,在用于实现高速机器学习的技术中,运算精度优化技术已经引起了人们的注意。虽然通常使用32位浮点数(floating-point number)进行机器学习中的运算,但是在一些情况下,较少的
位数足以解决使用机器学习的问题。当使用较少的位数执行运算时,得到诸如更高的计算速度、改进的功率性能和节省存储器资源的益处。
3.目前,许多公司正在努力开发或应用运算精度优化技术。例如,已知用于通过在图形处理单元(gpu)上使用8位或16位浮点数来以较少位数执行运算的技术。还已知通过使用
张量处理单元(tpu)用8位整数执行推理的技术,tpu是专用于张量运算的处理器。
4.在这些背景下,已经提出了根据机器学习中的阶段来改变定点表示,以最佳精度水平执行运算的处理器。该处理器被设计成特别专用于深度学习,一种机器学习的类型,并且根据训练的进度利用深度学习所具有的特性来优化运算精度。这些特性是“在迭代和下一次迭代之间计算的数值之间的变化越来越小”和“张量具有的值的分布越来越窄”。在这里,一次迭代对应于机器学习中的一次重复。
5.在学习中,使用常规使用的32位浮点格式的训练在学习的前半部分(下文中可以称为“预学习”)期间进行,其中迭代与下一次迭代之间的数值变化以及张量所具有的值的变化幅度相对较大。使用可改变小数点位置的8位或16位定点运算的训练在变化幅度逐渐变小的学习的后半部分(下文中也以可称为“主学习”)期间进行。32位浮点运算的示例包括fp32运算,而8位或16位定点运算的示例包括深度学习整数(dl-int)运算和量化整数(qint)运算。
6.在定点运算中,通过适当地调整数值的小数点位置,数据可以用8位或16位表示。对于dl-int运算,小数点位置由值(下文中可以称为“q值”)确定,每个所述值基于相应张量的元素的各个小数点的分布(下文中可以称为“统计信息”)确定。此后,例如,当执行运算时,用从以8位表示的数值数据中读出的值和q值来执行运算。
7.作为参考,当计算q值时,用被视为非正则值(irregular value)的实现相关的“0”值来执行计算。其原因在于,因为在深度学习运算中,在某些情况下“0”被用作张量的掩码或被用于填充图像的区域,所以当在q值计算中引入“0”作为正则值(regular value)时,难以完全表示数值数据。
8.此外,8位或16位运算的缺点在于更可能导致机器学习失败。因此,作为避免学习失败的手段,可以采用以下方法:将训练中的状态定期存储为检查点,例如,以五千次迭代中存储一次的频率;当发生学习失败时,从检查点执行重新计算。因此,在一般的深度学习中,通过定期创建这些检查点来进行训练。
9.在日本公开特许公报第07-84975号、日本公开特许公报第2019-125014号、日本公
开特许公报第2020-161031号、美国专利第5845051号和国际公开小册子第wo2018/139266号中公开了常规技术。
10.然而,在常规方法中,由于需要进行训练直至机器学习的失败以例如损失值(lost value)没有减少或获得非数字(nan)值的形式变得明显,所以执行了许多浪费的计算。此外,返回到检查点无法消除确定训练正常进行到哪个点的困难。此外,在常规方法中,例如不存在能够在切换至fp32运算之后返回至8位数据类型运算的机制,并且切换之后的计算需要保持使用fp32运算来执行。
11.因此,本发明实施方式的一个方面的目的是提高深度学习中的计算效率。
技术实现要素:
12.根据实施方式的一方面,一种存储程序的非暂态计算机可读记录介质,所述程序使计算机执行处理,该处理包括:在深度学习中,检测与使用特定位数执行的运算相比使用较低位数执行的运算中的学习失败的征兆;回滚至检测到征兆的运算,并且通过使用特定位数的运算执行重新计算;确定是否允许从使用特定位数的运算返回至使用较低位数的运算;以及当允许返回至使用较低位数的运算时,切换至使用较低位数的运算。
附图说明
13.图1是示出根据第一实施方式的信息处理装置100的计算示例的视图;
14.图2是示出根据第一实施方式的用户使用场景的流程的流程图;
15.图3是示出根据第一实施方式的信息处理装置100的功能配置的框图。
16.图4是示出根据第一实施方式的
异常检测方法的示例的视图;
17.图5是示出根据第一实施方式的异常检测方法的另一示例的视图;
18.图6是示出根据第一实施方式的在异常避免处理之后执行的返回处理的示例的视图;
19.图7是示出根据第一实施方式的返回处理中的功能块的示例的视图;
20.图8是示出根据第一实施方式的正常运算期间的数据流的示例的视图;
21.图9是示出根据第一实施方式的q值的示例的视图;
22.图10是示出根据第一实施方式的主处理的处理流程(1)的示例的视图;
23.图11是示出根据第一实施方式的主处理的处理流程(2)的示例的视图;
24.图12是示出根据第一实施方式的子处理的处理流程的示例的视图;以及
25.图13是示出硬件配置示例的图。
具体实施方式
26.将参照附图来说明本发明的优选实施方式。这些实施方式并不旨在限制本发明。实施方式可以在不涉及不一致性的程度适当地组合。
27.[a]第一实施方式
[0028]
信息处理装置100的描述
[0029]
根据第一实施方式的信息处理装置100是使用提供深度学习等功能的机器学习框架来构建机器学习模型的计算机的示例。在深度学习中,以下列方式优化运算处理。在对应
于深度学习的前半部分的预学习期间,迭代和下一次迭代之间的数值变化以及张量所具有的值的变化幅度相对较大,因此使用32位浮点运算来进行训练。在对应于深度学习的后半部分的主学习期间,进行使用可以改变小数点位置的8位或16位定点运算的训练。
[0030]
图1是示出根据第一实施方式的信息处理装置100的计算示例的视图;如图1所示,当接收到用户想要解决的问题的输入时,信息处理装置10定义用于得到解的计算模型,并且对该计算模型进行学习,从而得到问题的解。
[0031]
图1所示的计算模型的示例表示图的结构从迭代=i到迭代=i+1变化的结构。通常,统计信息与可以通过“计算图结构信息”标识的各个节点相关联地被管理。当在计算图的每个节点处执行运算时,代替对应于当前迭代的小数点位置来使用当前迭代的紧之前迭代中的对应运算的输出的统计信息来进行训练。计算图是构造为运算组合的图,并且在深度学习的情况下,计算图被构造成具有诸如add、mul、sum、矩阵乘法和卷积的运算。
[0032]
随后,描述了用户使用信息处理装置100训练计算模型所使用的流程。图2是示出根据第一实施方式的用户的使用场景的流程的流程图。如图2所示,当关于用户期望解决的问题的信息被输入至信息处理装置100(s101)时,信息处理装置100基于输入信息使用通用机器学习算法来确定计算图和运算路径(s102)。
[0033]
随后,信息处理装置100在每个节点处执行运算处理(从s103至s104)。具体地,信息处理装置100使用关于输入张量的信息,执行在节点处设置的运算处理并同时生成哈希值,然后将运算结果和哈希值一起作为输出张量输出至下一节点。
[0034]
此后,当在学习完成时最终确定计算模型的结构时,信息处理装置100将解转换为用户可理解的形式(s105),并且信息处理装置100向诸如显示器、存储单元或用户终端的设备输出用户期望解决的问题的解(s106)。
[0035]
信息处理装置100的功能配置
[0036]
图3是示出根据第一实施方式的信息处理装置100的功能配置的框图。如图3所示,信息处理装置100包括控制单元110、运算单元120、深度学习计算器130和数据库140。
[0037]
控制单元110是控制整个信息处理装置100的处理单元,并且例如是处理器。控制单元110配备有q值计算功能、异常检测功能、回滚功能和返回功能。这些功能的每一个是包括在处理器中的电子电路的示例或处理器执行的处理的示例。
[0038]
在深度学习中,控制单元110检测使用与fp32运算相比的较低位数执行的运算中的学习失败的征兆。然后,控制单元110回滚至检测到学习失败的征兆的运算,并指示运算单元120和深度学习计算器130使用fp32运算来执行重新计算。然后,控制单元110确定是否允许从fp32运算返回至使用较低位数的运算,诸如dl-int运算或qint运算,并且当允许返回时,指示运算单元120和深度学习计算器130切换至使用较低位数的运算。
[0039]
检测学习失败的征兆的处理包括以下处理:当输入张量之间的q值的差在允许范围以外时或当输出张量之间的q值的变化范围大于或等于特定阈值时,检测征兆。检测学习失败的征兆的处理包括以下处理:确定用于计算q值的采样值是否全部为零,并且当采样值全部为零时,基于过去的q值检测征兆。检测学习失败的征兆的处理包括以下处理:当经历上溢或下溢的元素数量相对于要采样的元素数量大于或等于特定阈值时,检测征兆。
[0040]
运算单元120是执行例如用于机器学习的运算的预处理以及与预处理相关的存储器控制的处理单元。例如,在预学习的情况下,运算单元120将每个计算节点的运算类型和
运算参数输出至深度学习计算器130,并请求深度学习计算器130执行32位浮点运算。
[0041]
例如,在主学习的情况下,运算单元120根据统计信息识别运算中的小数点位置。此后,运算单元120将每个计算节点的运算类型、运算参数和小数点位置输出至深度学习计算器130,并请求深度学习计算器130执行诸如dl-int运算的定点运算。
[0042]
深度学习计算器130是用于计算节点处的各种类型运算的加速器,并且更具体地,是指图形处理单元(gpu)或张量处理单元(tpu)。当信息处理装置100不包括加速器时,主机的中央处理单元(cpu)用于运算。在这种情况下,信息处理装置100不需要包括深度学习计算器130。
[0043]
例如,当被指示进行预学习时,深度学习计算器130使用所通知的对应计算节点的运算类型和运算参数来执行32位浮点运算,并且输出运算结果。当被指示进行主学习时,深度学习计算器130使用所通知的对应计算节点的运算类型和运算参数来执行使用所通知的小数点位置的定点运算,诸如dl-int运算,并输出运算结果。深度学习计算器130可以是例如由专用于深度学习的人工智能(ai)处理器(深度学习单元(dlu))执行的处理单元,并且可以是包括在dlu中的电子电路的示例或由dlu执行的处理的示例。
[0044]
数据库140是其中存储各种数据和由控制单元110执行的计算机程序的存储装置的示例。数据库140例如是存储器或硬盘。
[0045]
信息处理装置100的功能详情
[0046]
随后,使用图4至图12描述根据第一实施方式的信息处理装置100的功能详情。在第一实施方式的描述中,dl-int运算被用作深度学习中的低位运算的示例。然而,也可以使用qint运算来代替。运算设备可以应用于cpu或加速器。然而,以下描述假设运算设备应用于cpu。
[0047]
在旨在提高深度学习中的计算效率的第一实施方式中,深度学习大致在以下三个步骤中实现。这三个步骤是:(1)检测dl-int运算中学习失败的征兆;(2)回滚至检测到异常的运算,并且使用fp32运算进行重新计算;以及(3)当允许从fp32运算返回至dl-int运算时,切换至dl-int运算。
[0048]
在根据第一实施方式的深度学习中,使用dl-int运算的机器学习在两个分开的处理中进行:主处理和子处理。其目的是在主处理中以集中的方式执行算术运算,而在子处理中执行dl-int运算中的异常检测处理和q值的计算。在信息处理装置100中,在这两个处理中异步地处理上述三个步骤。图10和图11示出了主处理的处理流程,图12示出了子处理的处理流程。下面描述这些流程。
[0049]
随后,使用图4和图5具体描述用于在深度学习中检测低位运算中的学习失败的征兆的方法。在深度学习中,对于低位运算中的学习失败的征兆存在四种模式,并且在第一实施方式中可以使用以下四个参数在每个模式中检测异常。这四个参数是:(1)输入张量之间的q值差;(2)输出张量之间的q值变化范围;(3)用于计算q值的采样值;以及(4)相对于要采样的元素数量,经历上溢或下溢的元素数量。
[0050]
使用输入张量之间的q值差的异常检测方法
[0051]
q值在张量与张量之间不同,并且例如,输入张量的q值在诸如add、sub和sum的接收多个输入项的运算之间可以不同。q值表示小数点位置,并且输入q值的允许差异在不同的定点运算之间不同。因此,针对每个运算定义允许的输入q值的条件,并且信息处理装置
100在运算开始之前确定输入q值是否满足该条件。条件的默认值可以被设置成通用值,该通用值以后可以由用户改变。
[0052]
此处,使用具体示例来描述使用输入张量之间的q值差的异常检测。例如,假定add的q值差的允许范围已经被设置成2,当在运算z=x+y中(q
x
,qy)=(2,1)时,q值差在允许范围内。因此,信息处理装置100确定运算正常。相反,当(q
x
,qy)=(2,5)时,q值差在允许范围以外,因此信息处理装置100检测到异常。
[0053]
同样,假定卷积的q值差的允许误差已经被设置成2,当在运算y=conv(x,weight)中(q
x
,qw)=(3,4)时,q值差在允许范围内。因此,信息处理装置100确定运算正常。相反,当(q
x
,qw)=(1,4)时,q值差在允许范围以外,因此信息处理装置100检测到异常。
[0054]
随后,描述在输入张量之间的q值差中检测到异常时执行的处理。图4是示出根据第一实施方式的异常检测方法的示例的视图。图4的示例表示包括运算a至运算d的计算图。例如,如图4所示,当异常检测功能在作为dl-int运算的运算a或运算b中检测到异常时(ng路径),信息处理装置100插入用于切换至fp32运算的运算(cast),并作为fp32运算执行运算c和运算d。相反,当异常检测功能没有检测到异常时(ok路径),信息处理装置100继续作为dl-int运算执行运算c和运算d。
[0055]
通过识别各个运算的输入张量的相应数据类型,由异常检测功能作出关于运算是作为dl-int运算执行还是切换至fp32运算并作为fp32运算执行的这种确定。该确定对应于例如在图10所示的主处理中的确定“输入张量的数据类型包括fp32?”。
[0056]
当在运算中已经检测到异常时,不仅该运算,而且该运算的后续运算都切换至fp32运算,这是因为在已经发生异常的运算之后的运算中很可能发生异常。因此,在输入张量的数据类型是fp32的情况下,使用fp32运算强制执行计算,由此信息处理装置100可以将在先前运算中发生异常的信息传递至其后续运算。
[0057]
使用输出张量间的q值变化范围的异常检测方法
[0058]
随后,描述使用输出张量之间的q值变化范围的异常检测方法。八位学习是基于以下前提:在迭代和下一次迭代之间的计算数值变化越来越小。因此,在迭代和下一次迭代之间具有大范围的q值变化与这个前提相矛盾。在检测异常时,使用表示为|q-q
avg
|《t的不等式。当该不等式不成立时,信息处理装置100确定已经检测到异常。在该不等式中,“q”表示输出张量的q值,“q
avg”表示过去n次迭代的输出张量的q值的平均值,“t”表示阈值。过去迭代的次数n和阈值t的默认值可以被设置成通用值,该通用值以后可以由用户改变。
[0059]
随后,描述在输出张量之间的q值变化范围中检测到异常时执行的处理。图5是示出根据第一实施方式的异常检测方法的另一示例的视图。在图5的示例中,按顺序作为dl-int运算执行运算a、运算b和运算c。例如,在执行运算b之前,信息处理装置100检查dl-int异常标志,从而确定在运算b之前的运算中是否发生了异常。该确定对应于例如在图11所示的主处理中的确定“异常检测功能的dl-int异常标志为开(on)?”。
[0060]
当从dl-int异常标志检测到异常时,信息处理装置100基于异常发生运算标识(id)回滚至已发生异常的运算,并使用fp32运算执行重新计算。
[0061]
更具体地描述回滚处理。例如,在图5所示的异常检测方法中的异常检测中,信息处理装置100在数据库140中记录发生了异常的运算的唯一id(运算id)。在识别出dl-int异常标志为开时,信息处理装置100基于运算id确定回滚至哪个运算。
[0062]
然后,信息处理装置100在回滚之后使用fp32运算恢复处理。处理的恢复例如对应于在图11所示的主处理中针对“该处理是通过回始的?”标记为“是”的路径。如在使用输入张量之间的q值差的异常检测方法的情况下,信息处理装置100在回滚之后作为fp32运算来执行运算。关于是否回滚并作为fp32运算来执行运算的确定对应于例如在使用输入张量之间的q值差的异常检测方法的情况下在图10所示的主处理中的确定“输入张量的数据类型包括fp32?”。
[0063]
与之相反,当从dl-int异常标志没有检测到异常时,信息处理装置100继续作为dl-int运算来执行运算b。在执行运算b之后,如图5所示,信息处理装置100从获得的数值数据和使用的q值计算新的q值,并将执行检查的作业(job)馈送至子处理中。在这种情况下,所使用的q值例如是当前迭代的紧之前的迭代的q值。这种向子处理的馈送对应于例如图11所示的主处理中的“将q值计算处理馈送至子处理中”。在由信息处理装置100执行的主处理中,在不等待子处理中的处理完成的情况下执行运算b。
[0064]
在由信息处理装置100执行的子处理中,处理从主处理馈送的作业。在完成运算b的运算时获得输出数值数据之后,子处理开始处理。在子处理中,信息处理装置100从主处理接收运算结果和运算id。随后,通过对作为运算结果接收的输出数值数据进行采样,信息处理装置100随机地提取用于q值计算的元素。该采样对应于例如在图12所示的子处理中的“从数值数据中采样用于q值计算的值”。
[0065]
随后,信息处理装置100对所获得的数值数据和q值执行检查处理。该检查处理对应于图12所示的子处理中的“检查q值变化量”。同时,信息处理装置100从登记在数据库140中的过去的q值计算q
avg
。此后,在检测到异常时,信息处理装置100开启dl-int异常标志并记录对应的运算id。当存在已经被馈送至子处理中的任何作业时,回滚使得该作业变得不必要,并且所馈送的作业因此被清除。相反,当没有检测到异常时,信息处理装置100在数据库140中登记对应的q值。该登记处理对应于图12所示的子处理中的“在数据库中登记q值”。
[0066]
使用用于计算q值的采样值的异常检测方法
[0067]
随后,描述使用用于计算q值的采样值的异常检测方法。信息处理装置100使用输出数值数据进行q值计算;然而,在实际运算中,当数据中的所有值都用于计算时,计算成本很高。因此,信息处理装置100从采样的数值数据计算q值。
[0068]
在该计算中,如上所述,“0”值被视为非正则值,并且不用于q值计算。因此,当采样数值全部为“0”(全部为零)时,相应的q值也被设置成非正则值。当使用这种不规则q值时,不允许从8位数值数据获得实际值。在该计算中,信息处理设备100在通过采样巧合地发生“全零”情况的情况和通过运算不可避免地发生“全零”情况的情况之间进行区分。当通过运算不可避免地发生“全零”情况时,允许使用不规则q值。
[0069]
本文中,通过特定示例来描述发生“全零”情况的示例。例如,作为“全零”情况不可避免地发生的示例,在计算其中一个是零矢量的两个矢量的内积时,产生0作为输出,如下面的表达式(1)所示。
[0070][0071]
作为“全零”情况巧合发生的示例,输入张量和权重的矩阵运算可以产生0,如下面
的表达式(2)所示。
[0072][0073]
为了区分发生“全零”情况的这两种情况,信息处理装置100在发生“全零”情况时从过去的q值计算q
avg
,并确定q
avg
是否也是不正则值。当q
avg
不是不正则值时,信息处理装置100确定该情况是异常情况,并开启dl-int异常标志。
[0074]
在用于计算q值的采样值中检测到异常的情况下的处理与在输出张量之间的q值的变化范围中检测到异常的情况下的上述处理相同。根据使用用于计算q值的采样值的异常检测方法的检查处理对应于例如图12所示的子处理中的“检查全
‘
零
’”
。
[0075]
使用经历上溢或下溢的元素数量的异常检测方法
[0076]
随后,描述使用经历上溢或下溢的元素数量的异常检测方法。在dl-int运算中,当整数部分中的位数是n而小数部分中的位数是m时,可以表示的值的范围是从-(2
n-1
)到2
n-1-2-m
,其中n+m+1=8。当由运算获得的输出在该范围以外时,发生上溢或下溢。当经历上溢或下溢的元素数量低时,继续学习不会引起问题。然而,当经历上溢或下溢的元素数量的比例高时,学习失败。因此,信息处理装置100确定经历上溢或下溢的元素数量的比例是否不大于特定值。
[0077]
现在通过特定示例描述关于经历上溢或下溢的元素数量的比例是否不大于特定值的确定。例如,假设要采样的元素数量是256,经历上溢或下溢的元素数量是n,并且阈值被设置成不大于5%。当n/256不小于5%时,信息处理装置100检测为异常,并且当n/256小于5%时,信息处理装置100将运算确定为正常。在检测到异常时,信息处理装置100开启dl-int异常标志。
[0078]
在经历上溢或下溢的元素数量中已经检测到异常的情况下的处理与在输出张量之间的q值的变化范围中已经检测到异常的情况下的上述处理相同。根据使用经历上溢或下溢的元素数量的异常检测方法的检查处理对应于例如图12所示的子处理中的“检查上溢和下溢”。
[0079]
返回处理
[0080]
随后,描述异常检测后的返回处理。当在检测到异常之后运算保持作为fp32运算执行时,处理性能保持为低。因此,当异常已被解决从而允许返回至dl-int运算时,信息处理装置100从fp32运算切换至dl-int运算以恢复高性能。
[0081]
图6是示出根据第一实施方式的在异常避免处理之后执行的返回处理的示例的视图,图6示出了表示运算的状态的运算状态以及运算状态之间的转换、用于转换至各个运算状态的条件、以及当运算将每个运算状态作为其状态时的运算的数据类型。
[0082]
图7是示出根据第一实施方式的返回处理中的功能块的示例的视图。如图7所示,对于诸如dl-int运算和fp32运算的运算,信息处理装置100保留各自的内部状态和对每个状态计数的状态计数器,其中每个内部状态对应于任何一个运算状态。
[0083]
在状态为dl-int启用的情况下,信息处理装置100检查紧之前迭代的数据类型,并且当运算的数据类型为fp32时,将状态改变为dl-int禁用。当输入张量包括fp32时,信息处理装置100也将状态改变为dl-int禁用。在状态为dl-int禁用的情况下,信息处理装置100检查返回条件,从而尝试返回至dl-int运算。返回条件例如是(1)在状态为dl-int禁用的情
况下训练已经重复k次,以及(2)重试率不大于特定阈值x%,与过去l次迭代成比例。重试率可以是异常发生率。
[0084]
值l、k和x各自的默认值可以被设置成通用值,该通用值以后可以由用户改变。例如,可以使用表示成重试率=过去l次迭代中dl-int重试次数/过去l次迭代中dl-int启用次数
×
100的公式来计算重试率。信息处理装置100可以将过去l次迭代中的dl-int启用次数、dl-int禁止次数和dl-int重试次数记录至状态计数器中,并从状态计数器获取其对应的值。
[0085]
然后,当满足上述返回条件(1)和(2)时,信息处理装置100将状态从dl-int禁用改变成dl-int启用。更新该状态对应于例如图10所示的主处理中的“更新状态计数器”。
[0086]
例如,当不充分的预学习是学习失败的原因时,返回条件(1)是有效的。通过在状态为dl-int禁用的情况下进一步重复训练,保持了在迭代和下一次迭代之间的计算数值之间具有越来越小的变化以及张量具有的值的分布越来越窄的特性。因此,期望在返回后正常进行训练。当运算可能不稳定时,返回条件(2)是有效的。根据计算图的结构,当切换至dl-int运算时,一些运算是不稳定的。因此,具有高的异常发生率的运算可以继续是fp32运算而不返回至dl-int运算。
[0087]
描述了在正常运算期间在状态为dl-int启用的情况下的一系列数据的流程。图8是示出根据第一实施方式的正常运算期间的数据流的示例的视图。图9是示出根据第一实施方式的q值的示例的视图。图8是以下示例,其中,运算id=2,并且假设两个输入和一个输出用于运算-2。数据库140中的q[i][t]表示对应于运算id=i和迭代=t的q值。图9的示例中示出的q[2][t-1]是更新了q[2][t]的情况下在图8中引用的q值。每个数值数据是多维矩阵。
[0088]
有利效果
[0089]
如上所述,信息处理程序使信息处理装置100执行以下处理:在深度学习中,检测与使用特定位数执行的运算(例如fp32运算)相比使用较低位数执行的运算中的学习失败的征兆;回滚至检测到学习失败的征兆的运算,并通过使用特定位数的运算执行重新计算;确定是否允许从使用特定位数的运算返回至使用较低位数的运算;并且当允许返回至使用较低位数的运算时,切换至使用较低位数的运算。
[0090]
因此,信息处理装置100可以通过以下操作来最小化重新计算的处理:将学习失败的征兆检测为异常,并且在机器学习失败以例如损失值没有减少或获得非数字(nan)值的形式变得明显之前回滚。此外,通过从使用特定位数的运算返回至使用较低位数的运算,信息处理装置100能够在深度学习中实现更高的计算速度、改进的功率性能和存储器资源节省。因此,信息处理装置100可以提高深度学习中的计算效率。
[0091]
切换至使用较低位数的运算的处理包括切换至dl-int运算或qint运算的处理。
[0092]
因此,信息处理装置100可以提高深度学习的性能。
[0093]
检测学习失败的征兆的处理包括以下处理:当输入张量之间的q值差在允许范围之外时检测征兆。
[0094]
因此,信息处理装置100可以将学习失败的征兆检测为异常值,从而可以提高深度学习中的计算效率。
[0095]
检测学习失败的征兆的处理包括以下处理:当输出张量之间的q值的变化范围大
于或等于特定阈值时检测征兆。
[0096]
因此,信息处理装置100可以将学习失败的征兆检测为异常值,从而可以提高深度学习中的计算效率。
[0097]
检测学习失败的征兆的处理包括以下处理:确定用于计算q值的采样值是否全部为零,并且当采样值全部为零时,基于过去的q值检测征兆。
[0098]
因此,信息处理装置100可以将学习失败的征兆检测为异常值,从而可以提高深度学习中的计算效率。
[0099]
检测学习失败的征兆的处理包括以下处理:当经历上溢或下溢的元素数量相对于要采样元素数量大于或等于特定阈值时检测征兆。
[0100]
因此,信息处理装置100可以将学习失败的征兆检测为异常值,从而可以提高深度学习中的计算效率。
[0101]
确定是否允许返回的处理包括以下处理:通过使用特定位数的运算来重复训练第一特定次数,以及当异常发生率不大于第二特定次数时,确定允许返回至使用较低位数的运算。
[0102]
因此,在深度学习中,信息处理装置100可以在正常进行训练的同时提高性能。
[0103]
系统
[0104]
除非另有说明,否则处理流程、控制流程、具体名称以及包括上述或附图中所示的各种数据和参数的信息可以根据需要改变。实施方式中描述的具体示例、分布、数值仅是示例,并且可以根据需要改变。
[0105]
每个所示装置的组成元件在功能上是概念性的,并且不需要如附图中所示的物理配置。即,每个装置在分布和集成方面的具体形式不限于所示的形式。即,根据各种负载、使用条件等,可以将装置的全部或部分以功能或物理上分布或集成的形式配置在任何期望的单元中。
[0106]
此外,在每个装置中执行的每个处理功能的全部或部分可以由cpu和由cpu分析和执行的计算机程序来实现,或者可以使用有线逻辑实现为硬件。
[0107]
硬件
[0108]
描述了上述信息处理装置100的硬件结构。图13是示出硬件配置示例的图。如图13所示,信息处理装置100包括通信单元100a、硬盘驱动器(hdd)100b、存储器100c和处理器100d。图13中所示的部件经由总线等彼此连接。
[0109]
通信装置100a是网络接口卡等并且与另一服务器通信。hdd 100b中存储有运行图3所示功能的计算机程序和数据库。
[0110]
处理器100d从hdd 100b等中读出执行与图3所示的各个处理单元执行的处理相同的处理的计算机程序,并且将该计算机程序部署至存储器100c上,从而运行用于执行图3描述的各个功能的处理。例如,该处理执行与由包括在信息处理装置100中的各个处理单元执行的功能相同的功能。具体地,例如,处理器100d从hdd 100b等读出具有与图3所示的各个处理单元具有功能相同的功能的计算机程序。然后,处理器100d执行与由图3所示的处理单元执行的处理相同的处理。
[0111]
因此,信息处理装置100读出并执行计算机程序,从而作为执行处理的各个部分的信息处理装置运行。此外,信息处理装置100还能够通过使用介质读取装置从记录介质读出
上述计算机程序并执行所读出的计算机程序来实现与上述实施方式中相同的功能。在另一实施方式中描述的计算机程序不限于由信息处理装置100执行。例如,本发明可以应用于另一计算机或服务器执行计算机程序的情况或这些计算机和服务器一起工作以执行计算机程序的情况。
[0112]
该计算机程序可以经由诸如因特网的网络来分发。此外,该计算机程序可以通过记录在诸如硬盘、软盘(fd)、致密盘只读存储器(cd-rom)、磁光盘(mo)、或数字多功能光盘(dvd)的计算机可读记录介质上并且由计算机从记录介质中读出来执行。
[0113]
[b]第二实施方式
[0114]
虽然上面描述了本发明的实施方式,但是本发明可以以不同于上述实施方式的各种形式来实现。
[0115]
一方面,提高了深度学习中的计算效率。
技术特征:
1.一种存储有程序的计算机可读记录介质,所述程序使计算机执行处理,所述处理包括:在深度学习中,检测与使用特定位数执行的运算相比使用较低位数执行的运算中的学习失败的征兆;回滚至检测到所述征兆的运算,并且通过使用所述特定位数的运算来执行重新计算;确定是否允许从使用所述特定位数的运算返回至使用所述较低位数的运算;以及当允许返回至使用所述较低位数的运算时,切换至使用所述较低位数的运算。2.根据权利要求1所述的计算机可读记录介质,其中,切换至使用所述较低位数的运算包括:切换至深度学习整数dl-int运算或量化整数qint运算。3.根据权利要求1或2所述的计算机可读记录介质,其中,检测所述征兆包括:当输入张量的q值之间的差在允许范围以外时,检测所述征兆。4.根据权利要求1或2所述的计算机可读记录介质,其中,检测所述征兆包括:当输出张量之间的q值变化范围大于或等于特定阈值时,检测所述征兆。5.根据权利要求1或2所述的计算机可读记录介质,其中,检测所述征兆包括:确定用于计算q值的采样值是否全部为零,以及当所述采样值全部为零时,基于过去的q值检测所述征兆。6.根据权利要求1或2所述的计算机可读记录介质,其中,检测所述征兆包括:当经历上溢或下溢的元素数量相对于要采样的元素数量大于或等于特定阈值时,检测所述征兆。7.根据权利要求1所述的计算机可读记录介质,其中,确定是否允许所述返回包括:通过使用所述特定位数的运算来重复训练第一特定次数,以及当异常发生率不大于第二特定次数时,确定允许返回至使用所述较低位数的运算。8.一种由计算机执行的信息处理方法,所述方法包括:在深度学习中,检测与使用特定位数执行的运算相比使用较低位数执行的运算中的学习失败的征兆;回滚至检测到所述征兆的运算,并且通过使用所述特定位数的运算执行重新计算;确定是否允许从使用所述特定位数的运算返回至使用所述较低位数的运算;以及当允许返回至使用所述较低位数的运算时,切换至使用所述较低位数的运算。9.一种包括控制器的信息处理装置,被配置成执行处理,所述处理包括:在深度学习中,检测与使用特定位数执行的运算相比使用较低位数执行的运算中的学习失败的征兆;回滚至检测到所述征兆的运算,并且通过使用所述特定位数的运算执行重新计算;确定是否允许从使用所述特定位数的运算返回至使用所述较低位数的运算;以及当允许返回至使用所述较低位数的运算时,切换至使用所述较低位数的运算。10.根据权利要求9所述的信息处理装置,其中,切换至使用所述较低位数的运算包括:切换至深度学习整数dl-int运算或量化整数qint运算。
技术总结
提供了计算机可读记录介质、信息处理方法和信息处理装置。使计算机执行以下处理:在深度学习中,检测与使用特定位数执行的运算相比使用较低位数执行的运算中的学习失败的征兆;回滚至检测到征兆的运算,并且通过使用特定位数的运算执行重新计算;确定是否允许从使用特定位数的运算返回至使用较低位数的运算;并且当允许返回至使用较低位数的运算时,切换至使用较低位数的运算。用较低位数的运算。用较低位数的运算。
技术研发人员:
郭家俊 加藤雅也 赤尾和俊 福士达也 胜木隆史 泽田孝
受保护的技术使用者:
富士通株式会社
技术研发日:
2022.03.18
技术公布日:
2022/12/22