神经网络加速器的控制方法、装置及神经网络加速器与流程

文档序号:20920692发布日期:2020-05-29 14:06阅读:252来源:国知局
神经网络加速器的控制方法、装置及神经网络加速器与流程

本申请涉及人工智能技术,特别是涉及一种神经网络加速器的控制方法、装置及神经网络加速器。



背景技术:

人工智能技术的高速发展,使得作为类脑运算的高效能计算设备的神经网络加速器迎来了发展的高峰。神经网络加速器模拟了人脑的运算模式,利用膜电位和脉冲携带的脉冲电位进行运算。

为了保证神经网络加速器中的每个计算核在不同的接收脉冲时间延迟的情况下,均可完成更新运算。现有技术中,通常根据最坏工作情况、最长延迟时间,设计更新运算的时间步长,使得无论接收脉冲的实际延迟时间如何,神经网络加速器中的每个计算核均在接收脉冲的最长延迟时间下工作,大大降低了神经网络加速器的整体运算性能。



技术实现要素:

有鉴于此,本申请的主要目的在于提供一种神经网络加速器的控制方法,该方法可以使得神经网络加速器中的每个计算核根据接收脉冲的实际延迟时间进行更新运算,显著提高了神经网络加速器的整体运算性能。

为了达到上述目的,本申请提出的技术方案为:

第一方面,本申请实施例提供了一种神经网络加速器的控制方法,应用于计算核的控制设备,包括以下步骤:

在获取到输入脉冲数据包后,获取输入激励数据包;所述输入激励数据包包括当前计算核的更新条件;

存储所述输入激励数据包,并根据存储的所述输入激励数据包,判断是否满足当前计算核的更新条件;

当满足当前计算核的更新条件时,执行更新运算并发送输出脉冲数据包;

生成并发送输出激励数据包;所述输出激励数据包包括目标计算核的计算核地址和目标计算核的更新条件。

一种可能的实施方式中,所述当前计算核的更新条件为接收到预设数量个激励数据包;

所述根据存储的所述输入激励数据包,判断是否满足当前计算核的更新条件的步骤,包括:

根据存储的每个输入激励数据包的总数量,判断是否接收到预设数量个激励数据包。

一种可能的实施方式中,所述输入脉冲数据包携带有至少一个输入脉冲电位和每个所述输入脉冲电位对应的神经元地址;

所述执行更新运算的步骤,包括:

针对每个所述输入脉冲电位,根据该输入脉冲电位对应的神经元地址,将该输入脉冲电位发送给目标神经元;

接收所述目标神经元发出的输出脉冲电位;所述输出脉冲电位为所述目标神经元根据所述目标神经元的膜电位、所述目标神经元接收的输入脉冲电位、预设的泄露电位和预设电位阈值生成的;

根据每个所述输出脉冲电位,生成所述输出脉冲数据包。

一种可能的实施方式中,所述执行更新运算的步骤之后,所述方法还包括:

清空存储的所述输入激励数据包。

一种可能的实施方式中,所述生成并发送输出激励数据包的步骤包括:

获取所述目标计算核的计算核地址和所述目标计算核的更新条件;

根据所述目标计算核的计算核地址和所述目标计算核的更新条件,生成所述输出激励数据包;

发送所述输出激励数据包。

第二方面,本申请实施例还提供一种神经网络加速器的控制装置,应用于计算核的控制设备,包括:

激励获取模块,用于在获取到输入脉冲数据包后,获取输入激励数据包;所述输入激励数据包包括当前计算核的更新条件;

激励判断模块,用于根据存储的所述输入激励数据包,判断是否满足当前计算核的更新条件;

更新模块,用于当满足当前计算核的更新条件时,执行更新运算并发送输出脉冲数据包;

激励发送模块,用于生成并发送输出激励数据包;所述输出激励数据包包括目标计算核的计算核地址和目标计算核的更新条件。

一种可能的实施方式中,所述当前计算核的更新条件为接收到预设数量个激励数据包;

所述激励判断模块,具体用于:

判断是否接收到预设数量个激励数据包。

一种可能的实施方式中,所述输入脉冲数据包携带有至少一个输入脉冲电位和每个所述输入脉冲电位对应的神经元地址;

所述更新模块,具体包括:

神经元发送单元,用于针对每个所述输入脉冲电位,根据该输入脉冲电位对应的神经元地址,将该输入脉冲电位发送给目标神经元;

神经元接收单元,用于接收所述目标神经元发出的输出脉冲电位;所述输出脉冲电位为所述目标神经元根据所述目标神经元的膜电位、所述目标神经元接收的输入脉冲电位、预设的泄露电位和预设电位阈值生成的;

脉冲生成单元,用于根据每个所述输出脉冲电位,生成所述输出脉冲数据包。

一种可能的实施方式中,所述装置还包括:

清空模块,用于清空存储的所述输入激励数据包。

