首页> 中国专利> 记录学习程序的计算机可读记录介质以及学习方法

记录学习程序的计算机可读记录介质以及学习方法

摘要

提供了其中存储有学习程序的计算机可读记录介质以及学习方法,该学习程序用于使计算机执行包括以下的处理:在学习作为深度学习的目标并且具有多个节点的计算模型时,参考存储单元,在该存储单元中,指示在学习时间之前的每个学习阶段中张量所遵循的运算路径的路径信息和与运算路径中使用的小数点的位置有关的统计信息彼此相关联;当在学习时执行在多个节点中的每个节点中设置的每块运算处理时,获取与到达多个节点中的每个节点的路径信息相对应的统计信息;以及使用由所获取的统计信息指定的小数点的位置来执行每块运算处理。

著录项

  • 公开/公告号CN112465105A

    专利类型发明专利

  • 公开/公告日2021-03-09

    原文格式PDF

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

    申请/专利号CN202010818106.8

  • 发明设计人 加藤雅也;阪本卓也;忽滑谷淳史;

    申请日2020-08-14

  • 分类号G06N3/04(20060101);G06N3/08(20060101);

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

  • 代理人康建峰;乔图

  • 地址 日本神奈川县

  • 入库时间 2023-06-19 10:08:35

说明书

技术领域

本文中论述的实施方式涉及学习程序和学习方法。

背景技术

近年来,作为用于高速执行机器学习的技术之一,用于运算精度的优化技术已引起关注。通常将32位浮点用于机器学习运算,但是存在许多情况,在所述情况下较少数目的位对于使用机器学习的问题解决而言是足够的。通过以较少数目的位进行运算,达到了诸如更快的计算、提高的电力性能和节省存储器资源的优点。

当前,许多公司正在致力于用于运算精度的优化技术的开发和应用,并且例如,已知一种在图形处理单元(GPU)上使用8位或16位浮点来以较少数目的位执行运算的技术。此外,还已知一种由张量处理单元(TPU)使用8位整数执行推理的技术,该张量处理单元是专用于张量运算的处理器。

针对这样的背景,已经提出了一种处理器,该处理器使定点根据学习阶段波动并且以最佳精度执行运算。该处理器特别针对机器学习中的深度学习而设计,并且随着深度学习中的学习进展,使用“要计算的数值在迭代之间的波动变得较小的性质”和“由张量保持的值的分布变得较窄的性质”来优化计算精度。

在其中数值在迭代之间的波动和由张量保持的值的方差较大的学习的前半部分(下文中有时称为“预学习”)中,使用常规的32位浮点执行学习,并且在其中方差变得较小的中间阶段至后半部分(下文中有时称为“主学习”)中,使用其小数点位置可变的8位定点(下文中有时称为“DLINT”)执行学习。此时,通过根据需要调整定点的小数点位置,即使利用八位也能够获得足够的精度。此处,为了调整小数点位置,期望预先知道与输入张量和输出张量的数据分布有关的信息(下文中有时称为“统计信息”),但是直到执行计算才得到关于实际输出的统计信息。为此,已知一种使用关于当前迭代之前的迭代的相应运算的输出的统计信息而不是当前迭代的小数点位置来执行学习的技术。

作为相关技术,公开了日本特开专利公布No.2017-156941、日本特开专利公布No.2019-32833和日本特开专利公布No.2019-79535。

同时,在以上技术中,为了在当前迭代中使用关于先前迭代的信息,期望将关于在运算中使用的每个张量的统计信息存储在存储器中,并且在运算期间参考数据库中的相应的统计信息。此处,为了参考关于先前迭代的统计信息,期望参考与作为当前执行目标的运算的输出相对应的统计信息。然而,在与要经历机器学习的模型相对应的计算图在学习期间动态地变化的情况下,如果因为计算图变化而使张量遵循的运算路径变化,则在变化之后运算节点可能检测不到运算路径,并且将参考与变化前的统计信息相同的统计信息。结果,在错误的小数点位置处执行运算,使得学习无法建立,并且学习精确度降低。

一方面,实施方式的目的是提供能够通过适当地调整定点的位置来抑制学习精确度的降低的学习程序和学习方法。

发明内容

根据实施方式的一方面,一种其中存储有学习程序的计算机可读记录介质,该学习程序用于使计算机执行包括以下的处理:在学习作为深度学习的目标并且具有多个节点的计算模型时,参考存储单元,在该存储单元中,指示在学习时间之前的每个学习阶段中张量所遵循的运算路径的路径信息和与运算路径中使用的小数点的位置有关的统计信息彼此相关联;当在学习时执行在多个节点中的每个节点中设置的每块运算处理时,获取与到达多个节点中的每个节点的路径信息相对应的统计信息;以及使用由所获取的统计信息指定的小数点的位置来执行每块运算处理。

根据一个实施方式,可以适当地调整定点的位置,从而可以抑制学习精确度的降低。

附图说明

图1是说明根据第一实施方式的信息处理装置的图;

图2是示出根据第一实施方式的用户的使用场景的流程的流程图;

图3是示出根据第一实施方式的信息处理装置的功能配置的功能框图;

图4是示出统计信息的示例的图;

图5是说明每个节点中的哈希值的生成的图;

图6是说明每个节点中的运算的图;

图7是示出根据第一实施方式的学习处理的总体流程的流程图;

图8是示出根据第一实施方式的在节点中执行的处理的基本流程的流程图;

图9是示出根据第一实施方式的由每个节点执行的处理的流程的流程图;

图10是示出根据第一实施方式的每个节点中的运算处理的流程的流程图;

图11是示出根据第一实施方式的每个节点的详细处理流程的流程图;

