一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

信息处理装置、机器学习方法和计算机可读存储介质与流程

2022-02-24 18:52:09 来源:中国专利 TAG:


1.本文中讨论的实施方式涉及信息处理装置、机器学习方法和存储机器学习程序的非暂态计算机可读存储介质。


背景技术:

2.近年来,各种公司一直致力于开发针对深度学习而优化的处理器。对于机器学习也是如此。深度学习是机器学习的一种方法。
3.深度学习中使用的运算主要是张量运算,并且其特征在于,随着学习的进行,张量的每个元素的值的偏差变小。聚焦于深度学习中执行的许多运算的这样的特殊属性,已经发布了针对深度学习设计的处理器,例如以8位整数执行推理运算的处理器。通常,当使用8位定点数或16位定点数来执行运算时,可以缩短运算时间。
4.期望这些处理器通过以低运算精度执行运算来改善功率到运算性能。然而,由于现有处理器的运算精度由硬件预先确定,因此,在随着学习的进行而张量的每个元素的变化变小的深度学习中执行的运算的特性没有被充分利用。此外,即使在深度学习中使用的运算也具有以下缺点:如果运算精度降低,则学习有时不会依赖于运算而进行。指定这样的运算是困难的。
5.因此,存在用于根据运算的内容来确定是执行32位浮点运算还是8位定点运算的技术。然而,在深度学习的一次迭代中执行的运算中,存在即使在学习已经进行到一定程度之后张量的每个元素的变化还变大的一些运算。在这样的每个元素的变化中间变大的运算中,在根据运算的内容预先降低运算精度时,存在难以进行精确运算的可能性。
6.注意,作为深度学习中的算术处理的技术,存在以下现有技术:预先计算输入张量的每个元素以将运算转换成2的幂次方的表达式形式,并且通过使用用于卷积运算的权重张量和输入张量的加法和移位运算来执行运算。此外,存在以下现有技术:获取关于作为对具有定点数的数据执行命令的结果的位分布的统计信息,并且更新定点数的小数点位置。另外,存在以下现有技术:从一系列运算中识别第一运算,选择要与第一运算分组的第二运算,并且通过分组的运算来处理输入数据。
7.相关技术的示例包括日本特开专利公报第2018-181313号、日本特开专利公报第2018-124681号和日本特开专利公报第2019-169150号。
8.然而,在将32位浮点数转换为16位定点数或8位定点数时以及将16位定点数或8位定点数转换为32位浮点数时,由于数据类型转换而产生延迟。因此,在将32位浮点数转换为8位定点数之后执行运算,然后再次执行诸如返回32位浮点数的处理时,不一定每次缩短了运算时间,并且也不保证减少了处理时间。例如,存在以下情况:转换数据类型需要时间,并且当整体考虑时,通过执行使用32位浮点数的处理来启用高速运算。以这种方式,当关注个体运算并且针对每个运算确定数据类型使得局部处理时间被缩短时,存在难以将用于整个深度学习的处理时间保持为最小的可能性。因此,难以提高深度学习的效率。这里,由于在处理时间内执行运算要消耗电力并且确保运算资源,因此与运算有关的成本可以被认为与
处理时间成比例,并且因此处理时间有时被称为运算成本。
9.此外,即使利用通过使用输入张量和卷积运算的权重张量执行加法和移位运算来执行运算的现有技术,也可以提高每次运算的效率,但是难以使整个深度学习的处理时间保持较短。另外,即使在基于作为执行命令的结果的位分布的统计信息来更新定点数的小数点位置的现有技术中,也没有考虑用于整个深度学习的处理时间,并且难以使处理时间保持较短。同样地,即使在将一系列运算分组以处理输入数据的现有技术中,因为没有考虑由于数据类型转换而造成的延迟,因此难以使整个深度学习的处理时间保持较短。因此,难以通过现有技术中的任何技术来提高深度学习的效率。
10.在下面公开的实施方式的方面中,提供了提高深度学习的效率的解决方案。