一种可能的实施方式中,所述激励发送模块,包括:

获取单元,用于获取所述目标计算核的计算核地址和所述目标计算核的更新条件;

生成单元,用于根据所述目标计算核的计算核地址和所述目标计算核的更新条件,生成所述输出激励数据包;

发送单元,用于发送所述输出激励数据包。

第三方面,本申请实施例还提供一种神经网络加速器,包括:配置设备、存储设备、路由设备和计算核;

所述计算核,包括:神经元和控制设备;

所述控制设备,用于实现上述第一方面及第一方面中任一种可能的实施方式的步骤,或实现上述第二方面及第二方面中任一种可能的实施方式的装置。

综上所述,本申请提出的一种神经网络加速器的控制方法、装置及神经网络加速器。有别于现有技术中每个计算核均在接收脉冲的最长延迟时间下工作的方法,本申请的计算核获取并存储输入激励数据包,并根据输入激励数据包判断是否满足当前计算核的更新条件,当满足更新条件时,无需等待,直接进行更新运算。每级计算核均在满足更新条件时直接进行更新运算,使得神经网络加速器中的每个计算核均根据接收脉冲的实际延迟时间进行更新运算,显著提高了神经网络加速器的整体运算性能。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种神经网络加速器的架构示意图;

图2为神经网络加速器中路由设备的架构示意图;

图3为神经网络加速器中计算核的架构示意图;

图4a为神经网络加速器中计算核间一种连接方式的示意图;

图4b为神经网络加速器中计算核间另一种连接方式的示意图;

图4c为神经网络加速器中计算核间另一种连接方式的示意图;

图5为本申请实施例提供的一种神经网络加速器的控制方法的流程示意图;

图6为一种三层神经网络的神经网络加速器的架构示意图;

图7为本申请实施例提供的另一种神经网络加速器的控制方法的流程示意图;

图8为计算核中控制设备与目标神经元的示意图;

图9a为神经网络加速器中计算核间一种连接方式的示意图;

图9b为神经网络加速器的一种更新运算时间示意图;

图9c为神经网络加速器的另一种更新运算时间示意图;

图10为本申请实施例提供的一种神经网络加速器的控制装置的结构示意图;

图11为神经网络加速器的控制装置中的更新模块的结构示意图;

图12为神经网络加速器的控制装置中的激励发送模块的结构示意图;

图13为神经网络加速器中计算核间一种连接方式的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或设备的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或设备,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或设备。

人工智能技术的高速发展,使得作为类脑运算的高效能计算设备的神经网络加速器迎来了发展的高峰。神经网络加速器模拟了人脑的运算模式,利用膜电位和脉冲携带的脉冲电位进行运算。

为了保证神经网络加速器中的每个计算核在不同的接收脉冲时间延迟的情况下,均可完成更新运算。现有技术中,通常根据最坏工作情况、最长延迟时间,设计更新运算的时间步长,使得无论接收脉冲的实际延迟时间如何,神经网络加速器中的每个计算核均在接收脉冲的最长延迟时间下工作,大大降低了神经网络加速器的整体运算性能。

有鉴于此,本申请实施例的核心发明点在于:本申请的计算核获取并存储输入激励数据包,并根据输入激励数据包判断是否满足当前计算核的更新条件,当满足更新条件时,无需等待,直接进行更新运算。并在执行更新运算后,生成并发送输出激励数据包,以便后级目标计算核继续根据输出激励数据包判断是否满足更新条件,并在满足更新条件时进行更新运算。每级计算核均在满足更新条件时直接进行更新运算,使得神经网络加速器中的每个计算核均根据接收脉冲的实际延迟时间进行更新运算,显著提高了神经网络加速器的整体运算性能。

为使本申请的目的、技术方案和优点更加清楚,下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

本申请实施例提供的神经网络加速器100的架构如图1所示,本申请实施例的神经网络加速器100包括配置设备101、存储设备102、多个路由设备103和每个路由设备103对应的计算核104。

在本申请实施例的神经网络加速器100中,配置设备101用于配置神经网络的结构和不同神经元的权重。这里,神经网络的结构具体包括每级神经网络包括的计算核104,每个计算核104内及计算核104之间神经元的连接关系等。并且,每个具体的神经网络依据不同神经元的权重实现不同的功能。配置神经网络的结构和不同神经元的权重的步骤具体为,将神经网络的结构和不同神经元的权重输入并存储到存储设备102中。

存储设备102用于存储神经网络的结构和不同神经元的权重。

路由设备103为神经网络加速器的片上互连网络,利用路由设备103进行包括输入脉冲数据包、输出脉冲数据包在内的脉冲数据包,包括输入激励数据包、输出激励数据包在内的激励数据包,以及其他数据的传输。

