CN111753951A - 信息处理器、信息处理方法和存储介质 - Google Patents

信息处理器、信息处理方法和存储介质 Download PDF

Info

Publication number
CN111753951A
CN111753951A CN202010208022.2A CN202010208022A CN111753951A CN 111753951 A CN111753951 A CN 111753951A CN 202010208022 A CN202010208022 A CN 202010208022A CN 111753951 A CN111753951 A CN 111753951A
Authority
CN
China
Prior art keywords
layer
statistical information
data
calculation
dnn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010208022.2A
Other languages
English (en)
Inventor
伊藤真纪子
依田胜洋
兼森涉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN111753951A publication Critical patent/CN111753951A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Error Detection And Correction (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及信息处理器、信息处理方法和存储介质。一种信息处理器,包括存储器;以及处理器,该处理器耦接至存储器并且该处理器被配置成:针对多个第一定点数数据中的每一个,获取关于不是符号的最高有效位位置或者不为零的最低有效位位置的分布的第一统计信息,所述多个第一定点数数据是第一层中的计算的计算结果;在第二层中的计算中,根据预定规则对第一层的多个输出数据执行计算;基于预定规则和第一统计信息来获取第二统计信息;以及基于第二统计信息来确定用于限制多个第二定点数数据被存储在寄存器中时的位宽的位范围,所述多个第二定点数数据是第二层中的计算的计算结果。

Description

信息处理器、信息处理方法和存储介质
技术领域
本文讨论的实施方式涉及信息处理器、信息处理方法和存储介质。
背景技术
深度学习是使用多层神经网络的机器学习。作为深度学习的示例的深度神经网络(下文中称为DNN)是依次布置输入层、多个隐藏层和输出层的网络。这些层中的每一层具有一个或更多个节点,并且每个节点具有值。某一层的节点经由边缘耦接至下一层的节点,并且每个边缘具有诸如权重或偏置(bias)的参数。
在DNN中,通过基于前一层中的节点的值、边缘的权重等执行预定计算来得到每一层中的节点的值。当将输入数据输入至输入层中的节点时,通过执行预定计算来得到下一层中的节点的值。使用通过计算得到的数据作为输入,通过在该层中执行预定计算来得到下一层中的节点的值。最后输出层中的节点的值成为关于输入数据的输出数据。
因为要计算的图像数据具有相对较少的位数,所以执行DNN的计算的DNN处理器可以使用定点计算机执行计算。在这种情况下,不使用浮点计算机,因此可以抑制用于计算的功耗。比浮点计算机具有更简单的电路配置的定点计算机的使用使得DNN处理器能够被配置成具有小的电路尺寸。
然而,由于固定的位数,所以定点数比浮点数具有窄的动态范围。因此,作为计算的结果而发生上溢,使得计算结果的值可能饱和。相反,可能由于下溢而忽略了低阶位。这导致计算结果的准确度降低。
因此,在DNN的计算中,已经提出了动态调整通过计算得到的计算结果数据的小数点位置的动态定点。根据动态调整小数点位置的已知方法,获取每一层中的关于计算结果中的中间数据的有效的最高有效位位置的分布的统计信息,从而基于获取的统计信息将中间数据的定点位置调整为最佳位置。例如,在日本公开特许公报第2018-124681号、第2012-203566号、第2009-271598号和第07-84975号中公开了相关技术。
发明内容
在获取每一层中的关于计算结果中的有效数位数量的分布的统计信息并将定点位置调整为最佳小数点位置以保持计算准确度的方法中,由于获取DNN的每一层中的统计信息而导致计算量增加。在DNN的处理中,由于在不同层中重复计算以执行学习处理,所以这些层中的计算量的增加导致执行学习处理所需的时间增加。
考虑到这样的情况,期望提供在保持计算准确度的同时减少计算量的信息处理器、信息处理方法和信息处理程序。
根据实施方式的一个方面,一种信息处理器,包括存储器;以及处理器,该处理器耦接至存储器并且该处理器被配置成:在用于执行深度学习的神经网络的多个层中的计算中,针对多个第一定点数数据中的每一个,获取关于不是符号的最高有效位位置或者不为零的最低有效位位置的分布的第一统计信息,所述多个第一定点数数据是第一层中的计算的计算结果;在第二层中的计算中,根据预定规则对第一层的多个输出数据执行计算;基于预定规则和第一统计信息来获取第二统计信息;以及基于第二统计信息来确定用于限制多个第二定点数数据被存储在寄存器中时的位宽的位范围,所述多个第二定点数数据是第二层中的计算的计算结果。
[本发明的有益效果]
根据实施方式,可以在保持计算准确度的同时减少计算量。
附图说明
图1是示出深度神经网络(DNN)的示例的图;
图2是DNN的训练过程的示例的流程图;
图3是示出深度学习系统的示例的图;
图4是示出图3所示的主机的细节的图;
图5是示出图3所示的DNN执行机的细节的图;
图6是示出主机和DNN执行机的深度训练过程的概要的序列图;
图7是深度学习的示例的流程图;
图8是示出图7中示出的使用动态定点数的训练过程中的S61和S63的细节的图;
图9是深度学习的前向传播处理和后向传播处理的说明图;
图10是示出关于中间数据的分布的统计信息以及基于该分布的小数点位置调整方法的图;
图11是示出关于中间数据的分布的统计信息以及基于该分布的小数点位置调整方法的图;
图12是图7所示的流程图中的S63中的详细处理的流程图;
图13是根据本实施方式的深度学习的流程图;
图14是图13中的使用动态定点数的训练过程中的S131和S133的细节的第一示例(第一实施方式)的说明图;
图15是图13所示的流程图中的S133中的详细处理的第一示例(第一实施方式)的流程图;
图16A和图16B是示出在丢弃(dropout)层中的处理前后的最高有效位位置的分布的示例的图;
图17是示出DNN处理器的配置的示例的图;
图18是示出由DNN处理器获取、聚合、存储统计信息的流程图;
图19是示出统计信息获取器的逻辑电路的示例的图;
图20是示出由统计信息获取器获取的计算输出数据的位模式的图;
图21是示出统计信息聚合器的逻辑电路的示例的图;
图22是统计信息聚合器的操作的说明图;
图23是示出第二统计信息聚合器和统计信息寄存器文件的示例的图;
图24是图13中的使用动态定点数的训练过程中的S131和S133的细节的第二示例(第二实施方式)的说明图;
图25是图13所示的流程图中的S133中的详细处理的第二示例(第二实施方式)的流程图;
图26是图13中的使用动态定点数的训练过程中的S131和S133的细节的第三示例(第三实施方式)的说明图;
图27是图13所示的流程图中的S133的详细处理的第三示例(第三实施方式)的流程图;
图28是深度学习的示例中的双重饱和和舍入处理的说明图;
图29是图13中的使用动态定点数的训练过程中的S131和S133的细节的第四示例(第四实施方式)的说明图;以及
图30是图13所示的流程图中的S133中的详细处理的第四示例(第四实施方式)的流程图。
具体实施方式
图1是示出深度神经网络(DNN)的示例的图。图1中的DNN是图像分类的模型,该模型输入图像并且根据输入图像的内容(例如,图形)将图像分类为有限数量的类别。DNN具有输入层INPUT、第一卷积层Conv_1、第一池化层Pool_1、第二卷积层Conv_2、第二池化层Pool_2、第一完全耦接层fc1、第二完全耦接层fc2和输出层OUTPUT。每个层具有一个或更多个节点。
卷积层Conv_1将输入至输入层INPUT中的多个节点的图像像素数据乘以节点之间的权重,并将具有图像的特征的输出图像的像素数据输出至卷积层Conv_1中的多个节点。这也适用于卷积层Conv_2。
池化层Pool_1是具有这样的节点的层:该节点根据作为前一层的卷积层Conv_1中的局部节点而确定,并且池化层Pool_1通过将局部节点的最大值设置为其节点的值来适应图像中的小的变化。
输出层OUTPUT通过使用SoftMax函数等根据节点的值得到属于每种类别的概率。
图2是示出DNN的训练过程的示例的流程图。训练过程使用例如包括输入数据的多个教师数据和由DNN根据输入数据计算出的输出的校正类别标签,以优化DNN中的诸如权重的参数。在图2所示的示例中,根据小批(minibatch)方法,将多组彼此一对一对应的输入数据和校正标签划分为多个小批,并且输入被划分为小批的多个输入数据和与输入数据相对应的教师数据。对于输入数据中的每一个,对诸如权重的参数进行优化,以减小从DNN输出的输出数据与教师数据之间的差异(误差)。
在DNN中,多个层可以由硬件电路配置,并且硬件电路可以执行相应层中的计算。可替选地,DNN可以使处理器执行用于执行DNN的层中的计算的程序。如图2所示的DNN的处理可以通过稍后描述的主机和DNN执行机来执行。
如图2所示,作为预先准备,随机地重新排列多个输入数据和教师数据(S1),并且将多个重新排列的输入数据和教师数据划分为多个小批(S2)。
对于多个划分的小批中的每一个,重复前向传播处理S6、误差计算S7、后向传播处理S8和参数更新S9。当所有小批的学习结束时(S11:是),直到达到预定次数(S12:否),对于相同的输入数据来重复处理S1至S2、S6至S9和S11。
代替针对相同的训练数据重复处理S1至S2和S6至S9直到达到预定次数,在学习结果的估计值(例如输出数据与教师数据之间的差异(误差))落在一定范围内时,处理可以完成。
在前向传播处理S6中,以从DNN的输入侧至输出侧的顺序执行层中的计算。参照图1进行描述,第一卷积层Conv_1执行输入至输入层INPUT的一个小批的多个输入数据与边缘的权重等的卷积,以生成多个计算输出数据。第一池化层Pool_1执行降低卷积层Conv_1的计算结果的局部性(locality)的处理。第二卷积层Conv_2和第二池化层Pool_2执行与以上描述的处理相同的处理。最后,完全耦接层fc1、fc2执行与所有边缘的权重的卷积,并将输出数据输出至输出层OUTPUT。
在误差估计S7中,将DNN的输出数据与教师数据之间的差异计算为误差。在后向传播处理S8中,误差从DNN的输出侧传播至输入侧。在后向传播处理S8中,将误差从输出侧传播至输入侧,并且进一步,将每个层中的传播误差相对于参数进行微分,并且根据梯度下降方法来计算参数改变数据。在参数更新S9中,利用通过参数梯度下降方法得到的参数变化值来更新当前参数,以将每个层的权重更新为最佳值。
图3是示出深度学习系统的示例的图。深度学习系统具有主机30和DNN执行机40,并且主机30例如经由专用接口耦接至DNN执行机40。还可以从用户终端50访问主机30。用户使用用户终端50访问主机30,并且操纵DNN执行机40以执行深度学习。主机30根据来自用户终端50的指令为DNN执行机40创建要由DNN执行机40执行的程序。DNN执行机40执行所发送的程序来进行深度学习。
图4是示出图3所示的主机30的细节的图。主机30包括:主处理器31诸如中央处理单元(CPU),用于耦接至DNN执行机40的高速输入/输出接口32,主存储器33诸如同步动态随机存取存储器(SDRAM),以及内部总线34。主机30还包括耦接至内部总线34的辅助存储装置35诸如大容量存储硬盘驱动器(HDD),以及用于耦接至用户终端50的低速输入/输出接口36。
主机30的主处理器31执行存储在辅助存储装置35中并在主存储器33中扩展的程序。高速输入/输出接口32是将主处理器31耦接至DNN执行机40的接口,诸如外围组件互连(PCI)Express(高速)。主存储器33存储由处理器执行的程序和数据。主存储器33例如是SDRAM。
内部总线34将处理器耦接至速度低于处理器的外围设备,从而在它们之间中继通信。低速输入/输出接口36进行与用户终端50的键盘或鼠标的耦接(诸如通用串行总线(USB)),或者与以太网的网络的耦接。
如所示的,辅助存储装置35存储DNN训练程序、输入数据和教师数据。主处理器31执行DNN训练程序,并将训练程序、输入数据和教师数据发送至DNN执行机40,从而使DNN执行机40执行训练程序。
图5是示出图3所示的DNN执行机40的细节的图。DNN执行机40包括中继与主机30的通信的高速输入/输出接口41以及基于来自主机30的指令和数据执行处理的控制单元42。DNN执行机40还包括DNN处理器43、存储器访问控制器44和内部存储器45。
DNN处理器43基于从主机30发送的程序和数据执行该程序以执行深度学习的处理。DNN处理器43具有执行定点计算的DNN处理器43_1和执行浮点计算的DNN处理器43_2。然而,可以省略执行浮点计算的DNN处理器43_2。
执行定点计算的DNN处理器43_1具有统计信息获取电路,该统计信息获取电路获取中间数据(诸如基于DNN的计算结果和学习更新的参数)以及关于存储器中的数据的有效的最高有效位和有效的最低有效位的数量的统计信息。执行定点计算的DNN处理器43_1在执行训练的同时获取关于通过计算得到的中间数据的统计信息,并且基于统计信息将中间数据的定点位置调整为最佳位置。
高速输入/输出接口41例如是PCI Express,并且中继与主机30的通信。
控制单元42将来自主机30的程序和数据存储在内部存储器45中,并且响应于来自主机30的指令来指示DNN处理器43执行该程序。响应于来自控制单元42的访问请求和来自DNN处理器43的访问请求,存储器访问控制器44控制对内部存储器45的访问。
内部存储器45存储由DNN处理器43执行的程序、经处理的数据、关于处理结果的数据等。内部存储器45例如是SDRAM、高速GDR5或广域HBM2。
图6是示出主机和DNN执行机40的深度训练过程的概要的细节的序列图。主机30将深度学习的训练程序发送至DNN执行机40(S31),发送针对一个小批的输入数据(S32_1),并发送训练程序执行指令(S33)。
响应于发送,DNN执行机40将输入数据和训练程序存储在内部存储器45中,并且响应于训练程序执行指令,DNN执行机40针对存储在内部存储器45中的输入数据执行训练程序(S40)。训练程序由DNN处理器43执行。主机30发送针对下一小批的输入数据(S32_2),并等待直到DNN执行机40完成训练程序。在这种情况下,DNN执行机40针对输入数据准备两个存储区域。
当完成训练程序时,DNN执行机40将训练程序完成通知发送至主机30(S41)。主机30切换要由训练程序参考的输入数据区域,并发送训练程序执行指令(S33)。DNN执行机40执行训练程序(S40),并发送训练程序完成通知(S41)。重复此过程以进行DNN的训练。
DNN的训练包括:在DNN前向方向上在每个层中执行计算(前向传播处理);在DNN后向方向上传播输出层的输出数据与校正数据之间的误差以计算每一层中的误差,并且计算参数改变数据以减小误差(后向传播处理);以及基于参数改变数据来更新参数(参数更新)。DNN的整个训练过程可以由DNN执行机40执行,或者学习处理的一部分可以由主机30执行。
图7是示出深度学习的示例的流程图。在深度学习的示例中,保存每一层中的关于中间数据的值的分布的统计信息,并且基于所保存的每一层中的统计信息来调整每一层中的中间数据的定点位置。图7中的定点位置的调整在图2的处理S6和S8中执行。
首先,DNN处理器43确定每个中间数据的初始小数点位置(每个层中的计算结果、参数等)(S50)。初始小数点位置是通过使用浮点数的预训练或用户指定来确定的。在使用浮点数的预训练的情况下,由于DNN中的中间数据是浮点数,因此生成了与中间数据的大小相对应的特征。因此,不需要如定点数的情况那样调整小数点位置。基于浮点数的中间数据来确定每个中间数据的定点数的最佳小数点位置。
接下来,DNN处理器43在执行训练小批的同时获取并保存关于每个中间数据的分布的统计信息(S61)。DNN处理器43中包括的操作定点计算的DNN处理器43_1具有统计信息获取电路,该统计信息获取电路获取关于有效位(诸如定点计算机的输出)的分布的统计信息。DNN处理器43可以执行包括统计信息获取处理的计算,从而在小批的训练期间获取并保存关于中间数据的统计信息。每当小批训练被执行K次(S10:是),基于每一层中的关于中间数据的分布的统计信息来调整DNN中的每个中间数据的定点位置(S63)。
稍后将详细描述DNN处理器43中的统计信息获取电路以及用于基于每一层中的关于分布的统计信息来调整定点位置的方法。
直到完成所有小批的学习(S11:否),DNN处理器43重复处理S61、S10、S63。当完成所有小批的训练时(S11:是),直到达到预定次数(S12:否),DNN处理器43返回至S50,并重复训练所有小批。图7中的处理S11、S12与图2中的处理S11、S12一样。
图8是示出图7中的使用动态定点数的训练的处理中的S61和S63中的详细处理的图。在S61中,DNN处理器43将小批训练重复K次。在每次小批训练中,对于小批的多个输入数据和教师数据,DNN处理器43在依次执行前向传播处理、后向传播处理和参数更新处理的同时获取并保存处理中每一层中的关于中间数据的分布的统计信息。
另外,在学习的处理S63中,DNN处理器43基于所保存的统计信息中的多个中间数据的有效位的分布来确定并更新每个中间数据的最佳小数点位置。
图9是深度学习的前向传播处理和后向传播处理的说明图。在前向传播处理中,DNN处理器43中的定点计算机将输入侧附近的层L1中的节点处的数据x0至xn乘以链路权重wij,并向其加上偏置b以运算在输出侧附近的层L2中的节点处的输出数据z0至zj……。通过层L2中的激活函数来计算关于输出数据z0至zj……的激活函数的输出数据u0至uj……。从输入侧至输出侧重复层L1、L2中的计算。
与此相反,在后向传播处理中,DNN处理器43中的定点计算机根据输出侧附近的层L6中的误差δ0 (6)至δi (6)至δn (6)(输出数据与校正数据之间的差异或传播差异)计算输入侧附近的层L5中的误差δ0 (5)至δj (5)……。根据通过将层L5中的误差δ0 (5)至δi (5)至δn (5)相对于诸如权重Wij的参数进行微分而获得的值的倾斜方向来计算差异更新数据Δwij。从输出侧至输入侧重复层L6、L5中的计算。
在依次处理每个层中的参数时,将差异更新数据Δwij与现有权重wij相加以计算更新的权重wij
在图9中,层L2中的输出数据z0至zj……和激活函数的输出数据u0至uj……,层L6、L5中的误差δ0 (6)至δi (6)至δn (6)、误差δ0 (5)至δj (5)……、权重的差异更新数据Δwij和经更新的权重wij是DNN的中间数据。可以将中间数据的小数点位置调整到最佳位置,从而增加每个中间数据的计算准确度以提高训练准确度。
图10和图11是示出关于中间数据的分布的统计信息以及基于该分布的小数点位置调整方法的图。如稍后所描述的,DNN处理器43具有定点计算机以及统计信息获取电路,该统计信息获取电路获取关于中间数据(诸如每个计算机的输出以及存储在内部存储器45中的计算结果数据)的有效位的分布的统计信息。
关于中间数据的有效位的分布的统计信息如下:
(1)不是符号的最高有效位位置的分布。
(2)不为零的最低有效位位置的分布。
(3)不是符号的最高有效位位置的最大值。
(4)不为零的最低有效位位置的最小值。
(1)不是符号的最高有效位位置是中间数据的有效位的最高有效位位置。不是符号在符号位为0(正)的情况下是指“1”,在符号位为1(负)的情况下是指“0”。(2)不为零的最低有效位位置意指中间数据的有效的最低有效位位置。它是符号位为0(正)的情况下为“1”的最低有效位位置,也是符号位为1(负)的情况下为“1”的最低有效位位置。当符号位是1时,除符号位以外的位都表示为2的补码,将2的补码转换为原始数的处理包括减1并将1、0反转为0、1。因此,为“1”的最低有效位通过减1而变为“0”,并且通过位反转而变为“1”,最后变为有效位的最低有效位位置。
(3)不是符号的最高有效位的最大值是多个中间数据的有效位的最高有效位位置的最大位置。类似地,(4)不为零的最低有效位位置的最小值是多个中间数据的有效位的最低有效位位置的最小位置。
图10和图11示出了指示(1)不是符号的最高有效位位置的分布的示例性直方图。沿横轴的直方图的箱(bin)表示以2为底的对数标度的直方图的箱,每个箱对应中间数据的有效的最高有效位,箱的高度指示每个箱的具有有效的最高有效位的中间数据的数量。在图10所示的示例中,箱的数量从-25到+13为39个。
分布中的最高箱对应于(3)不是符号的最高有效位位置的最大值。
在定点数为16位的情况下,符号位以外的位数为15位。定点数的格式表示为Qn.m。Qn.m意指n位整数部分和m位小数部分。小数点位置位于整数部分与小数部分之间。当小数点位置和位宽固定时,确定定点数格式对应于确定数据的数位的小数点位置,其中,该定点数格式具有关于表示整数部分的位的数量和表示小数部分的位的数量的信息。确定定点数格式对应于在作为计算结果的中间数据被存储为输出时将该输出限制为比中间数据小的位宽。在本实施方式中,在限制计算结果数据的位宽时在没有任何饱和和遗漏的情况下可表示的数位范围被称为位范围。
不是符号的最高有效位位置的分布的范围(直方图中的箱的数量)根据多个中间数据而变化。在图10的直方图中的分布范围内,箱的数量(-22的箱到+10的箱)变为22+10+1=33个,这没有落在定点数的15位(可表示为定点数的区域)内。高于可表示区域中的15位的高位变得上溢并饱和,而低阶位变得下溢并被忽略。在图11中的直方图中,箱的数量(-13的箱到-2的箱)变为12个,其落在定点数的15位内。
因此,基于作为直方图的统计信息的小数点位置确定方法根据直方图的水平宽度(箱的数量)是否超过15位并且未落在可表示区域(15位)内(图10)或落在可表示区域内(图11)而变化。
当图10的直方图中的水平宽度(箱的数量)33超过15位并且未落在可表示区域(15位)内时,定点数格式(小数点位置)被确定如下。即,确定高阶位侧的最大位数Bmax,高阶位侧的数据数量与直方图中的数据总数之比小于预定阈值r_max,并且在低阶位根据所确定的Bmax来确定定点数格式。如图10所示,在高阶侧从确定的Bmax开始包含箱,即,存在不可以新确定的定点数格式表示的数据。在图10中,不可以当前定点数格式表示的数据区域表示为阴影箱。根据本实施方式中的确定小数点位置的方法,通过允许数据上溢,可以忽略位于过高阶侧的最高有效位位置的离群(outlier)数据,从而增加了可表示区域内的数据的数量。
在图10所示的示例中,现有定点数格式Q5.10包含从-10到+4的位,而更新后的定点数格式Q3.12更改为包含从-12到+2的位。由于这种变化,因此中间数据的从+3到+10的有效位的最高有效位的值由于上溢而饱和,而中间数据的有效位-11、-12的最高有效位至少未被忽略。
在图11所示的示例中,由于将现有定点数格式Q4.11移位至直方图中的高阶位侧,所以更新后的定点数格式变为Q1.14。在Q1.14中,格式Q1.14的中心位位于直方图中的峰处。至少未忽略中间数据的有效位-12、-13、-14的最高有效位。
图12是图7所示的流程图中的S63中的详细处理的流程图。在S63中的详细处理中,基于根据条件确定的关于中间数据的分布的统计信息来调整DNN中的每个中间数据的定点位置。下面参照图12描述的S63中的整个详细处理可以由主机30的主处理器31执行,或者可以由DNN执行机40的DNN处理器43执行部分处理。
当S10结束时处理开始,根据存储在S61中的每一层中的统计信息来得到统计信息的最大值ub(S631)。统计信息的最大值ub对应于例如上述不是符号的最高有效位位置的最大值。接下来,根据存储在S61中的每一层中的统计信息得到最小值lb(S632)。统计信息的最小值lb对应于例如不是符号的最高有效位位置的最小值。接下来,得到分布范围ub-lb+1(S633)。ub-lb+1指示统计信息的最大值与最小值之间的宽度。接下来,确定分布范围ub-lb+1是否大于除符号位之外的位宽N(S634)。该确定对应于对以下情况的分类:直方图的水平宽度(箱的数量)未落入可表示区域内的情况(图10)或者水平宽度落入可表示区域内的情况(图11)。
当分布范围ub-lb+1不大于除符号位之外的位宽N时(S634:否),基于分布中心(ub-lb+1)/2和位宽的中心N/2确定整数部分的数位数量n(S635)。整数部分的数位数量n对应于以定点数格式Qn.m表示的n位的整数部分。当分布范围大于除符号位以外的位宽N时(S634:是),基于利用超过预定值r_max的溢出率得到数位的函数来确定整数部分的数位数量n(S636)。接下来,基于在S635或S636中得到的整数部分的数位数量n和位宽N来确定小数部分的数位数量m。小数部分的数位数量m对应于以定点数格式Qn.m表示的m位的小数部分。
[第一实施方式中的以深度学习对定点位置的调整]
下面将参照图13至图16B描述根据第一实施方式的深度学习中的统计信息获取方法。
根据第一实施方式的深度学习具有丢弃层Dropout作为DNN中的层。在根据第一实施方式的深度学习中,当调整丢弃层Dropout中的定点位置时,基于在丢弃层Dropout的先前层中获取的统计信息来调整定点位置。在根据第一实施方式的深度学习中,可以省略对丢弃层Dropout中的统计信息的获取,从而有效地减少了计算量。
图13是本实施方式中的深度学习的流程图。根据本实施方式的深度学习和图7中描述的深度学习在使用共同的附图标记的处理方面是相同的,但是在以下几点上是不同的。代替图7描述的流程图中的获取和保存每一层中的每个中间数据的值的分布作为统计信息的处理S61,获取并保存每一层中的统计信息,但是不获取特定层中的统计信息(S131)。代替图7描述的流程图中的基于每一层中的每个统计信息来调整每一层中的定点位置的处理S63,基于根据条件的统计信息调整每一层中的定点数位置(S133)。
丢弃层是旨在通过以下操作来防止DNN的过拟合(overfitting)的层:根据丢弃率将先前层的输出设置为0并且根据丢弃率将其余输出乘以常数。在DNN处理器43中包括执行丢弃层中的处理的处理电路。在丢弃层Dropout中的处理中,丢弃率r为1并且其余输出为0以创建掩蔽(mask)数据m,并且先前层中的输出x经受值的相乘或选择,并且然后将所得的相乘的值乘以系数k,以获取丢弃层Dropout的输出y。系数k根据下面提及的式(1)基于丢弃率r来表示。
Figure BDA0002421829220000121
当k是2的幂(2^q:q是整数)时,可以使用与二进制数2中的数位移位相对应的值p。可以根据下面提及的式(2)基于系数k来表示值p。
p=celi(log2k)…(2)
图14是图13中的使用动态定点数的训练过程中的S131和S133中的详细处理的第一示例的说明图。
图15是示出图13的流程图中的S133中的详细处理的第一示例的流程图。图15中描述的S133的全部处理可以由DNN执行机40执行,或者处理的一部分可以由主机30执行。
当处理S10结束时处理开始,确定调整定点位置的层是否是丢弃层(S1331)。当调整定点位置的层不是丢弃层时(S1331:否),确定将调整层中的统计信息用于后续处理(S1332)。当调整层是丢弃层时(S1331:是),确定将调整层之前的层中的统计信息用于后续处理(S1333)。在前向传播处理中,调整层之前的先前层的层是比调整层更靠近输入层的层,并且在后向传播处理中,调整层之前的先前层的层是比调整层更靠近输出层的层。接下来,根据在丢弃层中的处理中使用的丢弃率k得到值p(S1334)。如上所述,值p是与二进制数中的数位移位相对应的值。接下来,使用在S1334中得到的值p来对统计信息进行移位,并且确定在后续处理中使用经移位的统计信息(S1335)。统计信息的移位对应于值p与直方图中的箱的值的相加。
接下来,基于所确定的统计信息来调整每一层中的每个中间数据的定点位置(S1336)。除了使用根据条件确定的统计信息之外,S1336与图7和图12中描述的S63相同。
直到完成所有层中的定点位置的调整(S1337:否),重复处理S1331至S1336。当所有层中的定点位置的调整完成时(S1337:是),处理进行至S11。
图16A和图16B是示出在丢弃层中的处理之前和之后的最高有效位位置的分布的示例的图。使用上面提及的处理电路,丢弃层根据预定规则执行计算。根据丢弃层的预定规则,针对先前层中的输出,将对应于丢弃率r的数据乘以0以输出相乘的数据,并且将其余数据乘以k以输出相乘的数据。可以根据预定规则来预测由于丢弃层中的处理导致的数据的变化,即,丢弃层中的处理之前和之后的最高有效位位置的分布的变化。
在丢弃层中的处理中,针对先前层(图14所示的示例中的Conv_2)中的输出,将与丢弃率r相对应的数据乘以0,并且将其余数据乘以系数k。不管从先前层输入的数据如何,可以基于上述式(1)和式(2)中的值p来预测由于相乘的系数k而引起的数据的数位数量的变化,即,最高有效位位置的分布被移位的数位的数量的变化。例如,当丢弃率r为1/2时,系数k变为2,并且值p变为1。图16A中的直方图表示在丢弃层中的处理之前的数据的最高有效位位置的分布。图16B中的直方图表示在丢弃层中的处理之后的数据的最高有效位位置的分布。与图16A中的直方图相比,在图16B中的直方图中,所有箱的高度变为一半,并且所有箱向高阶侧移位一个数位。箱的高度的变化是每个箱中的数据的数目的变化,并且对应于与丢弃率r=1/2的相乘。箱的移位指示数据的最高有效位位置沿横轴的变化,并且意指通过将其余数据乘以系数k=2来将最高有效位的数位向高阶侧移位一个数位。
图16A中的直方图对应于丢弃层之前的层(图14中所示的示例中的Conv_2)中的关于中间数据的统计信息。图16B中的直方图对应于将图16A中的直方图移位值p。分布的最大值和最小值几乎不会由于箱的高度的变化而变化。因此,在丢弃层中处理的数据的最高有效位呈现出与图16B中的直方图中的趋势相同的趋势。可以基于第二统计信息来设置适当的点位置,该第二统计信息是通过将丢弃层之前的层中的统计信息移位值p而获取的。因此,可以省略对丢弃层中的统计信息的获取。设置适当的点位置可以在保持计算准确度的同时有效地减少计算量。
[定点DNN处理器的配置和统计信息的获取]
接下来,将描述根据本实施方式的定点DNN处理器43的配置和统计信息的获取。
图17是示出DNN处理器43的配置的示例的图。DNN处理器43包括指令控制单元INST_CON、寄存器文件REG_FL、特殊寄存器SPC_REG、标量计算单元SC_AR_UNIT、矢量计算单元VC_AR_UNIT以及统计信息聚合器ST_AGR_1、ST_AGR_2。
DNN处理器43包括在矢量计算单元VC_AR_UNIT中的计算定点数的整数计算机INT和计算浮点数的浮点计算机FP。即,DNN处理器43包括执行定点计算的DNN处理器43_1和执行浮点计算的DNN处理器43_2。
指令存储器(INST_RAM)45_1和数据存储器(DATA_RAM)45_2经由存储器访问控制器44耦接至DNN处理器43。存储器访问控制器44具有指令存储器访问控制器(INST_MC)44_1和数据存储器访问控制器(DATA_MC)44_2。
指令控制单元INST_CON具有例如程序计数器PC和指令解码器DEC。指令控制单元INST_CON基于程序计数器PC的地址从指令存储器45_1提取指令,对从指令解码器DEC提取的指令进行解码,并且将解码的指令发布至计算单元。
寄存器文件REG_FL具有由标量计算单元SC_AR_UNIT使用的标量寄存器文件SC_REG_FL和标量累加寄存器SC_ACC。寄存器文件REG_FL具有由矢量计算单元VC_AR_UNIT使用的矢量寄存器文件VC_REG_FL和矢量累加寄存器VC_ACC。
标量寄存器文件SC_REG_FL具有例如32位标量寄存器SR0-SR31和32位+α位标量累加寄存器SC_ACC。
矢量寄存器文件VC_REG_FL具有例如8组REG00-REG07至REG70-REG77,每组具有32位8元素寄存器REGn0-REGn7。矢量累加寄存器VC_ACC具有例如A_REG0至A_REG7,每个具有8元素32位+α位寄存器。
标量计算单元SC_AR_UNIT具有整数计算机INT、数据转换器D_CNV和统计信息获取器ST_AC的集合。数据转换器D_CNV将从整数计算机INT输出的定点数的输出数据转换为浮点数。标量计算单元SC_AR_UNIT使用标量寄存器文件SC_REG_FL中的标量寄存器SR0-SR31和标量累加寄存器SC_ACC来执行计算。例如,整数计算机INT计算存储在任何标量寄存器SR0-SR31中的输入数据,并且将输出数据存储在另一寄存器中。当执行乘积和计算时,整数计算机INT还将乘积和计算的结果存储在标量累加寄存器SC_ACC中。标量计算单元SC_AR_UNIT的计算结果被存储在标量寄存器文件SC_REG_FL、标量累加寄存器SC_ACC或数据存储器45_2中的任一个中。
示例计算单元VC_AR_UNIT具有8元素(元)计算单元EL0-EL7。元素EL0-EL7每个具有整数计算机INT、浮点计算机FP和数据转换器D_CNV。例如,矢量计算单元输入矢量寄存器文件VC_REG_FL中的8元素寄存器REGn0-REGn7的组中的一个,由8元素计算机并行执行计算,并且将计算结果存储在另一组8元素寄存器REGn0-REGn7中。
作为计算的结果,数据转换器D_CNV对从数据存储器45_2的读取结果获取的定点数数据进行移位。数据转换器D_CNV将定点数数据移位由指令解码器DEC提取的指令中指定的移位量S。数据转换器D_CNV的移位对应于与定点数格式相对应的小数点位置的调整。数据转换器D_CNV还执行这样的移位以及定点数数据的高阶位的饱和以及低阶位的舍入。数据转换器D_CNV包括:舍入单元,其接收输入作为40位计算结果并舍入低阶位作为小数部分;移位器,其执行运算移位;以及饱和单元,其执行饱和处理。
在向左移位时,数据转换器D_CNV保持高阶位的符号,并且在饱和处理中,即当发生上溢时,当符号位为正时,将符号位以外的位的值替换为正的最大值,并且当符号位为负时,将符号位以外的位的值替换为负的最大值。在向右移位时,数据转换器D_CNV还将符号位嵌入(低于符号位的)高阶位中。在具有与寄存器文件REG_FL的寄存器的相同的位宽的情况下,数据转换器D_CNV输出在如上所描述的舍入、移位和饱和处理中获取的数据。数据转换单元是调整定点数数据的小数点位置的电路的示例。
矢量计算单元VC_AR_UNIT还使用8元素计算机执行乘积和计算,并且将乘积和结果的累加值存储在矢量累加寄存器VC_ACC中的各个8元素寄存器A_REG0至A_REG7中。
对于矢量寄存器REGn0-REGn7和矢量累加寄存器A_REG0至A_REG7,由于要计算的数据的位数为32位、16位、8位,因此计算元素的数目增加了8、16、32。
矢量计算单元VC_AR_UNIT具有八个统计信息获取器ST_AC,统计信息获取器获取各个8元素整数计算机INT的输出数据的统计信息。统计信息是关于整数计算机INT的输出数据的不是符号的最高有效位位置的信息。统计信息作为稍后参照图20描述的位模式BP被获取。统计信息获取器ST_AC除了整数计算机INT的输出数据之外还可以输入数据存储器45_2、标量寄存器文件SC_REG_FL和标量累加寄存器SC_ACC中的数据,并且获取统计信息。
如图23所示,统计信息寄存器文件ST_REG_FL包括具有例如32位×40元素统计信息寄存器STR0-STR39的8组STR0_0-STR0_39至STR7_0-STR7_39。
标量寄存器SR0-SR31存储DNN的地址和参数。矢量寄存器REG00-REG07至REG70-REG77存储矢量计算单元VC_AR_UNIT的输入数据和输出数据。矢量累加寄存器VC_ACC存储矢量寄存器的乘法结果和加法结果。
统计信息寄存器STR0_0-STR0_39至STR7_0-STR7_39存储属于八种或更少类型的直方图的多个箱的数据的数目。当整数计算机INT的输出数据是40位时,对于40位中的每个位,具有不是符号的最高有效位的数据的数目被存储在例如统计信息寄存器STR0_0-STR0_39中。
标量计算单元SC_AR_UNIT具有四个基本计算:移位计算、分支、加载和存储。如上所描述的,标量计算单元SC_AR_UNIT包括统计信息获取器ST_AC,该统计信息获取器ST_AC从整数计算机INT的输出数据获取具有不是符号的最高有效位位置的统计信息。
矢量计算单元VC_AR_UNIT使用矢量累加寄存器VC_ACC执行浮点计算、整数计算以及乘积和计算。矢量计算单元VC_AR_UNIT还执行矢量累加寄存器VC_ACC的清除、乘积和计算(乘法和累加:MAC)、累计加法,以及向矢量寄存器文件VC_REG_FL的传输。此外,矢量计算单元VC_AR_UNIT执行加载和存储。如上所描述的,矢量计算单元VC_AR_UNIT包括统计信息获取器ST_AC,统计信息获取器ST_AC从8元素整数计算机INT的每一个的输出数据获取具有不是符号的最高有效位位置的统计信息。
[统计信息的获取、聚合和存储]
接下来,将描述由DNN处理器43进行关于计算输出数据的统计信息的获取、聚合和存储。由DNN处理器43使用从主处理器31发送的指令作为触发来执行统计信息的获取、聚合和存储。因此,除了DNN的每一层中的计算指令之外,主处理器31还将执行统计信息的获取、聚合、存储的指令发送至DNN处理器43。可替选地,对于在每一层中的计算,主处理器31将具有统计信息的获取、聚合、存储的处理的计算指令发送至DNN处理器43。
图18是示出DNN处理器43的统计信息的获取、聚合、存储处理的流程图。首先,矢量计算单元VC_AR_UNIT中的八个统计信息获取器ST_AC每个输出指示从整数计算机INT通过每一层中的计算获取的中间数据的不是符号的最高有效位位置的位模式(S170)。稍后将描述位模式。
接下来,统计信息聚合器ST_AGR_1将八位模式的每个位的“1”聚合(S171)。
统计信息聚合器ST_AGR_2将S171中的聚合值与统计信息寄存器文件ST_REG_FL中的统计信息寄存器中的值相加,并且将该值存储在统计信息寄存器文件ST_REG_FL中(S172)。
在通过矢量计算单元VC_AR_UNIT中的八元素EL0-EL7在每一层中计算出的中间数据的每次生成时,重复上面提及的处理S170、S171和S172。
在深度学习的处理中,当针对K个小批中的多个中间数据完成上面提及的统计信息的获取、聚合、存储时,关于K个小批中的多个中间数据的不是符号的最高有效位的直方图中的箱的数目的统计信息被存储在统计信息寄存器文件ST_REG_FL中。因此,K个小批中的中间数据的不是符号的最高有效位位置的总和按位计数。基于统计信息调整每个中间数据的小数点位置。
每一层中的中间数据的小数点位置例如由主机30的主处理器31来调整。存储在统计信息寄存器STR0_0-STR0_39中的每一层中的统计信息被写入主机30的数据存储器45_2,并且主处理器31执行计算以执行图12中描述的处理。主处理器31得到新确定的小数点位置与当前小数点位置之间的差异,并且将该差异作为移位量S写入数据存储器45_2中。
[统计信息的获取]
图19是示出统计信息获取器ST_AC的逻辑电路的示例的图。图20是示出通过统计信息获取器获取的计算输出数据的位模式BP的图。统计信息获取器ST_AC输入在整数计算器INT的[39:0]输出中的N位(N=40)中间数据(例如,前向传播处理中卷积的计算输出数据,以及后向传播处理中误差和权重的更新差异),并且输出指示不是符号的最高有效位位置为“1”并且其他位置为“0”的位模式输出out[39:0]。
如图20所示,对于作为中间数据的[39:0]中的输入,统计信息获取器ST_AC将输出out[39:0]输出作为位模式BP,该输出out[39:0]在不是符号(与符号位不同的1或0)的最高有效位位置为“1”并且在其他位置为“0”。图20示出了统计信息获取器ST_AC的真值表。
根据真值表,前两行表示如下示例,其中输入in[39:0]的所有位与符号位“1”、“0”匹配,并且输出out[39:0]的最高有效位out[39]为“1”(0x8000000000)。接下来的两行表示如下示例,其中输入in[39:0]的38位in[38]与符号位“1”、“0”不同,并且输出out[39:0]的38位out[38]为“1”而其他为“0”。底部两行表示如下示例,其中输入in[39:0]的0位in[0]与符号位“1”、“0”不同,并且输出out[39:0]的0位out[0]为“1”而其他位为“0”。
如下所示,图19中示出的逻辑电路图检测不是符号的最高有效位位置。首先,符号位in[39]与in[38]不匹配,EOR38的输出变为“1”,并且输出out[38]变为“1”。当EOR38的输出变为“1”时,其他输出out[39]、out[38:0]通过逻辑或OR37-OR0、逻辑与AND37-AND0和反相门INV变为“0”。
当符号位in[39]与in[38]匹配,而与in[37]不匹配时,EOR38的输出变为“0”,EOR37的输出变为“1”,并且输出out[37]变为“1”。当EOR37的输出变为“1”时,其他输出out[39:38]、out[36:0]通过逻辑或OR36-OR0和逻辑与AND36-AND0以及反相门INV变为“0”。在下文中同样适用。
从图19和图20明显看出,统计信息获取器ST_AC输出作为计算的输出的包括与中间数据的符号位不同的最高有效位位置“1”或“0”的分布信息作为位模式BP。
[统计信息的聚合]
图21是示出统计信息聚合器ST_AGR_1的逻辑电路的示例的图。图22是统计信息聚合器ST_AGR_1的操作的说明图。统计信息聚合器ST_AGR_1输入作为由矢量计算单元VC_AR_UNIT获取的八条统计信息的位模式BP_0至BP_7,并且输出out0至out39,八个位模式BP_0至BP_7的每个位的“1”被添加至out0至out39。例如,位模式BP_0至BP_7每个具有40位,并且out0至out39每个具有4位。
如图21中的逻辑电路所示,统计信息聚合器ST_AGR_1在加法电路SIGM_0-SIGM_39中将由矢量计算单元VC_AR_UNIT中的统计信息获取器ST_AC中的每一个获取的位模式BP_0至BP_7的每个位的“1”相加,并且生成相加结果作为输出out0至out39。如图22所示,输出是out0至out39。输出的每个位是log2(元素数目=8)+1位,以便对元素数目进行计数,并且因此,当元素数目为8时输出的每个位是4位。
统计信息聚合器ST_AGR_1可以原样输出由标量计算单元SC_AR_UNIT中的统计信息获取器ST_AC获取的一个位模式BP。因此,提供了选择器SEL,每个选择器SEL选择加法电路SIGM_0-SIGM_39的输出或标量计算单元SC_AR_UNIT的位模式BP。
图23是示出第二统计信息聚合器ST_AGR_2和统计信息寄存器文件ST_REG_FL的示例的图。第二统计信息聚合器ST_AGR_2将由第一统计信息聚合器ST_AGR_1聚合的输出out0至out39的每个位的值与统计信息寄存器文件ST_REG_FL中设置的一个寄存器的值相加,并且存储相加的值。
统计信息寄存器文件ST_REG_FL具有例如8组40个32位寄存器STRn_39至STRn_0(n=0至7)。因此,它可以在八种类型的直方图每种中存储40个箱。假设要聚合的统计信息被存储在40个32位寄存器STR0_39至STR0_0(n=0)中。第二统计信息聚合器ST_ARG_2具有将由第一统计信息聚合器ST_AGR_1聚合的聚合值in[39:0]与存储在40个32位寄存器STR0_39至STR0_0中的累加值中的每一个相加的加法器ADD_39至ADD_0。加法器ADD_39至ADD_0的输出被重新存储在40个32位寄存器STR0_39至STR0_0中。因此,目标直方图中的每个箱的样本数目被存储在40个32位寄存器STR0_39至STR0_0中。
图17、图19、图21和图23中示出的计算单元中的统计信息获取器ST_AC和统计信息聚合器ST_AGR_1、ST_AGR_2的硬件电路可以获取DNN的每一层中计算的中间数据的不是符号(对于正数的最左置位位置和对于负数的最左未置位位置)的最高有效位位置的分布(直方图中每个箱的样本数目)。
除了不是符号的最高有效位位置的分布以外,还可以通过使用DNN处理器43中的硬件电路以相同的方式来获取不为零的最低有效位位置的分布。可以类似地获取不是符号的最高有效位位置的最大值和不为零的最低有效位位置的最小值。
由于可以通过DNN处理器43的硬件电路获取统计信息,因此可以以较少数目的工时来调整深度学习中的中间数据的定点位置。
[第二实施方式中深度学习中的定点位置的调整]
下面将参照图24和图25描述根据第二实施方式的深度学习中的统计信息获取方法。
根据第二实施方式的深度学习具有整流线性单元(ReLU)层ReLU作为DNN中的层。在根据第二实施方式的深度学习中,在调整ReLU层ReLU中的定点位置时,基于在ReLU层ReLU之前的层中获取的统计信息来调整定点位置。根据第二实施方式的深度学习可以省略在ReLU层ReLU中的统计信息的获取,从而减少了计算量。
整流线性单元(ReLU)层是旨在通过将先前层中的输出中小于0的输出设置为0并且按原样输出0或更大的输出来减少DNN的过拟合的层。在DNN处理器43中包括执行在ReLU层中的处理的处理电路。在ReLU层ReLU中的处理中,确定先前层的输出x是否为0或更大,并且根据确定结果选择输出x或0以获取ReLU层ReLU中的输出y。
图24是图13中的使用动态定点数的训练过程中的S131和S133的细节的第二示例的说明图。
图25是图13中示出的流程图中的S133的详细处理的第二示例的流程图。省略与第一实施方式中相同的部分的描述。
当S10完成时,处理开始,并且确定调整定点位置的层是否是ReLU层(S2331)。当调整层是ReLU层时(S2331:是),确定使用在调整层之前的层中的统计信息进行后续处理(S2333)。
与丢弃层一样,ReLU层使用上面提及的处理电路根据预定规则执行计算。根据ReLU层的预定规则,将先前层的输出中具有小于0的值的数据的值改变为0,并且原样输出先前层的输出中具有值为0或更大的数据的值。可以根据预定规则来预测由于处理引起的数据变化,即,在ReLU层中的处理之前和处理之后数据的最高有效位位置的分布的变化。
在ReLU层的处理中,在先前层(图24所示的示例中的Conv_2)的输出中,将具有小于0的值的数据的值改变为0,并且按原样输出具有值为0或更大的数据的值。由于具有小于0的值的数据被四舍五入,因此正数据中的最大值和最小值不变。不管从先前层输入的数据如何,在ReLU层中的处理之后的中间数据的分布范围与关于在ReLU层之前的层(图24所示的示例中的Conv_2)中的中间数据的统计信息的范围相匹配。ReLU层之前的层中的统计信息可以是第二统计信息,并且可以基于第二统计信息来设置适当的点位置。因此,可以省略在ReLU层中的统计信息的获取。设置适当的点位置可以在保持计算准确度的同时有效地减少计算量。
[第三实施方式中深度学习中的定点位置的调整]
下面将参照图26和图27描述根据第三实施方式的深度学习中的统计信息获取方法。
根据第三实施方式的深度学习具有池化层Pool_1、Pool_2作为DNN中的层。在根据第三实施方式的深度学习中,在调整池化层Pool_1、Pool_2中的定点位置时,基于在池化层Pool_1、Pool_2之前的层中获取的统计信息来调整定点位置。根据第三实施方式的深度学习可以有利地省略在池化层Pool_1、Pool_2中的统计信息的获取,从而减少了计算量。
在DNN处理器43中包括执行池化层中的处理的处理电路。在池化层Pool_1、Pool_2中的处理中,选择先前层中的多个输出x中的局部值例如预定像素范围(内核)中的最大值,以获取池化层Pool_1、Pool_2中的输出y。
图26是图13中的使用动态定点数的训练过程中的S131和S133的细节的第三示例的说明图。
图27是图13中示出的流程图中的S133的详细处理的第三示例的流程图。省略与第二实施方式中相同的部分的描述。
当S10完成时,处理开始,并且确定调整定点位置的层是否是池化层(S3331)。当调整层是池化层时(S3331:是),确定使用在调整层之前的层中的统计信息进行后续处理(S3333)。
类似于丢弃层,池化层使用上面提及的处理电路根据预定规则执行计算。根据池化层的预定规则,选择先前层中的输出的每个内核的最大值,并且将属于该内核的数据改变为内核的最大值。可以根据预定规则来预测由于处理引起的数据变化,即,在池化层中的处理之前和处理之后最高有效位位置的分布的变化。
当在池化层的处理中得到最大值时,先前层(在图26所示的示例中为Conv_1、Conv_2)的输出是通过处理对每个内核的最大值的选择。由于选择了每个内核的最大值来输出,因此不会输出比先前层中的最大值更大的值。在池化层中进行处理之后的中间数据的分布的最大值与关于池化层之前的层(在图26所示的示例中为Conv_1、Conv_2)中的中间数据的统计信息的最大值相匹配。由于仅需要表示先前层中的输出的最大值,因此可以将池化层之前的层中的统计信息定义为第二统计信息,并且可以基于第二统计信息来设置适当的点位置。因此,可以省略池化层中的统计信息的获取。设置适当的点位置可以在保持计算准确度的同时有效地减少计算量。
[第四实施方式中深度学习中的定点位置的调整]
下面将参照图28至图30描述根据第四实施方式的深度学习中的统计信息获取方法。
根据第四实施方式的深度学习具有连接(Concat)层Concat作为DNN中的层。在根据第四实施方式的深度学习中,在调整连接层Concat中的定点位置时,基于在耦接至连接层Concat的所有先前层中获取的统计信息来调整定点位置。在调整连接层Concat之前的层中的定点位置时,基于在耦接至连接层Concat的所有先前层中获取的统计信息来调整定点位置。根据第四实施方式的深度学习可以省略在连接层Concat中的统计信息的获取,有利地减少了计算量。所有先前层和连接层Concat中的小数点位置可以彼此匹配,从而抑制了计算准确度的降低。
执行连接层Concat中的处理的处理电路包括在DNN处理器43中。在连接层Concat的处理中,数据在DNN的中间被分成多片,并且将在不同层中计算出的数据片进行连接。
由于在连接层Concat中连接的划分的数据片是在不同的先前层中计算的,因此在训练处理中,作为深度学习的示例,基于先前层中的计算结果确定小数点位置。通常,在先前层中确定的两个小数点位置彼此不匹配。当尝试调整连接层Concat中的小数点位置以便在可表达范围内包含先前层中的最大值时,由于双重饱和和舍入处理而导致的数据丢失会增加。
图28是深度学习的示例中的双重饱和和舍入处理的说明图。图28中示出的每个矩形表示输入/输出数据的数位。图28中示出的每个黑色圆圈表示定点的小数点位置。先前层1的输出61和先前层2的输出62表示在矢量累加寄存器VC_ACC中存储了在先前层1和先前层2中计算出的值的状态下的数据。来自先前层1的输入63和来自先前层2的输入64表示通过对先前层1的输出61和先前层2的输出62应用饱和和舍入处理而获取并且输入至连接层Concat的数据。连接层的输出65、66表示通过对来自先前层1的输入63和来自先前层2的输入64应用饱和和舍入处理而获取并且从连接层Concat输出的数据。先前层1和先前层2是耦接至连接层Concat的先前的层。
基于在先前层1和先前层2中确定的小数点位置,对先前层1的输出61和先前层2的输出62进行饱和和舍入处理,并且丢失了与小数点位置相对应的可表达范围之外的数位的值。基于在连接层Concat中确定的小数点位置,对连接层的输出65进行饱和和舍入处理,并且丢失了与小数点位置相对应的可表达范围之外的数位的值。在图28所示的示例中,在先前层1中的小数点位置是Q5.2,在先前层2中的小数点位置是Q3.4,并且在连接层Concat中的小数点位置是Q4.3。
由于先前层1、先前层2和连接层Concat具有不同的小数点位置,因此直到根据先前层1的输出61和先前层2的输出62计算出连接层的输出65,才执行双重饱和和舍入处理并且存在可表达范围之外的数位的值。
基于先前层1中的小数点位置Q5.2对先前层1的输出61的轮廓线数位进行舍入处理,并且基于连接层Concat中的小数点位置Q4.3用“0”补充最低有效位。轮廓线数位的值从对先前层1的输出61应用双重饱和和舍入处理到输出连接层的输出65而丢失。
基于先前层2中的小数点位置Q3.4对先前层2的输出62的轮廓线数位进行饱和处理,并且基于连接层Concat中小数点位置Q4.3用正值补充最高有效位即与符号位相邻的位。在饱和处理中,例如,当先前层2的输出62为正时,利用在可表达范围内的最大值对该值进行饱和。轮廓线数位的值从对先前层2的输出62应用双重饱和和舍入处理到输出连接层中的输出66而丢失。
图29是图13中的使用动态定点数的训练过程中的S131和S133的细节的第四示例的说明图。
图30是示出图13所示的流程图中的S133的详细处理的第四示例的流程图。省略与第二实施方式中相同的部分的描述。
当S10完成时,处理开始,并且确定在调整定点位置的层之后的层是否是连接层(S4330)。当调整层之后的层是连接层时(S4330:是),从寄存器获取在耦接至连接层的所有先前层(图29所示的示例中的Conv_2、Conv_3)中获取的统计信息(图29所示的示例中的统计信息1和统计信息2)(S4333)。接下来,对在S4333中获取的所有统计信息的集合(在图29所示的示例中,统计信息1+统计信息2)求和(S4334)。统计信息的求和由DNN处理器43中的标量计算单元SC_AR_UNIT执行。接下来,确定使用在S4334中求和的统计信息进行后续处理(S4335)。当调整层之后的层不是连接层时(S4330:否),确定调整定点位置的层是否是连接层(S4331)。当调整层是连接层时(S4331:是),执行处理S4333至S4335。被确定要在连接层之前的层中使用的统计信息可以用作连接层中的用于后续处理的统计信息。在先前层中调整的定点位置可以用作连接层中的定点位置。
连接层根据预定规则执行计算。根据连接层的预定规则,将先前层中的输出进行连接。可以根据预定规则来预测由于处理引起的数据变化,即,在连接层中处理之前和处理之后的数据的最高有效位位置的分布的变化。
在连接层Concat的处理中,将先前层(图29所示的示例中的Conv_2、Conv_3)的输出进行连接并作为一个数据组来处理。例如,由于将先前层1中的数据组和先前层2中的数据组进行连接,因此通过对先前层1中的统计信息1和先前层2中的统计信息2进行求和而获取的统计信息对应于在连接层Concat中的处理之后的中间数据的分布。可以基于在连接层Concat之前的所有层中的求和的统计信息来设置适当的点位置。因此,可以省略在连接层Concat中的统计信息的获取。所有先前层和连接层Concat中的小数点位置可以彼此匹配,使得直到从先前层中的输出计算出连接层Concat的输出才执行双重饱和和舍入处理,从而抑制了值的丢失。设置适当的点位置可以在保持计算准确度的同时有效地减少计算量。

Claims (7)

1.一种信息处理器,包括:
存储器;以及
处理器,所述处理器耦接至所述存储器并且所述处理器被配置成:
在用于执行深度学习的神经网络的多个层中的计算中,针对多个第一定点数数据中的每一个,获取关于不是符号的最高有效位位置或者不为零的最低有效位位置的分布的第一统计信息,所述多个第一定点数数据是第一层中的计算的计算结果;
在第二层中的计算中,根据预定规则对所述第一层的多个输出数据执行计算;
基于所述预定规则和所述第一统计信息来获取第二统计信息;以及
基于所述第二统计信息来确定用于限制多个第二定点数数据被存储在寄存器中时的位宽的位范围,所述多个第二定点数数据是所述第二层中的计算的计算结果。
2.根据权利要求1所述的信息处理器,其中,
在根据所述预定规则的计算中,将所述第一层的所述多个输出数据中的预定比率的数据乘以0,并将所述第一层的其余输出数据乘以根据所述预定比率得到的系数,并且
通过基于所述系数对所述第一统计信息进行移位来获取所述第二统计信息。
3.根据权利要求1所述的信息处理器,其中,
在根据所述预定规则的计算中,将所述第一层的所述多个输出数据中具有小于0的值的数据的值乘以0。
4.根据权利要求1所述的信息处理器,其中,
在根据所述预定规则的计算中,将所述第一层的所述多个输出数据划分为多个组,得到所述多个组中的预定组的最大值,并且将所述第一层的所述输出数据中的属于所述预定组的每个输出数据的值改变为所述预定组的最大值。
5.根据权利要求1所述的信息处理器,其中,所述处理器被配置成:
针对多个第三定点数数据中的每一个,获取关于最高有效位位置或最低有效位位置的分布的第三统计信息,所述多个第三定点数数据是第三层中的计算的计算结果,
在根据所述预定规则的计算中,将所述第一层的所述多个输出数据和来自所述第三层的多个输出数据连接,并且
通过对所述第一统计信息和所述第三统计信息求和来获取所述第二统计信息。
6.一种信息处理方法,其由计算机执行,所述信息处理方法包括:
在用于执行深度学习的神经网络的多个层中的计算中,针对多个第一定点数数据中的每一个,获取关于不是符号的最高有效位位置或者不为零的最低有效位位置的分布的第一统计信息,所述多个第一定点数数据是第一层中的计算的计算结果;
在第二层中的计算中,根据预定规则对所述第一层的多个输出数据执行计算;
基于所述预定规则和所述第一统计信息来获取第二统计信息;以及
基于所述第二统计信息来确定用于限制多个第二定点数数据被存储在寄存器中时的位宽的位范围,所述多个第二定点数数据是所述第二层中的计算的计算结果。
7.一种非暂态计算机可读存储介质,其存储有使计算机执行处理的程序,所述处理包括:
在用于执行深度学习的神经网络的多个层中的计算中,针对多个第一定点数数据中的每一个,获取关于不是符号的最高有效位位置或者不为零的最低有效位位置的分布的第一统计信息,所述多个第一定点数数据是第一层中的计算的计算结果;
在第二层中的计算中,根据预定规则对所述第一层的多个输出数据执行计算;
基于所述预定规则和所述第一统计信息来获取第二统计信息;以及
基于所述第二统计信息来确定用于限制多个第二定点数数据被存储在寄存器中时的位宽的位范围,所述多个第二定点数数据是所述第二层中的计算的计算结果。
CN202010208022.2A 2019-03-29 2020-03-23 信息处理器、信息处理方法和存储介质 Pending CN111753951A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-067701 2019-03-29
JP2019067701A JP7188237B2 (ja) 2019-03-29 2019-03-29 情報処理装置、情報処理方法、情報処理プログラム

Publications (1)

Publication Number Publication Date
CN111753951A true CN111753951A (zh) 2020-10-09

Family

ID=69844651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010208022.2A Pending CN111753951A (zh) 2019-03-29 2020-03-23 信息处理器、信息处理方法和存储介质

Country Status (4)

Country Link
US (1) US11551087B2 (zh)
EP (1) EP3716043B1 (zh)
JP (1) JP7188237B2 (zh)
CN (1) CN111753951A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7137067B2 (ja) * 2018-10-25 2022-09-14 富士通株式会社 演算処理装置、学習プログラム及び学習方法
WO2022215173A1 (ja) * 2021-04-06 2022-10-13 三菱電機株式会社 固定小数点演算ビット幅の検証システム及び決定システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107247944A (zh) * 2017-06-28 2017-10-13 北京智慧眼科技股份有限公司 基于深度学习的人脸检测速度优化方法及装置
CN107330515A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
WO2018139266A1 (ja) * 2017-01-30 2018-08-02 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム
CN108364065A (zh) * 2018-01-19 2018-08-03 上海兆芯集成电路有限公司 采布斯乘法的微处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190399A (ja) 1990-11-26 1992-07-08 Oki Electric Ind Co Ltd Vselp符号化方式
JPH0784975A (ja) 1993-09-10 1995-03-31 Hitachi Ltd 情報処理装置および学習演算処理方法
JP2008059287A (ja) 2006-08-31 2008-03-13 Brother Ind Ltd 画像処理装置および画像処理プログラム
JP2009271598A (ja) 2008-04-30 2009-11-19 Toshiba Corp プロセッサ
JP2012203566A (ja) 2011-03-24 2012-10-22 Seiko Epson Corp 状態推定装置、電子機器及びプログラム
GB201607713D0 (en) 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
US20180107451A1 (en) 2016-10-14 2018-04-19 International Business Machines Corporation Automatic scaling for fixed point implementation of deep neural networks
JP6704341B2 (ja) 2016-12-27 2020-06-03 株式会社デンソーアイティーラボラトリ 情報推定装置及び情報推定方法
JP7095675B2 (ja) 2017-02-23 2022-07-05 ソニーグループ株式会社 情報処理装置、情報処理方法、並びにプログラム
KR102601604B1 (ko) 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107330515A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
WO2018139266A1 (ja) * 2017-01-30 2018-08-02 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム
CN107247944A (zh) * 2017-06-28 2017-10-13 北京智慧眼科技股份有限公司 基于深度学习的人脸检测速度优化方法及装置
CN108364065A (zh) * 2018-01-19 2018-08-03 上海兆芯集成电路有限公司 采布斯乘法的微处理器

Also Published As

Publication number Publication date
EP3716043B1 (en) 2023-11-15
JP7188237B2 (ja) 2022-12-13
JP2020166674A (ja) 2020-10-08
US20200311545A1 (en) 2020-10-01
EP3716043A1 (en) 2020-09-30
US11551087B2 (en) 2023-01-10

Similar Documents

Publication Publication Date Title
JP6528893B1 (ja) 学習プログラム、学習方法、情報処理装置
JP7174243B2 (ja) 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
CN108845828B (zh) 一种协处理器、矩阵运算加速方法及系统
CN111753951A (zh) 信息处理器、信息处理方法和存储介质
EP3769208B1 (en) Stochastic rounding logic
US20180293486A1 (en) Conditional graph execution based on prior simplified graph execution
US11809836B2 (en) Method and apparatus for data processing operation
EP3798929A1 (en) Information processing apparatus, information processing method, and information processing program
EP2940576B1 (en) Approximating functions
JP7137067B2 (ja) 演算処理装置、学習プログラム及び学習方法
US20210216867A1 (en) Information processing apparatus, neural network computation program, and neural network computation method
CN111124361A (zh) 算术处理装置及其控制方法
JPWO2020084723A1 (ja) 演算処理装置及び演算処理装置の制御方法
WO2023248309A1 (ja) データ処理装置、データ処理プログラム、及びデータ処理方法
CN112732223B (zh) 半精度浮点数除法器数据处理方法及系统
CN116136752B (zh) 阵列输入策略的确定方法和系统
Sudiro et al. Mean and variance statistic for image processing on FPGA
Furuta et al. An Efficient Implementation of FPGA-based Object Detection Using Multi-scale Attention
CN117767959A (zh) 通过乘加阵列对特征数据进行处理的方法和装置
CN115220693A (zh) 乘法-累加设备
CN113158137A (zh) 算术处理设备、控制算术处理设备的方法和算术处理程序
CN118034642A (zh) 浮点运算方法、装置、电子设备及存储介质
CN118227944A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
CN116348883A (zh) 神经网络生成装置、神经网络控制方法以及软件生成程序
CN113723589A (zh) 混合精度神经网络

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination