CN111353578A - 信息处理装置、神经网络程序和用于神经网络的处理方法 - Google Patents
信息处理装置、神经网络程序和用于神经网络的处理方法 Download PDFInfo
- Publication number
- CN111353578A CN111353578A CN201911319384.2A CN201911319384A CN111353578A CN 111353578 A CN111353578 A CN 111353578A CN 201911319384 A CN201911319384 A CN 201911319384A CN 111353578 A CN111353578 A CN 111353578A
- Authority
- CN
- China
- Prior art keywords
- time
- circuit
- layer
- operations
- sum
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了信息处理装置、神经网络程序和用于神经网络的处理方法。信息处理装置包括处理器,该处理器包括执行积和运算的第一运算电路、执行特定运算的第二运算电路和寄存器。该处理器在神经网络中的第一层中执行包括特定运算的第一运算。在当由第二运算电路执行特定运算时第一运算所需的第二运算时间小于转储时间的情况下,处理器通过由第二运算电路计算特定运算的第二方法来执行第一运算。或者,在当通过由第一运算电路通过近似计算来计算特定运算的第一方法执行时第一运算所需的第一运算时间小于转储时间的情况下,处理器通过第一方法来执行第一运算。
Description
技术领域
本发明涉及信息处理装置、神经网络程序和用于神经网络的处理方法。
背景技术
深度学习(下文称为DL)是使用多层神经网络(下文称为NN)的机器学习。作为深度学习的示例的深度神经网络(下文称为DNN)是输入层、多个隐藏层和输出层按顺序被布置在其中的网络。每一层具有一个或多个节点,并且每个节点具有值。一层与下一层之间的节点通过边彼此连接,并且每个边具有变量(或参数),例如权重或偏差。
在NN中,例如,通过基于前一级中的边的权重和节点的值执行预定运算(或计算(computation)、计算(calculation)或算术运算,下文称为“运算”)来获得每一层中的节点的值。当输入数据被输入至输入层的节点时,通过预定运算获得下一层(第一层)中的节点的值。然后,将通过该运算获得的数据输入至下一层(第二层),该下一层通过针对该层(第二层)的预定运算获得该层(第二层)中的节点的值。然后,作为最终层的输出层中的节点的值变成针对输入数据的输出数据。
NN中的多个层基于变量和来自先前层的输入数据执行各种运算。多个层的运算包括:(1)基本算术运算,即,加、减、乘和除;(2)积和运算,在该积和运算中一起执行乘法和加法;(3)逻辑运算;以及(4)特殊运算,例如自乘、除法(包括倒数)、双曲正切(tanh)、平方根以及S形函数。
处理器通常包括积和运算电路和特殊运算电路作为运算电路。积和运算电路除了乘法器和加法器-减法器以外还包括逻辑运算电路,以便执行积和运算。另一方面,特殊运算电路包括执行除了由积和运算电路执行的运算以外的特殊运算的多个运算电路。作为示例,在本说明书中由特殊运算电路中的运算电路执行除法。
NN包括例如执行卷积运算的卷积层(卷积神经网络)以及当执行图像识别时紧接在卷积层之后插入的池化层。例如,池化层可以是选择卷积层的输出的多个元素(多个像素)的最大值的最大池化层。NN还包括对通道之间的像素进行归一化的局部响应归一化层(LRN层)、对通道中的像素进行归一化的批量归一化层(BN层)、全连接层、用作输出层的激活函数的Softmax层、作为非线性激活函数的ReLU层以及临时地对网络中除卷积层和池化层以外的一些节点进行去激活的Dropout层。在循环神经网络(RNN)中提供了长短期记忆层(LSTM层)。
在例如日本专利申请公开第H06-215021号、日本专利申请公开第2005-275626号和ImageNet Classification with Deep Convolutional Neural Networks,AlexKrishwvsky,Ilya Sutskever,Geoffrey E.Hinton,(https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolu tional-neural-networks.pdf)中描述了NN。
存在这样的情况:NN中的层的运算仅包括由作为通用运算电路的积和运算电路执行的非特殊运算,还存在这样的情况:层的运算包括除非特殊运算以外的特殊运算,并且包括由积和运算电路执行的运算和由特殊运算电路执行的运算。
发明内容
然而,考虑到整个NN的运算量,执行NN的运算的NN处理器具有包括在其中的第一数目的积和运算电路和第二数目的特殊运算电路。在第一数目高于第二数目并且包括特殊运算的层的运算量包括由特殊运算电路执行的大运算量和由积和运算电路执行的相对小的运算量的情况下,这两个运算电路的运算量之间的比率和这两个运算电路的处理能力的比率变得不平衡。结果,在包括特殊运算的层中的特殊运算电路的运算时间变得非常长,并且包括特殊运算的层的运算时间成为整个NN的运算时间的瓶颈。
因此,本发明的实施方式的第一方面的目的是提供抑制由于特殊运算电路的较长运算时间而导致的NN的整个运算时间的延长的信息处理装置、神经网络程序和用于神经网络的处理方法。
根据本实施方式的第一方面,一种信息处理装置包括:存储器;连接至存储器的处理器,该处理器包括:第一运算电路,其被配置成至少执行乘法运算、加法运算、逻辑运算和积和运算;第二运算电路,其被配置成执行与乘法运算、加法运算、逻辑运算和积和运算不同的特定运算;以及寄存器,其中,该处理器被配置成:在包括多个层的神经网络中的第一层中执行第一运算,该第一运算包括所述特定运算;在当由第二运算电路执行第一运算的特定运算时第一运算所需的第二运算时间等于或小于针对第一运算的在存储器与寄存器之间的转储所需的转储时间的情况下,通过由第二运算电路计算第一运算的特定运算的第二方法来执行第一运算;以及当第二运算时间并非等于或小于转储时间时,在当通过由第一运算电路通过近似计算来计算第一运算的特定运算的第一方法来执行第一运算时第一运算所需的第一运算时间等于或小于转储时间的情况下,通过该第一方法来执行第一运算。
根据第一方面,抑制了由于特殊运算电路的较长运算时间而导致的NN的整个运算时间的延长。
附图说明
图1示出了神经网络(下文称为NN)的示例。
图2示出了在本实施方式中执行NN的运算的信息处理装置的系统的配置示例。
图3示出了主机30的配置示例。
图4示出了NN执行机的配置示例。
图5示出了说明由主机和NN执行机执行的学习处理和生产处理的概要的序列图。
图6示出了积和运算电路MA的配置示例。
图7示出了特殊运算电路SP的配置示例。
图8示出了NN中的多个层的运算中包括的特殊运算的示例。
图9示出了NN的运算时间的示例。
图10示出了特定层的运算所需的转储时间tm。
图11是示出在本实施方式中的NN处理器中学习时的处理的流程图。
图12是示出了在本实施方式中的NN处理器中的生产(推断)期间的处理的流程图。
图13是选择由特殊运算电路执行特殊运算还是由积和运算电路利用近似计算来执行特殊运算的选择处理的流程图。
图14是当由特殊运算电路执行特殊运算时将层的运算时间和转储时间相互比较的比较处理S61的流程图。
图15示出了选择近似计算的处理S63的流程图。
图16描述了卷积层的运算。
图17是示出卷积层的运算内容、输入图像大小、填充量、输入通道数、步幅数、输出图像大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图18描述了最大池化层的运算。
图19是示出最大池化层的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图20描述了激活函数ReLU层的运算。
图21是示出激活函数ReLU层的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图22描述了全连接层FC的运算。
图23是示出全连接层FC的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图24描述了Dropout层的运算。
图25是示出Dropout层的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图26描述了Softmax层的运算。
图27是示出了Softmax层的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图28示出了Softmax层的运算的源代码。
图29描述了LRN层的运算。
图30示出了LRN层的运算的源代码。
图31和图32是示出LRN层的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图33示出了批量归一化层的运算内容的运算表达式。
图34和图35是示出批量归一化层的运算内容、输入大小、输出大小、运算数目、运算电路的运算指令数目、数据量等的表格。
图36示出了针对LRN层的特殊运算(-3/4次幂)和近似计算的表格。
图37是示出包括LRN层中的特殊运算的运算时间与转储时间之间的比较以及近似计算的选择的具体示例的流程图。
图38示出了批量归一化层的特殊运算(-1/2次幂)和近似计算的表格。
图39是示出包括批量归一化层中的特殊运算的运算时间与转储时间之间的比较以及近似计算的选择的具体示例的流程图。
具体实施方式
内容表
1.NN的示例
2.执行NN的信息处理装置的配置示例
3.NN执行处理器的运算单元的示例
4.NN执行处理器的问题
5.本实施方式中NN处理器的概要
6.选择是由特殊运算单元计算特殊运算还是由积和运算单元利用近似计算来计算特殊运算
7.近似计算的选择
8.NN中层的运算、运算的数目、运算指令的数目和数据量的示例
9.基于具体示例的选择方法
下面沿着上面描述的内容表描述本发明的实施方式。
1.NN的示例
图1示出了神经网络(下文称为NN)的示例。图1中的NN是ImageNetClassification with Deep Convolutional Neural Networks,Alex Krishwvsky,IlyaSutskever,Geoffrey E.Hinton,(https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)中的AlexNet,并且应用该实施方式的NN不限于该NN。
图1中的NN是对象类别识别的模型。例如,图像被输入至对象类别识别的模型,然后,对象类别识别的模型根据输入图像的内容(例如,数字字符)将图像分类到可计数的类别中。NN包括作为隐藏层的卷积层CONV、激活函数层ReLU、局部响应归一化层LRN、最大池化层MAX_POOLING、全连接层FC、以及在输入层INPUT与作为输出层的softmax层SOFTMAX之间的dropout层Dropout。
隐藏层可以包括除了上面描述的那些层以外的批量归一化层。对于循环神经网络RNN,LSTM层可以被包括在隐藏层中。每一层具有单个节点或多个节点,并且层和之后的层中的节点经由链路或边彼此连接。
卷积层CONV执行积和运算,该积和运算将例如输入至输入层INPUT中的多个节点中的图像的像素数据乘以与节点之间的链路或边相关联的权重并随后加上偏差。卷积层CONV将具有图像特征的输出图像的像素数据输出至卷积层11中的多个节点。
卷积层的输出被输入至激活函数层ReLU,激活函数层ReLU随后输出ReLU函数的值。LRN层执行通道之间的像素的归一化。最大池化层MAX_POOLING提取并输出多个相邻节点的最大值。全连接层FC通过将先前层中所有节点的值乘以链路或边的权重并加上偏差来生成所有节点的值。softmax层SOFTMAX将图像中的对象是否对应于特定对象的概率输出至与多个对象类别相对应的节点。
dropout层通过将多个节点中的一些置于去激活状态来增强NN的鲁棒性(坚硬性、韧性、坚固性)。例如,批量归一化层对通过卷积层的卷积运算生成的输出图像的像素数据进行归一化,并且抑制分布中的偏差。LSTM层具有一种在循环神经网络RNN中提供的存储功能。
2.执行NN的信息处理装置的配置示例
图2示出了在本实施方式中执行NN的运算的信息处理装置的系统的配置示例。信息处理系统包括主机30和NN执行机40。主机30和NN执行机40例如经由专用接口32和41连接。用户终端50可以访问主机30。用户从用户终端50访问主机30并操作NN执行机(40),从而执行NN的学习处理或生产处理(推断处理)。主机30根据来自用户终端的指令创建将由NN执行机执行的NN程序,并将该NN程序传输至NN执行机。NN执行机执行所传输的NN程序,并执行学习处理或生产处理。
主机30可以是例如计算机,并且包括主处理器31、接口32、主存储器33和作为辅助存储装置的硬盘驱动器HDD或固态驱动器SSD35。HDD或SDD中存储执行NN的运算的NN程序、在学习处理中使用的训练数据等。
NN执行机40包括接口41、NN处理器43和主存储器45。NN处理器43包括多个积和运算单元或电路MA_0至MA_n-1、单个或多个特殊运算单元或电路SP_0至SP_m-1以及寄存器组REG。积和运算单元或电路的数目优选地高于特殊运算单元或电路的数目。在NN的运算中,由积和运算单元或电路执行的运算量通常大于由特殊运算单元或电路执行的运算量,因此其运算单元或电路的数目可以不同。然而,本实施方式不限于积和运算单元或电路的数目大于特殊运算单元或电路的数目的情况。在下文中,运算单元或电路以及多个运算单元或电路将被称为运算电路和多个运算电路。
图3示出了主机30的配置示例。主机30包括主处理器31、用于执行与NN执行机40的连接的高速输入/输出接口32、主存储器33和内部总线34。主机30还包括连接至内部总线34的具有大容量的诸如HDD或SSD的辅助存储装置35,以及用于执行与用户终端50的连接的低速输入/输出接口36。
主机30执行在主存储器33中扩展的辅助存储装置35中的程序。辅助存储装置35中存储执行NN处理的运算的NN程序和训练数据,如附图所示。主处理器31将NN程序和训练数据传输至NN执行机,并使NN执行机执行NN程序和训练数据。
高速输入/输出接口32可以是例如将诸如PCI Express的处理器31和NN执行机的硬件彼此连接的接口。主存储器33中存储要由处理器执行的程序和数据,并且主存储器33例如是SDRAM。
内部总线34将速度低于处理器的外围设备与处理器彼此连接,并且在它们之间对通信进行中继。低速输入/输出接口36执行与用户终端的键盘和鼠标的连接,例如USB,或者执行与例如以太网(注册商标)的网络的连接。
图4示出了NN执行机的配置示例。NN执行机40包括中继与主机30的通信的高速输入/输出接口41和根据来自主机30的命令和数据执行相对应的处理的控制单元或电路42。NN执行机40包括执行NN的运算的NN处理器43、存储器访问控制器44以及内部存储器45。
NN处理器43根据从主机传输的NN程序和数据来执行NN程序,从而执行学习处理和生产处理。高速输入/输出接口41可以是例如PCIExpress,并且中继与主机30的通信。
控制单元42将从主机传输的程序和数据存储在存储器45中,并且响应于来自主机的命令而指示NN处理器执行程序。存储器访问控制器44响应于来自控制单元42的访问请求和来自NN处理器43的访问请求而控制对存储器45的访问处理。
内部存储器45中存储将由NN处理器执行的NN程序、NN的参数、训练数据、将被处理的数据、处理结果的数据等。内部存储器45可以是例如SDRAM、更快的GDR5或宽带HBM2。
图5示出了说明由主机和NN执行机执行的学习处理和生产处理的概要的序列图。主机30将训练数据和输入数据传输至NN执行机40(S30)、传输执行学习处理或生产处理的NN程序(S31)以及传输程序执行指令(S32)。
NN执行机40响应于这些传输,将训练数据、输入数据和NN程序存储在内部存储器45中,并响应于程序执行指令来对存储在存储器45中的训练数据和输入数据执行NN程序(S40)。同时,主机30待机,直到NN执行机对NN程序的执行完成(S33)。
在NN程序的执行完成的情况下,NN执行机40向主机30传输指示程序执行结束的通知(S41),并将输出数据传输至主机30(S42)。在输出数据是NN的输出数据的情况下,主机30执行对NN的参数(权重等)进行优化的处理,以减少输出数据与正确答案数据之间的误差。可替选地,NN执行机40可以执行对NN的参数进行优化的处理。在从NN执行机传输的输出数据是经优化的NN的参数(权重、偏差等)的情况下,主机30中存储经优化的参数。
3.NN执行处理器的运算单元的示例
图6示出积和运算电路MA的配置示例。积和运算电路MA包括乘法器MUL、加法器-减法器ADD_1、逻辑运算电路LGC以及多个选择器SEL_1、SEL_2和SEL_3。积和运算电路MA还包括减去浮点数的指数的加法器-减法器ADD_2。逻辑运算电路LGC执行输入值的各种逻辑运算,例如逻辑或、逻辑与、逻辑异或等。加法器-减法器ADD_1执行加法和减法。
选择器SEL_1将寄存器组REG中的从存储器转移的数据输入到期望的运算电路MUL、LGC、ADD_1和ADD_2中。加法器-减法器ADD_2执行对浮点数的索引的减法,并输出有效数位的移位量。加法器-减法器ADD_1等根据移位量执行数据的数字对齐。选择器SEL_2选择由选择器SEL_1选择的数据或乘法器MUL的输出数据中任一个,并将所选择的数据输入至加法器-减法器ADD_1。在选择乘法器MUL的数据并将其输入至加法器-减法器ADD_1的情况下,加法器-减法器ADD_1输出积和运算结果。选择器SEL_3选择期望的运算电路的输出数据,并将所选择的数据输出至存储器45或寄存器组中的寄存器。
如上面描述的,积和运算电路MA执行除了特殊运算之外的非特殊运算,诸如加法和减法、乘法、乘法器MUL和加法器ADD_1的积和运算、乘法器MUL和减法器ADD_1的积差运算以及逻辑运算。在通过加法和减法、乘法、积和运算、逻辑运算等执行特殊运算的近似计算的情况下,积和运算电路MA执行这种近似计算。
图7示出了特殊运算电路SP的配置示例。特殊运算电路SP包括输入侧的选择器SEL_11、输出侧的选择器SEL_12以及设置在所述选择器之间的多个特殊运算元件SP_E。多个特殊运算元件SP_E执行不同的特殊运算或部分相同的特殊运算。输入侧的选择器SEL_11将寄存器组REG的输入数据输入至期望的特殊运算元件SP_E。输出侧的选择器SEL_12选择期望的特殊运算元件SP_E的输出,并将所述输出输出至例如寄存器和存储器(未示出)。如上面描述的,特殊运算电路SP包括执行多种类型的特殊运算的多个特殊运算元件。
4.NN执行处理器的问题
图8示出了NN中的多个层的运算中包括的特殊运算的示例。NN中的多个层通常包括可由积和运算电路执行的大量运算,尤其是积和运算。另一方面,除了可由积和运算电路执行的运算以外,特定层还包括由特殊运算电路执行的特殊运算。可替选地,特定层不包括可由积和运算电路执行的运算,而包括由特殊运算电路执行的特殊运算。
下面详细描述图8中所示的九个层的运算。简言之,例如,卷积层CONV包括大量积和运算,并且不包括特殊运算。最大池化层MAX_POOL包括用于比较NN中的数据的逻辑运算,并且不包括特殊运算。激活函数ReLU层包括用于执行比较的逻辑运算,并且不包括特殊运算。全连接层FUL_CNCT包括大量积和运算,并且不包含特殊运算。dropout层DROPOUT包括利用位掩码的乘法和逻辑与运算,并且不包括特殊运算。
另一方面,除了由积和运算电路执行的基本算术运算以外,softmax层SOFTMAX还包括例如指数运算ex(自乘)和对数运算的特殊运算。除了积和运算电路的运算以外,LRN层还包括例如升高到-3/4次幂的运算和除法的特殊运算。例如,通过平方根、乘法和除法的组合(将通过计算两次平方根获得的值与通过计算一次平方根获得的值相乘并取其倒数)来执行升高到-3/4次幂。除积和运算电路的运算以外,批量归一化层BATCH_NORM还包括例如升高到-1/2次幂的特殊运算。LSTM层包括诸如S形函数sigmoid和双曲正切的特殊运算。
图9示出了NN的运算时间的示例。例如,示出了当图1中的NN执行学习处理时每层的运算时间的分解。水平轴是时间轴。
根据图9所示的NN的运算时间的示例,执行卷积运算的卷积层CONV的运算时间包括大量积和运算,大约占整个运算时间的30%。激活函数层ReLU、最大池化层MAX_POOL、全连接层FUL_CNCT、softmax层SOFTMAX等的运算时间没有这么长。
另一方面,LRN层的运算时间约占整个运算时间的50%。结果,整个运算时间较长。在这种情况下,包括特殊运算的LRN层的运算时间是整个运算时间的瓶颈。这是因为例如与积和运算电路MA相比,NN处理器仅具有包括在其中的少量的特殊运算电路SP,因此该特殊运算的处理能力较低。因此,如图9中所示,当特殊运算电路SP执行作为LRN层的特殊运算的自乘时,LRN层的执行时间变得相对较长,这成为减少运算时间的瓶颈。
特别地,在学习处理中,对大量训练数据执行NN的运算。因此,为了减少用于要完成的学习处理的较长运算时间,(可能)需要减少每一个训练数据的NN的执行时间。在学习处理之后在推断处理(生产处理)中当大量用户请求通过NN的运算对输入数据进行推断时,也期望减少NN的执行时间。
5.本实施方式中NN处理器的概要
图10示出了用于减少NN中的作为瓶颈的特定层的运算时间的方法。图10中的水平轴是时间轴。当执行NN中的特定层的运算时,发生转储处理和运算电路的运算处理。转储处理是将用于运算的输入数据从存储器转移至处理器中的寄存器并且将作为运算结果的中间数据和输出数据从寄存器转移至存储器的处理。
图10示出了特定层的运算所需的转储时间tm。运算处理EX_0和EX_1包括由积和运算电路执行的非特殊运算和由特定层的运算中包括的特殊运算电路执行的特殊运算。运算处理EX_0的运算时间是作为由积和运算电路执行的非特殊运算的运算时间tcma与特殊运算电路的运算时间tcs_0之和的总运算时间tcma+tcs_0。在运算处理EX_0中,特殊运算电路的运算时间tcs_0短,并且运算时间tcma+tcs_0比转储时间tm短。另一方面,运算处理EX_1的运算时间是tcma+tcs_1。在运算处理EX_1中,特殊运算电路的运算时间tcs_1长,并且运算时间tcma+tcs_1比转储时间tm长。
转储和运算电路的运算被并行执行。因此,如在运算处理EX_0中,在层的运算电路的运算时间等于或小于转储时间的情况下,转储时间隐藏运算电路的运算时间。因此,该层的运算时间不会成为整个NN的运算时间的瓶颈。在这种情况下,转储时间成为瓶颈。
如在运算处理EX_1中,在层的运算电路的运算时间并非等于或小于转储时间的情况下,运算电路的运算时间不被隐藏在转储时间中。因此,该层的运算时间成为整个NN的运算时间的瓶颈。
另一方面,运算处理EX_2和EX_3通过利用积和运算电路针对特殊运算进行近似计算而不是由特殊运算电路执行特殊运算,从而来执行层的特殊运算。运算处理EX_2利用积和运算电路执行近似计算1,并且运算处理EX_3利用积和运算电路执行近似计算2。
因此,运算处理EX_2的运算时间是由积和运算电路执行的非特殊运算的运算时间tcma与由积和运算电路执行的近似运算1的运算时间tca_1之和tcma+tca_1。类似地,运算处理EX_3的运算时间是由积和运算电路执行的非特殊运算的运算时间tcma与由积和运算电路执行的近似运算2的运算时间tca_2之和tcma+tca_2。运算时间tcma+tca_1和运算时间tcma+tca_2都短于转储时间tm。
在由运算处理EX_0执行NN中的包括特殊运算的层的运算时的时间tcma+tcs_0等于或小于转储时间tm的情况下,本实施方式中的NN处理器选择运算处理EX_0作为运算方法。在这种情况下,通过特殊运算电路来执行该层的特殊运算。
另一方面,在由运算处理EX_1执行NN中的包括特殊运算的层的运算时的时间tcma+tcs_1并非等于或小于转储时间tm的情况下,NN处理器选择运算处理EX_2和EX_3中任一个作为运算方法。在这种情况下,NN处理器利用所选择的运算方法执行该层的运算,并使用通用积和运算电路进行特殊运算而不使用特殊运算电路。积和运算电路通常可以用一个时钟周期完成一个指令。提供了大量的积和运算电路,因此,积和运算电路执行近似计算时的执行时间tca比特定运算电路执行特定运算时的执行时间tcs短。因此,EX_2和EX_3中的层的总运算时间tcma+tca变得短于转储时间tm,并且转储时间可以隐藏运算执行时间。
在本实施方式中,NN处理器从运算处理EX_2和EX_3中选择近似计算的误差较小的运算处理EX_2。随着运算数目的增加,近似计算通常倾向于具有较小的误差。因此,NN处理器选择以尽可能小的误差执行近似计算并且其中运算时间tcma+tca短于转储时间tm的运算处理。
如上面描述的,在由特殊运算电路执行包括层的特殊运算的运算时的层的执行时间等于或小于转储时间的情况下(在转储是瓶颈的情况下),与利用积和运算电路的近似计算相比,利用特殊运算电路的运算可以以更高的精度来执行特殊运算。因此,在这种情况下,NN处理器利用特殊运算电路执行运算。
另一方面,在由特殊运算电路执行包括层的特殊运算的运算时的层的执行时间并非等于或小于转储时间的情况下(在运算电路的运算时间是瓶颈的情况下),NN处理器利用积和运算电路的近似计算来执行特殊运算。结果,NN处理器可以使该层的运算时间等于或小于转储时间,并且可以提高NN的运算速度。
优选地,从层的运算时间等于或小于转储时间的近似计算中选择具有尽可能高的精度的近似计算。
由运算电路执行的层的运算的执行时间取决于NN的运算内容和数据量以及处理器的性能而不同。转储时间取决于NN的数据量和处理器与存储器之间的转储容量而不同。
在NN的学习中执行第一学习处理的步骤中,NN处理器确定是由特殊运算电路执行层的特殊运算还是由积和运算电路利用近似计算执行层的特殊运算。在此后的学习处理中,NN处理器通过首次确定的方法执行层的运算,而不再执行确定处理。在生产处理中(在推断中)的第一生产处理步骤中,NN处理器再次确定是由特殊运算电路执行层的特殊运算还是由积和运算电路利用近似计算执行层的特殊运算。在此后的生产处理中,NN处理器通过首次确定的方法执行层的运算,而不再执行确定处理。这是因为不同的处理器可以针对学习和生产执行NN的运算。
图11是示出在本实施方式中的NN处理器中学习时的处理的流程图。在NN处理器执行学习处理之前,预先创建用于特殊运算和近似计算的表格(S0)。如下文详细描述的,用于特殊运算和近似计算的表格包括:在特殊运算电路执行特殊运算的情况下用于特殊运算元件的指令的数目及特殊运算元件的时钟周期的数目;以及在积和运算电路利用近似计算执行特殊运算的情况下用于积和运算电路的指令的数目及积和运算电路的时钟周期的数目。该表格优选地还包括每个近似计算的误差。上面描述的时钟周期数是NN处理器的性能信息,因此除了用于特殊运算和近似计算的表格以外,可以预先准备时钟周期数作为NN处理器的性能信息。
在学习处理中,NN处理器执行第一学习步骤S1至S11,并执行用于第二学习及此后的学习的迭代步骤S20至S32。在第一学习步骤S1至S11中,NN处理器在沿正向方向传播NN中的层(S1)时在每层中执行处理S2和S3。当在传播期间层的运算包括特殊运算时,NN处理器利用图10中描述的方法选择是由特殊运算电路执行特殊运算还是由积和运算电路利用近似计算执行特殊运算(S2)。然后,NN处理器利用所选择的方法执行包括在该层的运算中的特殊运算(S3)。NN处理器重复上面所描述的处理,直到完成对所有层的处理(S4)。
接下来,NN处理器在沿反向方向传播NN中的层(S5)时在每个层中执行处理S6和S7。当在传播期间层的运算包括特殊运算时,NN处理器利用图10中描述的方法选择是由特殊运算电路执行特殊运算还是由积和运算电路利用近似计算执行特殊运算(S6)。然后,NN处理器利用所选择的方法执行包括在该层的运算中的特殊运算(S7)。NN处理器重复上面所描述的处理,直到完成对所有层的处理(S8)。注意,在沿反向方向的NN传播中,NN处理器在沿NN的反向方向传播输出值与教导(正确)数据之间的差异(误差)时计算更新前的参数与减小了每层中的误差的更新后的参数之间的差异。
然后,NN处理器在沿正向方向传播NN中的层(S9)时执行处理S10。在传播时,NN处理器根据反向传播时计算的参数的差异来更新层的参数例如权重和偏差(S10)。还执行参数的更新处理,直到完成所有层的处理(S11)。
在用于第二学习及此后的学习的迭代步骤S20至S32中,NN处理器在正向传播(S21)时执行处理S23。在正向传播时,NN处理器利用所选择的方法执行层的运算(S23),直到完成对所有层的运算(S24)。然后,NN处理器在反向传播(S25)时执行处理S27。在反向传播时,NN处理器利用所选择的方法执行层的运算(S27),直到完成对所有层的运算(S28)。然后,NN处理器在沿正向方向传播至NN中的层(S29)时执行处理S30。在正向传播时,NN处理器根据在反向传播时计算的参数的差异来更新层中的参数诸如权重和偏置(S30),直到完成对所有层的更新(S31)。重复上面描述的处理,直到学习的迭代结束(S32)。
NN处理器执行从主机传输的NN程序,以执行图11的处理。NN程序包括用于确定是由特殊运算电路执行层的运算的特殊运算还是由积和运算电路利用近似计算执行层的运算的特殊运算的确定代码(指令)、用于由特殊运算电路执行层的运算的特殊运算的代码以及用于由积和运算电路利用近似计算执行层的运算的特殊运算的代码。确定代码在初始学习步骤中执行,并且在此后的学习步骤中不执行。创建用于特殊运算和近似计算的表格,执行确定代码以在每次NN处理器改变时确定是要由特殊运算电路执行特殊运算还是要由积和运算电路利用近似计算执行特殊运算。
图12是示出了在本实施方式中的NN处理器中的生产(推断)期间的处理的流程图。在NN处理器执行生产处理之前,预先创建用于特殊运算的近似计算的表格。这是因为在生产时的NN处理器可能不同于在学习时的NN处理器。
在生产处理中,NN处理器执行第一生产步骤S41至S44,并执行用于第二生产及此后的生产的生产步骤S51至S54。在第一生产步骤S41至S44中,NN处理器在沿正向方向传播NN中的层(S41)时执行处理S42和S43。当在传播期间层的运算包括特殊运算时,NN处理器利用图10中描述的方法选择是由特殊运算电路执行特殊运算还是由积和运算电路利用近似计算执行特殊运算(S42)。然后,NN处理器利用所选择的方法执行包括在该层的运算中的特殊运算(S43)。NN处理器重复上面所描述的处理,直到完成对所有层的处理(S44)。
在用于第二生产及此后的生产的生产步骤S51至S54中,NN处理器在沿正向方向传播NN中的层(S51)时执行处理S53。NN处理器层在传播期间利用所选择的方法执行包括在运算中的特殊运算(S53)。NN处理器重复上述处理,直到完成对所有层的处理(S54)。
6.选择是由特殊运算单元执行特殊运算还是由积和运算单元利用近似计算执行特殊运算。
图13是选择是由特殊运算电路执行特殊运算还是由积和运算电路利用近似计算执行特殊运算的选择处理的流程图。选择处理是图11中的步骤S2、S6和图12中的步骤S42中的处理。
NN处理器确定每一层是否是包括特殊运算的层(S60)。在该层不包括特殊运算的情况下(S60中为否),NN处理器确定该层的运算将由积和运算电路执行(S66)。在该层包括特殊运算的情况下(S60中为是),NN处理器将在由特殊运算电路执行该层的运算中包括的特殊运算的情况下该层的运算时间与该层的运算所需的数据的转储时间进行比较(S61)。图14中描绘了该比较。NN处理器确定在特殊运算电路执行特殊运算的情况下的层的运算时间是否等于或小于转储时间(S62)。在层的运算时间等于或小于转储时间的情况下(S62中为是),对于层的运算,NN处理器确定要由特殊运算电路执行特殊运算,并且要由积和运算电路执行非特殊运算(S65)。在层的运算时间不等于或小于转储时间的情况下(S62中为否),对于层的运算,NN处理器确定要由积和运算电路利用近似计算执行特殊运算并且要由积和运算电路执行非特殊运算(S64)。
NN处理期望地从运行时间变得等于或小于转储时间的近似计算中选择具有最小误差的近似计算(S63)。
图14是将由特殊运算电路执行特殊运算时的层的运算时间与转储时间相互比较的比较处理S61的流程图。层的运算时间取决于NN的运算内容和NN处理器的性能。NN处理器的性能包括作为积和运算电路的性能的积和运算性能nma和作为特殊运算电路的性能的特殊运算性能ns。NN的运算内容包括NN的运算所需的基本算术运算的数目和特殊运算的数目,以及当由积和运算电路和特殊运算电路执行这些数目的运算时的运算指令的数目(运算电路执行指令的次数)。另一方面,转储时间取决于数据转移量(字节)和存储器带宽(存储器访问中每单位时间的数据量(字节/秒))。数据转移量基于NN的运算内容,并且存储器带宽基于NN处理器的性能。
在本实施方式中,对于特殊运算电路中的多种类型的特殊运算元件,一个指令所需的平均时钟周期数Cs不同,因此积和运算性能nma和特殊运算性能ns被定义为运算电路的数目与时钟频率的乘积。通过将运算电路的运算指令Xma和Xs的数目分别乘以((每个指令的平均时钟周期数目(运算周期的数目)Cma)/(运算性能nma))和((每个指令的平均时钟周期数目(运算周期的数目)Cs)/(运算性能ns)),来计算积和运算电路的运算时间tcma和特殊运算电路的运算时间tcs。
如图13所示,NN处理器如下来计算处理器的积和运算性能nma、特殊运算性能ns和转储性能m(S70)。这里,存储器访问控制器由MAC表示。
(积和运算性能nma)=(积和运算电路的数目)*(时钟频率)
(特殊运行性能ns)=(特殊运算电路的数目)*(时钟频率)
(转储性能m)=(MAC的数目)*(每MAC的数据转移量)
接下来,NN处理器如下来计算积和运算时间tcma、特殊运算时间tcs和转储时间tm(S71)。
(积和运算时间tcma)=((积和运算指令的数目Xma)*(积和运算周期的数目Cma))/(积和运算性能nma)
(特殊运算时间tcs)=Σ((特殊运算指令的数目Xs)*(特殊运算周期的数目Cs))/(特殊运算性能ns)
(转储时间tm)=(转储量y)(=(数据元素的数目)*(一个元素的数据大小))/(转储性能m)。
这里,Σ((特殊运算指令的数目Xs)*(特殊运算周期的数目Cs))表示当由多个特殊运算元件执行特殊运算时的对于多个特殊运算元件中的每一个的((特殊运算指令的数目Xs)*(特殊运算周期的数目Cs))的总和。
然后,NN处理器将上面获得的层的运算所需的运算时间(积和运算时间tcma+特殊运算时间tcs)和转储时间tm相互比较,并确定运算时间是否在转储时间内(tcma+tcs≤tm)(S72)。在tcma+tcs≤tm为真的情况下(是),NN处理器确定将由特殊运算电路执行该层的运算的特殊运算,而在tcma+tcs≤tm为假的情况下(否),将由积和运算电路利用近似计算来执行该层的运算的特殊运算。
注意,层的运算包括仅具有非特殊运算的情况,以及非特殊运算和特殊运算混合的情况,如下面利用具体示例所描述的。
在层的运算包括混合方式的非特殊运算和特殊运算的情况下:
(1)在由特殊运算电路执行特殊运算的情况下,层的运算所需的运算时间是(非特殊运算的积和运算时间tcma)+(特殊运算的特殊运算时间tcs);以及
(2)在由积和运算电路利用近似计算执行特殊运算的情况下,层的运算所需的运算时间是(非特殊运算的积和运算时间)+(近似计算的积和运算时间)tcma。
7.近似计算的选择
图15示出选择近似计算的处理S63的流程图。存在针对特殊运算的多个近似计算。例如,牛顿法通过执行利用预定运算估计初始值的初始值估计以及基于初始值重复近似计算的收敛运算来计算近似值。误差通常随着收敛运算的数目增加而减小,但是运算时间相应地增加。
因此,在本实施方式中,预先准备的用于特殊运算和近似计算的表格中存储了通过由NN处理器执行多个近似计算而获得的积和运算指令的相应数目。该表格中还存储了积和运算电路的一个指令的平均周期数目(通常是一个周期)、特殊运算单元的一个指令的平均周期数目以及近似计算的误差。近似计算的误差也通过实验获得。
如图15所示,在选择近似计算的处理中,NN处理器从用于特殊运算和近似计算的表格中选择具有最小误差的近似计算(S75)。
接下来,NN处理器通过以下的计算表达式来计算当通过积和运算利用所选择的近似计算执行特殊运算时的层的运算时间tcma+tca(S76)。
tcma+tca={(非特殊运算的积和运算指令的数目Xma)*(积和运算周期的数目Csa)+(特殊运算的近似计算的积和运算指令的数目Xma)*(积和运算周期的数目Csa)}/(积和运算性能nma)
通过以下表达式计算用于特殊运算的近似计算的积和运算指令的数目Xma:
Xma=a+r*b
其中,a表示近似计算的初始值估计的运算数目,b表示收敛运算的运算数目,并且r表示收敛运算的迭代的数目。
通过与例如Quake算法类似的初始值估计来执行近似计算的初始值估计。在这种情况下,仅通过逐位计算来获得输入的浮点数的指数部分的精确近似解。另一方面,对于有效数部分(K位),NN处理器预先对包括符号位的K+1位的所有组合(2K+1个组合)进行实验,确定具有最小误差的初始值。获得初始值所需的运算的数目是a。有关更多详细信息,参见例如http://takashiijiri.com/study/miscs/fastsqrt.html。
例如,收敛运算的示例和迭代的数目对于三阶Householder方法都是两次,对于牛顿法是四次,对于三阶Householder方法和四阶Householder方法均为一次。
接下来,NN处理器将由积和运算电路利用近似计算执行运算时的层的总运算时间tcma+tca与转储时间tm相互比较(S77)。在tcma+tca≤tm为真(是)的情况下,NN处理器将该近似计算确定为所选近似计算(S78)。在tcma+tca≤tm为假(否)的情况下,NN处理器从用于特殊运算和近似计算的表格中选择具有第二低误差的近似计算(S79),并重复步骤S76和S77。
上面描述的选择近似计算的处理是基于以下事实:近似计算的误差随着重复近似计算的收敛运算的次数的增加以及运算时间的增加而减小。在满足tcma+tca≤tm的情况下,转储时间隐藏由积和运算电路利用近似计算执行的层的运算时间,因此运算时间不成为瓶颈。误差根据近似计算的类型而不同,因此优选地在满足上述条件的范围内选择具有最小误差的近似计算。
8.NN中层的运算、运算的数目、运算指令的数目和数据量的示例
接下来,对于图1中的NN的具体示例,说明了层的运算、运算的数目、运算指令的数目以及数据量的示例,并且说明了如图8所示的每个层是否包括特殊运算,以及当包括特殊运算时每个层中包括的特殊运算。下面描述的图1中的NN的运算示例是基于ImageNetClassification with Deep Convolutional Neural Networks,Alex Krishwvsky,IlyaSutskever,Geoffrey E.Hinton,
(https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)中AlexNet的程序的源代码。
卷积层CONV
图16描述卷积层的运算。具有每个均为Hin×Win的输入图像的输入INPUT通过多个输入通道Cin被输入至卷积层。以具有基于滤波器大小的宽度的像素填充输入图像的周围。卷积层通过以步幅St为间隔在每个均为Hin×Win的输入图像上移动每个均为kH×kW(2×2)的滤波器FILTER来执行卷积运算。每个滤波器FILTER具有与输入图像的输入通道Cin相同数目的滤波器元件(kH×kW),并且这样的滤波器FILTER由多个输出通道Cout提供。卷积层的运算对输入通道Cin的输入图像执行滤波器FILTER的卷积运算,并通过多个滤波器Cout输出具有每个均为Hout×Wout的输出图像的OUTPUT。
图17是示出卷积层的运算内容、输入图像大小、填充量、输入通道数、步幅数、输出图像大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。如图17所示出的,卷积层的运算内容是对所有输出通道Cout的滤波器执行累积地加上值(wij*I(i)+bias)的运算,该值是通过将填充的输入图像的所有输入通道Cin的元素I(i)乘以kH×kW×Cin的滤波器的权重Wij并加上偏差而计算的。
如图17所示出的,当输入图像大小由Hin×Win表示、填充量由Pad表示、输入通道的数目由Cin表示、滤波器图像大小由kH×kW×Cin表示、滤波器的步幅由St表示并且输出图像大小由Hout×Wout×Cout表示时,输出图像的大小Wout和Hout如下所示。
Wout=(Win+2pad-kW)/St-1或者Win=Wout×St+kW+St-2pad
Hout=(Hin+2pad-kH)/St-1或者Hin=Hout×St+kH+St-2pad
因此,卷积层的用于积的运算的数目和用于和的运算的数目如下所示。
运算(积)的数目=(Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)×Gr×MB
运算(和)的数目={(Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)+Hout×Wout×Cout}×MB
这里,Gr表示输入INPUT和输出OUTPUT的组的数目,MB表示微批量中的数据量。在具体示例中的卷积层将输入通道Cin和输出通道Cout分成多个组Gr,并在每个组中执行卷积运算。然后,卷积层仅对组的数目Gr执行卷积运算,并对微批量数据的量MB执行上述运算。结果,运算数目减少到1/Gr次。
由积和运算电路执行上述的用于积的运算数目与用于和的运算数目的共同的次数,以及(2)和(3)由积和运算电路执行用于积的运算数目或用于和的运算数目的超出共同次数的剩余数目。如图17所示,在这种情况下,NN处理器中的(1)积和运算电路的积和指令的数目、(2)积和运算电路的加法指令的数目以及(3)积和运算电路的乘法指令的数目如下所示。
(1)指令(积和)的数目=(Hout×Wout×Cout÷Gr×kH×kW×Cin÷Gr)×Gr×MB
(2)指令(和)的数目=(运算(和)的数目)-(指令(积和)的数目)={Hout×Wout×Cout}×MB
(3)指令(积)的数目=(运算(积)的数目)-(指令(积和)的数目)=0
从上面的表达式中,卷积层的运算全部由积和运算电路执行,但是不包括特殊运算。
接下来,输入“bottom”、输出“top”、偏差“bias”和权重“weight”的数据量如下所示。
bottom=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB
bias=Cout
weight=kH×kW×Cin÷Gr×Cout÷Gr×
最大池化层
图18描述了最大池化层的运算。在图1的具体示例中,最大池化层输入通过利用LRN层归一化卷积运算结果而获得的图像或通过卷积运算获得的图像,并且选择并输出相邻像素的最大值。为了选择相邻元素的最大值,最大池化层对Hout*Wout*Cout*MB执行数目kH*kW个比较运算(逻辑运算)。
图19是示出最大池化层的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。运算内容是通过将数目kH×kW个输入I(i)相互比较来获得输入图像的最大值目标大小kH×kW中的输入I(i)的最大值的运算。
当最大值目标大小由kH×kW表示、输出图像大小由Hout×Wout×Cout表示并且微批量的数据量由MB表示时,比较的运算数目为Hout×Wout×Cout×(kH×kW)×MB。比较运算是逻辑运算,并且由积和运算电路执行。因此,积和运算电路的指令的数目等于比较运算的数目。因此,最大池化层的运算由积和运算电路执行,并且该运算不是特殊运算。输入bottom、输出top和变量mask的数据量如图19所示。
激活函数ReLU层
图20描述了激活函数ReLU层的运算。ReLU层执行比较Hin×Win×Cin的输入数据I(i)是I(i)<0还是I(i)≥0、当I(i)<0时输出output O(i)=0以及当I(i)≥0时输出output O(i)=I(i)的运算。
图21是示出激活函数ReLU层的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。运算内容如上所述。输入图像大小是Hin×Win×Cin,输出图像大小是Hout×Wout×Cout,并且两者大小相等。微批量的数据量为MB。在这种情况下,运算的数目是输入I(i)与零(0)之间的比较运算的数目,因此是Hin×Win×Cin×MB。可以由积和运算电路的逻辑运算电路执行比较运算,因此积和运算电路的指令的数目等于运算(比较)的数目。因此,激活函数ReLU层由积和运算电路执行,并且不包括特殊运算。输入“borrow”和输出“top”的数据量分别与输入图像大小和输出图像大小相同。
全连接层FC
图22描述了全连接层FC的运算。全连接层累积通过将其中布置有输入图像的所有像素(所有神经元)的大小为Hin*Win*Cin的输入I(i)乘以权重Wij而获得的值,将偏差“bias”加到所累积的值以得到值O(i),并且输出值O(i)。
图23是示出全连接层FC的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。运算内容如上所述。输入图像大小是Hin×Win×Cin,并且输出图像大小是Hout×Wout×Cout。大小不必彼此相等。
当输入大小由I表示、输出大小由O表示并且微批量数据的量由MB表示时,乘法运算的数目是I×O×MB,而加法运算的数目是(I×O+O)×MB。加法是累积地加上通过将所有输入乘以微批量的每个数据的权重而获得的值的次数I×O与将偏差“bias”加到累积加法的结果的次数O之和I×O+O。在微批量的每个数据中执行加法,因此加法的总数目是(I×O+O)×MB。
接下来,可以在积和运算电路中同时执行加法和乘法,并且因此加法运算的数目和乘法运算的数目的共同次数是积和运算指令的数目I×O×MB。通过从加法运算的数目减去积和运算指令的数目而获得的剩余数是加法运算指令的数目O×MB。乘法运算指令的数目为零。
对于数据量,输入“bottom”的数据量和输出“top”的数据量是通过将输入图像大小乘以微批量MB的数据量而获得的量,如图23所示。
bottom=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB
偏差“bias”的数据量被提供用于输出通道的数目Cout,因此满足bias=Cout。权重的数据量是(总输入量)×(总输出量),因此满足weight=Hin×Win×Cin×Hout×Wout×Cout。
如上面所描述的,全连接层的运算完全由积和运算电路执行,并且不包括特殊运算。
Dropout层
图24描述了Dropout层的运算。如图1所示,Dropout层将从全连接层FC的输出中随机选择的节点去激活,并加强未被去激活的节点。Dropout层是基于脑科学知识的方法。Dropout层通过将随机选择的节点去激活来在网络上放置负载,并且通过在学习时将未被去激活的节点乘以常数比例来加强未被去激活的节点。在生产(推断)时不执行Dropout层的运算。
图25是示出Dropout层的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。运算内容如上所述,并且运算表达式如下所示。
O(i)=I(i)*mask(i)*scale
mask(i)是指示有效“1”和无效“0”的掩码位。输入图像大小是Hin×Win×Cin,并且输出图像大小是Hout×Wout×Cout。微批量的数据量为MB。乘法运算的数目是2×I×MB,因为输入数据被乘以掩码位mask(i),并且在学习时被进一步乘以比例。生产时的运算数目为零。学习时乘法运算的指令数目等于乘法运算的数目,为2×I×MB。
输入“borrow”、输出“top”和掩码位“mask”的数据量如下所示。
borrow=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB
mask=Hin×Win×Cin×MB
因此,Dropout层的运算完全由积和运算电路执行,并且不包括特殊运算。
Softmax层
图26描述了Softmax层的运算。图26中Softmax层的运算为每个输出的节点(神经元)产生总计为1的概率,并获得在反向方向上的传播中使用的每个节点的输出的误差(交叉熵误差)。
图27是示出Softmax层的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。图28示出了Softmax层的运算的源代码。可以从开源中提取AlexNet的源代码。
Softmax层的运算内容如图27的运算内容和图28的源代码所示。
(1)利用函数max输出输入bottom_x的最大值“scale”。函数max是比较运算。
(2)从所有输入“bottom_y”中的每一个中减去最大值“scale”,并且使得(所有输入x)-(最大值max)为负。
(3)获得x-max(<0)的指数(exp),并且将其范围设置为0至1.0。
(4)获得所有ex-max之和“scale”。
(5)将每个ex-max除以所有ex-max之和“scale”,并且获得(其和为1的概率)=ex-max/(所有ex-max之和“scale”)。
(6)当满足正确答案向量t[mb][i]=1时,获得作为上述概率的对数(log)的log(ex-max/Σex-max)(交叉熵误差)。log(ex-max/Σex-max)是负的,因此通过将log(ex-max/Σex-max)乘以(-1)倍获得正误差“e”。
Softmax层的输入大小和输出大小如下所示。
I=Hin×Win×Cin
O=Hout×Wout×Cout
当微批量的数据量是MB时,上述运算(1)至(6)中的比较运算、差运算、指数运算、和运算、商运算以及对数运算的数目如下所示。输入大小由I表示,并且微批量的数据量由MB表示。
运算(比较)的数目=I×MB×2
运算(差)的数目=I×MB×2
运算(指数)的数目=I×MB
运算(和)的数目=I×MB
运算(商)的数目=I×MB
运算(对数)的数目=I×MB
在这些运算中,积和运算电路执行比较运算、差运算、和运算,而特殊运算电路执行指数运算、商运算和对数运算。运算指令的数目与运算的数目相同。如上所述,Softmax层通过积和运算电路执行非特殊运算并通过特殊运算电路执行特殊运算。
对于数据量,对应于误差e的输入bottom和输出top如下所示。
bottom=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB(仅用于学习,生产时为零)
LRN层
图29描述LRN层的运算。如图1所示,LRN层设置在卷积层CONV的输出侧,并且对由卷积层产生的图像数据的通道方向上的局部量的像素数据进行归一化。
图30示出LRN层的运算的源代码。图31和图32是示出LRN层的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。
LRN层的运算内容如下,如图30的源代码和图31的运算内容所示。
(1)获得作为针对Hin*Win*Cin的元素的卷积层CONV的输出的LRN层的输入X(bottom_data)的平方X2。平方X2成为变量Padded_square。该运算是乘积运算。
(2)将Padded_square的通道Cin中的Local_size=n的每个元素乘以α,并将每个元素除以Local_size=n(乘以α/n),从而获得在padded_square的元素X2的通道方向上的局部数Local_size的平均值scale_data[cin](=scale_data[mb][0][i],Cin=0的平均值)。该运算是乘积运算和求和运算。
(3)获得当在通道Cin内移动时的剩余数c=1至Cin的平均值。具体地,通过从平均值中减去在运算(2)中针对c=0获得的平均值(scale_data[mb][c-1][i])的尾部tail并向其添加头部来获得c=1的平均值。对于c=2以及此后的重复相同的步骤。平均值是Local_size=n的元素的移动平均值。该运算是求和运算、两个乘积运算和差运算。
(4)通过将运算(3)中的输出升高到-3/4次幂来获得输出top_data[i],针对i=Cin*Hin*Win获得输出top_data[i]。这里的运算是用于幂pow的运算,并且是特殊运算。
(5)将运算(4)中的输出top_data[i]乘以输入bottom_data[i]。这里的运算是乘积运算。
输入图像大小I和输出图像大小O如下所示。
I=Hin×Win×Cin(Cin是输入通道的数目)
O=Hout×Wout×Cout(Cout是输出通道的数目)
微批量的数据量为MB。
接下来,对于运算的数目,上述运算(1)至(5)的次数和放在一起的相同运算的次数如下所示。
(1)积:Cin×Hin×Win
(2)积:local_size×Hin×Win,和:local_size×Hin×Win
(3)积:(Cin-1)×Hin×Win×2,和:(Cin-1)×Hin×Win,差:(Cin-1)×Hin×Win
(4)幂:Cin×Hin×Win
(5)积:Cin×Hin×Win
因此,
运算(积)的数目:(4Cin+local_size-2)×Win×Hin×MB
运算(和)的数目:(Cin+local_size-1)×Win×Hin×MB
运算(差)的数目:(Cin-1)×Win×Hin×MB
运算(幂)的数目:Cin×Win×Hin×MB
接下来,当将积与和、积与差放在一起时,运算的指令的数目如下所示。
指令(积和)的数目:{local_size×Win×Hin+(Cin-1)×Win×Hin}×MB
指令(积差)的数目:(Cin-1)×Win×Hin×MB
指令(和)的数目:(运算(和)的数目)-(指令(积和)的数目)=0
指令(差)的数目:(运算(差)的数目)-(指令(积差)的数目)=0
指令(积)的数目:(运算(积)的数目)-(指令(积和)的数目)-(指令(积差)的数目)=Cin×Win×Hin×MB×4
指令(幂)的数目:运算(幂)的数目=Cin×Win×Hin×MB
数据量如下所示。
bottom=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB
scale=Hin×Win×Cin×MB
padded_square=Win×Hin×Cin
如上所述,在LRN层的运算中,积和运算电路执行非特殊运算,并且特殊运算电路执行特殊运算(自乘)。
批量归一化层
图33示出了批量归一化层的运算内容的运算表达式。图34和图35是示出批量归一化层的运算内容、输入大小、输出大小、运算的数目、运算电路的运算指令的数目、数据量等的表格。
批量归一化层被设置在例如卷积层之后,并且对通过针对每个通道Cout操作微批量的所有输入图像而获得的所有输出图像进行归一化。批量归一化层的输入是在卷积层中操作的微批量数据的输出图像,并且其输出是经归一化的输出图像。
批量归一化层的运算如下也在图34的运算内容中示出。
(1)执行对在微批量(MB)中计算的通道Ci的输出图像的求平均值、求方差、归一化、缩放和移位。
(2)针对所有通道C0至Cn重复(以当前MB计算的通道Ci的平均值)+(以先前MB计算的通道Ci的平均值)*(系数)=(移动平均值)的运算。
(3)对所有通道C0至Cn重复(以当前MB计算的通道Ci的方差)*(系数)+(以先前MB计算的通道Ci的方差)*(系数)=(移动平均值)的运算。
在运算(2)和(3)中,在每个MB中,针对通道的数目Cin执行乘法*三次以及加法*两次。运算(2)和(3)的移动平均值是在学习步骤中预先获得的用于生产步骤的运算。
图33示出了对上述通道Ci的输出图像的求平均值、求方差、归一化以及缩放和移位的运算表达式。通过将归一化的运算分为用于获得t[ci]的运算表达式和用于获得归一化值temp[bi][ci][x][y]的运算表达式,可以减少平方根和除法运算的数目。缩放和移位运算是用于将归一化值temp[bi][ci][x][y]线性转换为0到255的运算。
在图34中,输入图像大小和输出图像大小如下所示。
Bottom=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB
这里,MB表示微批量的数据量。
因此,根据图33中的运算表达式,平均值、方差、移动平均值、归一化以及缩放和移位的运算的数目如图34所示。
平均值:
(运算(积)的数目)=(运算(和)的数目)=Hin×Win×Cin×MB
方差:
运算(差)的数目=Hin×Win×Cin×MB
运算(积)的数目=2×Hin×Win×Cin×MB
运算(和)的数目=Hin×Win×Cin×MB
移动平均值:
运算(积)的数目=3×Cin
运算(和)的数目=2×Cin
归一化:
运算(和)的数目=Cin
运算(平方根)的数目=Cin
运算(商)的数目=Hin×Win×Cin×MB
缩放和移位:
运算(积)的数目=Hin×Win×Cin×MB
运算(和)的数目=Hin×Win×Cin×MB
平均值、方差、移动平均值、归一化以及缩放和移位的积和、积、和、差、商和平方根的运算指令的数目如图35所示。积与和以及积与差可以通过积和运算一起运算,因此被放在一起作为积和运算的指令的数目。
平均值:
指令(积和)的数目=Hin×Win×Cin×MB
方差:
指令(差)的数目=Hin×Win×Cin×MB
指令(积)的数目=Hin×Win×Cin×MB
指令(积和)的数目=Hin×Win×Cin×MB
移动平均值:
指令(积)的数目=Cin
指令(积和)的数目=2×Cin
归一化:
指令(和)的数目=Cin
指令(平方根)的数目=Cin
指令(商)的数目=Hin×Win×Cin×MB
缩放和移位:
(指令(积和)的数目)=(运算(积)的数目)=Hin×Win×Cin×MB数据量如图35中所示。
bottom=Hin×Win×Cin×MB
top=Hout×Wout×Cout×MB
偏差=Cin
bias(β)=Cout
bias(γ)=Cout
如上所述,批量归一化层通过积和运算电路执行非特殊运算,并通过特殊运算电路执行商和平方根的特殊运算。
LSTM层
LSTM层的特殊运算是S形函数的运算和双曲正切函数的运算。省略了上面的具体示例。
9.基于具体示例的选择方法
接下来,基于具体示例描述关于是通过特殊运算电路执行特殊运算还是通过积和运算电路利用近似计算执行特殊运算的确定,以及通过积和运算电路执行的近似计算的选择。具体的示例是包括特殊运算的LRN层和批量归一化层。
LRN层的具体示例
将说明在图11和图12中所示的用于LRN层的特殊运算和近似计算的表格,并且将说明在图13至图15中所示的当LRN层的运算由具有一定性能的NN处理器执行时的上述确定和选择。
图36示出了用于LRN层的特殊运算(3/4次幂)和近似计算的表格。该表格示出了由特殊运算电路执行的原始计算方法,以及作为特殊运算(3/4次幂)的计算方法的由积和运算电路执行近似计算的四个示例。四个近似计算是(1)仅初始值估计(幻数的估计),(2)初始值估计和三阶Householder方法的两次旋转,(3)初始值估计和牛顿法的四次旋转,以及(4)初始值估计、三阶Householder方法和四阶Householder方法。该表格示出了初始值估计中的指令的数目、收敛运算中的指令的数目、总指令数、时钟周期数以及特殊运算电路和四个近似计算的执行误差。
首先,对于特殊运算电路执行特殊运算的情况,如在收敛运算(指令的数目)的列中所示的,(指令的数目)=(用于的运算fsqrt的两个指令)+(用于乘法fmul的一个指令)+(用于除法fdiv的一个指令)。换言之,(-3/4次幂)的运算包括(1)计算平方根二次(1/4次幂),(2)将通过计算平方根二次(1/4次幂)获得的值与通过计算平方根一次(2/4次幂)获得的值相乘,即((1/4次幂)+(2/4次幂)=(3/4次幂)),以及(3)取相乘后的值的倒数(-3/4次幂)。特殊运算电路执行fsqrt两次并且执行fdiv一次,积和运算电路执行fmul一次。fsqrt、fmul和fdiv中的每一个是浮点数运算电路的指令。因此,指令的总数目是针对积和运算指令的数目的一个和针对特殊运算指令的数目的三个(针对fsqrt的指令的数目是两个,并且针对fdiv的指令的数目是一个)。当NN处理器的一个指令的执行所需的平均时钟周期数目针对积和运算电路是1个周期、针对fsqrt是23个周期、针对fdiv是22个周期时,时钟周期的总数目是用于积和运算电路的1个周期和用于特殊运算电路的68个周期。误差(-1)基本上意味着零。
其次,描述了由积和运算电路利用近似计算执行特殊运算的四种情况。
(1)作为实验的结果,仅初始值设置的运算包括右逻辑移位isrl的两个指令和减法isub的两个指令。指令isrl和isub是定点运算电路的指令。这些指令的运算可以由积和运算电路执行,且指令的总数目为四个积和运算指令。因此,时钟周期的总数目是四。
(2)在初始值估计和三阶Householder方法的两次旋转的运算中,用于初始值估计的指令的数目是四个,这与上面相同,并且用于收敛运算的指令的数目是(用于乘积求和运算fma的5*2个指令)+(用于乘法fmu的5*2个指令)。因此,指令的总数目是24个积和运算指令。因此,总时钟周期为24*1=24。误差是19.53。
(3)在初始值估计和牛顿法的四次旋转的运算中,用于初始值估计的指令的数目是四个,这与上面相同,并且用于收敛运算的指令的数目是(用于积和运算fma的2*4个指令)+(用于乘法fmu的6*4个指令)。因此,指令的总数目是36个积和运算指令。因此,总时钟周期为36*1=36。误差为0.95。
(4)在初始值估计、三阶Householder方法和四阶Householder方法的运算中,用于初始值估计的指令的数目是四个,这与上面相同,并且用于收敛运算的指令的数目是(用于积和运算fma的5+5个指令)+(用于乘法fmu的5+7个指令)。因此,指令的总数目是26个积和运算指令。因此,总时钟周期为36*1=36。误差是0.87。
图37是示出在LRN层中的包括特殊运算的运算时间与转储时间之间的比较以及近似计算的选择的具体示例的流程图。首先,LRN层的运算指令的数目Xma+Xs和转储量y如下所示(S80)。
Xma+Xs=1,200,000,000(积和)+300,000,000(特殊)
y=300,000,000*4[字节]
运算指令的数目Xma包括由积和运算电路针对LRN层的非特殊运算执行的指令的数目。运算指令的数目Xs包括由特殊运算电路(fsqrt和fdiv)和积和运算电路(fmul)针对LRN层的特殊运算执行的指令的数目。
NN处理器的性能如下所示(S81)。
积和运算性能:nma=2,000GFLOPS,特殊运算性能:ns=125GFLOPS
转储性能(存储器带宽):m=200GB/s
因此,由积和运算电路执行LRN层的运算中的非特殊运算和特殊运算的一部分的时间tcma以及由特殊运算电路执行特殊运算的剩余部分的时间tcs是tcma+tcs=163,950微秒,如图37所示。在tcma+tcs的公式中,用于非特殊运算的积和运算电路(fmul)的周期数是1个周期,用于特殊运算的积和运算电路(fmul)的周期数也是1个周期,并且特殊运算中的特殊运算电路(fsqrt和fdiv)的总周期数是68个周期。
另一方面,转储时间tm为tm=18,000微秒,因为对于输入“bottom”、变量“scale_data”及输出“top”中的每一个,转储量y为300,000,000×4[字节],如图37中所示。结果,不满足tcma+tcs≤tm,因此选择由积和运算电路利用近似计算的执行(S82)。
在近似计算的选择处理中,当首先计算积和运算电路通过图36中的表格中误差最小的底行的近似方法“幻数+三阶Householder方法+四阶Householder方法”执行运算时的运算时间tcma+tcs时,运算时间为tcma+tcs=3,900微秒,如图37所示。结果,满足tcma+tcs≤tm,因此选择底行上的近似方法。
批量归一化层的具体示例
图38示出了批量归一化层的特殊运算(-1/2次幂)和近似计算的表格。首先,对于特殊运算电路执行特殊运算的情况,如在收敛运算(指令的数目)的列中所示,(指令的数目)=(用于的运算fsqrt的一个指令)+(用于除法fdiv的一个指令)。换言之,(-1/2次幂)的运算包括(1)计算平方根一次(1/2次幂),以及(2)取平方根值的倒数(-1/2次幂)。(-1/2次幂)的运算不包括用于由积和运算电路执行的运算fmul的指令。图38中的近似计算不仅在幻数方面而且在Householder方法方面与图36不同。减法fsub是浮点数运算电路的指令。用于初始值估计的指令的数目、用于收敛运算的指令的数目、指令的总数目、指令的总数目所需的时钟周期数以及由特殊运算电路进行的运算和四种近似计算的误差如图38所示,并且省略其描述。
图39是示出在批量归一化层中的包括特殊运算的运算时间与转储时间之间的比较以及近似计算的选择的具体示例的流程图。批量归一化层的运算指令的数目Xma+Xs和转储量y如步骤S90中所指示。步骤S91中NN处理器的性能与图37相同。
如图39所示,在批量归一化层的运算中,由积和运算电路执行非特殊运算的时间tcma和由特殊运算电路执行特殊运算的时间tcs是tcma+tcs=350微秒,这是因为特殊运算的总周期数目是45个周期。
另一方面,如图中所示,转储时间tm是tm=6,000微秒(>tcma+tcs=350微秒),选择利用特殊运算电路的执行。注意,因为提供了三种类型的数据,即,输入“bottom”、中间数据“scale_data”和输出“top”,因此转储量y=100,000,000*4对于转储时间tm的“bottom”是三倍的。
Claims (9)
1.一种信息处理装置,包括:
存储器;
连接至所述存储器的处理器,所述处理器包括:
第一运算电路,其被配置成至少执行乘法运算、加法运算、逻辑运算以及积和运算,
第二运算电路,其被配置成执行与所述乘法运算、所述加法运算、所述逻辑运算以及所述积和运算不同的特定运算;以及
寄存器,其中
所述处理器被配置成
在包括多个层的神经网络中的第一层中执行第一运算,所述第一运算包括所述特定运算,
在当由所述第二运算电路执行所述第一运算的特定运算时所述第一运算所需的第二运算时间等于或小于针对所述第一运算的在所述存储器与所述寄存器之间的转储所需的转储时间的情况下,通过由所述第二运算电路计算所述第一运算的特定运算的第二方法来执行所述第一运算,以及
当所述第二运算时间并非等于或小于所述转储时间时,在当通过由所述第一运算电路通过近似计算来计算所述第一运算的特定运算的第一方法来执行所述第一运算时所述第一运算所需的第一运算时间等于或小于所述转储时间的情况下,通过所述第一方法来执行所述第一运算。
2.根据权利要求1所述的信息处理装置,其中:
所述第一方法中的近似计算包括多个近似计算;并且
通过所述第一方法来执行所述第一运算包括:
通过所述第一方法利用在所述第一运算时间等于或小于所述转储时间的多个近似计算中的近似计算的误差最小的近似计算来执行所述第一运算。
3.根据权利要求1所述的信息处理装置,其中:
所述处理器被配置成
确定所述第二运算时间是否等于或小于所述转储时间,
在所述确定为真的情况下,
确定将通过所述第二方法执行所述第一运算,以及
在所述确定为假的情况下,
从所述第一运算时间等于或小于所述转储时间的多个近似计算中选择近似计算的误差最小的近似计算,以及
确定将通过所述第一方法利用所选择的近似计算执行所述第一运算。
4.根据权利要求3所述的信息处理装置,其中,所述处理器被配置成:在所述神经网络的学习中:
在所述学习的初始学习中,确定将通过所述第一方法还是通过所述第二方法执行所述特定运算,并且通过所确定的第一方法或第二方法执行所述第一运算;以及
在所述初始学习之后的重复学习步骤中,通过在所述初始学习中确定的所述第一方法或所述第二方法来执行所述第一运算。
5.根据权利要求1所述的信息处理装置,其中:
所述第二运算时间是以下运算时间之和:
所述第一运算电路用于执行在所述第一运算中包括的特定运算以外的非特定运算的指令执行的次数所需的第四运算时间,以及
所述第二运算电路用于执行在所述第一运算中包括的特定运算的指令执行的次数所需的第三运算时间;并且
所述第一运算时间是以下运算时间之和:
所述第一运算电路用于执行在所述第一运算中包括的特定运算以外的所述非特定运算的指令执行的次数所需的第四运算时间,以及
所述第一运算电路用于执行在所述第一运算中包括的特定运算的近似计算的指令执行的次数所需的近似计算时间。
6.根据权利要求5所述的信息处理装置,其中,所述第一运算时间和所述第二运算时间是下述的值,每个所述值均是通过将由所述第一运算电路或所述第二运算电路的指令执行的次数乘以执行一个指令所需的平均时钟周期数并且将相乘后的值除以所述第一运算电路或所述第二运算电路每单位时间执行所述运算的总时钟周期数而获得的。
7.根据权利要求1所述的信息处理装置,其中,多个所述第一运算电路的数目大于所述第二运算电路的数目。
8.一种包括神经网络程序的非暂态计算机可读存储介质,所述神经网络程序使处理器执行神经网络的处理,所述处理包括:
由连接至存储器的包括被配置成至少执行乘法运算和加法运算、逻辑运算以及积和运算的第一运算电路、被配置成执行与所述乘法运算和所述加法运算、所述逻辑运算以及所述积和运算不同的特定运算的第二运算电路以及寄存器的所述处理器,在包括多个层的所述神经网络中的第一层中执行第一运算,所述第一运算包括所述特定运算,其中
执行所述第一运算包括,
在当由所述第二运算电路执行所述第一运算的特定运算时所述第一运算所需的第二运算时间等于或小于针对所述第一运算的在所述存储器与所述寄存器之间的转储所需的转储时间的情况下,通过由所述第二运算电路计算所述第一运算的特定运算的第二方法来执行所述第一运算;或者
当所述第二运算时间并非等于或小于所述转储时间时,在当通过由所述第一运算电路通过近似计算来计算所述第一运算的特定运算的第一方法来执行所述第一运算时所述第一运算所需的第一运算时间等于或小于所述转储时间的情况下,通过所述第一方法来执行所述第一运算。
9.一种用于神经网络的处理方法,所述处理方法包括:
由连接至存储器的包括被配置成至少执行乘法运算和加法运算、逻辑运算以及积和运算的第一运算电路、被配置成执行与所述乘法运算、所述加法运算、所述逻辑运算以及所述积和运算不同的特定运算的第二运算电路以及寄存器的处理器,在包括多个层的所述神经网络中的第一层中执行第一运算,所述第一运算包括所述特定运算,其中
执行所述第一运算包括,
在当由所述第二运算电路执行所述第一运算的特定运算时所述第一运算所需的第二运算时间等于或小于针对所述第一运算的在所述存储器与所述寄存器之间的转储所需的转储时间的情况下,通过由所述第二运算电路计算所述第一运算的特定运算的第二方法来执行所述第一运算;或者
当所述第二运算时间并非等于或小于所述转储时间时,在当通过由所述第一运算电路通过近似计算来计算所述第一运算的特定运算的第一方法来执行所述第一运算时所述第一运算所需的第一运算时间等于或小于所述转储时间的情况下,通过所述第一方法来执行所述第一运算。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2018-239640 | 2018-12-21 | ||
| JP2018239640A JP7174243B2 (ja) | 2018-12-21 | 2018-12-21 | 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN111353578A true CN111353578A (zh) | 2020-06-30 |
Family
ID=68762456
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911319384.2A Pending CN111353578A (zh) | 2018-12-21 | 2019-12-19 | 信息处理装置、神经网络程序和用于神经网络的处理方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11475284B2 (zh) |
| EP (1) | EP3671572A1 (zh) |
| JP (1) | JP7174243B2 (zh) |
| CN (1) | CN111353578A (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114118343A (zh) * | 2020-08-31 | 2022-03-01 | 南京大学 | 应用于Transformer神经网络的层归一化处理硬件加速器及方法 |
| CN115187845A (zh) * | 2022-07-08 | 2022-10-14 | 杭州海康威视数字技术股份有限公司 | 一种图像处理方法、装置及设备 |
| CN116481128A (zh) * | 2023-05-10 | 2023-07-25 | 佛山市清源科技有限公司 | 空气净化系统、空气净化方法及存储介质 |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7137067B2 (ja) * | 2018-10-25 | 2022-09-14 | 富士通株式会社 | 演算処理装置、学習プログラム及び学習方法 |
| US20200210840A1 (en) * | 2018-12-31 | 2020-07-02 | Microsoft Technology Licensing, Llc | Adjusting precision and topology parameters for neural network training based on a performance metric |
| US12165038B2 (en) | 2019-02-14 | 2024-12-10 | Microsoft Technology Licensing, Llc | Adjusting activation compression for neural network training |
| CN114077482B (zh) * | 2020-08-18 | 2024-04-16 | 中国科学院沈阳自动化研究所 | 一种工业智能制造边缘智能计算优化方法 |
| CN112051980B (zh) * | 2020-10-13 | 2022-06-21 | 浙江大学 | 一种基于牛顿迭代法的非线性激活函数计算装置 |
| CN112633212B (zh) * | 2020-12-29 | 2022-10-04 | 长沙湘丰智能装备股份有限公司 | 一种基于计算机视觉的茶叶嫩芽等级的识别和分类方法 |
| JP2022121055A (ja) | 2021-02-08 | 2022-08-19 | キオクシア株式会社 | 演算装置及び演算回路 |
| CN114139693B (zh) * | 2021-12-03 | 2024-08-13 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质和电子设备 |
| CN115273060B (zh) * | 2022-08-18 | 2024-09-06 | 杭州朗阳科技有限公司 | 适用于边缘设备的神经网络模型、图像识别方法及装置 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5532938A (en) * | 1994-01-28 | 1996-07-02 | Mitsubishi Denki Kabushiki Kaisha | Numerical arithmetic processing unit |
| US20150227407A1 (en) * | 2014-02-10 | 2015-08-13 | Via Technologies, Inc. | Processor with approximate computing functional unit |
| EP3035249A1 (en) * | 2014-12-19 | 2016-06-22 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
| CN107622305A (zh) * | 2017-08-24 | 2018-01-23 | 中国科学院计算技术研究所 | 用于神经网络的处理器和处理方法 |
| CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
| CN108364064A (zh) * | 2017-01-27 | 2018-08-03 | 意法半导体股份有限公司 | 操作神经网络的方法、对应网络、装置、以及计算机程序产品 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH06215021A (ja) * | 1993-01-12 | 1994-08-05 | Fujitsu Ltd | 関数近似計算方法 |
| JP2005275626A (ja) | 2004-03-23 | 2005-10-06 | Fujitsu Ltd | 演算種別と精度を選択可能な近似演算処理方法および近似演算処理装置 |
| JP5199212B2 (ja) * | 2009-09-29 | 2013-05-15 | 富士通株式会社 | プログラム生成方法およびシステムの動作方法 |
| JP6802480B2 (ja) * | 2017-01-27 | 2020-12-16 | 富士通株式会社 | プロセッサ、情報処理装置及びプロセッサの動作方法 |
| CN108734281B (zh) | 2017-04-21 | 2024-08-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
| JP6756661B2 (ja) | 2017-04-28 | 2020-09-16 | 日立オートモティブシステムズ株式会社 | 車両電子制御装置 |
| US10698766B2 (en) * | 2018-04-18 | 2020-06-30 | EMC IP Holding Company LLC | Optimization of checkpoint operations for deep learning computing |
-
2018
- 2018-12-21 JP JP2018239640A patent/JP7174243B2/ja active Active
-
2019
- 2019-11-29 EP EP19212664.7A patent/EP3671572A1/en not_active Withdrawn
- 2019-12-11 US US16/709,962 patent/US11475284B2/en active Active
- 2019-12-19 CN CN201911319384.2A patent/CN111353578A/zh active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5532938A (en) * | 1994-01-28 | 1996-07-02 | Mitsubishi Denki Kabushiki Kaisha | Numerical arithmetic processing unit |
| US20150227407A1 (en) * | 2014-02-10 | 2015-08-13 | Via Technologies, Inc. | Processor with approximate computing functional unit |
| EP3035249A1 (en) * | 2014-12-19 | 2016-06-22 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
| CN108364064A (zh) * | 2017-01-27 | 2018-08-03 | 意法半导体股份有限公司 | 操作神经网络的方法、对应网络、装置、以及计算机程序产品 |
| CN107622305A (zh) * | 2017-08-24 | 2018-01-23 | 中国科学院计算技术研究所 | 用于神经网络的处理器和处理方法 |
| CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
Non-Patent Citations (1)
| Title |
|---|
| YING WANG等: "Real-time meets approximate computing: An elastic CNN inference accelerator with adaptive trade-off between QoS and QoR", 《2017 54TH ACM/EDAC/IEEE DESIGN AUTOMATION CONFERENCE (DAC)》 * |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114118343A (zh) * | 2020-08-31 | 2022-03-01 | 南京大学 | 应用于Transformer神经网络的层归一化处理硬件加速器及方法 |
| CN114118343B (zh) * | 2020-08-31 | 2025-06-27 | 南京大学 | 应用于Transformer神经网络的层归一化处理硬件加速器及方法 |
| CN115187845A (zh) * | 2022-07-08 | 2022-10-14 | 杭州海康威视数字技术股份有限公司 | 一种图像处理方法、装置及设备 |
| CN116481128A (zh) * | 2023-05-10 | 2023-07-25 | 佛山市清源科技有限公司 | 空气净化系统、空气净化方法及存储介质 |
| CN116481128B (zh) * | 2023-05-10 | 2023-11-24 | 佛山市清源科技有限公司 | 空气净化系统、空气净化方法及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20200202201A1 (en) | 2020-06-25 |
| JP7174243B2 (ja) | 2022-11-17 |
| JP2020101991A (ja) | 2020-07-02 |
| EP3671572A1 (en) | 2020-06-24 |
| US11475284B2 (en) | 2022-10-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111353578A (zh) | 信息处理装置、神经网络程序和用于神经网络的处理方法 | |
| JP7056225B2 (ja) | 演算処理装置、情報処理装置、情報処理方法、およびプログラム | |
| CN107168678B (zh) | 一种乘加计算装置及浮点乘加计算方法 | |
| JP2020077143A (ja) | 学習プログラム、学習方法、情報処理装置 | |
| JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
| US20200409659A1 (en) | Fused multiply-add operator for mixed precision floating-point numbers with correct rounding | |
| EP4285215B1 (en) | Digital circuitry for normalization functions | |
| US20200409661A1 (en) | Floating point dot-product operator with correct rounding | |
| US20240143985A1 (en) | Identifying one or more quantisation parameters for quantising values to be processed by a neural network | |
| JP7354736B2 (ja) | 情報処理装置、情報処理方法、情報処理プログラム | |
| CN110659014A (zh) | 乘法器及神经网络计算平台 | |
| US20230376769A1 (en) | Method and system for training machine learning models using dynamic fixed-point data representations | |
| Limonova | Fast and gate-efficient approximated activations for bipolar morphological neural networks | |
| JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
| US11551087B2 (en) | Information processor, information processing method, and storage medium | |
| CN111984224A (zh) | 用于auv运动控制器的浮点数乘加ip核及控制方法 | |
| CN110770696A (zh) | 基于贡献估计的处理核心操作抑制 | |
| US20210334635A1 (en) | Neural network accelerator configured to perform operation on logarithm domain | |
| Kalali et al. | A power-efficient parameter quantization technique for CNN accelerators | |
| TW202528923A (zh) | 浮點計算裝置及浮點計算方法 | |
| TW202534511A (zh) | 使用尾數對齊方法的計算方法及計算裝置 | |
| Zendegani et al. | AMCAL: Approximate multiplier with the configurable accuracy levels for image processing and convolutional neural network | |
| JP2021165942A (ja) | 情報処理装置及び情報処理方法 | |
| CN117852596A (zh) | 用于硬件量化过程的数学建模的系统和方法 | |
| US20210216867A1 (en) | Information processing apparatus, neural network computation program, and neural network computation method |
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 | ||
| WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200630 |
|
| WD01 | Invention patent application deemed withdrawn after publication |