图12是说明效果的图;

图13是说明根据第二实施方式的计算图的图;

图14是示出根据第二实施方式的用户的使用场景的流程的流程图;

图15是示出根据第二实施方式的在节点中执行的处理的基本流程的流程图;

图16是示出根据第二实施方式的统计信息更新处理的流程的流程图;

图17是说明根据第三实施方式的用于动态计算图的统计信息的管理的图;

图18是说明根据第三实施方式的用于静态计算图的统计信息的管理的图;

图19是说明第三实施方式的使用统计信息(路径)的运算处理的具体示例的图;

图20是说明第三实施方式的使用统计信息(迭代)的运算处理的具体示例的图;

图21是说明第三实施方式的使用统计信息(异常)的运算处理的具体示例的图;以及

图22是示出硬件配置的示例的图。

具体实施方式

在下文中,将参照附图详细描述在本申请中公开的学习程序和学习方法的实施方式。注意,本实施方式不限于示例。此外,每个实施方式可以在不矛盾的范围内适当地组合。

[第一实施方式]

[信息处理装置的描述]

根据第一实施方式的信息处理装置10是使用提供诸如深度学习的功能的机器学习框架来执行用于机器学习的模型构建的计算机的示例。两种技术,即,“定义并运行(静态计算图)”和“通过运行定义(动态计算图)”被用于构建机器学习模型中使用的计算模型(神经网络)。

在“定义并运行(Define and Run)”中,一旦框架进入运算阶段,计算图的结构就不会变化,因为计算图独立于运算被定义。另一方面,在“通过运行定义(Define by Run)”中,每次执行学习时就执行计算模型的定义和运算,从而计算模型动态地变化。利用任一种技术,学习的前半部分(预学习)在迭代之间具有较大的数值波动,并且具有较大的由张量保持的值的方差,从而使得使用32位浮点执行学习;在学习的后半部分(主学习)中,通过使用其小数点位置可变的8位定点(DLINT)执行学习来实现运算处理的优化。

在第一实施方式中,将作为示例来描述“通过运行定义(动态计算图)”,在该示例中,在学习的后半部分中指定小数点位置是复杂的并且进行调整较为困难。图1是说明根据第一实施方式的信息处理装置10的图。如图1所示,在接收到用户想要解决的问题的输入时,信息处理装置10定义用于得到解的计算模型,并且对所定义的计算模型进行学习以得到问题的解。

图1所示的计算模型的示例指示其中图结构在迭代=i与迭代=i+1之间变化的结构。通常,在与可以由“计算图结构信息”指定的每个节点相关联地管理统计信息并且在计算图的每个节点中执行运算时,使用关于当前迭代之前的迭代的相应运算的输出的统计信息而不是当前迭代的小数点位置来执行学习。

此处,在“定义并运行”中,由于计算图的结构未变化,因此对于任意迭代,可以恰当地获取在该任意迭代之前的迭代中在相应节点中使用的统计信息以执行运算。然而,在“通过运行定义”中,计算图的结构在学习阶段期间时常变化,因此,可能未指定先前迭代中的相应节点。例如,在图1中的第1层的情况下,由于所有张量在迭代=i与迭代=i+1之间采取相同的路径,因此参考相同的统计信息。另一方面,第2层和第3层在迭代=i与迭代=i+1之间采取不同的路径,因此应当参考不同类型的统计信息。然而,即使从迭代=i+1中的第2层参考迭代=i中的第2层,也可能因为节点排布不同而不能获取统计信息。

因此,根据第一实施方式的信息处理装置10不根据“计算图结构信息”生成用于参考统计信息的关键字,而是根据“张量遵循的运算路径”生成参考统计信息的关键字。例如,信息处理装置10生成允许通过输入张量和输出张量的哈希值等来定义计算模型的机制,并且实现在不考虑“张量遵循的运算路径”的情况下实现运算的机制。例如,信息处理装置10获取关于学习的每个阶段中的运算结果的位分布的统计信息,并且基于张量遵循的运算路径来动态地生成关键字以管理统计信息。

例如,在每个节点中,信息处理装置10根据由流动输入张量保持的关键字来获取关于输入的统计信息以根据关键字和使用哈希函数的运算的内容来计算哈希值(路径哈希值),并且彼此关联地管理所计算的哈希值和统计信息。通过以这种方式进行管理,可以与图结构无关地基于由路径或运算类型指定的哈希值来参考统计信息;因此,可以恰当地获取关于当前迭代之前的迭代的统计信息,并且可以适当地调整定点的位置以抑制学习精确度的降低。

(使用场景)

接下来,将描述在用户使用信息处理装置10执行计算模型的学习时的流程。图2是示出根据第一实施方式的用户的使用场景的流程的流程图。如图2所示,在用户将与用户想要解决的问题有关的信息输入到信息处理装置10中(S101)时,信息处理装置10使用通用机器学习算法、根据已经输入的信息选择计算图和运算路径(S102)。

随后,信息处理装置10在每个节点中执行运算处理(S103和S104)。例如,信息处理装置10在生成哈希值的同时使用关于输入张量的信息来执行在节点中设置的运算处理,并且将运算结果和哈希值作为输出张量输出至下一节点。

此后,在学习完成并且计算模型的结构最终确定时,信息处理装置10将解转换成用户能够理解的形式(S105),并且将用户想要解决的问题的解输出至显示器、存储单元、用户终端等(S106)。如以上所描述的,用户不必通过考虑计算模型的结构等来限定对统计信息等的参考,并且因此可以在与常规方法相同的负荷的情况下获取比常规方法更恰当的解。

[功能配置]

