CN109726807B - 神经网络处理器、运算方法及存储介质 - Google Patents

神经网络处理器、运算方法及存储介质 Download PDF

Info

Publication number
CN109726807B
CN109726807B CN201711051322.9A CN201711051322A CN109726807B CN 109726807 B CN109726807 B CN 109726807B CN 201711051322 A CN201711051322 A CN 201711051322A CN 109726807 B CN109726807 B CN 109726807B
Authority
CN
China
Prior art keywords
module
result data
data
instruction
neural network
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.)
Active
Application number
CN201711051322.9A
Other languages
English (en)
Other versions
CN109726807A (zh
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201711051322.9A priority Critical patent/CN109726807B/zh
Publication of CN109726807A publication Critical patent/CN109726807A/zh
Application granted granted Critical
Publication of CN109726807B publication Critical patent/CN109726807B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Image Analysis (AREA)
  • Advance Control (AREA)

Abstract

本申请实施例公开了一种神经网络处理器、运算方法及存储介质,其中,神经网络处理器包括控制模块、与控制模块连接的接收模块和运算模块、与接收模块、控制模块和运算模块连接的存储模块,运算模块包括多个运算器,接收模块用于接收输入的输入数据和运算需求;控制模块用于根据运算需求生成运行指令和配置指令;运算模块用于根据配置指令对多个运算器建立连接,根据运行指令获取存储模块中的数据进行运算得到至少一个中间结果数据和最终结果数据;存储模块用于存储输入数据、至少一个中间结果数据以及最终结果数据。本申请实施例,可提高神经网络处理器的灵活性和运算效率。

Description

神经网络处理器、运算方法及存储介质
技术领域
本申请涉及神经网络算法领域,具体涉及一种神经网络处理器、运算方法及存储介质。
背景技术
深度神经网络是目前许多人工智能应用的基础,其在语音识别、图像处理、数据分析、广告推荐***、汽车自动驾驶等多方面得到了突破性的应用,使得深度神经网络应用于生活的各个方面。
随着神经网络的应用范围的进一步扩大,对于现有的神经网络,其神经元和权值的规模范围很大。因此,如何提高神经网络处理器的运算效率是本领域技术人员待解决的技术问题。
发明内容
本申请实施例提出了一种神经网络处理器、运算方法及存储介质,可对运算模块进行配置,提高神经网络处理器的灵活性和运算效率。
第一方面,本申请实施例提供了一种神经网络处理器,包括控制模块、与所述控制模块连接的接收模块和运算模块、与所述接收模块、所述控制模块和所述运算模块连接的存储模块,所述运算模块包括多个运算器,其中:
所述接收模块,用于接收输入的输入数据和运算需求;
所述控制模块,用于根据所述运算需求生成运行指令和配置指令;
所述运算模块,用于根据所述配置指令对所述多个运算器建立连接,根据所述运行指令获取所述存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据;
所述存储模块,用于存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据。
第二方面,本申请实施例提供了一种神经网络处理器的运算方法,包括:
接收模块接收输入的输入数据和运算需求;
控制模块根据所述运算需求生成运行指令和配置指令;
运算模块根据所述配置指令对所述运算模块中包含的多个运算器建立连接,根据所述运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据;
所述存储模块存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据。
第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面的方法。
采用了上述的神经网络处理器、运算方法及存储介质之后,控制模块根据接收模块接收的运算需求生成运行指令和配置指令,运算模块根据控制模块生成的运行指令和配置指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据,存储模块存储接收模块接收的输入数据和运算模块得到的中间结果数据和最终结果数据。即根据运算需求实现运算模块的配置和运算,可提高神经网络处理器的灵活性和运算模块的使用率,从而扩大了神经网络处理器的使用范围。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是本申请实施例提供的一种神经网络处理器的结构示意图;
图1A是本申请实施例提供的一种神经网络结构的运算示意图;
图1B是本申请实施例提供的一种控制模块的结构示意图;
图1C是本申请实施例提供的一种运算单元组的结构示意图;
图1D是本申请实施例提供的另一种运算单元组的结构示意图;
图1E是本申请实施例提供的另一种运算单元组的结构示意图;
图1F是本申请实施例提供的一种可重构阵列结构的结构示意图;
图1G是本申请实施例提供的一种存储模块结构示意图;
图2是本申请实施例提供的一种神经网络处理器的运算方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本申请实施例提出了一种神经网络处理器及运算方法,可根据运算需求实现运算模块中运算器的配置和运算,提高了神经网络处理器的灵活性和运算模块的使用率。以下结合具体实施例,并参照附图,对本申请进一步详细说明。
请参照图1,图1是本申请实施例提供的一种神经网络处理器的结构示意图。如图1所示,上述神经网络处理器10包括:接收模块11、控制模块12、运算模块13和存储模块14。其中,控制模块12与接收模块11、运算模块13和存储模块14连接,存储模块14与接收模块11、控制模块12和运算模块13连接。
在本申请实施例中,接收模块11用于接收输入的输入数据和运算需求。
本申请对于输入数据的数据类型不作限定,与神经网络处理器的应用中采集的数据对应,例如:图像处理对应的输入数据格式为图像,语音识别对应的输入数据格式为声音等。
可选的,所述运算模块13用于对输入数据进行预处理。也就是说,运算模块13获取输入数据之后,先对输入数据进行预处理,提高神经网络处理器的运算效率。
其中,预处理可包括归一化处理或等比例缩放处理等。归一化处理将输入数据映射到[0,1]或[-1,1]区间或更小的区间,比如[0.1,0.9]。等比例缩放处理为根据运算需求将输入数据按照同一比例进行缩放处理。由于输入数据的单位不一样,有些数据的范围可能特别大,数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小,且神经网络输出层的激活函数的值域是有限制的,通过归一化处理或等比例缩放处理之后,可提高输入数据的区分度和运算效率。
本申请所涉及的运算需求可包括最终结果数据(输出数据)所要求的数据格式,例如:数据位数、数据类型等。
可选的,所述运算模块13还用于获取所述最终结果数据与期望输出数据的误差,在所述误差大于预设阈值时进入所述误差的反向传播阶段。
本发明中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
上文中提到的运算都是神经网络中一层的运算,对于多层神经网络,其实现过程如图1A所示,图中虚线的箭头表示反向运算,实线的箭头表示正向运算。在正向运算中,当上一层人工神经网络执行完成之后,将上一层得到的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值。在反向运算中,当上一层人工神经网络的反向运算执行完成后,将上一层得到的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
神经网络的正向传播阶段对应于正向运算,为输入数据输入至输出数据输出的过程,反向传播阶段对应于反向运算,为最终结果数据与期望输出数据的误差反向通过正向传播阶段的过程,通过周而复始的信息正向传播和误差反向传播过程,按误差梯度下降的方式修正各层权值,对各层权值进行调整,也是神经网络学习训练的过程,可减少网络输出的误差。
举例来说,假设神经网络包括三层:输入层、中间层和输出层,其中:输入层各神经元负责接收来自外界的输入数据,并传递给中间层各神经元;中间层负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构,最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程;输出层向外界输出信息处理结果。误差的反向传播阶段:误差通过输出层,按误差梯度下降的方式修正各层权值,向中间层、输入层逐层反传。
在本申请实施例中,控制模块12用于根据所述运算需求生成运行指令和配置指令,向所述运算模块发送所述运行指令和所述配置指令。
运行指令用于指示运算模块13完成神经网络运算,即限定了运算模块13的数据操作;配置指令用于指示运算模块13的连接关系,即根据配置指令对运算模块13中的运算器进行连接,以便于运算模块13按照运行指令完成神经网络运算。
本申请对于运行指令和配置指令的具体格式不作限定,按照预设格式分别生成与输入数据和运算需求对应的指令,再根据预设格式分别解析上述指令,完成对应的操作。
可选的,如图1B所示控制模块12的结构示意图,控制模块12包括运算控制单元121和配置控制单元122。
其中,运算控制单元121用于根据所述运算需求生成所述运行指令,向所述运算模块13发送所述运行指令。通过运行指令控制运算模块13和存储模块14的行为。例如:通过运行指令控制运算模块13向存储模块14读取数据或写入数据,通过运行指令控制运算模块13完成神经网络运算。
运算模块13通过控制模块12根据运算需求生成的运算指令完成神经网络运算,可提高不同的运算需求对应的神经网络运算的支持率和神经网络处理器的灵活性,从而扩大了神经网络处理器的使用范围。
配置控制单元122用于根据所述运行指令生成所述配置指令,向所述运算模块13发送所述配置指令。例如:运行指令涉及2个加法器和1个乘法器的算术运算,则配置指令查找运算模块中的2个加法器和1个乘法器的标识,并规定上述标识对应的运算器的连接方式。控制模块12通过配置指令控制运算模块13进行重新连接,可提高神经网络处理器的灵活性和运算模块的使用率,从而扩大了神经网络处理器的使用范围。
在本申请实施例中,所述运算模块13包括多个运算器,所述运算模块13用于根据所述配置指令对所述多个运算器建立连接,根据所述运行指令获取所述存储模块中的数据进行运算,得到至少一个中间结果数据或/和最终结果数据。
运算器可以是基本运算单元、处理单元、算术逻辑单元(arithmetic logic unit,ALU)、编码表等。
其中,基本运算单元可包括至少一个加法器和/或至少一个乘法器,用于完成加法和/或乘法运算;处理单元可用于处理拼接组合、算术运算组合、逻辑运算组合等数据处理;ALU用于进行逻辑运算和/或算术运算的组合运算,实现基本运算单元不能实现或不易实现的运算,例如:通过ALU计算平均值;编码表用于查找对应结果,可提高运算效率。
可选的,运算模块13包括至少一个运算单元组131,如图1C示的运算单元组131的结构示意图中,运算单元组131包括至少一个基本运算单元1311和至少一个处理单元1312。
运算模块13用于根据所述配置指令对所述运算模块13中每一运算单元组131包含的所述基本运算单元1311和所述处理单元1312建立连接。
其中,运算单元组131可直接从存储模块14读取或写入数据,也就是基本运算单元1311和处理单元1312可直接从存储模块14读取或写入数据。
基本运算单元1311用于根据所述运行指令获取所述存储模块14中的数据进行运算,得到第一中间结果数据;处理单元1312用于根据所述运行指令将与所述处理单元1312连接的基本运算单元1311得到的第一中间结果数据进行运算,得到第二中间结果数据或所述最终结果数据。
以每个基本运算单元的中间结果数据规定16位,运算单元组的输出结果为64位为例。如图1D所示的运算单元组的结构示意图中,第一运算单元组包括第一基本运算单元、第二基本运算单元、第三基本运算单元、第四基本运算单元和第一处理单元,通过配置指令完成第一基本运算单元、第二基本运算单元、第三基本运算单元、第四基本运算单元和第一处理单元的重新连接。其中,第一基本运算单元、第二基本运算单元、第三基本运算单元、第四基本运算单元和第一处理单元对应的中间结果数据分别为:k1、k2、k3和k4。当基本运算单元的中间结果数据不足16位时,处理单元B在高位补0至满足16位的要求,并将k1写在输出结果的第0~15位,k2写在输出结果的第16~31位,k3写在输出结果的第32~47位,k4在输出结果的第48~63位,从而得到的输出结果为64位。
举例来说,如图1E所示的运算单元组的结构示意图中,第二运算单元组包括第五基本运算单元、第六基本运算单元、第七基本运算单元、第八基本运算单元和第二处理单元,通过配置指令以使第五基本运算单元、第六基本运算单元和第二处理单元的第一加法器连接,第七基本运算单元、第八基本运算单元和第二处理单元的第二加法器连接。当第五基本运算单元、第六基本运算单元、第七基本运算单元、第八基本运算单元对应的中间结果数据分别为:k1、k2、k3和k4时,通过处理单元完成运算组合,即k1和k2相加,得到的结果用r1表示;k3和k4相加,得到的结果用r2表示。
本申请实施例所涉及的运算模块13可以在基于粗粒度可重构阵列(Coarse-Grained Reconfigurable Array,CGRA)的硬件电路结构上实现,也可以基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)或数字信号处理(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等实现,在此不作限定。
在如图1F所示的CGRA的结构示意图中,每个方框表示一个运算单元组。通过CGRA的结构可以通过硬件配置的方式进行在线编程,以实现运算模块的可重构性。
可选的,运算模块13包括M行N列个运算单元组,其中M、N均为正整数。当M=N时,CGRA为对称结构,便于后续设计方便。
可选的,所述运算模块13还包括与所述处理单元1312连接的至少一个后续运算单元1313,用于根据所述运行指令对与所述后续运算单元1313连接的处理单元1312得到的第二中间结果数据进行运算,得到第三中间结果数据或所述最终结果数据。
其中,后续运算单元1313可包括ALU和编码表等。
可选的,所述运算模块13还用于根据所述运行指令确定所述多个运算器中每一运算器的运算任务,所述运算器用于在未执行与所述运算器对应的运算任务时处于关闭状态。也就是说,运算器在执行对应的运行任务时才进行开启,否则处理关闭状态,从而节省神经网络中的运算器的功耗。
在本申请实施例中,存储模块14用于存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据。
也就是说,存储模块14存储了输入数据和运算中产生的中间结果数据和最终结果数据,便于减少神经网络处理器输出的误差和后续根据上述数据进一步进行计算。
可选的,如图1G所示存储模块14的结构示意图,存储模块14包括输入存储模块141和输出存储模块142。其中,输入存储模块141用于存储输入数据,输出存储模块142用于存储运算结果数据,运算结果数据包括至少一个中间结果数据和/或最终结果数据。通过上述输入存储模块141和输出存储模块142分别存储对应的数据,可提高数据存储的有效性。
可以理解,控制模块12根据接收模块11接收的运算需求生成运行指令和配置指令,运算模块13根据控制模块12生成的运行指令和配置指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据,存储模块14存储接收模块接收的输入数据和运算模块得到的中间结果数据和最终结果数据。即根据运算需求实现运算模块的配置和运算,可提高神经网络处理器的灵活性和运算模块的使用率,从而扩大了神经网络处理器的使用范围。
请参见图2,图2是本申请实施例提供的一种神经网络处理器的运算方法的流程示意图,如图2所示,该方法应用于如图1所示的神经网络处理器,其中:
201:接收模块接收输入的输入数据和运算需求。
202:控制模块根据运算需求生成运行指令和配置指令。
203:运算模块根据配置指令对运算模块中包含的多个运算器建立连接,根据运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据。
204:存储模块存储输入数据、至少一个中间结果数据以及最终结果数据。
可选的,所述运算模块包括至少一个运算单元组,每一运算单元组包括至少一个基本运算单元和至少一个处理单元;所述运算模块根据所述配置指令对所述运算模块中包含的多个运算器建立连接,根据所述运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据,包括:所述运算模块根据所述配置指令对所述运算模块中每一运算单元组包含的所述基本运算单元和所述处理单元建立连接;所述基本运算单元根据所述运行指令获取所述存储模块中的数据进行运算,得到第一中间结果数据;所述处理单元根据所述运行指令将与所述处理单元连接的所述基本运算单元得到的第一中间结果数据进行运算,得到第二中间结果数据或所述最终结果数据。
可选的,所述方法还包括:所述运算模块根据所述运行指令确定所述多个运算器中每一运算器的运算任务,所述运算器在未执行与所述运算器对应的运算任务时处于关闭状态。
可选的,所述运算模块还包括至少一个后续运算单元,在所述处理单元根据所述运行指令将与所述处理单元连接的所述基本运算单元得到的中间结果数据进行运算之后,所述方法还包括:所述后续运算单元根据所述运行指令对所述处理单元得到的第二中间结果数据进行运算,得到第三中间结果数据或所述最终结果数据。
可选的,所述运算模块至少基于以下一种电路结构:粗粒度可重构阵列CGRA、现场可编程门阵列FPGA、数字信号处理DSP、专用集成电路ASIC。
可选的,所述控制模块包括运算控制单元和配置控制单元,所述控制模块根据运算需求生成运行指令和配置指令,包括:所述运算控制单元根据所述运算需求生成所述运行指令;所述配置控制单元根据所述运行指令生成所述配置指令。
可选的,所述存储模块包括输入存储模块和输出存储模块,所述存储模块存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据,包括:所述输入存储模块存储所述输入数据;所述输出存储模块存储运算结果数据,所述运算结果数据包括所述至少一个中间结果数据和/或所述最终结果数据。
可选的,在所述接收模块接收输入的输入数据和运算需求之后,所述方法还包括:所述运算模块对所述输入数据进行预处理。
可选的,所述预处理至少包括以下一项:归一化处理、等比例缩放处理。
可选的,在所述运算模块根据所述运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据之后,所述方法还包括:所述运算模块获取所述最终结果数据与期望输出数据的误差,在所述误差大于预设阈值时进入所述误差的反向传播阶段。
可以理解,控制模块根据接收模块接收的运算需求生成运行指令和配置指令,运算模块根据控制模块生成的运行指令和配置指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据,存储模块存储接收模块接收的输入数据和运算模块得到的中间结果数据和最终结果数据。即根据运算需求实现运算模块的配置和运算,可提高神经网络处理器的灵活性和运算模块的使用率,从而扩大了神经网络处理器的使用范围。
在本发明的另一实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时使上述处理器执行神经网络处理器的运算方法中所描述的实现方式。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (19)

1.一种神经网络处理器,其特征在于,包括控制模块、与所述控制模块连接的接收模块和运算模块、与所述接收模块、所述控制模块和所述运算模块连接的存储模块,所述运算模块包括多个运算器,其中:
所述接收模块,用于接收输入的输入数据和运算需求,所述运算需求包括最终结果数据所要求的数据格式;
所述控制模块,用于根据所述运算需求生成运行指令和配置指令;
所述运算模块,用于根据所述配置指令对所述多个运算器建立连接,根据所述运行指令获取所述存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据;
所述存储模块,用于存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据;
所述运算模块包括至少一个运算单元组,每一运算单元组包括至少一个基本运算单元和至少一个处理单元,所述处理单元用于数据处理,所述数据处理包括处理拼接组合、算术运算组合、逻辑运算组合;
所述运算模块,用于根据所述配置指令对所述运算模块中每一运算单元组包含的所述基本运算单元和所述处理单元建立连接;
所述基本运算单元,用于根据所述运行指令获取所述存储模块中的数据进行运算,得到第一中间结果数据;
所述处理单元,用于根据所述运行指令将与所述处理单元连接的所述基本运算单元得到的第一中间结果数据进行运算,得到第二中间结果数据或所述最终结果数据。
2.根据权利要求1所述的神经网络处理器,其特征在于,所述运算模块还包括与所述处理单元连接的至少一个后续运算单元,用于根据所述运行指令对所述处理单元得到的第二中间结果数据进行运算,得到第三中间结果数据或所述最终结果数据。
3.根据权利要求1或2所述的神经网络处理器,其特征在于,所述运算模块还用于根据所述运行指令确定所述多个运算器中每一运算器的运算任务,所述运算器用于在未执行与所述运算器对应的运算任务时处于关闭状态。
4.根据权利要求1或2所述的神经网络处理器,其特征在于,所述运算模块还用于对所述输入数据进行预处理。
5.根据权利要求4所述的神经网络处理器,其特征在于,所述预处理至少包括以下一项:归一化处理、等比例缩放处理。
6.根据权利要求1或2所述的神经网络处理器,其特征在于,所述运算模块还用于获取所述最终结果数据与期望输出数据的误差,在所述误差大于预设阈值时进入所述误差的反向传播阶段。
7.根据权利要求1或2所述的神经网络处理器,其特征在于,所述运算模块至少基于以下一种电路结构:粗粒度可重构阵列CGRA、现场可编程门阵列FPGA、数字信号处理DSP、专用集成电路ASIC。
8.根据权利要求1或2所述的神经网络处理器,其特征在于,所述控制模块包括运算控制单元和配置控制单元,其中:
所述运算控制单元,用于根据所述运算需求生成所述运行指令;
所述配置控制单元,用于根据所述运行指令生成所述配置指令。
9.根据权利要求1或2所述的神经网络处理器,其特征在于,所述存储模块包括输入存储模块和输出存储模块,其中:
所述输入存储模块,用于存储所述输入数据;
所述输出存储模块,用于存储运算结果数据,所述运算结果数据包括所述至少一个中间结果数据和/或所述最终结果数据。
10.一种神经网络处理器的运算方法,其特征在于,所述方法基于上述权利要求1-9任一项所述的神经网络处理器,所述方法包括:
接收模块接收输入的输入数据和运算需求,所述运算需求包括最终结果数据所要求的数据格式;
控制模块根据所述运算需求生成运行指令和配置指令;
运算模块根据所述配置指令对所述运算模块中包含的多个运算器建立连接,根据所述运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据;
所述存储模块存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据;
所述运算模块包括至少一个运算单元组,每一运算单元组包括至少一个基本运算单元和至少一个处理单元,所述处理单元用于数据处理,所述数据处理包括处理拼接组合、算术运算组合、逻辑运算组合;
所述运算模块根据所述配置指令对所述运算模块中包含的多个运算器建立连接,根据所述运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据,包括:
所述运算模块根据所述配置指令对所述运算模块中每一运算单元组包含的所述基本运算单元和所述处理单元建立连接;
所述基本运算单元根据所述运行指令获取所述存储模块中的数据进行运算,得到第一中间结果数据;
所述处理单元根据所述运行指令将与所述处理单元连接的所述基本运算单元得到的第一中间结果数据进行运算,得到第二中间结果数据或所述最终结果数据。
11.根据权利要求10所述的方法,其特征在于,所述运算模块还包括至少一个后续运算单元,在所述处理单元根据所述运行指令将与所述处理单元连接的所述基本运算单元得到的中间结果数据进行运算之后,所述方法还包括:
所述后续运算单元根据所述运行指令对所述处理单元得到的第二中间结果数据进行运算,得到第三中间结果数据或所述最终结果数据。
12.根据权利要求10或11任一项所述的方法,其特征在于,所述方法还包括:
所述运算模块根据所述运行指令确定所述多个运算器中每一运算器的运算任务,所述运算器在未执行与所述运算器对应的运算任务时处于关闭状态。
13.根据权利要求10或11任一项所述的方法,其特征在于,在所述接收模块接收输入的输入数据和运算需求之后,所述方法还包括:
所述运算模块还用于对所述输入数据进行预处理。
14.根据权利要求13所述的方法,其特征在于,所述预处理至少包括以下一项:归一化处理、等比例缩放处理。
15.根据权利要求10或11所述的方法,其特征在于,在所述运算模块根据所述运行指令获取存储模块中的数据进行运算,得到至少一个中间结果数据和最终结果数据之后,所述方法还包括:
所述运算模块获取所述最终结果数据与期望输出数据的误差,在所述误差大于预设阈值时进入所述误差的反向传播阶段。
16.根据权利要求10或11任一项所述的方法,其特征在于,所述运算模块至少基于以下一种电路结构:粗粒度可重构阵列CGRA、现场可编程门阵列FPGA、数字信号处理DSP、专用集成电路ASIC。
17.根据权利要求10或11任一项所述的方法,其特征在于,所述控制模块包括运算控制单元和配置控制单元,所述控制模块根据所述运算需求生成运行指令和配置指令,包括:
所述运算控制单元根据所述运算需求生成所述运行指令;
所述配置控制单元根据所述运行指令生成所述配置指令。
18.根据权利要求10或11任一项所述的方法,其特征在于,所述存储模块包括输入存储模块和输出存储模块,所述存储模块存储所述输入数据、所述至少一个中间结果数据以及所述最终结果数据,包括:
所述输入存储模块存储所述输入数据;
所述输出存储模块存储运算结果数据,所述运算结果数据包括所述至少一个中间结果数据和/或所述最终结果数据。
19.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被神经网络处理器执行时使所述神经网络处理器执行如权利要求10-18任一项所述的方法。
CN201711051322.9A 2017-10-31 2017-10-31 神经网络处理器、运算方法及存储介质 Active CN109726807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711051322.9A CN109726807B (zh) 2017-10-31 2017-10-31 神经网络处理器、运算方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711051322.9A CN109726807B (zh) 2017-10-31 2017-10-31 神经网络处理器、运算方法及存储介质

Publications (2)

Publication Number Publication Date
CN109726807A CN109726807A (zh) 2019-05-07
CN109726807B true CN109726807B (zh) 2023-11-24

Family

ID=66294452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711051322.9A Active CN109726807B (zh) 2017-10-31 2017-10-31 神经网络处理器、运算方法及存储介质

Country Status (1)

Country Link
CN (1) CN109726807B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813945A (zh) * 2020-09-14 2020-10-23 北京星光同创科技有限公司 一种基于fpaa的推断加速器构建方法
CN114610457A (zh) * 2022-03-08 2022-06-10 北京地平线机器人技术研发有限公司 用于多处理单元的数据协同处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN106991476A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 用于执行人工神经网络正向运算的装置和方法
CN107169563A (zh) * 2017-05-08 2017-09-15 中国科学院计算技术研究所 应用于二值权重卷积网络的处理***及方法
CN107169560A (zh) * 2017-04-19 2017-09-15 清华大学 一种自适应可重构的深度卷积神经网络计算方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN106991476A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 用于执行人工神经网络正向运算的装置和方法
CN106447034A (zh) * 2016-10-27 2017-02-22 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN107169560A (zh) * 2017-04-19 2017-09-15 清华大学 一种自适应可重构的深度卷积神经网络计算方法和装置
CN107169563A (zh) * 2017-05-08 2017-09-15 中国科学院计算技术研究所 应用于二值权重卷积网络的处理***及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PRIME: a novel processing-in-memory architecture for neural network computation in ReRAM-based main memory;Ping Chi et al.;ACM SIGARCH Computer Architecture News;第44卷(第3期);第27-39页 *
基于FPGA的卷积神经网络并行结构研究;陆志坚;中国博士学位论文全文数据库 信息科技辑;第2014卷(第04期);第I140-12页 *

Also Published As

Publication number Publication date
CN109726807A (zh) 2019-05-07

Similar Documents

Publication Publication Date Title
US11501138B1 (en) Control circuits for neural network inference circuit
CN109190756B (zh) 基于Winograd卷积的运算装置及包含该装置的神经网络处理器
US11809515B2 (en) Reduced dot product computation circuit
CN111461168B (zh) 训练样本扩充方法、装置、电子设备及存储介质
CN108268931B (zh) 数据处理的方法、装置和***
US20190057081A1 (en) Method and apparatus for generating natural language
EP3496008A1 (en) Method and apparatus for processing convolution operation in neural network
US11308399B2 (en) Method for topological optimization of graph-based models
CN109726807B (zh) 神经网络处理器、运算方法及存储介质
EP3637327B1 (en) Computing device and method
EP4053739A1 (en) Neural network model for image segmentation and image segmentation method therefor
US20230162034A1 (en) Method and apparatus with neural network data input and output control
US20210110273A1 (en) Apparatus and method with model training
US20180357527A1 (en) Data-processing device with representation of values by time intervals between events
CN110059797B (zh) 一种计算装置及相关产品
Xu et al. Improving extreme low-bit quantization with soft threshold
EP3629248A1 (en) Operating method and training method of neural network and neural network thereof
CN116310770A (zh) 基于梅尔倒谱和注意力残差网络的水声目标识别方法和***
CN113159297B (zh) 一种神经网络压缩方法、装置、计算机设备及存储介质
CN111652051B (zh) 人脸检测模型生成方法、装置、设备和存储介质
Ago et al. The parallel FDFM processor core approach for neural networks
US20230004800A1 (en) Complementary sparsity in processing tensors
Xu et al. Computation based on signal random fluctuation in asynchronous cellular automata
CN114722751B (zh) 运算单元的构架选择模型训练方法和构架选择方法
US20220383103A1 (en) Hardware accelerator method and device

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
GR01 Patent grant
GR01 Patent grant