用于机器学习应用的迭代归一化的制作方法

文档序号:20048837发布日期:2020-03-03 04:17阅读:180来源:国知局
用于机器学习应用的迭代归一化的制作方法

实施例总体地涉及机器学习系统。更具体地,实施例涉及用于机器学习应用的迭代归一化。

背景

多层神经网络技术具有许多应用,包括机器学习应用。机器学习应用的示例包括caffe、theano、apachespark和微软azure,所有这些都可以利用多层神经网络技术。一些多层神经网络可以包括批量归一化技术。

附图说明

通过阅读以下的说明和所附权利要求并通过参考附图,实施例的各种优点对于本领域技术人员就将变得显而易见,在附图中:

图1是根据实施例的电子处理系统的示例的框图;

图2是根据实施例的半导体封装设备的示例的框图;

图3是根据实施例的机器学习的方法的示例的流程图;

图4是根据实施例的多层神经网络设备的示例的框图;

图5是根据实施例的一种确定向量范数的方法的示例的流程图;

图6a和图6b是根据实施例的机器学习设备的示例的框图;

图7是根据实施例的处理器的示例的框图;以及

图8是根据实施例的系统的示例的框图。

具体实施方式

现转向图1,多层神经网络设备10的实施例可包括第一计算层11和通信地耦合到第一计算层11的第二计算层12。第一计算层11和第二计算层12中的一个或多个可以包括逻辑13,用于利用平方和运算处理一个或多个向量,并确定平方和运算的固定点近似。例如,逻辑13可以进一步被配置成用于为平方和运算提供溢出保护。在一些实施例中,逻辑13可以进一步被配置成用于为一个或多个向量提供批量归一化。例如,逻辑13可以被配置成用于累计与平方和运算的平方根相对应的运行值。逻辑13的一些实施例可以进一步被配置成用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。在一些实施例中,逻辑13可以进一步包括用于向语音处理应用、图像处理、模式处理应用、机器学习应用等中的一个或多个提供监督学习和非监督学习中的一种或多种的技术。在一些实施例中,计算层11、计算层12和/或逻辑13可以位于各种组件中或与其共同定位,包括处理器、存储器、推理引擎等(例如,在同一管芯上)。

上述计算层11、计算层12、逻辑13和设备10的其他组件中的每一个的实施例可以以硬件、软件或其任何合适的组合来实现。例如,硬件实现可以包括可配置逻辑(诸如例如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)),或使用电路技术(诸如例如专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术、或其任何组合)的固定功能逻辑硬件。

替代地,或另外,这些组件的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、固件、闪存等)中的由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种操作系统(os)适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)以及常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。例如,持久存储媒体或其他存储器可以存储一组指令,当处理器执行该组指令时,使得设备10实现设备10的一个或多个组件、特征或方面(例如,计算层11、计算层12、逻辑13利用平方和运算处理向量,确定平方和运算的固定点近似值等)。合适的处理器的实施例可以包括通用处理器、专用处理器、中央处理器单元(cpu)、控制器、微控制器、内核、执行单元等。

现在转到图2,半导体封装设备20的实施例可以包括一个或多个衬底21和耦合到一个或多个衬底21的逻辑22,其中逻辑22至少部分地在一个或多个可配置逻辑和固定功能硬件逻辑中实现。耦合到一个或多个衬底21的逻辑22可被配置成用于通过多层神经网络的层利用平方和运算来处理一个或多个向量,并确定平方和运算的固定点近似。例如,逻辑22可以进一步被配置成用于为平方和运算提供溢出保护。在一些实施例中,逻辑22可以进一步被配置成用于为一个或多个向量提供批量归一化。例如,逻辑22可以被配置成用于累计与平方和运算的平方根相对应的运行值。逻辑22的一些实施例可以进一步被配置成用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。在一些实施例中,逻辑22可以进一步包括:用于向语音处理应用、图像处理、模式处理应用、机器学习应用等中的一个或多个提供监督学习和非监督学习中的一种或多种的技术。在一些实施例中,耦合到一个或多个衬底21的逻辑22可以包括位于一个或多个衬底21内的晶体管沟道区。

逻辑22的实施例和装置20的其他组件可以硬件、软件或其任何组合来实现,包括至少部分以硬件来实现。例如,硬件实现可以包括可配置逻辑(诸如例如,pla、fpga、cpld)或使用电路技术(诸如例如,asic、cmos或ttl技术)的固定功能逻辑硬件,或它们的任何组合。替代地,这些组件的部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如ram、rom、prom、固件、闪存等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)和常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。

设备20可实现方法30(图3)的一个或多个方面,或本文讨论的任何实施例。在一些实施例中,所示装置20可包括一个或多个衬底21(例如,硅、蓝宝石、砷化镓)以及耦合到衬底21的逻辑22(例如,晶体管阵列和其他集成电路/ic组件)。逻辑22可以至少部分地以可配置逻辑或固定功能逻辑硬件来实现。在一个实例中,逻辑22可包括位于(例如,嵌入)(多个)衬底21内的晶体管沟道区。因此,逻辑22和(多个)衬底21之间的接口可以不是突变结。逻辑22还可被认为包括在(多个)衬底21的初始晶片上生长的外延层。

先转向图3,机器学习的方法30的实施例可以包括在框31处通过多层神经网络的层利用平方和运算来处理一个或多个向量,并在框32处确定平方和运算的固定点近似。例如,方法30可以进一步包括在方框33处为平方和运算提供溢出保护。方法30的一些实施例可以进一步包括在方框34处为一个或多个向量提供批量归一化。方法30还可以包括在框35处累计与平方和运算的平方根相对应的运行值。例如,方法30可以包括:在框36处,基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且在框37处,基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。在方法30的一些实施例中,多层神经网络可以进一步包括:在框38处,用于向语音处理应用、图像处理、模式处理应用、以及机器学习应用中的一个或多个提供监督学习和非监督学习中的一种或多种的技术。

方法30的实施例可以在系统、装置、计算机、设备等中实现,例如诸如本文所描述的那些。更具体地,方法30的硬件实现可以包括可配置逻辑(诸如例如,pla、fpga、cpld)或使用电路技术(诸如例如,asic、cmos或ttl技术)的固定功能逻辑硬件,或它们的任何组合。替代地或另外地,方法30可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如ram、rom、prom、固件、闪存等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)和常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。

例如,方法30可在如结合以下示例20至25所描述的计算机可读介质上实现。方法30的实施例或部分可以在固件、应用程序(例如,通过应用程序编程接口(api))或在操作系统(os)上运行的驱动程序软件中实现。另外,逻辑指令可以包括汇编指令、指令集架构(isa)、机器指令、机器相关指令、微代码、状态设置数据、集成电路的配置数据、状态信息,使电子电路和/或硬件本机的其他结构组件(例如,主机处理器、中央处理单元/cpu、微控制器等)个性化。

现在转到图4,多层神经网络40的实施例可包括两个或更多个层41,其中所述层中的至少一个层包括利用复杂计算的固定点近似实现的复杂计算。在传统的神经网络中,此类复杂的计算可以用精密电路(例如,浮点算术逻辑单元、更高精度的整数数学/逻辑)来执行,或者可以使固定点逻辑电路溢出。精确电路可能涉及大量附加电路和/或执行时间(例如,附加电源和/或计算资源)。使固定点逻辑溢出可能导致运算中的错误。有利地,一些实施例可以用适当的近似替换复杂的计算,该近似可以在固定点(例如,整数)算术逻辑或低精度逻辑上成功执行而不会溢出。与更高精度的单元相比,利用较低精度的定点算术可以利用较少的计算资源(例如,功率、硅面积等),并且可以允许在更小的强度计算机系统(例如,诸如边缘设备、平板设备、智能手机等之类的移动设备)中部署神经网络。

例如,多层神经网络40可以包括一个或多个批量归一化层42。批量归一化可以涉及平方和运算。一些实施例可以有利地提供用于批量归一化的迭代过程,以抑制或防止有限精度系统中的溢出。例如,一些实施例可以利用近似来防止有限精度系统中的批量归一化操作期间的平方和的溢出。神经网络中的批量归一化可以涉及向量的幅度的计算(例如,向量的向量范数或“l2范数”)。在有限精度算术中,此类平方和运算可能溢出超出系统中可表示的数字。一些实施例可以替代地利用迭代过程来计算平方和运算的平方根的运行值(例如,在批量归一化中使用的l2范数计算)。有利地,一些实施例可以避免计算可能导致溢出的较大值(例如,平方和)。在一些实施例中,近似可以限制最大平方和值,这可以有利地帮助防止有限精度算术的批量归一化计算中的溢出。一些实施例可以有利地利用定点算或弯曲点算法以用于批量归一化(例如,代替浮点),这可以提供功率和/或性能优势。

(多个)层41、(多个)批量归一化层42和多层神经网络40的其他组件的实施例可以以硬件、软件或其任何组合来实现,包括至少部分以硬件来实现。例如,硬件实现可以包括可配置逻辑(诸如例如,pla、fpga、cpld)或使用电路技术(诸如例如,asic、cmos或ttl技术)的固定功能逻辑硬件,或它们的任何组合。替代地,这些组件的部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如ram、rom、prom、固件、闪存等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)和常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。

神经网络中的批量归一化可以涉及向量的l2范数的计算。在有限精度算术中,平方和运算可能溢出超出系统中可表示的数字。如果向量x表示为:

x=[x1,x2,...,xn]公式1

计算此向量的l2范数的直接方法可表示为:

其中y(1,n)表示元素1到n的平方和的平方根。对于较大的n值,添加n个被平方的xi元素可能导致溢出。对于某些应用,最终可能需要该总和的平方根,这比总和小得多。一些实施例可以有利地确定小数(例如,平方根)而不必计算更大的平方和。

例如,一些实施例可以确定较小数字的近似值而不执行较大数字的中间计算。基于特定应用,可以使用任何合适的近似。例如,一些实施例可以使用以下近似来计算两个数的平方和的平方根:

其中条件为0<b<0.5a。在这种情况下,近似误差最多为0.64%。当b/a=0.2时,该误差降至约0.02%。

现在转向图5,确定具有n个元素的向量x的l2范数的方法50的实施例可以包括在框51处确定向量x的前k个样本的平方和的平方根。例如,一些实施例可以取向量x的前k个样本,并利用定点处理计算元素1到k的和平方的平方根,如下所示:

一些实施例可以选择远小于n的k(k<<n)的值,使得定点操作不可能溢出。或者,一些实施例可迭代地对平方求和,直到当前元素的平方超过阈值。例如,如果可以在系统中表示的最大正值是amax,则一些实施例可以继续对xi2元素进行求和,直到达到最大正值的一半(例如,阈值=amax/2)。然后可以将k的值设置为成功求和的最后一个元素的位置。

然后,方法50可以包括在框52处确定向量x的下一m个样本的平方和的平方根。例如,一些实施例可以取向量x的从k+1至k+m个元素,并利用定点处理计算这些元素的和平方的平方根,如下所示:

其中m的值被选择为足够小,使得y(k+1,k+m)不可能溢出,并且y(k+1,k+m)<0.5y(1,k)。或者,一些实施例可迭代地对平方进行求和,直到满足条件。例如,一些实施例可以继续对m值进行求和,直到达到条件y(k+1,k+m)≈0.2y(1,k)。

然后,方法50可以包括在框53处基于在框51和在框52处所确定的值来近似元素1到k+m的平方和的平方根的值。例如,不是计算值y(1,k+m)如下(例如,可能涉及将两个较大数相加):

一些实施例可近似值如下:

有利地,一些实施例可以确定y(1,k+m)的精确近似,同时避免在一次运算中将从1到k+m的所有数字的平方进行相加,这有助于避免溢出。此外,在计算了两个较小的平方和(y2(1,k))和y2(k+1,k+m)之后,这两个平方和也不是直接相加的(例如,它们在公式6中))。相反,使用适当的近似值(见公式7)来帮助避免溢出。

然后,方法50可以在框54处确定是否已经消耗了所有元素。如果是,则方法50可以在框55处完成。否则,在框56处,方法50可以将k的值设置为等于k+m(例如,k=k+m),并且方法50可以返回到框52以消耗向量x的下一m个元素。例如,可以迭代地利用y(1,k+m)的先前值来确定y(1,k+2m)的下一个值的近似值,直到消耗了所有n个元素。

一些其他系统可以通过以本机更高精度模式(例如,48位相对于16位)执行这些计算来避免神经网络中的复杂计算(例如,平方和运算)的溢出问题。对于矩阵乘法,较高精度模式可能导致显著较高的功耗。在一些架构中,使用较高精度模式可以导致较低的性能和/或较高的功耗。一些实施例可以有利地利用复杂计算的近似,该近似可以以更低的精度执行,具有更高的性能和/或更低的功耗。另外,一些实施例可以改善或优化存储器流量以检索要批量归一化的向量的元素。例如,一些架构可以利用专用内核进行复杂计算(例如,批量归一化(batchnorm)内核),其涉及存储器密集型操作。一些实施例可以有利地减少完成批量归一化操作所需的存储器读取的数量。

例如,批量归一化内核的一些实现可能需要计算n个样本x=(x1,…,xn)的小批量的均值(μ)和标准差(σ),其中σ由下式给出:

均值和方差计算可以导致三(3)个存储器操作,包括(1)读取所有当前的小批量数据(x1,…,xn)以计算平均值μ;(2)再次读取每个值以从这些值(xi-μ)中的每一个值中减去均值,并将计算结果写回;以及(3)读取这些值(xi-μ),使用高精度计算(48位值)来计算和平方,并且然后计算方差σ。一些实施例可以在批量样本到达时计算求和平方的平方根,即y(1,n)。例如,可以利用3步操作,因为使用传统方法计算y(1,n)时存在溢出风险。因为一些实施例可以在批量样本到达时计算y(1,n),所以仅需要第一存储器操作。方差则可以被计算为:

例如,因为当批量样本到达时,可以以无溢出的方式计算y(1,n),所以可以在第一存储器读取操作结束时计算σ2,从而实现显著的性能改善。

图6a示出了机器学习设备132(132a-132b),该设备可以实现方法30(图3)和/或方法50(图5)的一个或多个方面。机器学习设备132可以包括逻辑指令、可配置逻辑、固定功能硬件逻辑,该设备132可以容易地替换已经讨论过的设备10(图1)和/或设备40(图4)。向量处理器132a可以包括用于处理一个或多个向量的技术,并且固定点近似器132b可以包括用于确定对一个或多个向量(例如,多层神经网络的层)进行平方和运算的固定点近似的技术。例如,固定点近似器132b可以进一步被配置成用于为平方和运算提供溢出保护。在一些实施例中,固定点近似器13可以进一步被配置成用于为一个或多个向量提供批量归一化。例如,固定点近似器13可以被配置成用于累计与平方和运算的平方根相对应的运行值。固定点近似器132b的一些实施例可以进一步被配置成用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素数量来累计与平方和运算的平方根相对应的运行值。在一些实施例中,固定点近似器132可以进一步包括以为语音处理应用、图像处理、模式处理应用、机器学习应用等中的一个或多个提供监督学习和非监督学习中的一种或多种的技术。

现在转到图6b,示出了机器学习设备134(134a、134b),其中逻辑134b(例如,晶体管阵列和其他集成电路/ic组件)被耦合到衬底134a(例如硅、蓝宝石、砷化镓)。逻辑134b通常可以实现方法30(图3)和/或方法50(图5)的一个或多个方面。因此,逻辑134b可以通过多层神经网络的层利用平方和运算来处理一个或多个向量,并确定平方和运算的固定点近似。例如,逻辑134b可以进一步被配置成用于对平方和运算提供溢出保护。在一些实施例中,逻辑134b可以进一步被配置成用于为一个或多个向量提供批量归一化。例如,逻辑134b可以被配置成用于累计对应于平方和运算的平方根的运行值。逻辑134b的一些实施例可以进一步被配置成用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。在一些实施例中,逻辑134b可以进一步包括以为语音处理应用、图像处理、模式处理应用、机器学习应用等中的一个或多个提供监督学习和非监督学习中的一个或多个的技术。在一个示例中,设备134是半导体管芯、芯片和/或封装。

图7示出了根据一个实施例的处理器核200。处理器核200可以是用于任何类型的处理器的核,处理器诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器或用于执行代码的其他设备。尽管图7中示出了仅一个处理器核200,但是处理元件可以替代地包括多于一个图7所示出的处理器核200。处理器核200可以是单线程核,或者,对于至少一个实施例,处理器核200可以是多线程的,因为它可以包括每个核多于一个硬件线程上下文(或“逻辑处理器”)。

图7还示出了耦合至处理器核200的存储器270。存储器270可以是如本领域的技术人员已知的或以其他方式可获得的各种各样的存储器(包括存储器层级的各个层)中的任何存储器。存储器270可以包括由处理器核200执行的一个或多个代码213(多个)指令,其中,代码213可以实现已经讨论的方法30(图3)和/或方法50(图5)的一个或多个方面。处理器核200遵循由代码213指示的指令的程序序列。每个指令可以进入前端部分210并且由一个或多个解码器220处理。解码器220可以生成呈预定义格式的微操作(如固定宽度微操作)作为其输出,或者可以生成反映出原始码指令的其他指令、微指令、或控制信号。所展示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们总体上分配资源并且对与用于执行的转换指令相对应的操作进行排队。

处理器核200被示出为包括具有一组执行单元255-1至255-n的执行逻辑250。一些实施例可以包括专用于指定功能或功能集合的大量执行单元。其他实施例可以仅包括一个执行单元或一个可执行特定功能的执行单元。所示出的执行逻辑250执行由码指令指定的操作。

在完成由码指令指定的操作的执行之后,后端逻辑260使代码213的指令引退。在一个实施例中,处理器核200允许指令的乱序执行但要求指令的有序引退。引退逻辑265可以采取本领域的技术人员已知的各种形式(例如,重排序缓冲器等)。以此方式,在代码213的执行期间中,至少就由解码器、寄存器重命名逻辑225所利用的硬件寄存器和表、以及由执行逻辑250修改的任何寄存器(未示出)生成的输出而言,处理器核200被变换。

尽管图7未展示,但处理元件可以包括其他与处理器核200同在芯片上的元件。例如,处理元件可以包括存储器控制逻辑连同处理器核200。处理元件可以包括i/o控制逻辑、和/或可以包括与存储器控制逻辑集成的i/o控制逻辑。处理元件还可以包括一个或多个高速缓存。

现在参照图8,所示出的是根据实施例的系统1000实施例的框图。图8示出了多处理器系统1000,所述多处理器系统1000包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,但应当理解的是,系统1000的实施例还可以包括仅一个此类的处理元件。

系统1000被示出为点对点互连系统,其中,第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应当理解的是,图8所示出的任何或所有互连可以被实现为多站式总线而非点对点互连。

如图8所示,处理元件1070和1080中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核1074a与1074b以及处理器核1084a与1084b)。此类核1074a、1074b、1084a、1084b可以被配置成用于以与以上关于图7讨论的方式类似的方式执行指令代码。

每个处理元件1070、1080可以包括至少一个共享高速缓存1896a、1896b(例如,静态随机存取存储器/sram)。共享高速缓存1896a、1896b可以存储分别由处理元件的一个或多个组件(诸如核1074a、1074b和1084a、1084b)使用的数据(例如,对象、指令)。例如,共享高速缓存1896a、1896b可以对存储在存储器1032、1034中的数据进行本地高速缓存,以便由处理器的组件更快地访问。在一个或多个实施例中,共享高速缓存1896a、1896b可以包括一个或多个中级高速缓存,如二级(l2)、三级(l3)、四级(l4)、或其他级别的高速缓存、终极高速缓存(llc)、和/或其组合。