技术实现要素:

11.根据实施方式的一方面,信息处理装置包括:运算单元,其在机器学习中顺序地执行一系列多个运算;初步数据类型确定单元,其确定待用于多个运算中的每个运算的数据类型,多个运算是待在机器学习处理中使用的一系列运算;数据类型修改单元,其通过将所确定的待在每个运算中使用的数据类型修改为比通过所述确定所定义的数据类型更精确的数据类型来减少总处理时间,该总处理时间是包括多个运算中的每个运算的运算时间以及转换数据类型所花费的转换时间的时间段;以及执行控制单元,其使运算单元通过使用多个运算中的每个运算的经修改后的数据类型来执行多个运算中的每个运算。
12.本发明的目的和优点将通过在权利要求中特别指出的元件和组合来实现和获得。
13.应当理解,前面的概括描述和下面的详细描述都是示例性和说明性的并且不限制本发明。
附图说明
14.图1是信息处理装置的硬件配置图;
15.图2是用于说明学习过程的图;
16.图3是根据一种实施方式的信息处理装置的框图;
17.图4是示出计算图的示例的图。
18.图5是示出运算时间和转换时间的示例的图;
19.图6是表示运算时间管理表和转换时间管理表的示例的图;
20.图7是表示运算的群集的图;
21.图8是用于说明计算图中的运算的数据类型的修改的图;以及
22.图9是根据一种实施方式的信息处理装置的深度学习的流程图。
具体实施方式
23.下面将基于附图详细描述本技术中公开的信息处理装置、机器学习方法和机器学习程序的实施方式。注意,以下实施方式不限制本技术中公开的信息处理装置、机器学习方法和机器学习程序。
24.[第一实施方式]
[0025]
图1是信息处理装置的硬件配置图。信息处理装置1执行深度学习。下面将描述执
行深度学习的信息处理装置1。然而,当执行另一种机器学习时,信息处理装置1也具有类似的功能。存在将信息处理装置1称为节点的情况。如图1所示,信息处理装置1包括处理器11、存储器12、存储装置13和网络接口14。
[0026]
例如,中央处理单元(cpu)或图形处理单元(gpu)可以用作处理器11。处理器11经由总线连接至存储器12、存储装置13和网络接口14。
[0027]
存储器12是易失性存储器。存储器12临时保存从存储装置13读取的用于学习的数据,直到数据被传送至处理器11。此外,存储器12保存用于由处理器11执行的算术处理的各种数据。
[0028]
存储装置13是诸如硬盘驱动器(hdd)或固态驱动器(ssd)的非易失性存储器。存储装置13存储当信息处理装置1执行深度学习时使用的学习数据。
[0029]
网络接口14是通过ethernet(注册商标,以太网)或infiniband(注册商标,无限带宽)连接至另一信息处理装置1的接口。网络接口14中继在处理器11与安装在另一信息处理装置1中的处理器11之间数据的发送和接收。
[0030]
信息处理装置1使用如图2所示的多层神经网络来执行深度学习。图2是用于说明学习过程的图。信息处理装置1通过在各个层中重复运算来提高识别准确度。例如,如图2所示,在各个层中分别执行运算#1至运算#n的情况下,信息处理装置1使用学习数据重复运算#1至运算#n。这里,如图2所示,将重复执行一次运算#1至运算#n的学习周期2称为迭代。例如,信息处理装置1通过多次重复迭代来完成深度学习。
[0031]
接下来,将参照图3描述在根据本实施方式的信息处理装置1中提供的深度学习的功能。图3是根据实施方式的信息处理装置的框图。
[0032]
如图3所示,信息处理装置1包括深度学习框架10、用户应用执行单元20和学习数据存储器单元30。例如,通过图1所示的存储装置13来实现学习数据存储器单元30。学习数据存储器单元30预先存储在深度学习中使用的多个学习数据。
[0033]
用户应用执行单元20通过读取并且执行预先输入的用户程序来激活由运算子创建的深度学习应用。然后,用户应用执行单元20将由激活的用户应用指定的用于深度学习的执行命令输出至执行控制单元102。
[0034]
深度学习框架10是被开发以容易地创建深度学习应用的软件库组。由图1所示的处理器11和存储器12实现深度学习框架10。深度学习框架10包括运算单元101、执行控制单元102、数据类型修改单元103、初步数据类型确定单元104、学习数据读取单元105、管理表存储单元106和计算图存储单元107。
[0035]
计算图存储单元107保存对包括在一次迭代中的各个运算过程进行图示的计算图。计算图具有表示每个运算的节点,并且为每个节点登记要使用的运算内容和数据类型。此后,初步数据类型确定单元104将每个运算的数据类型暂时登记至由计算图存储单元107保存的计算图。接下来,由数据类型修改单元103的数据类型控制单元132修改暂时登记的数据类型,并且然后将每个运算的数据类型登记在计算图存储单元107中。
[0036]
图4是示出计算图的示例的图。图4所示的计算图200包括由节点201至207指示的七个运算。关于由节点201至207执行的运算的信息登记在计算图200中。例如,节点203执行将节点201和202的运算结果指定为输入的运算,并且该运算的结果用作节点204的输入。
[0037]
根据待执行的深度学习,将待在每个运算中使用的数据类型未登记的状态下的计
算图200登记在计算图存储单元107中。例如,用户应用执行单元20可以根据要执行的深度学习将计算图连同深度学习执行指令一起登记在计算图存储单元107中。
[0038]
运算单元101执行指定为深度学习运算的运算以进行深度学习。运算单元101在每次迭代开始时接收来自执行控制单元102的运算指令单元121的学习数据的输入。此后,运算单元101接收来自执行控制单元102的运算指令单元121的运算执行指令。然后,运算单元101读出存储在计算图存储单元107中的计算图,以使用学习数据作为输入、根据计算图来执行运算,并且结束一次迭代。当一次迭代中包括的所有运算完成时,运算单元101将迭代完成通知输出至运算指令单元121。运算单元101重复算术处理,直到接收到来自运算指令单元121的深度学习完成的通知为止。
[0039]
执行控制单元102综合控制深度学习中的各种处理。执行控制单元102包括运算指令单元121、管理表创建指令单元122、运算数据类型控制指令单元123和数据读取指令单元124。
[0040]
运算指令单元121接收来自管理表创建指令单元122的开始深度学习的指令。然后,运算指令单元121开始深度学习运算。运算指令单元121在深度学习中的每次迭代开始时执行以下处理。
[0041]
运算指令单元121将针对待用于学习的学习数据的获取请求输出至数据读取指令单元124。然后,运算指令单元121接收来自数据读取指令单元124的作为对获取请求的响应的学习数据的输入。
[0042]
接着,运算指令单元121指示运算数据类型控制指令单元123执行运算数据类型确定处理。此后,运算指令单元121接收来自运算数据类型控制指令单元123的数据类型确定的通知。然后,运算指令单元121将学习数据输出至运算单元101,并且指示运算单元101执行运算。
[0043]
此后,运算指令单元121接收来自运算单元101的迭代完成通知的输入。然后,运算指令单元121重复以下处理:获取学习数据、给出用于运算数据类型确定处理的执行指令以及使运算单元101执行运算。
[0044]
运算指令单元121使运算单元101针对每次迭代重复各个层中的运算,直到深度学习完成。这里,在满足预定条件的情况下,例如在预定次数的迭代结束的情况下或者在识别准确度超过90%的情况下,运算指令单元121验证深度学习完成。每当完成规定次数的迭代时,通过使用测试数据执行识别处理来获得识别准确度。当验证完成深度学习时,运算指令单元121向运算单元101发送深度学习完成的通知。
[0045]
管理表创建指令单元122获取从用户应用执行单元20输入至执行控制单元102的深度学习执行指令。然后,管理表创建指令单元122指示数据类型修改单元103的单值计算单元131计算执行一次迭代中包括的每个运算所花费的运算时间和转换运算数据所花费的转换时间。此后,管理表创建指令单元122接收来自单值计算单元131的管理表创建完成响应。然后,管理表创建指令单元122指示运算指令单元121开始深度学习。
[0046]
运算数据类型控制指令单元123接收来自运算指令单元121的执行运算数据类型确定处理的指令。然后,运算数据类型控制指令单元123指示初步数据类型确定单元104执行数据类型初步确定处理。这里,数据类型初步确定是考虑每个运算的运算结果的状态而暂时确定被认为对于每个运算而言最优的数据类型的处理。
[0047]
此后,运算数据类型控制指令单元123接收来自初步数据类型确定单元104的每个运算的数据类型的暂时确定的通知。接着,运算数据类型控制指令单元123指示数据类型修改单元103的数据类型控制单元132修改数据类型。此后,运算数据类型控制指令单元123接收来自数据类型控制单元132的针对数据类型的结论的通知。然后,运算数据类型控制指令单元123将数据类型确定的通知发送至运算指令单元121。
[0048]
数据读取指令单元124接收来自运算指令单元121的针对待用于学习的学习数据的获取请求。然后,数据读取指令单元124指示学习数据读取单元105读取待用于学习的学习数据。此后,数据读取指令单元124从学习数据读取单元105获取待用于学习的学习数据。然后,数据读取指令单元124将所获取的学习数据输出至运算指令单元121。
[0049]
随后,每当迭代结束时,数据读取指令单元124接收来自运算指令单元121的针对学习数据的获取请求。然后,数据读取指令单元124指示学习数据读取单元105读取学习数据以获取学习数据,并且针对每次迭代将所获取的学习数据输出至运算指令单元121。
[0050]
学习数据读取单元105接收来自数据读取指令单元124的读取待用于学习的学习数据的指令。然后,学习数据读取单元105从学习数据存储器单元30读取指定的学习数据。此后,学习数据读取单元105将读取的学习数据发送至数据读取指令单元124。
[0051]
初步数据类型确定单元104接收来自运算数据类型控制指令单元123的用于数据类型初步确定处理的执行指令。然后,初步数据类型确定单元104从运算单元101获取紧接在前面的迭代中的每个运算的运算结果。附加地,初步数据类型确定单元104根据在每个运算的运算结果中确定的小数点位置来计算可表示比率,该可表示比率是在使用32位浮点作为数据类型的运算中能够使用8位定点表示的张量元素的数目的比率。接着,对于计算出的可表示比率超过阈值的运算,初步数据类型确定单元104算出表示可表示比率的变化的每次迭代的波动。随后,初步数据类型确定单元104验证所计算的波动是否小于波动阈值。当波动小于波动阈值时,初步数据类型确定单元104验证相关运算的小数点位置收敛,并且因此将相关运算的运算数据类型初步确定为8位定点数。这里,说明了转换到8位定点的情况,而且在转换到具有减少的信息量的另一低精度数据类型(例如16位定点)的情况下,初步数据类型确定单元104可以类似地初步确定每个运算的数据类型。
[0052]
此后,初步数据类型确定单元104在由计算图存储单元107保存的计算图中登记每个运算的初步确定的数据类型,并且更新计算图中待用于每个运算的数据类型信息。通过该处理,如图4的下部所示,当面对页面观看时,在节点201至207中的每个中使用的数据类型登记在计算图200中。在图4中,初步数据类型确定单元104暂时确定8位定点数用作由填满的圆圈表示的节点203、205和206处的数据类型。此外,初步数据类型确定单元104暂时确定节点201、202、204和207处使用32位浮点数。此后,初步数据类型确定单元104将每个运算的数据类型的暂时确定的通知输出至运算数据类型控制指令单元123。
[0053]
数据类型修改单元103根据整个迭代的处理时间来修改每个运算的暂时确定的数据类型。数据类型修改单元103包括单值计算单元131和数据类型控制单元132。
[0054]
单值计算单元131接收来自管理表创建指令单元122的计算执行一次迭代中包括的每个运算所花费的运算时间和转换运算数据所花费的转换时间的指令。然后,单值计算单元131从计算图存储单元107获取计算图。
[0055]
接着,单值计算单元131通过使用预先给出以计算运算时间的值执行计算图中的
每个节点的运算来使用分析器(profiler)计算每个运算的运算时间。在这种情况下,单值计算单元131使用32位浮点数和8位定点数两者作为用于计算运算时间的值,以计算使用32位浮点数时的运算时间和使用8位定点数时的运算时间。这里,单值计算单元131将计算图中的各个运算看作彼此不同的运算。例如,即使运算是相同类型的运算,但是当在一次迭代中以不同的定时执行运算时,单值计算单元131也将这些运算视为不同的运算。
[0056]
在图4所示的计算图200的情况下,对于在节点201至207中执行的各个运算,单值计算单元131计算使用32位浮点数时的运算时间和使用8位定点数时的运算时间。例如,如图5所示,单值计算单元131针对在节点201至207的每一个节点中使用的运算计算运算时间。图5是示出运算时间和转换时间的示例的图。在图5的节点201至207的每一个节点中,对运算名称、使用32位浮点数时的运算时间以及使用8位定点数时的运算时间进行记录。运算名称是被分配以唯一标识在节点201至207中执行的每个运算的标识信息。
[0057]
然后,单值计算单元131生成图6所示的运算时间管理表211,其中针对每个运算登记使用32位浮点数时的运算时间和使用8位定点数时的运算时间。图6是表示运算时间管理表和转换时间管理表的示例的图。
[0058]
接着,单值计算单元131使用预先给出以计算运算时间的数据来计算在各个节点之间执行数据转换时的转换时间。在这种情况下,单值计算单元131也计算从32位浮点数到8位定点数的转换和从8位定点数到32位浮点数的转换两者的转换时间。
[0059]
例如,如图5所示,在图4所示的计算图200的情况下,单值计算单元131计算用于数据类型转换221至225的从32位浮点数到8位定点数的转换的转换时间。此外,单值计算单元131计算用于数据类型转换221至225的从8位定点数到32位浮点数的转换的转换时间。在图5中,在附接到指示数据类型转换221至225中的每一个的箭头的气球的上部记录用于从32位浮点数到8位定点数的转换的转换时间,并且在气球下部记录从8位定点数到32位浮点数的转换的转换时间。这里,在本实施方式中,单值计算单元131省略已确定数据类型一致的运算之间的转换时间的计算。例如,因为要求计算图200中的节点205和节点206使用同一数据类型,所以单值计算单元131不计算用于节点205与节点206之间的数据转换的转换时间。
[0060]
然后,单值计算单元131生成图6所示的转换时间管理表212,其中登记了从32位浮点数到8位定点数的转换和从8位定点数到32位浮点数的转换这两者的转换时间。
[0061]
此后,单值计算单元131将运算时间管理表211存储在管理表存储单元106中。此外,单值计算单元131将转换时间管理表212存储在管理表存储单元106中。然后,单值计算单元131向管理表创建指令单元122通知管理表创建完成响应。
[0062]
这里,单值计算单元131可以在接收到深度学习执行命令之前使用分析器预先计算运算时间和转换时间。此外,单值计算单元131可以使用由张量类型、运算类型和在每个运算中使用的参数确定的每个运算的属性来预先计算每个运算的运算时间和转换时间。
[0063]
一旦从运算数据类型控制指令单元123接收到数据类型修改指令,数据类型控制单元132从管理表存储单元106获取运算时间管理表211和转换时间管理表212。此外,数据类型控制单元132从计算图存储单元107获取计算图。
[0064]
这里,通过各个运算的运算时间和数据类型转换时间的总和算出一次迭代的总处理时间。例如,通过下面的数学式(1)来计算用于一次迭代的暂时总处理时间。
[0065]ctotal
=c
o8
c
o32
c
c8