图3是示出根据第一实施方式的信息处理装置10的功能配置的功能框图。如图3所示,信息处理装置10包括学习数据存储单元11、深度学习框架执行单元20和深度学习专用运算单元30。

学习数据存储单元11是存储用于学习与学习模型相对应的计算模型的学习数据(训练数据)的数据库等。例如,学习数据存储单元11存储其中正确答案信息如教师标签与输入至计算模型的数据相关联的学习数据。注意,可以根据用户想要解决的问题和学习内容来自由地设置学习数据。此外,学习数据存储单元11存储在硬盘等中。

深度学习框架执行单元20是提供诸如深度学习的各种功能的处理单元。例如,深度学习框架执行单元20是如下的处理单元:该处理单元根据用户的输入来构建和学习计算模型并且根据学习来执行包括计算模型的结构的动态修改的深度学习等,以生成用户想要解决的问题的解。

该深度学习框架执行单元20包括统计信息DB 21、学习数据读取单元22、执行状态控制单元23、运算单元24和数据库管理单元25。注意,深度学习框架执行单元20是由处理器如中央处理单元(CPU)等执行的处理单元,并且是CPU中包括的电子电路的示例或者是由CPU执行的处理的示例。

统计信息DB 21表示关于由张量保持的数据的分布范围的信息,并且是用于选择在执行DLINT运算时的有效数位的数目的信息。图4是示出统计信息的示例的图。如图4所示,统计信息DB 21是存储其中“关键字”和“统计信息存储地址”彼此关联的信息的数据库,并且被存储在存储器等中。此处,“关键字”是使用关于输入张量的信息等生成的哈希值,并且是指定张量遵循的运算路径的信息。“统计信息存储地址”是指示在存储器等中存储统计信息的位置的信息。图4指示与由“哈希1”指定的运算路径相对应的统计信息以“0x00000001”存储在存储器中。注意,也可以代替“统计信息存储地址”而存储整个统计信息。

学习数据读取单元22是从学习数据存储单元11读取学习数据并且将所读取的学习数据输出至各种处理单元的处理单元。例如,学习数据读取单元22读取学习数据,并且将所读取的学习数据输出至执行状态控制单元23直至学习结束。结束学习的定时可以被自由地设置,例如完成使用所有的学习数据项的学习的时间点、完成使用预定数目或更多的学习数据项的学习的时间点、或者恢复误差落在阈值以下的时间点。

执行状态控制单元23是包括数据读取控制单元23a、存取关键字生成单元23b和运算指令单元23c的处理单元,并且控制计算模型和包括在计算模型中的每个节点的执行状态。例如,执行状态控制单元23根据针对学习数据的计算模型的运算结果,执行计算模型的结构(节点的排布和运算内容)的动态修改等。

数据读取控制单元23a是执行各种类型的数据的读取的处理单元。例如,数据读取控制单元23a将由学习数据读取单元22获取的学习数据输入到计算模型中。此外,数据读取控制单元23a获取例如输入张量的关键字(哈希值)以及计算节点的运算类型、运算参数等作为用于生成与构成计算模型的每个计算节点(在下文中有时简称为节点)相对应的关键字的各种类型的信息,并且将所获取的项输出至存取关键字生成单元23b等。另外,数据读取控制单元23a获取计算节点的运算类型、运算参数等,并且将所获取的项输出至运算指令单元23c。

存取关键字生成单元23b是生成用于获取统计信息等的关键字的处理单元。例如,存取关键字生成单元23b使用已经由数据读取控制单元23a获取的输入张量的关键字(哈希值)以及计算节点的运算类型、运算参数等计算计算节点的关键字(哈希值)。然后,存取关键字生成单元23b将所计算的关键字输出至运算指令单元23c和数据库管理单元25。

运算指令单元23c是输出用于由计算节点执行的运算的信息的处理单元。例如,运算指令单元23c将从数据读取控制单元23a通知的计算节点的运算类型和运算参数以及从存取关键字生成单元23b输出的关键字输出至运算单元24。

运算单元24是执行用于机器学习的运算的预处理、与运算有关的存储器控制等的处理单元。例如,在学习的前半部分中的预学习的情况下,运算单元24将计算节点的运算类型和运算参数输出至深度学习专用运算单元30,并且请求32位浮点运算(FLOAT运算)。

此外,在学习的后半部分的主学习的情况下,运算单元24从统计信息12中获取与从存取关键字生成单元23b获取的关键字相对应的统计信息存储地址,并且从存储器获取存储在所获取的统计信息存储地址处的统计信息。然后,运算单元24根据统计信息指定运算的小数点位置。此后,运算单元24将计算节点的运算类型和运算参数以及小数点位置输出至深度学习专用运算单元30,并且请求DLINT运算。注意,学习的前半部分与学习的后半部分之间的区分可以被自由地设置,例如自学习开始的时间、学习次数是否超过阈值、或者恢复误差落在阈值以下的时间点。

数据库管理单元25是包括存取关键字存在确定单元25a和数据库更新单元25b的处理单元,并且管理统计信息DB 21。

存取关键字存在确定单元25a是确定在统计信息DB 21中是否注册了由存取关键字生成单元23b生成的关键字的处理单元。例如,在注册了关键字时,存取关键字存在确定单元25a获取与关键字相对应的统计信息存储地址,并且将所获取的统计信息存储地址输出至执行状态控制单元23和运算单元24。在这种情况下,在通过统计信息指定的小数点位置处执行DLINT运算。

另一方面,在未注册关键字时,存取关键字存在确定单元25a将统计信息存储地址不存在的事实输出至执行状态控制单元23和运算单元24。在这种情况下,执行FLOAT运算。