本申请实施例的神经网络加速器100中的数据传输方式为在路由设备103之间逐级传输,如图2所示,一个路由设备201具有5个双向端口:东、南、西、北和本地,每个双向端口都可以进行输入和输出的数据传输。这里,为了方便表述,双向端口的命名采用上北、下南、左西、右东命名,这种命名方法没有特殊的含义,仅为了直观的表述双向端口的位置,这里的上、下、左、右是相对于路由设备201而言的,仅用于表述双向端口的位置,不必具有绝对坐标系中上、下、左、右的含义,这里的东、西、南、北也仅用于表述双向端口相对于路由设备201的位置,不必具备物理坐标系中东、西、南、北的含义。当脉冲数据包或激励数据包被该路由设备201获取时,根据脉冲数据包或激励数据包携带的计算核地址,判断该脉冲数据包或激励数据包应当向哪个方向传输,如果该脉冲数据包或激励数据包携带的计算核地址为当前计算核202的计算核地址,则将该脉冲数据包或激励数据包发送给本地的当前计算核202。如果该脉冲数据包或激励数据包携带的计算核地址不是当前计算核202的计算核地址,则根据该脉冲数据包或激励数据包携带的计算核地址将该脉冲数据包或激励数据包发送给对应方向上相邻的路由设备。为了方便脉冲数据包或激励数据包的传输,脉冲数据包和激励数据包都是以计算核104为单位生成并发送的,在计算核104的内部,再向具体的神经元分发。

如图3所示,一个计算核104中均包含了控制设备301和至少一个神经元302,通常来讲一个计算核中包含多个神经元302,例如可以包含64个神经元302、128个神经元302或1024个神经元302。每个神经元302各自包含膜电位,并且每个神经元302可以根据脉冲电位进行膜电位的变化。

现有技术中,计算核104仅接收输入脉冲数据包或发送输出脉冲数据包,通过包括输入脉冲数据包及输出脉冲数据包在内的脉冲数据包,完成每个神经元的更新运算操作。这里,输入脉冲数据包,包括:至少一个输入脉冲电位,和具体接收脉冲电位的神经元对应的神经元地址。针对每个输入脉冲电位,计算核104的控制设备301将该输入脉冲电位发送给该输入脉冲电位的神经元地址对应的神经元。由于一个计算核104中包含了多个神经元302,一个计算核104接收的输入脉冲数据包中可能包含多个输入脉冲电位。

由于脉冲数据包和激励数据包都是以计算核104为单位生成并发送的,在实现神经网络时,具体的连接结构可能如图4a所示,一个前级计算核连接一个后级计算核,前级计算核发送一个脉冲数据包和一个激励数据包给后级计算核;也可能如图4b所示,两个以上前级计算核连接一个后级计算核,每个前级计算核分别发送一个脉冲数据包和一个激励数据包给后级计算核;也可能如图4c所示,一个前级计算核连接两个以上后级计算核,前级计算核分别发送一个脉冲数据包和一个激励数据包给每个后级计算核。计算核104中神经元302需要在接收到所有的输入脉冲电位之后,才能进行正确的更新运算。由于每个计算核104在片上互连网络中所处的位置不同、每个计算核104之间的连接路径长度不同,因此每个计算核104之间的脉冲数据包的传输延迟不同;并且,由于每个计算核连接的前级计算核个数不同,该计算核能够满足更新运算的条件,进行更新运算的时间不同,进一步影响了该计算核向该计算核连接的后级计算核发送输出脉冲数据包的时间。

综上,为了保证每个计算核中的神经元均可完整的接收到所有的输入脉冲电位,正确的完成更新运算,现有技术采用等待的方法,通过实验测定或计算的方法,确定最坏情况下计算核之间进行脉冲数据包传递的最长延迟时间,例如,确定片上互连网络中计算核104之间连接路径最长的情况下的最长传输延迟等,根据上述最长延迟时间确定每个计算核104更新运算的时间步长。无论该计算核104何时完成接收所有脉冲数据包的操作,该计算核104中的神经元302何时完成接收所有的输入脉冲电位的操作,该计算核104均等待上述最长延迟时间后,再进行更新运算。现有技术的方法无疑大大降低了神经网络加速器的整体运算性能。

本申请实施例中,计算核104不仅接收输入脉冲数据包或发送输出脉冲数据包,还接收输入激励数据包或发送输出激励数据包。通过包括输入激励数据包及输出激励数据包在内的激励数据包,完成计算核间的握手。

具体的,一种通过接收输入激励数据包或发送输出激励数据包,完成神经网络加速器控制的方法如图5所示,该方法应用于计算核的控制设备,主要包括:

s501:在获取到输入脉冲数据包后,获取输入激励数据包,并存储所述输入激励数据包;所述输入激励数据包用于判断当前计算核是否满足更新条件。

本申请实施例中计算核的控制设备在现有技术中获取输入脉冲数据包的基础上,还获取输入激励数据包。计算核的控制设备获取到的输入激励数据包携带有当前计算核的更新条件。一般而言,计算核在接收到所有的输入脉冲数据包之后,才能进行正确的更新运算。因此,通过获取到的输入激励数据包中携带的当前计算核的更新条件,确保计算核在进行更新运算之前,接收到所有的输入脉冲数据包。

由于如图4b所示,在实际的神经网络结构中,存在一个计算核连接到两个以上的前级计算核的情况,因此,该计算核可能接收到两个以上输入脉冲数据包,此时,该计算核的控制设备每接收到一个输入脉冲数据包,均需接收一个对应的输入激励数据包。此时,该计算核的控制设备每接收到一个输入激励数据包,就对接收到的输入激励数据包存储进行存储。具体的,可以存储在计算核中具有存储功能的单元中,也可以存储在神经网络加速器的内部或外部的存储设备中。

s502:获取所述当前计算核的更新条件。

当前计算核的更新条件可以存储在神经网络加速器的内部或外部的存储设备中,因此,可以从神经网络加速器的内部或外部的存储设备中获取当前计算核的更新条件。

获取当前计算核的更新条件的步骤可以在获取输入激励数据包的步骤之前或之后进行。优选的,如图5所示,获取当前计算核的更新条件的步骤与获取输入激励数据包的步骤可以并行执行。

s503:根据存储的所述输入激励数据包和获取的所述更新条件,判断所述当前计算核是否满足所述更新条件。

通常来讲,此时在计算核中具有存储功能的单元中、或者神经网络加速器的内部或外部的存储设备中,存储了至少一个输入激励数据包。此时,根据存储的输入激励数据包及获取到的当前计算核的更新条件,判断是否满足当前计算核的更新条件。

s504:当所述当前计算核满足更新条件时,执行更新运算并发送输出脉冲数据包。

当判定已经接收到所有的输入脉冲数据包时,判定满足当前计算核的更新条件时,执行更新运算,根据更新运算结果生成输出脉冲数据包,并将输出脉冲数据包发送给后级的目标计算核。

本申请实施例提供的神经网络加速器中的每个计算核,均采用本申请实施例提供的控制方法,根据获取的输入激励数据包判断是否满足更新条件,并在满足更新条件时进行更新运算,有别于现有技术中等待最长延迟时间后进行更新运算的方法,本申请实施例中各计算核在满足更新条件时即进行更新,也就是可在接收到所有的输入脉冲数据包后即进行更新,无需等待最长延迟时间,显著提高了神经网络加速器的整体运算性能。

为了方便理解,本申请实施例以一个包含三层神经网络的神经网络加速器为例,详细介绍神经网络加速器的控制方法。

包含三层神经网络的神经网络加速器的架构示意图如图6所示,无论神经网络加速器中的神经网络结构如何,神经网络加速器的配置设备和存储设备的结构都没有很大的变化,因此,图6中仅示出了神经网络加速器600的路由设备601和路由设备601对应的计算核602。图6中的神经网络加速器600包括输入层、中间层和输出层。

无论计算核602位于输入层、中间层、还是输出层,其控制方法均类似,如图7所示,具体的控制方法包括:

s701:获取到输入脉冲数据包。

一般而言,神经网络加速器在外部电子设备的驱动下进行运算,输入层与外部电子设备连接,从外部电子设备处获取输入脉冲数据包,此时输入层的计算核获取的输入脉冲数据包是外部电子设备生成的。这里,外部电子设备可以包括cpu、soc、fpga等常用的电子设备。输入层还与中间层连接,输入层的计算核生成输出脉冲数据包,并将输出脉冲数据包发送给中间层的计算核。输入层的计算核生成的输出脉冲数据包,对中间层的计算核而言,为以中间层的计算核为当前计算核的输入脉冲数据包。中间层与输出层连接,中间层的计算核接收输入层的计算核生成的输出脉冲数据包作为输入脉冲数据包后,生成输出脉冲数据包,并将输出脉冲数据包发送给输出层的计算核。中间层的计算核生成的输出脉冲数据包,对输出层的计算核而言,为以输出层的计算核为当前计算核的输入脉冲数据包。输出层的计算核也可以连接外部电子设备,将运算结果发送给外部电子设备。在训练时,输出层的计算核还可以生成输出脉冲数据包,并将生成的输出脉冲数据包反向传播给中间层的计算核。此时,中间层的计算核接收输出层的计算核生成的输出脉冲数据包作为输入脉冲数据包。包括输入脉冲数据包和输出脉冲数据包在内的脉冲数据包,均包括:计算核地址,至少一个输入脉冲电位和每个所述输入脉冲电位对应的神经元地址。这里,计算核地址为接收该脉冲数据包的计算核的地址。并且,每个输入脉冲电位输入接收该脉冲数据包的计算核中的一个神经元中,输入脉冲电位对应的神经元地址为接收输入脉冲电位的神经元的地址。

以输入层的计算核为例,外部电子设备可以生成输入层的每个计算核的输入脉冲数据包,以逐级传递或直接传递的方式,将输入脉冲数据包发送给输入层的每个计算核。

s702:获取输入激励数据包。

包括输入激励数据包和输出激励数据包在内的激励数据包,通常以计算核为单位接收和发送,激励数据包中可以包括计算核地址和激励信号,当前计算核接收到输入激励数据包意味着,与其连接的前级计算核完成更新运算,还意味着当前计算核接收到了与其连接的前级计算核的输入脉冲数据包。为了保证每个计算核在进行更新运算之前已经获取到所有的输入脉冲数据包,根据获取的输入激励数据包判断是否当前计算核满足更新条件。为了足以判断是否获取到所有的输入脉冲数据包,计算核获取的输入激励数据包与获取的输入脉冲数据包具有相同的来源。具体的,输入层与外部电子设备连接,从外部电子设备处获取输入脉冲数据包,因此,输入层的计算核从外部电子设备获取输入激励数据包。同理,输入层的计算核生成输出脉冲数据包并发送给中间层之后,也生成输出激励数据包发送给中间层。中间层获取输入层的计算核生成的输出脉冲数据包作为输入脉冲数据包后,也获取输入层的计算核生成的输出激励数据包作为输入激励数据包。同理,中间层的计算核生成输出脉冲数据包并发送给输出层之后,也生成输出激励数据包发送给输出层。输出层获取中间层的计算核生成的输出脉冲数据包作为输入脉冲数据包后,也获取中间层的计算核生成的输出激励数据包作为输入激励数据包。

s703:存储输入激励数据包。

由于存在一个计算核连接有两个以上前级的计算核的情况,为了方便判断是否满足更新条件,对获取到的每个输入激励数据包均进行存储。具体的,可以存储在计算核中具有存储功能的单元中,也可以存储在神经网络加速器的内部或外部的存储设备中。

s704:获取所述当前计算核的更新条件。

当前计算核的更新条件可以存储在神经网络加速器的内部或外部的存储设备中,因此,可以从神经网络加速器的内部或外部的存储设备中获取当前计算核的更新条件。示例性的,可以根据当前计算核的计算核地址,从神经网络加速器的内部或外部的存储设备中,获取当前计算核的更新条件。

s705:根据存储的所述输入激励数据包和获取的所述更新条件,判断所述当前计算核是否满足所述更新条件。

具体的,当存储的输入激励数据包表明,已经接收到所有的输入脉冲数据包时,判定满足当前计算核的更新条件。因此,优选的,当前计算核的更新条件为接收到预设数量个激励数据包。这里,预设数量根据当前计算核连接的前级的计算核的数量确定。

此时,根据存储的所述输入激励数据包,判断是否满足当前计算核的更新条件的步骤,具体为,根据存储的每个输入激励数据包的总数量,判断是否接收到预设数量个激励数据包。

示例性的,假设当前计算核连接的前级的计算核的数量为3个,则将预设数量确定为3,当根据存储的每个输入激励数据包的总数量,判断接收到3个激励数据包,由于前级的计算核在发送脉冲数据包后发送激励数据包,则接收到3个激励数据包时,证明计算核接收到3个前级的计算核发来的输入脉冲数据包和输入激励数据包,此时可以判定计算核接收到所有的输入脉冲数据包,满足当前计算核的更新条件。

当满足当前计算核的更新条件时,执行步骤s705;当不满足当前计算核的更新条件时,返回s701,等待获取输入脉冲数据包。

s706:当满足当前计算核的更新条件时,执行更新运算并发送输出脉冲数据包。

具体的,输入脉冲数据包携带有计算核地址,根据计算核地址将输入脉冲数据包发送给当前计算核;输入脉冲数据包还携带有至少一个输入脉冲电位和每个所述输入脉冲电位对应的神经元地址。输入脉冲数据包携带的每个输入脉冲电位均发送给当前计算核中的神经元。

具体的,可以根据下述步骤1至步骤3执行更新运算:

步骤1、针对每个所述输入脉冲电位,根据该输入脉冲电位对应的神经元地址,将该输入脉冲电位发送给目标神经元。

如图3所示,计算核中包括控制设备301和至少一个神经元302,具体的,针对每个所述输入脉冲电位,计算核中的控制设备301根据该输入脉冲电位对应的神经元地址,将该输入脉冲电位发送给目标神经元。目标神经元为该输入脉冲电位对应的神经元。如图8所示,控制设备301根据神经元地址,将输入脉冲电位发送给目标神经元801。

步骤2、接收所述目标神经元发出的输出脉冲电位;所述输出脉冲电位为所述目标神经元根据所述目标神经元的膜电位、所述目标神经元接收的输入脉冲电位、预设的泄露电位和预设电位阈值生成的。