32
c
c32
→8ꢀꢀꢀ…
(1)
[0066]
这里,c
total
表示总处理时间。此外,c
o8
表示对利用8位定点数执行运算的运算组求和的处理时间。另外,c
o32
表示对利用32位浮点数执行运算的运算组求和的处理时间。另外,c
c8

32
表示对从8位定点数到32位浮点数的数据类型转换求和的转换时间。另外,c
c32
→8表示对从32位浮点数到8位定点数的数据类型转换求和的转换时间。
[0067]
数据类型控制单元132对暂时数据类型进行数据类型修改,以使上述数学式(1)表示的总处理时间最小化。这里,作为数据类型转换,数据类型控制单元132对在使用同一数据类型的连续运算中使用的数据类型进行转换。因此,数据类型控制单元132共同地使计算图中的使用同一数据类型的连续运算群集。例如,数据类型控制单元132以在计算图中切换数据类型的运算之间的间隔作为边界来构建群集(cluster)。
[0068]
当使用图4所示的计算图200时,数据类型控制单元132如图7所示使各个节点201至207的运算群集。图7是表示运算的群集的图。在这种情况下,数据类型控制单元132生成包括节点201和节点202的群集231、包括节点203的群集232、包括节点204的群集233、包括节点205和节点206的群集234以及包括节点207的群集235。
[0069]
接着,数据类型控制单元132指定使用8位定点数作为数据类型执行运算的群集。例如,在图4中的计算图的情况下,数据类型控制单元132将群集232和群集234指定为使用8位定点数作为数据类型执行运算的群集。
[0070]
接着,在以下数学式(2)中,数据类型控制单元132使用运算时间管理表211和转换时间管理表212中的每个值来计算使用8位定点数时每个指定群集的处理时间。在这种情况下,数据类型控制单元132将由于数据类型转换而造成的转换时间包括到使用8位定点数时的处理时间中。
[0071][0072]
这里,c8表示当8位定点数用于群集中的运算时涉及的处理时间。此外,n表示群集中包括的运算的数目。另外,ni表示输入至群集的张量的数目。另外,no表示从群集输出的张量的数目。另外,c
i8
表示针对运算i利用8位定点数执行运算时的运算成本。另外,c
n32
→8表示针对输入n将数据类型从32位浮点数转换到8位定点数所花费的转换时间。另外,c
m8