数据库更新单元25b是管理统计信息DB 21的更新的处理单元。例如,在生成新的关键字时,数据库更新单元25b将存储统计信息的统计信息存储地址与关键字相关联,并且将关键字新注册到统计信息DB 21中。此外,在读取与所注册的关键字相对应的统计信息时,在使用所读取的统计信息的运算完成之后,数据库更新单元25b使用运算之后的统计信息来更新统计信息DB 21。

深度学习专用运算单元30是执行计算节点的各种运算的处理单元。例如,深度学习专用运算单元30在被指示进行预学习时,使用通知的计算节点的运算类型和运算参数来执行32位浮点运算(FLOAT运算),并且将运算结果输出至深度学习框架执行单元20。

此外,深度学习专用运算单元30在被指示进行主学习时,使用通知的小数点位置、使用通知的计算节点的运算类型和运算参数来执行DLINT运算,并且将运算结果输出至深度学习框架执行单元20。注意,深度学习专用运算单元30是由深度学习专用人工智能(AI)处理器(深度学习单元(DLU))等执行的处理单元,并且是DLU中包括的电子电路的示例或者是由DLU执行的处理的示例。

[节点中的处理]

接下来,将描述在每个节点的运算期间执行的处理。此处,将描述哈希值的生成和节点中的运算。

(哈希值的生成)

图5是说明每个节点中的哈希值的生成的图。在图5中,将描述生成用于节点C的统计信息与关键字之间的关联的示例。在节点C(Add_1)中,执行具有In1、In2、add和scale作为变量的函数f,并且输出“scale·(In1+In2)”。

如图5所示,深度学习框架执行单元20获取从节点A输入至节点C的输入张量中包括的哈希值In1(0xFF22ABAA)和从节点B输入至节点C的输入张量中包括的哈希值In2(0xFAF34702)。此外,深度学习框架执行单元20获取节点C的运算类型(add)和运算参数(scale=1)。

然后,深度学习框架执行单元20将哈希值In1(0xFF22ABAA)、哈希值In2(0xFAF34702)、运算类型(add)和运算参数(scale=1)输入到哈希函数中,并且计算哈希值(0xDA320011)。

此后,深度学习框架执行单元20使用所计算的哈希值(0xDA320011)作为关键字来获取统计信息,并且执行运算处理。另外,深度学习框架执行单元20更新与所计算的哈希值(0xDA320011)相对应的统计信息。然后,深度学习框架执行单元20将所计算的哈希值(0xDA320011)输出至下一节点D。由于此处获得的哈希值对于张量遵循的运算路径而言是唯一的,因此通过将哈希值与运算路径中使用的统计信息相关联,即使节点经过若干次迭代,也允许同一运算路径上的节点参考相同的统计信息。

(运算处理的说明)

图6是说明每个节点中的计算的图。图6所示的水平轴表示计算图的运算方向,并且竖直轴表示迭代方向。在图6中,将描述一系列流程,在所述一系列流程中,根据关于输入张量的信息获取在输出张量中使用的Q值,并且在每个节点中执行DLINT运算。注意,Q值是根据统计信息得到的值,并且用于选择DLINT运算的小数点位置。

如图6所示,在迭代=t中,生成其中以节点A、节点B和节点C的次序来执行运算的计算图。在节点A中,使用所计算的关键字(哈希值)来获取在紧邻的前一次迭代中生成的统计信息C

在下一次迭代=t+1中,生成其中以节点A和节点C的次序来执行运算的计算图。注意,迭代=t+1中的节点C具有来自节点A的运算路径,因此是在与迭代=t中的节点C的运算路径不同的运算路径上执行的节点。在节点A中,使用所计算的关键字来获取在紧邻的前一次迭代中生成的统计信息C

注意,在下一次迭代=t+2中,生成其中以与两次迭代之前的迭代=t的次序相同的次序——即,节点A、节点B和节点C的次序——执行运算的计算图;因此,在每个节点中使用哈希值执行使用在两次迭代之前的迭代=t中使用的统计信息的DLINT运算。然而,由于如在紧邻的前一次迭代=t+1中,节点A定位在计算图的头部,因此获取在紧邻的前一次迭代=t+1而不是在两次迭代之前的迭代=t中使用的统计信息。

[处理的流程]

接下来,将描述由信息处理装置10执行的每种类型的处理。首先,将描述总体流程,然后将描述详细流程。图7是示出根据第一实施方式的学习处理的总体流程的流程图。

如图7所示,在由管理员等指示进行处理(S201:是)时,信息处理装置10生成与用户想要解决并且已经指定的问题相对应的计算模型(S202)。注意,作为生成计算模型的技术,可以采用类似于通用深度学习框架的技术。

随后,信息处理装置10执行预学习以执行对计算图的学习(学习模型)(S203),并且重复预学习直至学习的前半部分结束(S204:否)。

另一方面,在学习的前半部分结束(S204:是)时,信息处理装置10执行主学习(DLINT)以执行对计算图的学习(S205),并且在学习结束时输出学习结果(S206)。

(节点中的基本流程)

图8是示出根据第一实施方式的在节点中执行的处理的基本流程的流程图。如图8所示,深度学习框架执行单元20获取运算定义(S301),通过运算定义来执行在相应节点中设置的运算内容的选择、运算类型的获取等。

随后,深度学习框架执行单元20获取输入张量的哈希值(S302),并且基于运算类型、输入张量的哈希值等来生成输出张量的哈希值(S303)。

然后,深度学习框架执行单元20基于输出张量的哈希值从统计信息DB 21获取相应的统计信息(S304),并且执行运算(S305)。此时,深度学习框架执行单元20在预学习时使用32位浮点执行学习,并且在主学习时在根据统计信息的小数点位置处通过DLINT运算执行学习。

