一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经处理单元(NPU)与使用该神经处理单元的计算系统的制作方法

2023-09-25 05:49:58 来源:中国专利 TAG:

神经处理单元(npu)与使用该神经处理单元的计算系统
1.相关申请交叉引用
2.本技术要求标题为“神经处理单元(npu)与使用该神经处理单元的人工智能(ai)和/或机器学习(ml)系统”的美国临时申请号63/116,608(申请日:2020年11月20日),标题为“使用编码器,神经处理单元(npu),和分类器的可解释机器学习(ml)和人工智能(ai)方法与系统”的美国临时申请号63/227,590(申请日:2021年7月30日)的优先权,其通过引用整体并入本文。
技术领域
3.本技术的多种实施例涉及具有适用于人工智能和机器学习过程的硬件架构的处理单元,以及能够采用相同硬件架构的计算系统。


背景技术:

4.有史以来,由使用传统的处理单元(例如中央处理单元(cpu)和图形处理单元(gpu))执行复杂软件的计算系统(或简称“系统”)来实施人工智能(ai)和机器学习(ml)过程。虽然这些传统处理单元的硬件架构能够执行需要的计算,但其实际性能相对于想要的性能而言仍为缓慢。简单地来说,性能受到影响是因为需要太多的数据和太多的计算。
5.这种对性能的影响可以具有严重的后果。例如,如果性能受到由于出现延迟所造成的一定程度影响,那么人工智能和机器学习过程在某些情况下可能无法实施。例如,不到一秒的延迟可妨碍在需要及时性的地方实施人工智能和机器学习过程,例如对于实时人工智能和机器学习过程对乘客安全造成影响的自动驾驶系统。另一个实时系统的示例是军事瞄准系统,其必须在出现生命损失之前做出敌友判定并采取行动。实时决策可影响生命,安全,或资本资产的任何情境都需要应用更快的人工智能和机器学习过程。
6.研究机构曾经试图通过增加系统可用的计算资源来解决这种对性能的影响。然而,这种方法有几个缺点。首先,增加计算资源是不切实际的或不可能的。如果人工智能和机器学习过程由包含在计算设备(例如移动电话,平板电脑等)中的系统实施,则尤其如此。其次,增加计算资源会导致功率消耗的增加。系统可用的功率可受到限制(例如,由于电池限制),因此限制功率消耗是开发新技术的一个重要方面。
附图说明
7.图1包括可在神经处理单元(npu)中实施的数字神经元的基于硬件的架构的图解说明;
8.图2包括能够实施基本学习机制的数字200的基于硬件的架构的图解说明;
9.图3包括能够实施增强学习机制的数字神经元的基于硬件的架构的图解说明;
10.图4包括数字神经元的基于硬件的架构的图解说明,该架构能够在本地执行学习过程以确定并随后根据需要来对储存在存储器中的突触强度值(ssv)进行调整;
11.图5包括图4中的更新数学单元的一种可能的实施方式的简化框图;
12.图6包括数字神经元的基于硬件的架构的图解说明,该架构可以加速的方式在本地更新提升因子(boost factor);及
13.图7包括图6的活动监测器电路的图解说明。
14.通过结合附图对详细描述进行研读,本领域技术人员将更加清楚本文所述的技术的特征。出于说明的目的,附图中描绘了多种实施例。然而,本领域技术人员将了解在不脱离本公开原理的情况下可采用替代的实施例。因此,尽管在附图中示出了特定实施例,但本技术仍可进行多种修改。
具体实施方式
15.本文说明的是可在神经处理单元中实施的集成电路设备(也被称为“芯片(chips)”)。可以使用术语“神经处理单元”,“神经处理器”,和“npu”来指电子电路,该电子电路旨在实施执行机器学习算法所需的部分或全部控制和算术逻辑,其通常具有分别的数据存储器(或简称“存储器”)和专用的指令集架构。在高层级上,npu的目标是为这些机器学习算法提供比传统处理单元(例如cpu和gpu)更高的性能。为了实现这一点,npu可使用大量计算组件来利用高数据层级的并行性,如下文进一步讨论的。由于npu旨在模仿人脑的工作方式,因此这些计算组件可被称为“数字神经元”。
16.npu可以利用多种技术以改进的方式执行人工智能和机器学习过程。然而,本文说明的芯片可在允许以有效的方式在本地(即芯片上)执行需要的计算方面发挥关键作用。这些芯片可具有硬件架构,从而将人工智能和机器学习过程的性能提高几个数量级,同时还可将执行这些人工智能和机器学习过程所需的功率降低几个数量级。例如,这些芯片的硬件架构能够在模型训练期间以比人工神经网络(ann)快大约1,200倍的速度处理数字图像帧,以及能够在推理期间以比人工神经网络快10.3倍的速度处理数字图像帧。与传统的处理单元相比,npu可以通过使用本文所描述的硬件架构来实现更佳的性能。
17.虽然底层硬件架构会有很大一部分维持不变,但可以考量到不同的应用来设计,构造,和/或训练芯片。因此,本文说明的芯片可被设计为或被实施在为特定应用设计的专用集成电路(asic)中,或者这些芯片可被设计为或被实施在可为多种应用重新编程的现场可编程门阵列(fpga)中。本公开描述了几种不同的硬件架构,并且无论底层电路是可重新配置的或是永久性的,这些硬件架构都是可实施的。
18.具有数字神经元的npu的概述
19.图1包括可在npu中实施的数字神经元100的基于硬件的架构的图解说明。数字神经元100可将任何感知输入视为不同信息比特(bits)的阵列数据结构(或简称为“阵列”)。感知输入(或简称为“输入”)的示例包括数字图像的像素,由感测器生成的值等。该输入的性质可根据数字神经元100的预期应用而改变。出于说明的目的,该阵列可被称为“输入帧”,其由数字神经元获得来作为输入。在高层级上,输入帧代表包含一组元素的数据结构,每个元素都可通过至少一个阵列索引或键来标识。
20.数字神经元100可被设计,构造,和/或训练以允许npu以类似于人脑的方式处理输入帧。对于输入帧,数字神经元100可被编程为检测某些信息比特而忽略其他信息比特。换句话说,数字神经元100可以检测储存在阵列的一些元素中的信息并且忽略储存在阵列的其他元素中的信息。这种关系——也就是哪些元素被检测与忽略——被称为数字神经元
100与输入帧的“重叠(overlap)”。管控重叠的比特掩码(bitmask)(也称为“掩码”)可被编程到重叠存储器102中。掩码可为包括零值和非零值的二进制图像,其维度可以与输入帧相同。因此,掩码可包括一系列值,并且每个值可对应于输入帧中的相应元素。
21.一般地,重叠存储器102是数字神经元100的一部分,因此专用于储存与数字神经元100相关的信息。如果包含在输入帧中的信息将用作存储器或数据结构的地址,则数字神经元100可以执行如下逻辑and函数:
22.[(input frame address)and(overlap enabled)]
ꢀꢀ
方程式1
[0023]
为了实现这一点,重叠存储器102可为输入帧中的每个元素包含一个值。请注意,因为数字神经元100旨在模仿生物神经元,所以这些值以及它们与输入帧中每个元素的对应偏移地址可以被称为“突触”。因此,“突触”可以由它的值以及它在输入帧中的偏移地址来代表。因此,数字神经元100的重叠存储器102可包括每个突触的分别的值。在npu包含多个数字神经元的实施例中,npu所包含的突触总数将是数字神经元的数量乘以输入帧所包含的元素数量。
[0024]
输入帧的地址可通过多种方式获得。在一些实施例中,这些地址是通过将输入帧中的信息——被呈现为一系列的n比特地址——简单映射到重叠存储器102来获得。或者,可通过编码方案来获得地址,该编码方案可产生一系列n比特地址以作为输出。例如,如图1所示,数字神经元100可将输入帧编码为稀疏分布表示(sdr),使得被编码的数据仅包括阵列中某些元素的地址。不论采用何种方法,获得输入帧的地址使数字神经元100能够执行方程式的逻辑与功能。在方程式1中,(input frame address)代表输入帧的地址,而(overlap enabled)代表一个值,该值决定突触是否被连接到输入帧在该地址处的数据空间。
[0025]
图1中所示的示例说明,对于可能的64,000比特sdr数据空间和1比特重叠值,数字神经元100具有64,000x 1的存储器。在本示例中,突触要么是连接的(即,重叠值等于1),要么是不连接的(即,重叠值等于0)。同时,用于对输入帧进行编码的sdr可以16比特来代表64,000比特sdr数据空间的所有可能的位置。
[0026]
给定npu所需的数字神经元数量将决定图1中所示的硬件架构被复制的次数。当包含在npu中的每个数字神经元常规地具有其自己的专用重叠存储器102和重叠计数电路104(也被称为“重叠计数器”)时,重叠评分排序模块106(也被称为“评分模块”)可以是数字神经元之间的公用电路,其将每个重叠计数器产生的计数作为输入并比较这些计数以输出具有至少一个“胜出的”数字神经元的列表。例如,如果需要1,000个数字神经元,则可以将图1中所示硬件架构的1,000个副本互连以创建npu。因此,一个npu可以包括n个数字神经元。虽然n可以是任何整数值,但n通常会在数百至数千的范围内,以实现高数据层级的并行性。数字神经元的数量n也会改变以适应问题的复杂性。许多人工智能和机器学习的应用只需要不超过1,000个数字神经元,而更复杂的图像处理应用可需要20,000个或更多个数字神经元。请注意,npu中包含的所有数字神经元都可单独而并行地处理相同的输入帧。
[0027]
可以通过在重叠存储器102中设置适合的比特的值,对包含在npu中的每个数字神经元进行编程,以响应于最大可能的输入帧元素(例如,整个sdr的数据空间)的子集或与之“重叠”。如此,多个数字神经元可以共同覆盖整个最大可能的数据空间。当每次到数字神经元100的地址引用(references)这些设置值的其中之一时,重叠计数器104可递增它的重叠计数。当已处理整个输入帧时,重叠计数可被提供给重叠评分排序模块106。重叠评分排序
模块106可基于重叠计数来产生重叠评分,以量化输入帧与重叠存储器102中的掩码重叠的程度。如下文进一步讨论的,在一些实施例中,重叠评分可简单地是重叠计数,而在其他实施例中,可以修改重叠计数(例如,使用提升因子)以产生重叠评分。在一些实施例中,重叠评分排序模块106可通过作为数字神经元100的一部分的软件,固件,和/或硬件来实施。在其他实施例中,重叠评分排序模块106可通过可访问数字神经元100的软件,固件,和/或硬件来实现。例如,重叠评分排序模块106可在npu的板上实施,使得重叠评分排序模块106可以通信地连接到npu的所有数字神经元。
[0028]
重叠评分排序模块106可从包含在npu中的所有数字神经元获得重叠评分以用于比较。具有最高重叠评分的那些数字神经元可被重叠评分排序模块106标识为“胜出”的数字神经元。例如,重叠评分排序模块106可以通过统计学上的显著性差异(statistically significant margin)来执行聚类操作以标识重叠评分最大的一个或多个数字神经元。作为另一示例,重叠评分排序模块106可被设计为使得可编程数量的最高重叠评分成为“胜出”的数字神经元。胜出的神经元的数量典型地被选择为稀疏结果(从系统中总数量的数字神经元中选出少数胜出者),这样的稀疏结果提供了在系统中具有抗噪性和高学习能力的数学优势。“胜出”的数字神经元的标识或地址可由重叠评分排序模块106产生以作为输出。该输出使npu能够从每个数字神经元处理的输入帧中得出有意义的结论。
[0029]
为人工智能和机器学习过程设计的系统可包括一个以上的npu。例如,可将两个或更多的npu设计到系统中(例如,在单板或多板上),以进一步改进人工智能和机器学习过程的性能。在这样的实施例中,由每个npu产生的列表可代表潜在的“胜出”的数字神经元。为了标识实际的“胜出”的数字神经元,在多个npu的重叠计数器上产生的计数可由重叠评分排序模块106进行比较。例如,假设系统包括两个npu。在这样的情况下,重叠评分排序模块106或另一计算组件(例如,通信地耦接到多个npu的控制器)不仅可以将一个npu(也被称为“第一npu”)中包含的给定重叠计数器输出的计数与第一npu上的其他重叠计数器输出的计数进行比较,也可与另一npu(也被称为“第二npu”)上的重叠计数器输出的计数进行比较。为了实现这一点,重叠评分排序模块106可将为第一npu产生的“胜出”的数字神经元列表与为第二npu产生的“胜出”的数字神经元列表进行比较,以确定实际的“胜出”的数字神经元。
[0030]
该过程的输出可以是从最高重叠计数值向最低重叠计数值的有序列表。可以以可预测的(例如,预定的)方式处理平局,例如,基于分配给npu,数字神经元等的优先级。包含在有序列表中的实际的“胜出”的数字神经元的数量可以由系统中的配置设置来规定。例如,可以在每个npu中定义配置设置,以管控每个npu所产生的潜在的“胜出”的数字神经元的有序列表的大小。实际的“胜出”的数字神经元的有序列表的大小可基于潜在的“胜出”的数字神经元的这些有序列表的大小。例如,这些有序列表可以大小相同,或者实际的“胜出”的数字神经元的有序列表可以代表这些潜在的“胜出”的数字神经元的有序列表的重新排列的串联物(concatenation)。
[0031]
在生成实际的“胜出”的数字神经元的有序列表之后,可将被确定为实际“胜出者”的数字神经元通知给每个npu。作为示例,重叠评分排序模块106或另一计算组件(例如,通信地耦接到多个npu的控制器)可向多个npu中的每一个传输标识实际的“胜出”的数字神经元的信号。然后,每个npu可根据需要来实施学习周期(例如,对于ssv或提升因子)。因为每个npu需要收到有关“胜出”的数字神经元的通知,所以每个npu所产生的输出不仅可包括其
重叠计数器产生的计数,该输出还可包括能够标识其数字神经元的信息(例如,地址)。
[0032]
重叠存储器102可以以多种方式进行构造和/或组织。构造和/或组织的不同方法可考虑到不同大小的数字神经元。例如,重叠存储器102可代表动态随机存取存储器(dram),静态随机存取存储器(sram),查找表(lut),寄存器文件,或任何其他存储器元件,单元,或可写入数据的模块。
[0033]
如图1所示,重叠评分排序模块106还可采用排序比特掩码(也被称为“排序掩码”),其通过按照在区块内最高到最低重叠的顺序对每个数字神经元进行掩盖来帮助胜出者排序操作。一旦标识出一个数字神经元在区块内具有最高的重叠,就可在下一轮排序中对该数字神经元进行掩盖,直到区块内的所有数字神经元都已被掩盖(并因此被排序到有序列表中)。因此,重叠评分排序模块106可使用排序掩码从最高到最低重叠迭代地对区块内的数字神经元进行掩盖,从而生成数字神经元的有序列表。
[0034]
总而言之,存在几个核心概念,其使可以以高效方式执行复杂计算的npu能够实施。首先,每个数字神经元可以使用被编码的输入帧(例如,作为sdr)作为对应重叠存储器的地址。其次,每个数字神经元中的重叠存储器可实施可编程重叠映射能力,其中所储存的值表示是否与相应地址处的输入帧的数据空间有连接。例如,数值1可表示与输入帧的数据空间有连接,而数值0可表示与输入帧的数据空间没有连接。第三,每个数字神经元中的重叠计数器能够算出重叠评分,该重叠评分表示地址引用重叠存储器中设置值为1的比特的次数。第四,npu可以实施对数字神经元的重叠评分进行排序并随后输出“胜出”的数字神经元的有序列表的逻辑。作为示例,重叠评分排序模块可负责输出具有最高重叠评分的被编程的数量的数字神经元的有序列表。
[0035]
具有基本学习能力的npu的概述
[0036]
涉及人工智能和机器学习过程的系统会需要比上述参考图1所讨论的基本功能更多的功能。例如,一个数字神经元可以与一个或多个其他数字神经元具有“重叠连接”,其类似于人类脑部的生物突触。随着npu随着时间的推移而学习,这些在被编码的输入帧的宽度上的“重叠连接”可以被连接和/或断开。术语“被编码的输入帧的宽度”是指在被编码的输入帧中可能出现的地址的总范围。例如,术语“sdr宽度”可指sdr上可能的值的总范围(例如,sdr[15∶0])。
[0037]
这种连接/断开功能可用于表示给定的突触是连接还是断开以外的更多信息。其还可表示给定的突触与连接/断开临界值有

多远

,类似于模拟组件。因此,其可表示任何给定突触与连接或断开的距离,从而表示突触连接的“强度”。
[0038]
图2包括能够实现基本学习机制的数字神经元200的基于硬件的架构的图解说明。图2的数字神经元200通常与图1的数字神经元100类似,并且使用虚线以显示增加处。如图2所示,图1的重叠存储器102被突触强度值存储器(ssvm)202替代。在高层级上,ssvm 202是一种存储器,其允许每个突触为多比特值而非单一比特值。例如,在图2中,每个突触都是8比特值,而非只是1或0。
[0039]
基于给定突触的强度,当与突触强度临界值(也被称为“ssv临界值”或简称为“临界值”)204相比时,可以将该给定突触标识为与输入帧的数据空间连接或断开。在一些实施例中,ssv临界值204在npu的所有数字神经元上是全局的。在其他实施例中,ssv临界值204在npu的一个或多个数字神经元上是本地的。例如,ssv临界值204可应用于代表npu的所有
数字神经元的子集的一组数字神经元。作为另一示例,每个数字神经元可具有其自己的ssv临界值204。
[0040]
如果给定突触包含在ssvm 202中的突触强度值(ssv)大于或等于ssv临界值204,那么可将给定的突触标识为已连接。相对地,如果给定突触包含在ssvm 202中的ssv小于ssv临界值204,那么可将给定的突触标识为未连接。一般地,该比较由比较器电路210(或简称为“比较器”)执行,该比较器电路210被设计为表示输入(例如,ssv)是否已达到预定值(例如,ssv临界值204)。如果突触被标识为已连接,则重叠计数器206可以被递增。如果突触被标识为未连接,那么重叠计数器206可以不被递增,或者甚至可以被减少或被“惩罚”以考虑断开的突触所造成的影响。当整个输入帧(例如,整个sdr)被处理后,npu中所包括的所有数字神经元的重叠评分可由如上所讨论的重叠评分排序模块208进行审查。
[0041]
特定的ssv(例如,ssv=00h或ssv=ffh)可被保留以表示给定数字神经元中的相应突触是否真的存在。例如,ssv为“00h”可以表示相应的突触永远不会“触发(fire)”,永远不会与输入帧“重叠”,因此在学习周期中永远不会被更新。换句话说,ssv为“00h”可以表示对于所有意图与目的,相应的突触不存在。
[0042]
与图1中的数字神经元100相比,图2中的数字神经元200允许npu执行基本学习。该学习可通过在每个数字神经元中实施能够储存多比特值的存储器(例如,ssvm 202)来实现,以允许可编程值映射能力。此外,每个数字神经元可包括比较器210,其负责将从存储器输出的值与临界值(例如,ssv临界值204)进行比较,从而产生可由重叠计数器206用以计算,推断,或确定重叠计数的信号。如上所述,比较器210可比较(例如,代表ssv和ssv临界值204的)两个信号,然后输出1或0以表示两个信号中哪一个较大。
[0043]
在图2中,ssv临界值204被显示为沿着一个通道被提供给比较器210的单个的输入。类似地,从存储器输出的ssv被显示为单个的输入,该输入通过另一个通道被提供给比较器。然而,情况并非一定如此。例如,这些通道中的每一个可包括在相应来源与比较器210之间互连的一系列连接(也称为“总线”)中。总线中包含的连接数可取决于每个突触中所包含的比特数。例如,如图2所示,如果每个突触为八比特值,那么在ssvm202和比较器210之间互连的总线可具有八个通道。类似地,总线可以具有八个通道,其中ssv临界值204沿着总线向比较器210提供临界值。
[0044]
具有增强学习能力的npu的概述
[0045]
虽然图2所示的npu 200具有基本的学习能力,但在一些情况下可能无法提供最佳的学习结果。提升法(boosting)可被认为是一种避免在至少一个学习周期后产生次优的一组“胜出”的数字神经元的方法。例如,假设npu包括一组以列的方式布置的数字神经元,其中每列包括至少一个数字神经元并彼此间互连。如果某一列“失败”,则学习将不会发生——即使该列比其他经常“胜出”的列有更佳的连接(例如,潜在的突触连接)。提升法为连接突触较少的数字神经元提供了“胜出”的机会,从而使学习能够发生并强化其突触。如果数字神经元被确定为对于给定模式更佳(即更优),则将适合地训练该数字神经元。因此,提升法可调节数字神经元的学习,以使所有的列都有机会学习并变得更强。
[0046]
图3包括能够实现增强学习机制的数字神经元300的基于硬件架构的图解说明。图3的数字神经元300通常与图2的数字神经元200类似,并使用虚线显示增加处。如图3所示,图2的重叠计数器206被重叠运算器电路306(或简称为“重叠运算器”)替代。
[0047]
为了能够改进学习,当基于比较器310产生的输出确定包含在ssvm 302中的ssv大于或等于ssv临界值304时,重叠运算器306可被编程以增加不同的值——而非只是递增。换句话说,当数字神经元300与输入帧重叠时,重叠运算器306可增加不同的值。这可使得远离连接/断开临界值的突触能够在较少的学习周期内达到该临界值。
[0048]
图3还示出了将重叠提升操作数312增加到重叠运算器306。在高层级上,重叠提升操作数312可规定由重叠运算器306运算的数据,并同时代表该数据本身。一般地,重叠提升操作数312是可编程的多比特值,其被馈送到重叠运算器306中,然后通过增加与输入帧重叠的突触的影响来“提升”学习。因为重叠提升操作数312会影响数字神经元300的学习成效,所以在软件,固件,硬件,或其组合中实施的算法可负责调整重叠提升操作数312,以达到预期的学习成效目标。例如,重叠提升操作数312可以是非线性函数,其增加得越快,数字神经元越不会“胜出”,其降低得越快,数字神经元越会“胜出”。如此,重叠提升操作数312可以变得越来越强以将失败的数字神经元翻过“驼峰”,而给它们胜出,学习,和变得更强的机会。重叠提升操作数函数曲线的形状可以是不变化的,或者它可以被编程以随着系统学习而随着时间改变形状。
[0049]
图3所示的基于硬件的架构将使npu的数字神经元具有各自的而非全局的重叠提升操作数。这允许通过调整相应的重叠提升操作数来各自地操纵每个数字神经元的学习成效。其他的npu可被设计为具有全局重叠提升操作数(即,所有数字神经元都具有相同的重叠提升操作数)或半全局重叠提升操作数(即,数字神经元的不同子集具有不同的重叠提升操作数)。在全局或半全局重叠提升操作数的实施例中,重叠提升操作数可由npu的另一个计算组件而非数字神经元本身来管理,储存,或提供。
[0050]
当已处理整个输入帧(例如,整个sdr)时,npu中的所有数字神经元的溢出(overflow)评分可由上述的重叠评分排序模块308进行审查。
[0051]
ssv的本地更新
[0052]
根据定义,任何进行“学习”过程的npu将在整个学习过程中改变和调整其行为。然而,这可以缓慢的发生。例如,考虑能够处理64,000比特的输入帧并包括512个数字神经元的npu。该npu将包括总共32,768,000个突触(即64,000乘以512)。每个突触都可以基于以下进行调整:(i)被处理的输入帧(例如sdr),(ii)相应的数字神经元是否被视为“胜出”的数字神经元,和/或(iii)该突触的目前ssv。当由远程处理单元(也被称为“外部处理单元”或“芯片外部处理单元”)执行时,学习过程可以是极其缓慢的。
[0053]
通过在本地调整突触——即在npu上——可以显著地加快学习过程。它还能够由数字神经元并行地确定并实施该调整。图4显示了能够在本地执行学习过程的数字神经元400的基于硬件的架构的图解说明,以便根据需要来确定并实施对ssv的调整。图4的数字神经元400通常与图3的数字神经元300类似,并使用虚线来显示增加处。
[0054]
如图4所示,更新数学单元414可负责实施用于学习目的的算法。换言之,更新数学单元414可负责确定是否将给定突触的目前储存于ssvm 402中的ssv更新为新的ssv。在高层级上,更新数学单元414可代表算术逻辑单元,其使数字神经元400能够基于一个或多个输入来执行数学运算以确定是否需要更新ssv。如果更新数学单元414确定应该更新给定突触的ssv,则新的ssv可以是以下项的函数:(i)ssv,(ii)对应的数字神经元是否为处理中的输入帧的“胜出者”,(iii)给定突触的输入帧位置是否为“set=1”,和/或(iv)用于更新的
递增值和递减值。因此,如图4所示,除了递增值与递减值之外,更新数学单元414可以接收(i)来自第一寄存器(也被称为“输入帧获取寄存器”)的输入帧位置和(ii)来自第二寄存器(也被称为“胜出者获取寄存器”)的“胜出”数字神经元的id作为输入。作为输出,更新数学单元414可产生更新信号,其可表示是否应该更新ssvm 402中的ssv。
[0055]
如上所述,数字神经元400还可与图3中的数字神经元300进行类似的操作。因此,比较器410可以负责产生输出,该输出可表示包含在ssvm 402中的ssv是否大于或等于ssv临界值404,而重叠运算器406可负责基于该输出来算出数字神经元400的重叠出现次数。此外,重叠运算器406可产生基于重叠出现次数的重叠评分,并在一些实施例中,产生如上所述的重叠提升操作数412。当已处理整个输入帧(例如,整个sdr),npu中的所有数字神经元的重叠评分可由如上所述的重叠评分排序模块408进行审查。
[0056]
图5包括图4中的更新数学单元414的一种可能实施方式的简化框图。如图5所示,更新数学单元414可将以下项作为输入:(i)目前的ssv,(ii)输入帧位置,(iii)相应的数字神经元是否为“胜出者”的表示,(iv)递增值,和/或(v)递减值。这些输入可以被提供给加法器502,该加法器502可产生更新信号作为输出。加法器502可代表被设计为执行数字相加的数字电路,以便基于输入产生更新信号。虽然在包含加法器502的数学单元414的相关叙述中描述了图5所示的实施例,但本领域技术人员将了解数学单元414可包括或实施除了加法器502之外的功能来产生更新信号。例如,数学单元414可使用浮点单元(fpu)来执行浮点运算。在这种情况下,递增值与递减值可以不是整数,而是可由生成非线性值曲线的浮点函数所生成。
[0057]
关于可由更新数学单元414实现的算法的示例的附加细节将在表i中提供。请注意,该算法的一部分为仅对与已被标识为“胜出者”的数字神经元相对应的ssv进行更新。在一个实施例中,某个值(例如,ssv=0)为保留值,其用于表示相应的突触被完全地禁用,因此永远不会被更新。不同的ssv可被使用和/或保留以用于不同的目的。
[0058][0059]
表i:可由图4的更新数学单元414实施的示例性算法
[0060]
总结来说,几个核心概念允许通过数字神经元对ssvm进行局部更新。首先,可以在处理其内容时获取整个输入帧。这样,可以使用整个输入帧来更新ssvm。其次,可获取“胜出”的数字神经元,并且随后当ssvm更新时用于标识要被调整的那些数字神经元。第三,每个数字神经元可包括更新数学单元,该更新数学单元可负责确定是否应该更新ssv(如果是,则算出新的ssv)。第四,更新ssvm所需的控制和复用逻辑可以本地地在每个数字神经元上实施。例如,控制与复用逻辑可部分或全部地在每个数字神经元中包含的更新数学单元上实施。
[0061]
可根据上述过程对“胜出”的数字神经元中的每个突触的ssv进行更新,而不是仅对在输入帧中标识的这些突触进行更新。为了实现这一点,可使用逻辑来重构或获取整个输入帧的宽度。在一些实施例中,不包含在输入帧中的那些突触被假定为零。因此,如果输入帧获取寄存器在图像帧开始时被清理,则其可获取输入帧宽度的全部“0”比特。然后,对于输入帧中的每个突触,可将输入帧获取寄存器中的相应比特设置为“1”。
[0062]
当更新数学单元对ssvm进行更新时,还会希望知道作为“全局胜出者”的数字神经元。由于npu可以作为多芯片或多电路板系统的一部分来实施,还会希望知道来自要被收集并随后被分析的所有芯片或电路板的“潜在胜出者”或“本地胜出者”的数字神经元,以便确定“全局胜出者”的数字神经元。可以(例如,由重叠评分排序模块)通知包含“真实胜出者”的芯片或电路板,以及被确定为“真实胜出者”的一个或多个数字神经元的标识。然后,这些“真实胜出者”可处理由相应的更新数学单元计算的相应ssvm的更新。在一些实施例中,这些通知会导致在至少一个胜出者获取暂寄存器中将比特设置为给定值(例如,一)。在一些实施例中,npu维护一个胜出者获取寄存器,而在其他实施例中,每个数字神经元包括属于它自己的胜出者获取寄存器。胜出者获取寄存器中的这些设置比特可以在npu处理对相应ssvm的更新时为其提供协助。
[0063]
用于本地加速更新的提升因子
[0064]
如上所述,学习过程的其中一个方面是“提升”。其允许在某些情况下对学习进行增强与改进。“提升”假设了在操作过程中,每个数字神经元都应该至少以一定次数成为“胜出者”,以确保每个数字神经元都经过训练。为了实现这一点,“提升”需要以非线性方式修改,调整,或操纵重叠评分。例如,由重叠运算器确定的给定ssv的重叠评分(os)可乘以提升因子(bf)以产生提升的重叠评分(bos),如下所示:
[0065]
os x bf=bos
ꢀꢀꢀ
方程式2
[0066]
作为另一示例,由重叠运算器确定的给定ssv的重叠评分(os)可被加到提升因子(bf)以产生提升的重叠评分(bos),如下所示:
[0067]
os bf=bos
ꢀꢀꢀ
方程式3
[0068]
无论以何种方式计算,提升的重叠评分(bos)均可用来标识“胜出”的数字神经元。
[0069]
提升因子一般在它们可调整时最为有效,因为这允许对训练进行“调整(tuned)”。可周期性地调整提升因子以优化数字神经元(以及npu)的性能。然而请注意,当由npu外部的远程处理单元执行时,此过程会十分缓慢。通过在本地调整提升因子,就可以解决该性能瓶颈。换句话说,可通过在本地(即在npu上)执行更新提升因子的过程以对其进行加速。
[0070]
图6包括数字神经元600基于硬件的架构的图解说明,其可以通过加速方式在本地更新提升因子。如图6所示,可使用以下三个组件来加速提升因子的更新,即(i)每个数字神经元的活动监测器电路616,(ii)每个数字神经元的提升因子表618,以及(ii)每个数字神经元的提升因子更新控制电路620。一般地,提升因子表618被储存于npu的存储器中,尽管提升因子表618可替代地被储存在npu可访问的存储器中(例如,在另一芯片或电路板上)。
[0071]
数字神经元600可与图4中的数字神经元400以类似方式操作。因此,比较器610可负责产生输出,该输出可表示包含在ssvm 602中的ssv是否大于或等于ssv临界值604,并且重叠运算器606可基于该输出负责算出ssv的重叠评分。如上所述,由重叠运算器606算出的重叠评分可以基于重叠提升操作数612。然而,本文的提升因子表618提供了由重叠运算器
606使用的提升因子。每当“触发”数字神经元600的一个突触时,重叠运算器606可与提升因子结合,以产生提升的重叠评分,该提升的重叠评分等于重叠评分乘以提升因子或重叠评分加上提升因子。当已处理整个输入帧(例如,整个sdr)后,npu中的所有数字神经元的溢出评分可由如上所述的重叠评分排序模块608审查。
[0072]
在一些实施例中,活动监测器电路616可周期性地或连续地监测包括在npu中的每个数字神经元的活动。图7包括图6的活动监测器电路616的图解说明。可以根据数字神经元基于硬件的底层架构和npu的预期应用,通过多种方式定义“活动”。
[0073]
在一些实施例中,“活动”是指数字神经元是否被认为是“胜出者”。在“活动”是指数字神经元是否被认为是“胜出者”的实施例中,活动监测器电路616可以用作计数器(因此被称为“胜出计数器”)。因此,活动监测器电路616可以计算,算出,或产生系统中包含的每个数字神经元的相关活动计数。对于数字神经元“胜出”的每个输入帧,活动计数可以增加。对于数字神经元“失败”的每个输入帧,活动计数可以减少。当活动计数达到可编程的上限或下限时,可以对提升因子进行调整。例如,当活动计数达到上限(表示太多次“胜出”)时,提升因子可以被减少,而当活动计数达到下限(表示太多次“失败”)时,提升因子可以被增加。在达到上限或下限后,该数字神经元的活动计数可被重置为零。
[0074]
在其他实施例中,“活动”是指数字神经元是否不被认为是“胜出者”但在成为“胜出者”的临界距离内。在“活动”是指数字神经元是否被视为“接近胜出者”的实施例中,活动监测器电路616也可以用作计数器(因此被称为“接近胜出计数器”)。因此,除了数字神经元被认为是“胜出者”的次数之外或替代,活动监测器电路616可追踪数字神经元被认为是“接近胜出者”的次数。
[0075]
活动监测器电路616所监测的“活动”的时间间隔也可以以多种方式定义。例如,可以全局地定义这个“活动周期”,使得npu中所有数字神经元的时间间隔相同。作为另一示例,可以在代表不同组的数字神经元子集中定义“活动周期”。作为另一示例,对于npu中包含的每个数字神经元,“活动周期”可为各自的。在npu包含的所有数字神经元的活动周期都相同的实施例中,可以有一个全局计时器电路(或简称为“计时器”)来设置该时间间隔。同时,在npu包含的各数字神经元的活动周期不同的实施例中,每个数字神经元可以与设置相应时间间隔的相应本地计时器相关联。
[0076]
活动监测器电路616可以允许具有上限和下限的可编程窗口,其可控制数字神经元600的活动计数是否应该被递增或被递减。该窗口可代表其上边界和下边界可被编程的范围。一般地,在运行前对窗口的上限和下限进行编程。然而,窗口的上限和下限可在学习期间进行修改(例如,在部署之后)。只要数字神经元600的活动计数落在窗口内,就会无事发生。然而,如果数字神经元600的活动计数落在窗口之外,活动监测器电路616会产生增加或减少重叠提升操作数612的指令。例如,如果给定数字神经元的活动计数太低(即,低于窗口的下边界),活动监测器电路616可生成增加重叠提升操作数612的指令,而如果给定数字神经元的活动计数太高(即,高于窗口的上边界),则活动监测器电路616会生成减少重叠提升操作数612的指令。
[0077]
从计时器接收的周期信号可对活动监测器电路616进行递减。同时,通知数字神经元600它为“胜出者”的动作可对活动监测器电路616进行递增,以及设置胜出者获取寄存器中的相应比特。
[0078]
提升因子更新控制电路620可负责更新储存在提升因子表618中的提升因子,因此其可被数字神经元600使用。当接收到提升因子更新命令(也被称为“bfu命令”)时,提升因子更新控制电路620可评估由活动监测器电路616产生的输出以确定是否需要更新。如果确定需要进行更新,提升因子更新控制电路620可以生成提升因子加载命令(也被称为“bfl命令”)以提示加载新的提升因子作为重叠提升操作数612。接着,提升因子更新控制电路620可将活动监测器电路616重置到窗口的中间处。
[0079]
为了便于实现图6中基于硬件的架构,可采取额外的步骤。例如,假设被编码的输入帧代表具有64,000个元素的sdr。为了确保整个sdr的储存不会显著地影响ssvm 602的性能,可将元素“散布”在多个区块(也称为“核”)上。例如,构成sdr的最大尺寸(例如,64,000个元素)的8个双列(dual rows)可被散布在多个区块中。这将导致每个数字神经元的ssvm 602被散布在多个区块上,从而进一步加速本地更新。
[0080]
结语
[0081]
为了说明和描述的目的,本说明书提供了要求保护的主题的多种实施例的前述描述。其非旨在穷举或将要求保护的主题限制为所公开的精确形式。许多的修改与变化对于本领域技术人员来说是清楚的。对实施例加以选择与描述是为了最佳地描述本发明的原理及其实际应用,从而使相关领域的技术人员能够理解要求保护的主题,多种实施例,以及适合所构想的特定用途的多种修改。
[0082]
尽管该详细描述已描述了某些实施例和预期的最佳模式,无论该详细描述多么详细,本技术都可以通过多种方式加以实践。实施例在其实施细节上可以有很大不同,但仍被说明书所涵盖。在描述多种实施例的某些特征或方面时使用的特定术语不应被理解为暗示该术语在本文中被重新定义以被限定于与该术语相关联的技术的任何特定特性,特征,或方面。一般而言,除非这些术语在本文中有明确的定义,否则以下权利要求中使用的术语不应被解释为将本技术限制于说明书中所公开的特定实施例。因此,本技术的实际范围不仅包括所公开的实施例,还包括实践或实施实施例的所有等同方式。
[0083]
在说明书中使用的语言主要是为了可读性和指导目的而选择的。但可不被选择来解释或限制主题。因此,本技术的范围并不旨在由该详细描述来限制,而是由基于本发明的申请所公布的任何权利要求来限制。因此,多种实施例的公开旨在说明而非限制以下权利要求中所阐述的技术范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表