当满足更新条件,执行更新运算时,目标神经元801根据所述目标神经元的膜电位、所述目标神经元接收的输入脉冲电位、预设的泄露电位和预设电位阈值生成输出脉冲电位。

具体的,目标神经元801根据自身的膜电位、目标神经元801接收到的输入脉冲电位和预设的泄露电位,更新自身的膜电位。一般而言,更新的膜电位为目标神经元801自身的膜电位加上接收到的输入脉冲电位,减去预设的泄露电位。这里,在具体使用神经网络加速器实现神经网络时,接收到的输入脉冲电位通常要乘以目标神经元801的权重,也就是说,更新的膜电位为目标神经元801自身的膜电位,加上乘以权重后的输入脉冲电位,减去预设的泄露电位。具体的,目标神经元801的权重可以为正数,也可以为负数。当目标神经元801没有接收到输入脉冲电位,或者接收到的输入脉冲电位为0时,目标神经元801的膜电位同样需要减去预设的泄露电位。目标神经元801更新自身的膜电位后,判断更新的膜电位是否大于预设电位阈值。当更新的膜电位大于预设电位阈值时,目标神经元801生成并发出输出脉冲电位,在发出输出脉冲电位后,目标神经元801的膜电位归零。

控制设备301接收目标神经元801发出的输出脉冲电位。

步骤3、根据每个所述输出脉冲电位,生成所述输出脉冲数据包。

计算核中的每个神经元均有可能发出输出脉冲电位,当该神经元的膜电位大于预设电位阈值时,就发出输出脉冲电位;当该神经元的膜电位不大于预设电位阈值时,不发出输出脉冲电位。计算核的控制设备301根据接收到的每个输出脉冲电位,生成所述输出脉冲数据包。根据神经网络结构,也就是神经网络加速器中每个计算核及每个计算核中的神经元的连接关系,确定输出脉冲数据包中的目标计算核的计算核地址和输出脉冲电位对应的神经元地址,生成输出脉冲数据包。这里,由于神经网络结构存储在存储设备中,因此计算核可以从存储设备中获取神经网络结构。

在完成更新运算后,存储的输入激励数据包已经没有作用,为了避免影响下一次更新条件的判断和更新运算的执行,在本次执行更新运算完成后,清空存储的输入激励数据包。清空存储的输入激励数据包的步骤可以与发送输出脉冲数据包的步骤或生成并发送输出激励数据包的步骤并行执行。无需限定清空存储的输入激励数据包的步骤与发送输出脉冲数据包的步骤或生成并发送输出激励数据包的步骤的执行顺序。

s707:发送输出脉冲数据包。

计算核的控制设备将输出脉冲数据包发送给路由设备,由路由设备将输出脉冲数据包发送给中间层的计算核或输出层的计算核,当然,也可以发送给输入层的计算核。

s708:生成并发送输出激励数据包。

在一种可能的实施方式中,为了使后级的目标计算核继续根据输出激励数据包判断是否满足更新条件,并在满足更新条件时进行更新运算,计算核的控制设备根据神经网络的连接关系生成激励数据包,并将输出激励数据包发送给后级的目标计算核。这里,为了保证后级的目标计算核正确的进行更新运算,输出激励数据包对应的目标计算核,与输出脉冲数据包对应的目标计算核为同一个计算核,目标计算核的计算核地址相同。目标计算核的更新条件,也用于确保目标计算核在进行更新运算之前,接收到所有的以目标计算核为当前计算核的输入脉冲数据包。

为了让接收输出脉冲数据包的后级的计算核可以确定是否满足更新条件,在发送输出脉冲数据包必须生成并发送输出激励数据包。具体的,从存储设备中获取目标计算核的计算核地址和目标计算核的更新条件;根据所述目标计算核的计算核地址和所述目标计算核的更新条件,生成所述输出激励数据包;之后,发送所述输出激励数据包给路由设备,由路由设备将激励数据包发送给目标计算核。这里,输出激励数据包的目标计算核与输出脉冲数据包的目标计算核为同一个目标计算核。并且,目标计算核的更新条件也可以由配置设备输入并存储在存储设备中。

需要了解的是,输出激励数据包与输入激励数据包在组成和作用上是完全相同的,同一个由前级计算核发送至当前计算核的激励数据包,对前级计算核来说是输出激励数据包,而对当前计算核来说是输入激励数据包。对于输入脉冲数据包和输出脉冲数据包也是相同的情况,同一个由前级计算核发送至当前计算核的脉冲数据包,对前级计算核来说是输出脉冲数据包,而对当前计算核来说是输入脉冲数据包。