此后,深度学习框架执行单元20更新统计信息(S306),并且将上面生成的输出张量的哈希值提供给输出张量以输出输出张量(S307)。

(每个节点的处理)

图9是示出根据第一实施方式的由每个节点执行的处理的流程的流程图。如图9所示,在读取计算图(S401)时,深度学习框架执行单元20获取在要处理的节点中设置的运算类型和运算参数(S402)。

随后,在要处理的节点与等待输入的节点相对应(S403:是)时,深度学习框架执行单元20获取输入张量的哈希值(S404),并且基于输入张量的哈希值、运算类型和运算参数来生成输出张量的哈希值(S405)。

另一方面,在要处理的节点与等待输入的节点不对应(S403:否)时,深度学习框架执行单元20获取节点名称(S406),并且基于节点名称、运算类型和运算参数来生成输出张量的哈希值(S407)。

此后,深度学习框架执行单元20使用上面的输出张量的哈希值访问统计信息DB21(S408),并且确定是否注册了哈希值(S409)。

然后,在注册了哈希值(S409:是)时,深度学习框架执行单元20使用哈希值作为关键字来获取统计信息(S410),并且使用基于所获取的统计信息的小数点位置处的定点来执行主学习(S411)。

另一方面,在未注册哈希值(S409:否)时,深度学习框架执行单元20使用浮点执行预学习(S412)。注意,即使注册了哈希值,也可以在学习的前半部分中执行通过FLOAT运算的预学习。

(运算处理)

图10是示出根据第一实施方式的每个节点中的运算处理的流程的流程图。如图10所示,深度学习框架执行单元20根据输入张量的关键字、运算类型、运算参数等生成哈希值(S501)。然后,深度学习框架执行单元20确定在统计信息DB 21中是否注册了以哈希值作为关键字的统计信息(S502)。

此处,在未注册统计信息(S502:否)时,深度学习框架执行单元20确定处理的数据类型是否为定点(S503)。然后,在处理的数据类型为定点(S503:是)时,深度学习框架执行单元20将数据类型转换成浮点(S504)。

此后,深度学习框架执行单元20执行浮点运算(S505),并且将哈希值与统计信息相关联,以将统计信息注册在统计信息DB 21中或更新统计信息DB 21(S506)。

另一方面,在注册了统计信息(S502:是)时,深度学习框架执行单元20获取关于输入张量的统计信息(S507),并且从统计信息DB 21中获取关于输出张量的统计信息(S508)。

然后,深度学习框架执行单元20使用统计信息执行机器学习的通用预处理例如存储器控制(S509),并且执行定点运算(S510)。此后,深度学习框架执行单元20更新统计信息DB 21中的与关键字相对应的统计信息(S511)。此后,深度学习框架执行单元20将哈希值提供给输出张量(S512)。

(节点的详细处理)

图11是示出根据第一实施方式的每个节点的详细处理流程的流程图。此处,将描述其中执行DLINT运算的主学习。

如图11所示,通过“通过运行定义”从定义信息获取运算类型、运算参数和初始哈希值,并且使用这些信息项生成哈希值。

然后,在头节点中,将所生成的哈希值和学习数据作为输入张量输入,并且基于头节点的运算类型和运算参数以及输入张量来生成新的哈希值。随后,获取与所生成的哈希值相对应的统计信息,并选择定点位置。此后,执行基于头节点的运算类型和运算参数、输入张量和定点位置的DLINT运算,并且将包括运算结果和哈希值的输出张量输出至下一个节点。

在头节点之后的每个节点中,输入前一个节点的输出张量作为输入张量,并且基于每个节点的运算类型和运算参数以及输入张量来生成新的哈希值。随后,获取与所生成的哈希值相对应的统计信息,并且选择定点位置。此后,执行基于节点的运算类型和运算参数、输入张量和定点位置的DLINT运算,并且将包括运算结果和哈希值的输出张量输出至下一个节点。

以这种方式,每个节点基于输入张量和运算内容生成哈希值,并且彼此关联地执行所生成的哈希值和统计信息的管理。

[效果]

通常,在图动态变化时,如果节点过去从未被执行,则相应的统计信息不存在并且可能不能被参考。另一方面,可以允许信息处理装置10通过适当地关联在迭代之间在每个节点中执行的运算来参考合适的统计信息,并且允许信息处理装置10调整定点的位置。此外,即使在计算图或节点已经变化时,也可以允许信息处理装置10适当地参考统计信息,并且如在计算图未动态变化的情况下来执行学习。

如以上所描述的,通过基于“张量遵循的运算路径”动态地生成关键字并且参考统计信息的数据库,即使在主学习期间计算图或节点已经变化,也可以允许信息处理装置10定位来自过去的迭代的相应统计信息,并且建立DLINT运算。

图12是说明效果的图。如图12所示,通过依次执行预学习和主学习,学习进展并且误差逐渐变得较小。此处,在通用技术中,当主学习期间由于运算路径的变化而使由张量保持的值显著变化时,可能不会检测到该变化。为此,在通用技术中,当参考了错误的统计信息时,错误地设置了小数点位置。例如,在8位定点中,在除了符号位以外的七位之间,产生二的七次幂=128的最大误差,从而学习失败。

另一方面,当张量遵循的路径由于计算图的变化而变化时,可以允许根据第一实施方式的信息处理装置10在运算期间检测变化,并且参考在过去遵循相同路径时的统计信息;因此,可以建立学习并且可以抑制学习精确度的降低。

[第二实施方式]

附带地,在第一实施方式中,通过“通过运行定义”生成的计算图作为示例被描述;然而,实施方式不限于该示例,并且还可以应用于通过“定义并运行”生成的计算模型。因此,在第二实施方式中,“定义并运行”将作为示例被描述。