虽然仅以两个处理元件1070、1080来示出,但应理解实施例的范围不限于此。在其他实施例中,给定处理器中可以存在一个或多个附加处理元件。可替代地,处理元件1070、1080中的一个或多个可以是处理器之外的元件(诸如加速器或现场可编程门阵列)。例如,(多个)附加的处理元件可以包括与第一处理器1070相同的(多个)附加的处理器、与第一处理器1070异构或非对称的(多个)附加的处理器、加速器(诸如,例如图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或任何其他处理元件。就一系列品质量度(包括体系结构、微体系结构、热、功耗特性等)而言,处理元件1070、1080之间存在多种差异。这些差异可以有效地将其本身表现为处理元件1070、1080之间的不对称性和异构性。对于至少一个实施例,各种处理元件1070、1080可以驻留在同一管芯封装中。

第一处理元件1070可以进一步包括存储器控制器逻辑(mc)1072以及点对点(p-p)接口1076和1078。类似地,第二处理元件1080可以包括mc1082以及p-p接口1086和1088。如图8所示,mc的1072和1082将处理器耦合至相应的存储器(即存储器1032和存储器1034)上,所述存储器可以是本地附连到相应的处理器的主存储器的部分。虽然mc1072和1082被展示为集成到处理元件1070、1080中,但对于替代性实施例,mc逻辑可以是位于处理元件1070、1080外部而不是集成在其中的离散逻辑。

第一处理元件1070和第二处理元件1080可以分别地经由p-p互连件1076、1086耦合至i/o子系统1090。如图8所示,i/o子系统1090包括tee1097(例如,安全控制器)以及p-p接口1094和1098。此外,i/o子系统1090包括用于将i/o子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,总线1049可以用于将图形引擎1038耦合至i/o子系统1090。可替代地,点对点互连可以耦合这些组件。

进而,i/o子系统1090可以经由接口1096耦合至第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(pci)总线,或如快速pci总线或另一种第三代i/o互连总线的总线,尽管实施例的范围不限于此。

如图8所示,各种i/o设备1014(例如,相机、传感器)可连同总线桥接器1018一起耦合至第一总线1016,该总线桥接器1018可以将第一总线1016耦合至第二总线1020。在一个实施例中,第二总线1020可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以耦合到第二总线1020,所述设备包括例如键盘/鼠标1012、(多个)网络控制器/通信设备1026(其进而可以与计算机网络通信)、以及数据存储单元1019(诸如磁盘驱动器或其他可包括代码1030的大容量存储设备)。代码1030可以包括用于执行以上所描述方法中的一种或多种的实施例的指令。因此,所示出的代码1030可以实现已经讨论过的方法30(图3)和/或方法50(图5),并且可以类似于已经讨论的代码213(图7)。进一步地,音频i/o1024可以耦合到第二总线1020。

注意的是,设想了其他实施例。例如,系统可以实现多站式总线或另一个此类通信拓扑,而不是图8的点对点体系结构。

附加说明和示例:

示例1可以包括多层神经网络设备,包括第一计算层和通信地耦合到第一计算层的第二计算层,其中第一计算层和第二计算层中的一个或多个包括逻辑,该逻辑用于利用平方和运算来处理一个或多个向量,并确定平方和运算的固定点近似。

示例2可以包括示例1的设备,其中逻辑进一步用于对平方和运算提供溢出保护。

示例3可以包括示例1至示例2中任一项的设备,其中,该逻辑进一步用于向一个或多个向量提供批量归一化。

示例4可以包括示例1至示例3中任一项的设备,其中,该逻辑进一步用于累计与平方和运算的平方根相对应的运行值。

示例5可以包括示例4的设备,其中,逻辑进一步用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。

示例6可以包括示例1至示例5中任一项的设备,其中该逻辑进一步用于向语音处理应用、图像处理、模式处理应用、以及机器学习应用中的一个或多个提供监督学习和非监督学习中的一种或多种。

示例7可以包括半导体封装设备,包括一个或多个衬底,以及逻辑,该逻辑耦合到一个或多个衬底,其中,逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,逻辑耦合到一个或多个衬底以通过多层神经网络层利用平方和运算处理一个或多个向量,并确定平方和运算的固定点近似。

示例8可以包括示例7的设备,其中逻辑进一步用于对平方和运算提供溢出保护。

示例9可以包括示例7至示例8中任一项的设备,其中,该逻辑进一步用于向一个或多个向量提供批量归一化。

示例10可以包括示例7至示例9中任一项的设备,其中,该逻辑进一步用于累积对应于平方和运算的平方根的运行值。

示例11可以包括示例10的设备,其中,逻辑进一步用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。

示例12可以包括示例7至示例11中任一项的设备,其中该多层神经网络进一步用于向语音处理应用、图像处理、模式处理应用、以及机器学习应用中的一个或多个提供监督学习和非监督学习中的一种或多种。

示例13可以包括示例7至12中任一个的设备,其中,耦合到一个或多个衬底的逻辑包括位于一个或多个衬底内的晶体管沟道区。

示例14可以包括机器学习的方法,包括通过多层神经网络的层利用平方和运算来处理一个或多个向量,以及确定平方和运算的固定点近似。

示例15可以包括示例14的方法,进一步包括为平方和运算提供溢出保护。

示例16可以包括示例14至示例15中任一项的方法,进一步包括向一个或多个向量提供批量归一化。

示例17可以包括示例14至示例16中任一项的方法,进一步包括累计与平方和运算的平方根相对应的运行值。

示例18可以包括示例17的方法,进一步包括基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素数量来累计与平方和运算的平方根相对应的运行值。

示例19可以包括示例14至示例18中任一项的方法,其中该多层神经网络进一步用于向语音处理应用、图像处理、模式处理应用、以及机器学习应用中的一个或多个提供监督学习和非监督学习中的一种或多种。

示例20可以包括至少一个计算机可读存储介质,包括一组指令,当由计算设备执行该组指令时,使得计算设备用于通过多层神经网络的层利用平方和运算来处理一个或多个向量,并确定平方和运算的固定点近似。

示例21可以包括示例20的至少一个计算机可读存储介质,包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备对平方和运算提供溢出保护。

示例22可以包括示例20至21中任一个的至少一个计算机可读存储介质,包括另一组指令,当由计算设备执行该组指令时,使得计算设备用于向一个或多个向量提供批量归一化。

示例23可以包括示例20至示例22中任一个的至少一个计算机可读存储介质,包括另一组指令,当由计算设备执行该组指令时,使得计算设备用于累计与平方和运算的平方根相对应的运行值。

示例24可以包括示例23的至少一个计算机可读存储介质,包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量,并且基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值。

示例25可以包括示例20至示例24中任一项的至少一个计算机可读介质存储介质,其中该多层神经网络进一步用于向语音处理应用、图像处理、模式处理应用、以及机器学习应用中的一个或多个提供监督学习和非监督学习中的一种或多种。

示例26可以包括机器学习的设备,包括用于通过多层神经网络的层利用平方和运算来处理一个或多个向量的装置,以及用于确定平方和运算的固定点近似的装置。

示例27可以包括示例26的设备,进一步包括用于为平方和运算提供溢出保护的装置。

示例28可以包括示例26至示例27中任一项的设备,进一步包括用于向一个或多个向量提供批量归一化的装置。

示例29可以包括示例26至示例28中任一项的方法,进一步包括用于累计与平方和运算的平方根相对应的运行值的装置。

示例30可以包括示例29的设备,进一步包括用于基于相对于最大定点值的阈值来确定平方和运算的元素的数量的装置,以及用于基于所确定的元素的数量来累计与平方和运算的平方根相对应的运行值的装置。

示例31可以包括示例26至示例30中任一项的设备,其中该多层神经网络进一步用于向语音处理应用、图像处理、模式处理应用、以及机器学习应用中的一个或多个提供监督学习和非监督学习中的一种或多种。

实施例适用于供所有类型的半导体集成电路(“ic”)芯片使用。这些ic芯片的示例包括但不限于:处理器、控制器、芯片集组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。另外,在一些附图中,利用线条表示信号导体线。一些线条可以是不同的以指示更多组成的信号通路,具有数字标记以指示多个组成的信号通路和/或在一端或多端具有箭头以指示主要信息流方向。然而,这不应当被解释为限制性方式。相反,此类附加的细节可以与一个或多个示例性实施例结合使用以帮助更容易地理解电路。任何所表示的信号线,无论是否有附加信息,都实际可以包括可以在多个方向行进的一个或多个信号,并且可以利用任何适当类型的信号方案实现,例如利用差分对、光纤线路和/或单端线路实现的数字或模拟线路。

可能已经给出了示例大小/模型/值/范围,尽管实施例不限于此。随着制造技术(例如,光刻技术)随时间推移而成熟,预期可以制造出更小尺寸的器件。另外,为了简化图示和讨论以及为了不使实施例的一些方面不清晰,可以在图内示出或不示出到ic芯片和其他组件的公知的电力/接地连接。此外,布置可以以框图的形式示出,以避免模糊实施例,并且还鉴于以下事实:关于完成这样的框图布置的实现方式的细节高度依赖于在其中实现本实施例的平台(即,这样的细节应当完全处在本领域技术人员的视界中)。在阐述具体细节(例如电路)以描述本发明的示例实施例的情况下,对本领域普通技术人员应显而易见的是,本实施例能在没有这些具体细节或在这些具体细节的变型的情况下实施。因此,描述被认为是说明性的,而非限制性的。

术语“耦合”在本文中可以用于指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电学、机械、流体、光学、电磁、机电或其他连接。另外,此处使用的术语“第一”、“第二”等只帮助讨论,除非另外指明,其不带有特殊的时间或时间顺序意义。

如在本申请和权利要求书中所使用的,由术语“…中的一项或多项”联接的一系列项目可意指所列术语的任何组合。例如,短语“a、b和c中的一个或多个”和短语“a、b或c中的一个或多个”两者都可能意味着a、b、c、a和b、a和c、b和c、或者a、b和c。

本领域技术人员将从前面的描述中认识到,可以用各种形式来实现实施例的广泛技术。因此,尽管已经结合其特定示例描述了实施例,但是实施例的实际范围不应由此受限,因为其他的修改在本领域技术人员研习了附图、说明书和所附权利要求之后就将变得显而易见。

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