对于输出层的计算核来说,在神经网络执行计算时,输出层通常无需发送输出脉冲数据包至下一层计算核,而是将运算结果发送给外部电子设备。此时,输出层完成更新运算意味着整个神经网络已完成更新运算,此时需要将输出脉冲数据包作为运算结果发送给外部电子设备。进一步的,视外部电子设备为何,可以生成并向外部电子设备发送输出激励数据包,也可以无需生成并发送输出激励数据包。

在实际实施时,常存在如图9a所示的连接情况,计算核a、计算核b、计算核c和计算核d均连接至计算核e。此时,由于输入到计算核a、计算核b、计算核c和计算核d的输入脉冲数据包的数目不定,计算核a、计算核b、计算核c和计算核d的更新运算的时间长短也不定,可能会出现计算核b接收到较少输入脉冲数据包,而计算核c接收到较多输入脉冲数据包的情况,这就会导致计算核b根据输入脉冲数据包进行更新运算的一个时间步长比计算核c根据输入脉冲数据包进行更新运算的一个时间步长少很多。

此种情况下,在采用本申请实施例提供的神经网络加速器的控制方法进行神经网络加速器的更新运算的控制时,计算核b会在完成上一次更新运算后满足下一次更新条件时立即进行更新。若下一个更新运算的时间步长中,计算核b输入的输入脉冲数据包的数目数仍较少,就会出现计算核b完成了两次更新运算而计算核c一次更新运算也未完成的情况,如图9b所示。从而使得第二层计算核e接收到来自计算核b的两个时间步长的输入脉冲数据包和输入激励数据包,进而导致运算出现错误。

为了进一步克服此情况下的缺陷,本申请实施例还可以在执行更新运算并发送输出脉冲数据包的步骤之后,生成并发送输出激励数据包的步骤之前,发送输出反馈信号;所述输出反馈信号用于表征接收到所述输入激励数据包。并在接收到输入反馈信号时,执行所述生成并发送输出激励数据包的步骤。

此种情况下,优选的神经网络加速器的控制方法的执行步骤包括:获取到输入脉冲数据包;获取输入激励数据包;存储输入激励数据包;获取所述当前计算核的更新条件;根据存储的所述输入激励数据包和获取的所述更新条件,判断所述当前计算核是否满足所述更新条件;当所述当前计算核满足更新条件时,执行更新运算并发送输出脉冲数据包;发送输出反馈信号;判断是否接收到输入反馈信号;在接收到输入反馈信号时,执行所述生成并发送输出激励数据包的步骤。

此时,如图9c所示,计算核b发出第二个时间步长内的输出脉冲数据包和输出激励数据包的时间会被推迟到计算核c发出第一个时间步长内的输出脉冲数据包和输出激励数据包之后,从而避免上述错误情况的出现。

基于相同的设计构思,本申请实施例还提供一种神经网络加速器的控制装置及神经网络加速器。

如图10所示,本申请实施例提供的一种神经网络加速器的控制装置1000,应用于计算核的控制设备,包括:

激励获取模块1001,用于在获取到输入脉冲数据包后,获取输入激励数据包;

存储模块1002,用于存储所述输入激励数据包;所述输入激励数据包用于判断当前计算核是否满足更新条件;

条件获取模块1003,用于获取所述当前计算核的更新条件;

激励判断模块1004,用于根据存储的所述输入激励数据包和获取的所述更新条件,判断所述当前计算核是否满足所述更新条件;

更新模块1005,用于当所述当前计算核满足更新条件时,执行更新运算并发送输出脉冲数据包。

激励获取模块1001连接存储模块1002,激励获取模块1001在获取到输入脉冲数据包后,获取输入激励数据包,并将输入激励数据包存储到存储模块1002中。激励判断模块1004分别连接存储模块1002和条件获取模块1003,根据存储模块1002中存储的所述输入激励数据包、以及条件获取模块1003获取的更新条件,判断是否满足当前计算核的更新条件。当满足更新条件时,激励判断模块1004驱动更新模块1005开始更新运算。

一种可能的实施方式中,所述当前计算核的更新条件为接收到预设数量个激励数据包;

所述激励判断模块1004,具体用于:

判断是否接收到预设数量个激励数据包。

一种可能的实施方式中,所述输入脉冲数据包携带有至少一个输入脉冲电位和每个所述输入脉冲电位对应的神经元地址;

如图11所示,所述更新模块1005,具体包括:

神经元发送单元1101,用于针对每个所述输入脉冲电位,根据该输入脉冲电位对应的神经元地址,将该输入脉冲电位发送给目标神经元;

神经元接收单元1102,用于接收所述目标神经元发出的输出脉冲电位;所述输出脉冲电位为所述目标神经元根据所述目标神经元的膜电位、所述目标神经元接收的输入脉冲电位、预设的泄露电位和预设电位阈值生成的;

脉冲生成单元1103,用于根据每个所述输出脉冲电位,生成所述输出脉冲数据包。