[根据第二实施方式的计算图]

在“定义并运行”中,一旦框架进入计算阶段,计算图的结构就不会变化,因为计算图独立于运算而被定义。在这种情况下,关于运算的结构信息被用作针对其中保存有统计信息的数据库的存取关键字。例如,在第二实施方式中,每个运算关于哪个节点的运算在哪个计算图中的哪个位置处而被严格地构造,并且根据关于该结构的信息生成唯一关键字并且将唯一关键字与统计信息链接,从而实现了参考。

图13是说明根据第二实施方式的计算图的图。图13示出了作为计算图之一的图1(Graph1),图1具有其中输入1和输入2被输入并且输入1和输入2被相加(add)并被输出的结构。此处,通过指定运算的输出张量来创建管理统计信息的数据库的关键字,结果,在前一个节点中创建了输入张量的关键字。然后,对于关于输出张量的统计信息,根据结构信息生成关键字。这些关键字用于从数据库中获取先前迭代中的统计信息。

例如,在第二实施方式中,针对其执行运算的图名称和节点名称被用作结构信息。如图13所示,对于图(图1)的节点“输入1”,生成“图名称/节点名称=图1/输入1”作为关键字,并且将“0x00000000”指定为统计信息的存储地址。此外,对于图1的节点“输入2”,生成“图1/输入2”作为关键字,并且将“0x00000001”指定为统计信息的存储地址。类似地,对于图1的节点“相加”,生成关键字“图1/相加”,并且将“0x00000002”指定为统计信息的存储地址。对于图1的节点“输出”,生成关键字“图1/输出”,并且将“0x00000003”指定为统计信息的存储地址。

以这种方式,向每个节点提供关键字,并且生成管理关于每个节点的统计信息的数据库。这样的数据库是在预学习期间构建的;然后,在主学习中,基于所构建的数据库参考统计信息,并且每次执行运算时更新统计信息。

(使用场景)

接下来,将描述根据第二实施方式的当用户执行计算模型的学习时的流程。图14是示出根据第二实施方式的用户的使用场景的流程的流程图。如图14所示,当用户将与用户想要解决的问题有关的信息输入到信息处理装置10中(S601)时,信息处理装置10通过通用机器学习算法、基于“定义并运行”来根据已经输入的信息选择计算图和运算路径(S602)。

随后,信息处理装置10在每个节点中执行运算处理(S603和S604)。例如,在每个节点中,执行从输入张量获取统计信息,使用统计信息执行在节点中设置的运算处理,并且将包括运算结果的输出张量输出至下一个节点。此时,统计信息可以与运算结果一起输出。

注意,在预学习中,对于节点的每次运算,生成关键字并且将关键字与统计信息相关联地注册在DB中。此外,在主学习中,对于节点的每次运算,读取与所生成的关键字相对应的统计信息,执行运算,并且更新DB。

此后,在学习完成并且计算模型的结构最终确定时,信息处理装置10将解转换成用户能够理解的形式(S605),并且将用户想要解决的问题的解输出至显示器、存储单元、用户终端等(S606)。

[处理流程]

图15是示出根据第二实施方式的在节点中执行的处理的基本流程的流程图。如图15所示,当处理开始时,信息处理装置10的深度学习框架执行单元20从输入张量获取统计信息(S701),并且获取关于计算图的结构信息,例如图名称和节点名称(S702)。

随后,深度学习框架执行单元20根据结构信息生成用于输出张量的关键字(S703),并且基于输出张量的关键字从统计信息DB 21获取统计信息(S704)。

然后,深度学习框架执行单元20使用所获取的统计信息来执行定点运算处理(S705),并且更新统计信息DB 21中的统计信息(S706)。此后,深度学习框架执行单元20将上面的输出张量的统计信息提供给输出张量,并且输出输出张量(S707)。

图16是示出根据第二实施方式的统计信息更新处理的流程的流程图。如图16所示,深度学习框架执行单元20获取关于计算图的结构信息,例如图名称和节点名称(S801),并且基于图名称和节点名称来生成输出张量的关键字(S802)。此后,深度学习框架执行单元20将所生成的关键字和统计信息的存储地址作为一组保存在统计信息DB 21中(S803)。

[效果]

通常,当计算图的规模变得较大时,变得难以彼此关联地管理过去的迭代运算和当前的迭代运算。另一方面,通过构建管理统计信息的数据库,可以允许根据第二实施方式的信息处理装置10将迭代间的运算相关联并且参考统计信息。因此,根据第二实施方式的信息处理装置10可以在减少存储器容量的同时实现高精确度的学习。

[第三实施方式]

附带地,在第一实施方式中,通过“通过运行定义”生成的计算图作为示例被描述;然而,当图动态变化时,存在以下可能:图的变化部分中的预学习不充分,并且并未使要计算的数值的波动必要地变得较小。因此,在第三实施方式中,将给出以下示例的描述:在该示例中,通过管理每个路径的预学习和主学习,即使在统计信息不存在或统计信息的可靠性低时,也将要通过浮点运算的计算图的范围限制为期望的最小值。

[通过运行定义]

图17是说明根据第三实施方式的用于动态计算图的统计信息的管理的图。如图17所示,用于迭代=2499的计算图由输入1节点、输入2节点、相加节点和输出节点构成。例如,节点“相加”对从节点“输入1”和节点“输入2”输入的输入张量执行运算(相加),并且将执行结果输出至节点“输出”。此处,在节点“输入1”中生成哈希值“哈希1”,并且在节点“输入2”中生成哈希值“哈希2”。在节点“相加”中,使用节点“输入1”的哈希值“哈希1”和节点“输入2”的哈希值“哈希2”生成哈希值“哈希3”。在节点“输出”中,使用节点“相加”的哈希值“哈希3”生成哈希值“哈希4”。