32
表示针对输入m将数据类型从8位定点数转换到32位浮点数所花费的转换时间。
[0073]
接着,在以下数学式(3)中,数据类型控制单元132使用运算时间管理表211和转换时间管理表212中的每个值来计算使用32位浮点数时每个指定群集的处理时间。
[0074][0075]
这里,c
32
表示当32位浮点数用于群集中的运算时涉及的处理时间。此外,c
i32
表示当针对运算i利用32位浮点数执行运算时的运算成本。
[0076]
由于运算名称也一起登记在计算图中的每个节点中,因此数据类型控制单元132使用运算名称作为关键字对每个运算时间进行搜索,并且从运算时间管理表211获取每个运算时间。另外,对于运算之间的数据类型转换,数据类型控制单元132在当《数据转换源运算名称》-《数据转换目的运算名称》用作关键字时搜索匹配的函数之间的数据转换,并且从转换时间管理表212获取数据转换。例如,如图8所示,数据类型控制单元132获取每个运算的运算时间和数据类型转换时间。图8是用于说明计算图中的运算的数据类型的修改的图。
[0077]
接着,数据类型控制单元132针对每个指定群集,将使用8位定点数时的处理时间与使用32位浮点数时的处理时间进行比较。当使用8位定点数时的处理时间等于或大于使用32位浮点数时的处理时间时,数据类型控制单元132确定将相关群集的数据类型返回至32位浮点数。
[0078]
例如,数据类型控制单元132将当使用8位定点数时图8中的群集232的处理时间计算为:1.0 0.5 1.2 8.2=10.9ms。此外,数据类型控制单元132将使用32位浮点数时的群集232的处理时间计算为10.6ms。在这种情况下,由于使用8位定点数时的处理时间等于或大于使用32位浮点数时的处理时间,因此数据类型控制单元132确定将群集232的数据类型返回至32位浮点数。
[0079]
另外,数据类型控制单元132将当使用8位定点数时图8中的群集234的处理时间计算为:0.9 2.3 1.1 1.4=5.7ms。此外,数据类型控制单元132将当使用32位浮点数时群集234的处理时间计算为:8.6 2.3=10.9ms。在这种情况下,由于使用8位定点数时的处理时间比使用32位浮点数时的处理时间短,因此数据类型控制单元132确定将群集234的数据类型保持为8位定点数。
[0080]
接着,数据类型控制单元132通过将被确定为将数据类型返回32位浮点数的群集中所包括的每个运算中要使用的数据类型修改为存储在计算图存储单元107中的计算图中的32位浮点数来修改计算图。通过该处理,当面对页面观看时,计算图200被修改为图8的下部中所示的状态。此后,数据类型控制单元132利用数据类型的结论的通知来响应于运算数据类型控制指令单元123。该8位定点数对应于“第一数据类型”的示例。此外,32位浮点数对应于“第二数据类型”的示例。
[0081]
接下来,将参照图9描述根据实施方式的信息处理装置1的深度学习的流程。图9是根据实施方式的信息处理装置的深度学习的流程图。
[0082]
管理表创建指令单元122接收来自用户应用执行单元20的深度学习执行指令。然后,管理表创建指令单元122指示单值计算单元131创建管理表。单值计算单元131使用预先给定的值来执行每个运算,并且使用分析器计算出每个运算的运算时间和每个数据类型的转换时间(步骤s1)。然后,单值计算单元131创建运算时间管理表211和转换时间管理表212,并且将所创建的管理表存储在管理表存储单元106中。此后,运算数据类型控制指令单元123向运算指令单元121通知管理表的创建完成。
[0083]
一旦接收到管理表的创建完成的通知,运算指令单元121读取输入数据(步骤s2)。例如,运算指令单元121请求数据读取指令单元124。数据读取指令单元124指示学习数据读取单元105读取学习数据。学习数据读取单元105接收来自数据读取指令单元124的指令,并且从学习数据存储器单元30读取学习数据。数据读取指令单元124从学习数据读取单元105获取学习数据,并且将所获取的学习数据传送至运算指令单元121。
[0084]
接着,运算指令单元121指示运算数据类型控制指令单元123确定数据类型。运算数据类型控制指令单元123接收来自运算指令单元121的指令,并且请求初步数据类型确定单元104初步确定数据类型。初步数据类型确定单元104从运算单元101获取运算结果,并且根据运算结果中的8位定点数算出可表示比率。此外,初步数据类型确定单元104算出表示可表示比率的变化的每次迭代的波动。然后,初步数据类型确定单元104基于可表示比率和波动来初步确定每个运算的数据类型(步骤s3)。此后,初步数据类型确定单元104将每个运
算类型的初步确定的数据类型登记在计算图存储单元107中包含的计算图中。
[0085]
接着,运算数据类型控制指令单元123指示数据类型控制单元132修改数据类型。数据类型控制单元132接收来自运算数据类型控制指令单元123的指令,并且从管理表存储单元106获取运算时间管理表211和转换时间管理表212。此外,数据类型控制单元132从计算图存储单元107获取登记初步确定的数据类型的计算图。接着,数据类型控制单元132使计算图中的运算群集。随后,数据类型控制单元132针对具有8位定点数作为数据类型的所有群集验证是否已经完成关于数据类型修改的验证(步骤s4)。
[0086]
当仍然有具有8位定点数作为数据类型但是尚未针对数据类型修改进行验证的群集时(步骤s4:否),数据类型控制单元132从具有8位定点数但是尚未被验证的群集中选择一个群集作为数据类型(步骤s5)。
[0087]
接着,数据类型控制单元132计算修改前处理时间,该修改前处理时间是在所选群集中使用8位定点数时的处理时间(步骤s6)。
[0088]
随后,数据类型控制单元132计算修改后处理时间,该修改后处理时间是在所选群集中使用32位浮点数时的处理时间(步骤s7)。
[0089]
接着,数据类型控制单元132验证修改前处理时间是否等于或大于修改后处理时间(步骤s8)。当修改前处理时间小于修改后处理时间时(步骤s8:否),数据类型控制单元132返回步骤s4。
[0090]
与此相反,当修改前处理时间等于或大于修改后处理时间时(步骤s8:是),数据类型控制单元132将待用于在计算图中登记的属于所选群集的所有运算的数据类型返回32位浮点数(步骤s9)。此后,数据类型控制单元132返回步骤s4。
[0091]
另一方面,当已经针对具有8位定点数作为数据类型的所有群集完成关于数据类型修改的验证时(步骤s4:是),运算数据类型控制指令单元123向运算指令单元121通知数据类型的确定。运算指令单元121接收数据类型确定的通知,并且使用存储在计算图存储单元107中的计算图执行一次迭代的运算(步骤s10)。
[0092]
接着,运算指令单元121根据是否满足预定条件来验证是否已经完成学习(步骤s11)。当尚未完成学习时(步骤s11:否),运算指令单元121返回步骤s2。
[0093]
与此相反,当已经完成学习时(步骤s11:是),运算指令单元121向运算单元101通知完成学习,并且结束深度学习的执行。
[0094]
这里,在本实施方式中,以32位浮点数和8位定点数作为示例进行了说明,但是也可以存在使用32位浮点数和16位定点数的情况,或者可以存在使用8位定点数和16位定点数的情况。此外,可以采用其他数据类型的组合,只要运算具有不同精度的数据类型并且在精度增加时处理时间有时被缩短。
[0095]
如上所述,在根据本实施方式的信息处理装置中,基于对包括在一次迭代中的各个运算的运算性能的评估,针对每次迭代初步确定待在每个运算中使用的数据类型。接着,信息处理装置使运算群集,并且指定当使用32位浮点数时的处理时间比当使用8位定点数时的处理时间更短的群集。随后,信息处理装置将属于指定群集的运算中要使用的数据类型修改为32位浮点数。此后,信息处理装置使用每个运算的经修改后的数据类型来执行针对每次迭代的运算。这可以减轻以下缺点:当一些运算从32位浮点数转换到较不精确的数据类型时所产生的数据类型转换时间使总处理时间比当利用32位浮点数执行运算时的总
处理时间更长。因此,可以保持整个机器学习的处理时间短,并且提高机器学习的效率。
[0096]
本文中提供的所有示例和条件语言旨在用于帮助读者理解本发明和发明人对进一步发展本领域所贡献的构思的教学目的,并且不应被解释为受限于这些具体叙述的示例和条件,说明书中这些示例的组织也不涉及本发明的优势和劣势的展示。尽管已经详细地描述了本发明的一个或更多个实施方式,但是应当理解的是,在不脱离本发明的精神和范围的情况下,可以对本发明做出各种改变、替换和变换。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献