神经元发送单元1101连接目标神经元1104,将输入脉冲电位发送给目标神经元1104,神经元接收单元1102同样连接目标神经元1104,接收目标神经元1104发出的输出脉冲电位。神经元接收单元1102还连接脉冲生成单元1103,将输出脉冲电位发送给脉冲生成单元1103,脉冲生成单元1103根据每个所述输出脉冲电位,生成所述输出脉冲数据包。

一种可能的实施方式中,所述装置1000还包括:

清空模块1006,用于清空存储的所述输入激励数据包。

清空模块1006与更新模块1005和激励存储模块1002连接,当更新模块1005执行更新运算之后,清空激励存储模块1002中存储的输入激励数据包。

一种可能的实施方式中,所述装置1000还包括:

激励发送模块1007,用于生成并发送输出激励数据包;所述输出激励数据包包括目标计算核的计算核地址;所述输出激励数据包用于判断所述目标计算核是否满足更新条件。

一种可能的实施方式中,如图12所示,所述激励发送模块1007,包括:

获取单元1201,用于获取所述目标计算核的计算核地址和所述目标计算核的更新条件;

生成单元1202,用于根据所述目标计算核的计算核地址和所述目标计算核的更新条件,生成所述输出激励数据包;

发送单元1203,用于发送所述输出激励数据包。

获取单元1201连接存储设备和生成单元1202,获取单元1201获取目标计算核的计算核地址和目标计算核的更新条件,并发送给生成单元1202。生成单元1202根据所述目标计算核的计算核地址和所述目标计算核的更新条件,生成输出激励数据包。生成单元1202连接发送单元1203,生成单元1202将输出激励数据包发送给发送单元1203。发送单元1203连接路由设备,发送单元1203将输出激励数据包发送给路由设备,并通过路由设备发送给目标计算核。

一种可能的实施方式中,所述装置1000还包括:

反馈发送模块1008,用于发送输出反馈信号;所述输出反馈信号用于表征接收到所述输入激励数据包。

反馈发送模块1008与更新模块1005连接,在更新模块1005完成更新运算后,发送输出反馈信号。

一种可能的实施方式中,所述装置1000还包括:

反馈判断模块1009,用于判断是否接收到输入反馈信号。反馈判断模块1009与激励发送模块1007连接,在接收到输入反馈信号时,驱动激励发送模块1007执行所述生成并发送输出激励数据包的步骤

本申请实施例提供的神经网络加速器的控制装置,可以使得神经网络加速器中的每个计算核根据接收脉冲的实际延迟时间进行更新运算,显著提高了神经网络加速器的整体运算性能。

本申请实施例还提供神经网络加速器,包括:配置设备、存储设备、路由设备和计算核;

所述计算核,包括:神经元和控制设备;

所述控制设备,用于实现本申请实施例提供的任一种方法或实现本申请实施例提供的任一种装置。

一种可能的实施方式中,本申请实施例提供的神经网络加速器,通过路由设备进行输入激励数据包和/或输出激励数据包的传输。

一种可能的实施方式中,本申请实施例提供的神经网络加速器,通过专用信号线进行输入反馈信号和/或输出反馈信号的传输。

这里,输入反馈信号和/或输出反馈信号的构成和作用也是相同的,对于后级计算核向当前计算核传输的同一反馈信号,对后级计算核来说是输出反馈信号,对当前计算核来说是输入反馈信号。

包括输入反馈信号和输出反馈信号在内的反馈信号可以使用路由设备进行传输。但是,由于输入反馈信号和/或输出反馈信号可以仅采用1bit的信号实现,因此,为了进一步提高神经网络加速器的晕眩效率和整体运算性能,无需通过片上网络(也就是神经网络加速器的路由设备)进行输入反馈信号和/或输出反馈信号的传输。优选的,可直接在计算核与计算核之间增加专用信号线,直接在计算核与计算核之间进行连接。如图13所示,计算核e分别与它的前级计算核(也即是计算核a、计算核b、计算核c和计算核d)之间增加专用信号先,用于包括输入反馈信号和输出反馈信号在内的反馈信号的传输。由于反馈信号的bit数仅1bit,一个计算核所发出的反馈信号最多也不会超过网络中的计算核的数目(例如,在一个计算核阵列为4x4的神经网络加速器中,反馈信号的数目最多为16个),即便增加专用信号线,也不会带来过大的设计和实现成本。并且,使用专用信号线计算核与计算核之间直接传输反馈信号,可以降低反馈信号,提高更新运算的速度。因此,优选采用独立于路由设备的上述专用信号线进行输入反馈信号和/或输出反馈信号的传输。

本申请实施例提供的任一种神经网络加速器的控制方法、装置及神经网络加速器均基于相同的设计构思,并且本申请任一个实施例中的技术手段可以进行自由组合,组合得到的技术手段仍在本申请的保护范围之内。

本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。

本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思路,并不用于限制本申请。对于本领域的技术人员来说,可以依据本申请的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1