此外,用于下一个迭代=2500的计算图由输入1节点、输入2节点、相乘(Mul)节点和输出节点构成。例如,节点“相加”对从节点“输入1”和节点“输入2”输入的输入张量执行运算(相乘),并且将执行结果输出至节点“输出”。此处,在节点“输入1”中生成哈希值“哈希1”,并且在节点“输入2”中生成哈希值“哈希2”。在节点“相乘”中,使用节点“输入1”的哈希值“哈希1”和节点“输入2”的哈希值“哈希2”生成哈希值“哈希5”。在节点“输出”中,使用节点“相乘”的哈希值“哈希5”生成哈希值“哈希6”。

例如,用于迭代=2499的计算图和用于迭代=2500的图具有相同数目的节点,但是具有不同的运算路径。例如,节点“相加”和节点“相乘”具有相同的输入节点,但是具有不同类型的运算内容。为此,迭代=2499中的节点“输出”与迭代=2500中的节点“输出”之间,运算路径不同。

在学习这样的动态计算图时,在第三实施方式中,将执行状态与哈希值作为一组保存在统计信息DB 21中。在执行状态下,例如,注册“已经采取路径的次数”或“最后更新统计信息的迭代”。“已经采取路径的次数”用于针对每个路径来区分预学习与主学习。由于认为针对其已经充分地重复了运算的路径的值具有较小的波动,因此将阈值设置为使得其被采取的次数已经超过阈值的路径转变为主学习。

统计信息DB 21中的“最后更新统计信息的迭代”用于检测已经转变为主学习的路径中的一段时间未被采取的路径。在这样的路径中,存在以下可能:随着主学习进展,数据库中的统计信息不再有效。因此,当“最后更新统计信息的迭代”与当前迭代相距阈值或更大时,如新路径的情况下那样,通过转换成浮点来执行FLOAT运算,并且使用FLOAT运算的结果来更新统计信息。

以这种方式,当关于图的预学习不充分或者统计信息陈旧且不可靠时,通过仅对涉及的路径执行浮点运算,可以在期望的最小影响范围内避免在预学习不充分的状态下的DLINT运算。

在图17的示例中,当假定在“已经采取路径的次数”等于或大于阈值(1300)的情况下执行DLINT运算,并且在其他情况下执行FLOAT运算时,迭代=2499中的节点“相加”和节点“输出”执行DLINT运算,而迭代=2500中的节点“相乘”和节点“输出”执行FLOAT运算。例如,对于两个节点“输出”,可以将采取节点“相加”的路径与采取节点“相乘”的路径的统计信息分开。此外,由于数据库针对每个运算路径保存执行状态,因此允许针对每个运算路径分别使用DLINT运算和浮点运算。注意,该方法可以应用于“定义并运行”的静态计算图。然而,由于在生成哈希函数时期望运算成本,因此,在图未动态地变化的情况下,优选使用“通过结构信息生成存取关键字”。

[定义并运行]

即使在通过定义并运行构建的计算图中,也存在节点中的计算取决于用于运算的参数和输入张量而变化的情况。此时,通过像在节点外部一样在节点内部生成“路径关键字”,使得能够参考合适的统计信息。

图18是说明根据第三实施方式的用于静态计算图的统计信息的管理的图。图18是其中取决于条件分支在节点中执行不同运算的示例。核心运算a、b、c和d都是应当使用统计信息的运算。此时,在d中的运算中,存在以下可能:在以a→b→d执行运算的情况与以a→c→d执行运算的情况之间,统计信息变化,因此,期望将统计信息DB的条目分开。此处,可以通过生成取决于运算路径的关键字来分开这些条目。

例如,迭代=2499中的节点d通过使用节点b的哈希值“哈希4”生成的哈希值“哈希5”管理统计信息,而迭代=2500中的节点d通过使用节点c的哈希值“哈希6”生成的哈希值“哈希7”管理统计信息。

在图18的示例中,假定在“已经采取路径的次数”等于或大于阈值(1300)的情况下执行DLINT运算,并且在其他情况下执行FLOAT运算。然后,在迭代=2499中的节点“输出(哈希4)”中,因为已经采取路径的次数为1500,所以执行DLINT运算,而在迭代=2500中的节点“输出(哈希6)”中,因为已经采取路径的次数为1000,所以执行FLOAT运算。例如,即使在节点内部,也允许根据运算路径将统计信息分开。

[具体示例]

接下来,将参照图19至图21来描述基于执行状态确定运算方案的具体示例。在图19至图21中的每个示例由节点A、节点B、节点C和节点D构成,并且节点D具有节点A→节点B→节点D的运算路径和节点A→节点C→节点D的运算路径。

图19是说明第三实施方式的使用统计信息(路径)的运算处理的具体示例的图。如图19所示,假设已经采取从节点A至节点B的路径的次数为2000,已经采取从节点A至节点C的路径的次数为2000,已经采取从节点B至节点D的路径的次数为500,已经采取从节点C至节点D的路径的次数为2000。在这种情况下,如果采用阈值“1000”,在节点B中,从节点A输入DLINT运算的结果,但是输出张量以FLOAT(浮点)输出。因此,在节点B中,对来自节点A的输入张量执行通过转型(casting)来转换数据类型,以将数据类型从定点类型转换为浮点类型。然后,节点B执行并输出FLOAT运算。

如以上所描述的,节点B执行FLOAT运算,并且节点C执行DLINT运算。然后,在节点D中,从节点C输入定点类型输入张量,并且从节点B输入浮点类型输入张量。在这种情况下,在节点D中,由于节点B的运算结果还不充分,并且可靠性不高,因此对来自节点C的输入张量执行通过转型来转换数据类型。然后,节点D使用来自节点C的输入和来自节点B的输入执行并输出FLOAT运算。

图20是说明第三实施方式的使用统计信息(迭代)的运算处理的具体示例的图。如图20所示,假设节点A的学习次数为12000,节点B的学习次数为10000,节点C的学习次数为12000,并且节点D的学习次数为12000。在这种情况下,如果采用阈值“10000”,则在节点B中,从节点A输入DLINT运算的结果,但是输出张量以FLOAT(浮点)输出。因此,在节点B中,对来自节点A的输入张量执行通过转型来转换数据类型,以将数据类型从定点类型转换为浮点类型。然后,节点B执行并输出FLOAT运算。

如以上所描述的,节点B执行FLOAT运算,并且节点C执行DLINT运算。然后,在节点D中,从节点C输入定点类型输入张量,并且从节点B输入浮点类型输入张量。在这种情况下,如图19中那样,在节点D中,对来自节点C的输入张量执行数据类型的转换,并且执行并输出FLOAT运算。

图21是说明第三实施方式的使用统计信息(异常)的运算处理的具体示例的图。如图21所示,假定通过图19或图20的技术,每个节点处于数据类型被确定为DLINT的状态。在这种情况下,当对于节点C,指示已经发生异常处理的标志为“异常”时,节点D确定节点C的可靠性低,并且执行数据类型转换,以使用来自节点C的输入和来自节点B的输入执行并输出FLOAT运算。

注意,例如,当从发生异常起已经经过预定时间时,或者当发生异常之后已经整体上执行了预定次数或更多次的学习时,或者当发生异常的节点在发生异常之后已经被学习了预定次数或更多次时,确定已经正常进行了从发生异常的恢复并且执行DLINT运算也是可行的。

[第四实施方式]

尽管以上已经描述了实施方式,但是除了以上实施方式之外,可以以各种形式来实现实施方式。

[数据等]

在以上实施方式中使用的数据示例、数值示例、显示示例等仅是示例,并且可以被自由地修改。此外,节点的数目和类型也是示例,并且可以被自由地修改。以上实施方式中描述的技术中的每一种可以应用于包括神经网络的各种类型的深度学习。

[数据类型]

例如,在第三实施方式中描述的技术中的每一种中,在被区分为FLOAT的节点之后的节点也被判定为FLOAT。此外,当统计信息DB 21中没有相应的哈希值时,运算路径是过去未采取过的路径,并且不存在要参考的统计信息。在这种情况下,禁用DLINT运算,从而转换数据类型并以浮点执行运算。在运算之后,根据由张量保持的值获取统计信息,并且将该统计信息与由该节点新发布的关键字作为一对注册在数据库中。此时,该节点之后的所有路径都是不存在于统计信息DB 21中的路径,因此以浮点形式连续执行对该路径的后续计算。

[哈希值]

在计算以上描述的哈希值时,例如,可以使用计算节点的名称、由每个输入张量保持的关键字以及运算所需的参数、输出张量的索引等中影响统计信息的任意内容。注意,当运算具有多个输出时,使用输出索引来区分这些输出。

[系统]

除非另外指定,否则可以以任何方式改变包括以上在文档中描述的或在附图中示出的处理过程、控制过程、特定名称、各种类型的数据和参数的信息块。

另外,在附图中示出的每个装置的各个构成元素在功能上是概念性的,并且不一定必须在物理上被配置成如附图中所示。例如,各个装置的分布和集成的特定形式不限于附图中示出的形式。这意味着可以根据各种类型的负载和使用情况等通过在功能上或物理上分布以及集成到任意单元中来配置装置的全部或一部分。

此外,在每个装置中执行的各个处理功能的全部或任意部分可以由中央处理单元(CPU)和由CPU分析并执行的程序来实现,或者可以由有线逻辑实现为硬件。

[硬件]

接下来,将描述信息处理装置10的硬件配置的示例。图22是示出硬件配置的示例的图。如图22所示,信息处理装置10包括通信装置10a、硬盘驱动器(HDD)10b、存储器10c和处理器10d。此外,图22中示出的各个部件通过总线等相互连接。

通信装置10a是网络接口卡等,并且与另一服务器通信。HDD 10b存储用于操作图3所示的功能的程序和DB。

处理器10d从HDD 10b等读取执行与图3所示的每个处理单元的处理类似的处理的程序,以在存储器10c中展开所读取的程序,从而操作执行参照图3和其他附图描述的每个功能的处理。例如,该处理执行与信息处理装置10中包括的每个处理单元的功能类似的功能。例如,处理器10d从HDD 10b等读取具有与深度学习框架执行单元20、深度学习专用运算单元30等的功能类似的功能的程序。然后,处理器10d执行如下处理:该处理执行与深度学习框架执行单元20、深度学习专用运算单元30等的处理类似的处理。

如以上所描述的,信息处理装置10操作为通过读取并执行程序来执行学习方法的信息处理装置。信息处理装置10还可以通过由介质读取装置从记录介质读取以上描述的程序并且执行所读取的以上描述的程序来实现与以上描述的实施方式的功能类似的功能。注意,在其他实施方式中提及的该程序不限于由信息处理装置10执行。例如,实施方式可以类似地应用于另一计算机或服务器执行程序的情况,或者这样的计算机和服务器协同执行程序的情况。注意,还可以设置两个处理器,即,执行深度学习框架执行单元20的处理器和执行深度学习专用运算单元30的处理器。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号