CN114662646A - 实现神经网络的方法和装置 - Google Patents
实现神经网络的方法和装置 Download PDFInfo
- Publication number
- CN114662646A CN114662646A CN202111396101.1A CN202111396101A CN114662646A CN 114662646 A CN114662646 A CN 114662646A CN 202111396101 A CN202111396101 A CN 202111396101A CN 114662646 A CN114662646 A CN 114662646A
- Authority
- CN
- China
- Prior art keywords
- neural network
- memory
- inference
- logic
- data
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 118
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000015654 memory Effects 0.000 claims abstract description 310
- 239000000758 substrate Substances 0.000 claims abstract description 97
- 239000004065 semiconductor Substances 0.000 claims description 66
- 230000006870 function Effects 0.000 claims description 57
- 239000011159 matrix material Substances 0.000 claims description 44
- 230000004913 activation Effects 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 22
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000000295 complement effect Effects 0.000 claims description 3
- 229910044991 metal oxide Inorganic materials 0.000 claims description 3
- 150000004706 metal oxides Chemical class 0.000 claims description 3
- 238000009825 accumulation Methods 0.000 abstract description 2
- 238000013531 bayesian neural network Methods 0.000 description 239
- 238000013500 data storage Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 37
- 238000005070 sampling Methods 0.000 description 32
- 238000009826 distribution Methods 0.000 description 29
- 210000002569 neuron Anatomy 0.000 description 28
- 238000012549 training Methods 0.000 description 23
- 210000004027 cell Anatomy 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 14
- 238000010801 machine learning Methods 0.000 description 14
- 238000005192 partition Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 9
- 238000012937 correction Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000010420 art technique Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 210000004205 output neuron Anatomy 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 2
- 241000283973 Oryctolagus cuniculus Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000009328 Perro Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000035508 accumulation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 210000001153 interneuron Anatomy 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
Abstract
公开了实现神经网络的方法和装置。一种用于实现神经网络的装置,该装置包括:存储器,形成在衬底上;神经网络推理逻辑,形成在与存储器相同的衬底上,神经网络推理逻辑用于在乘法累加寄存器中加载多个神经网络参数,并对神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和存储器控制器,用于将神经网络推理结果传送到衬底外部的主机存储器或衬底外部的主机处理器中的至少一者。
Description
技术领域
本公开总体上涉及人工智能计算系统,并且更具体地,涉及用于实现神经网络的方法和装置。
背景技术
近年来,计算机已在制定决策时实现了神经网络。通常,前馈神经网络通过网络向前移动信息。信息在输入层处开始,传播到任何隐藏层,然后到达输出层处。前馈神经网络通过将来自节点的输入数据与数据的重要性或权重相乘来执行前向信息流。神经网络使用各种方法将重要数据发送到下一个隐藏层。这些类型的前馈神经网络之一是贝叶斯神经网络。贝叶斯神经网络是一种通过概率分布确定权重的模型。贝叶斯神经网络使用概率分布来确定权重,因为用户(例如程序员、科学家、开发人员)在创建神经网络时不知道输入节点数据的内在重要性,因此在分配权重作为神经网络中的简单的固定标量时进行猜测。使用具有所有可能权重的概率分布并随机选择权重会在每次网络运行时创建不同的网络。多次运行网络并将输出与目标结果进行比较允许用户通过获得更准确的结果来降低输出的不确定性。
近年来,计算机通过使用处理器来执行机器可读指令。处理器通过从存储器中取得指令、使用算术逻辑单元执行操作、然后将结果传输回存储器来执行指令。
发明内容
根据本公开的实施例,提供了一种用于实现神经网络的装置,所述装置包括:存储器,形成在衬底上;神经网络推理逻辑,形成在与所述存储器相同的衬底上,所述神经网络推理逻辑用于:在寄存器中加载神经网络参数值;和对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和存储器控制器,用于将所述神经网络推理结果传送到所述衬底外部的主机存储器或所述衬底外部的主机处理器中的至少一者。
根据本公开的实施例,提供了一种用于实现神经网络的方法,所述方法包括:将神经网络参数值从形成在半导体衬底上的存储器加载到形成在相同半导体衬底上的寄存器中;对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者。
根据本公开的实施例,提供了一种机器可读存储介质,包括代码,所述代码在被执行时使得机器执行上述的方法。
根据本公开的实施例,提供了一种用于实现神经网络的装置,所述装置包括:用于将神经网络参数值加载到形成在半导体衬底上的寄存器中的装置,所述神经网络参数值存储在形成在相同半导体衬底上的存储器中;用于对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果的装置;和用于将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者的装置。
附图说明
图1A是示例贝叶斯神经网络。
图1B是由图1A的示例贝叶斯神经网络执行的示例随机采样过程的说明性表示。
图2是实现贝叶斯神经网络的现有技术的系统图和处理流程。
图3是根据本公开的教导的在存储器设备和/或数据存储设备中包括贝叶斯神经网络(BNN)推理逻辑的示例计算设备的框图。
图4是实现包括形成在相同半导体衬底上的图3的BNN推理逻辑的存储器和介质访问电路的示例装置。
图5是包括在图4的装置中的图3的存储器单元和介质访问电路的示例配置。
图6是使用3D交叉点存储器实现的图3和图5的存储器单元的示例配置。
图7是图3的BNN推理逻辑的示例实现。
图8-10是可用于实现与主机中央处理单元(CPU)分开的图3的介质访问电路、存储器和/或存储器控制器的示例子板的示意图。
图11是图3的示例装置的示例系统图和处理流程。
图12是表示根据本公开的教导的可以被执行以实现图3的装置以实现贝叶斯神经网络的示例机器可读指令的流程图。
图13是表示根据本公开的教导的可以被执行以也实现图3的装置以实现贝叶斯神经网络的示例机器可读指令的另一流程图。
图14是表示根据本公开的教导的可以被执行以实现图3的装置以实现贝叶斯神经网络的示例机器可读指令的又一流程图。
图15是被构造为执行图12、图13和/或图14的指令以实现图3的装置的示例处理平台的框图。
这些图不是按比例绘制的。相反,可以在附图中放大层或区域的厚度。尽管图中显示了具有清晰线条和边界的层和区域,但这些线条和/或边界中的一些或全部可能是理想化的。实际上,边界和/或线条可能是不可观察的、混合的和/或不规则的。通常,贯穿(一个或多个)附图和随附的书面描述将使用相同的附图标记来指代相同或相似的部分。如本文所使用的,除非另有说明,否则术语“之上”描述了两个部分相对于地的关系。如果第二部分具有在地和第一部分之间的至少一个部分,则第一部分在第二部分之上。同样,如本文所使用的,当第一部分比第二部分更靠近地时,第一部分在第二部分“之下”。如上所述,第一部分可以在第二部分之上或之下,并且具有以下一种或多种情况:其间有其他部分,其间没有其他部分,第一部分和第二部分接触,或第一部分和第二部分彼此不直接接触。尽管如此,但是在半导体器件的情况下,“之上”不是参考地,而是参考其上形成有集成电路的组件的基础半导体衬底(例如,半导体晶片)的体区域。具体地,如本文所使用的,当集成电路的第一组件比第二组件更远离半导体衬底的体区域时,第一组件在第二组件“之上”。如本专利中所使用的,声明任何部分(例如,层、膜、区、区域或板)以任何方式在另一部分上(例如,位于其上、定位在其上、布置在其上或形成在其上等)表示被提及的部分要么与另一部分接触,要么被提及的部分在另一部分之上并且一个或多个中间部分位于它们之间。如本文所使用的,除非另有说明,否则连接引用(例如,附接、耦合、连接和接合)可包括由连接引用所引用的元素之间的中间构件和/或这些元素之间的相对移动。因此,连接引用不一定暗示两个元素直接连接和/或彼此处于固定关系。如本文所使用的,声明任何部分与另一部分“接触”被定义为意指在两个部分之间没有中间部分。
除非另有特别说明,否则诸如“第一”、“第二”、“第三”等的描述词在本文中使用而不以任何方式强加或以其他方式指示优先级、物理顺序、列表中的排列和/或排序的任何含义,而是仅用作标签和/或任意名称来区分元素以便于理解所公开的示例。在一些示例中,描述词“第一”可用于指详细描述中的元素,而同一元素可在权利要求中用诸如“第二”或“第三”之类的不同描述词来指代。在这样的情况下,应当理解,这样的描述词仅用于清楚地识别那些可能例如以其他方式共享相同名称的元素。如本文所使用的,“大致”和“大约”是指由于制造公差和/或其他现实世界缺陷而可能不准确的尺寸。如本文所使用的,“基本上实时”是指以近乎瞬时的方式发生,应认识到可能存在计算时间、传输等的真实世界延迟。因此,除非另有说明,否则“基本上实时”是指实时+/-1秒。
具体实施方式
人工智能(AI)(包括机器学习(ML)、深度学习(DL)和/或其他人工机器驱动逻辑)使得机器(例如,计算机、逻辑电路等)能够使用模型来处理输入数据以基于模型先前通过训练过程学习的模式和/或关联生成输出。例如,可以用数据训练模型以识别模式和/或关联,并在处理输入数据时遵循这样的模式和/或关联,使得(一个或多个)其他输入产生与识别的模式和/或关联一致的(一个或多个)输出。
存在许多不同类型的机器学习模型和/或机器学习架构。在本文公开的示例中,使用贝叶斯神经网络模型。本文公开的示例可用于通过在推理阶段对权重参数进行随机采样来实现贝叶斯神经网络模型。
通常,实现ML/AI系统涉及两个阶段:学习/训练阶段和推理阶段。在学习/训练阶段,使用训练算法来训练模型以基于例如训练数据根据模式和/或关联进行操作。通常,模型包括指导如何将输入数据转换为输出数据(例如通过模型内的一系列节点和连接将输入数据转换为输出数据)的内部参数。附加地,超参数用作训练过程的一部分,以控制如何执行学习(例如,学习率、机器学习模型中使用的层数等)。超参数被定义为在启动训练过程之前确定的训练参数。
可以基于ML/AI模型的类型和/或预期输出来执行不同类型的训练。例如,监督训练使用输入和相应的预期(例如,标记)输出来为ML/AI模型选择减少模型误差的参数(例如,通过在选择参数的组合上进行迭代)。如本文所使用的,标记是指机器学习模型的预期输出(例如,分类、预期输出值等)。替代地,无监督训练(例如,用于深度学习、机器学习的子集等)涉及从输入推理模式以选择用于ML/AI模型的参数(例如,没有预期(例如,标记)输出的好处)。
在本文公开的示例中,使用标准方法(例如随机梯度下降)训练ML/AI模型。然而,可以附加地或替代地使用任何其他训练算法。在本文公开的示例中,执行训练直到满足目标准确度。使用控制如何执行学习(例如,学习率、机器学习模型中使用的层数等)的超参数来执行训练。使用训练数据执行训练。
一旦训练完成,部署模型用作可执行结构,该结构处理输入并基于具有模型中定义的节点和连接的网络提供输出。在一些公开的示例中,模型存储在存储器中并且可由与存储器形成在相同半导体衬底上的介质访问电路访问。在其他示例中,模型从中央处理单元和/或存储器控制器传送到可由与存储器形成相同半导体衬底上的介质访问电路访问的存储器。模型然后可以由介质访问电路内部的贝叶斯神经网络逻辑执行。尽管结合贝叶斯神经网络描述了所公开的示例,但是示例可以与任何类型的神经网络一起使用。
一旦经过训练,部署模型就可以在推理阶段运行以处理数据。在推理阶段,要分析的数据(例如,实时数据)被输入到模型中,然后模型执行以创建输出。这个推理阶段可以被认为是AI“思考”,用于基于它从训练中学到的东西(例如,通过执行模型将学到的模式和/或关联应用于实时数据)来生成输出。在一些示例中,推理阶段运行多次,因为每次在处理输入数据时利用不同的权重。在一些示例中,不同的权重是从可能权重的概率分布中随机采样的。在一些示例中,推理阶段运行至少二十次或直到达到目标准确度。在一些示例中,贝叶斯神经网络能够在输出处生成概率密度函数,这使得能够计算结果输出的置信区间。在一些示例中,输入数据在用作机器学习模型的输入之前经过预处理。此外,在一些示例中,输出数据在由AI模型生成后可经历后处理,以将输出转换为有用的结果(例如,数据的显示、机器要执行的指令等)。
在一些示例中,部署模型的输出可以被捕获并作为反馈提供。通过分析反馈,可以确定部署模型的准确性。如果反馈表明部署模型的准确性低于阈值或其他标准,则可以使用反馈和更新的训练数据集、超参数等触发对更新模型的训练,以生成更新的部署模型。
先验贝叶斯神经网络是资源密集型的,因为每次执行贝叶斯神经网络时,必须对每个神经元的权重进行采样。贝叶斯神经网络的权重不是可以一次设置的固定标量。描述权重概率分布的参数存储在存储器中,必须由处理器访问。这显著增加了访问存储器中的权重所需的存储器带宽,从而形成了限制贝叶斯神经网络推理速度的瓶颈。
图1A是示例贝叶斯神经网络(BNN)100的图示。在该示例中,示例贝叶斯神经网络100已经被训练并且准备好开始推理。示例训练过程定义了在推理过程中示例贝叶斯神经网络100的节点(例如,神经元)处要使用的权重的概率分布。例如,贝叶斯神经网络100的不同节点被分配不同的概率分布。每个概率分布包括对应的多个权重。因此,在推理阶段期间,可以使用示例贝叶斯神经网络100对输入数据执行多次推理迭代。在每次推理迭代期间,可以在每个节点处从贝叶斯神经网络100的概率分布中选择或采样不同的权重。选择或采样的权重被应用于每个节点处的数据,如下所述,以生成识别输入数据的贝叶斯神经网络100的结果值和指示结果正确的可能性的相关联不确定性值。为了获得结果值实际识别输入数据的更高确定性,使用贝叶斯神经网络100执行多次推理迭代,每次在多个节点处选择或采样不同的权重组合以产生另一个结果值。在一些示例中,贝叶斯神经网络100(例如,先前的贝叶斯神经网络)被丢弃。可以执行任意数量的后续推理迭代,直到达到目标迭代次数和/或达到目标不确定性值。
图1A的示例贝叶斯神经网络100的推理过程以示例输入数据102馈入示例第一隐藏层108开始。对于任意数量的n个输入数据值,示例输入数据102由x0、x1和xn表示法表示。输入数据102的数据值可以来自图像(例如,像素数据)、音频数据、传感器数据和/或要对其执行神经网络识别的任何其他数据。示例输入数据102的示例实例是由x0表示的输入数据值104。示例贝叶斯神经网络100是确定性神经网络,其中采样权重被应用于输入数据。例如,为了通过示例贝叶斯神经网络100将示例输入数据102向前馈送到示例第一隐藏层108,示例输入数据102的值乘以示例采样权重,然后在使用逐元素非线性激活函数118(例如,h(x0)、h(x1)、h(xn))的示例隐藏神经元122处进行处理。
图1B是由图1A的示例贝叶斯神经网络100执行的示例随机采样过程的图示。图1B示出了可以被实现以在示例第一隐藏层108之前为示例输入数据102选择权重值的示例权重选择过程。在本文公开的示例中,权重值控制多少数据值(例如,示例输入数据值104)影响隐藏神经元的结果输出。也就是说,权重的值可以强调或不强调输入数据值对神经元输出值的影响。示例贝叶斯神经网络100的用户(例如,程序员、科学家、开发人员)不知道应该将多少权重或重点归因于示例隐藏层(例如,第一隐藏层108或第二隐藏层109)的示例隐藏神经元处的数据。然而,可以使用可能权重110的示例概率分布112来随机选择权重值111。示例未采样权重110中的被选择或采样的权重被随机选择或采样并且在本文中被称为示例采样权重111(例如,选择权重)。所有未采样权重110的示例概率分布112从描述示例概率分布112的示例贝叶斯神经网络参数114(例如示例中心位置参数、示例不确定性参数和示例尺度参数)创建。示例中心位置参数是出现概率分布112的中心的x值。在一些示例中,示例中心位置参数是先前推理结果的均值或平均值。示例不确定性参数和示例尺度参数用于定义概率分布112的形状、范围或扩展。示例贝叶斯神经网络参数114可以在推理阶段之前在示例贝叶斯神经网络100的训练阶段被定义(例如,发现、选择、选取)。在一些示例中,示例贝叶斯神经网络参数114被随机采样(例如,随机抽取)。在图1B的示例中,所有可能的未采样权重110的概率分布112跨越从负三(-3)到正三(+3)的范围。在其他示例中,所有可能的未采样权重110的概率分布112不受约束并且可以跨越从负无穷大到正无穷大的范围。当未采样权重110被采样用于第一次推理迭代时,采样权重111(w1)在此被称为第一次迭代采样权重111。示例第一次迭代采样权重111(w1)大致为-1.9,如总体由附图标记170引用的实箭头线所表示的。在具有相同示例输入数据值104的下一次推理迭代(例如,在未采样权重110被采样的第二时间期间的第二次推理迭代)中,第二次迭代采样权重113(w2)大致为+2.7,如总体由附图标记172引用的虚箭头线所表示的。在其他示例中,可以选择或随机采样概率分布112的任何其他位置处的其他可能权重值。虽然图1B示出了对应于两次单独的推理迭代的两个样本权重111、113,但可以对任意次数的推理迭代执行这样的权重采样过程。以此方式,在多次推理迭代期间,可以基于示例贝叶斯神经网络100的多个节点的相应概率分布来选择或采样不同的权重值。
返回图1A,在从示例未采样权重110(图1B)的示例概率分布112中随机选择(例如,采样、抽取)示例第一次迭代采样权重111(图1B)之后,示例输入数据102乘以示例第一次迭代采样权重111以生成要由示例第一隐藏层108中的一些的神经元处理的乘积值。对于示例隐藏层108的每个示例隐藏神经元,对对应的示例输入数据102和对应的示例采样权重的乘积执行示例逐元素非线性激活函数118(例如,sigmoid函数、tanh函数、ReLU函数)。示例逐元素非线性激活函数118在数学上将乘积变换(例如,缩放、归一化、映射)到指定范围之间的值。例如,sigmoid函数118可以将乘积变换界限在负一(-1)和正一(+1)之间的值。在由示例逐元素激活函数变换之后,变换后的乘积(例如,示例第一变换乘积,也称为节点间数据、神经元间数据或隐藏层数据)被发送到下一隐藏层(例如,第二隐藏层109)。
继续示例贝叶斯神经网络推理的第一次迭代,过程进行到示例第二隐藏层109,在该处发生与先前针对示例第一隐藏层108描述的过程类似的过程。用于示例第二隐藏层109的示例隐藏神经元124的未采样权重的示例概率分布129的另一种实现(例如,采样)发生以从示例概率分布129获得采样权重。然后将采样权重乘以示例隐藏层数据(例如,示例第一隐藏层108的示例第一变换乘积)以创建第二乘积。对示例第二乘积执行对应示例隐藏神经元124的示例逐元素非线性激活函数138(例如,sigmoid、tanh、ReLU),生成被发送到下一隐藏层的示例第二变换乘积。在图1A的示例中,存在两个隐藏层,但是根据本公开的教导,可以使用任意数量的隐藏层来实现贝叶斯神经网络100。在传播通过最后的隐藏层之后,在示例贝叶斯神经网络100的示例输出神经元150处生成示例结果输出数据。在图1A的示例中,存在一个输出神经元150。然而,本文公开的示例可用于实现具有任意数量的输出神经元的贝叶斯神经网络。
示例结果输出数据是示例贝叶斯神经网络100的示例迭代结果。示例结果输出数据取决于示例贝叶斯神经网络100被设计来求解的问题的类型。例如,对于示例结果输出数据,诸如预测房屋价值中位数的回归问题可能会导致诸如$285,000美元的数字答案。例如,诸如识别来自三类(例如,类型)动物的图像的分类问题可能导致长度为三的向量,其中向量中的每个值表示图像表示相应动物的关联概率。例如,如果示例输入数据102在训练阶段期间表示猫、狗或兔子的图像的像素,则可以生成[60,20,20]的结果向量,这表示图像有60%的机会属于第一类(例如猫),图像有20%的机会属于第二类(例如狗),图像有20%的机会属于第三类(例如兔子)。在一些示例中,示例结果向量被称为概率密度函数,显示示例类别的示例概率。示例贝叶斯神经网络100的整个推理过程可以使用相同的示例输入数据102执行设定次数或最小次数(例如,至少二十次)或直到满足目标准确度。在一些示例中,示例迭代结果通常与示例贝叶斯神经网络100的先前迭代的示例迭代结果聚合。示例聚合用于将迭代结果平均为被称为置信区间的示例单个聚合结果。例如,在示例房屋价值中位数估计中,对于相同的输入数据102,可能有二十次迭代,生成诸如$285,000、$291,000、$268,000等的值。示例二十次迭代可以被聚合以产生示例单个聚合结果。置信区间采用<最终结果>+/-<不确定性值>的形式,例如$285,000(最终结果)+/-$5,000(不确定性值)。不确定性值基于目标置信区间,并被基于输入数据和目标用户置信区间计算。在一些示例中,用户接收示例单个聚合结果(例如,最终置信区间)并且不接收多个示例迭代结果。示例置信区间支持具有关联可能性的连续决策,而不仅仅是结果可用。
图1A的贝叶斯神经网络100的拓扑可以通过流水线描述(例如,隐藏层的数量、输入节点/神经元的数量、权重的概率分布函数)来描述。例如,可以使用图1的示例贝叶斯神经网络参数114来描述流水线描述。示例输入数据位置是图1的示例输入数据102不被利用时被存储的地方。示例数据位置可以是闪存驱动器。示例输出数据位置是存储贝叶斯神经网络推理结果的地方。示例输出位置可以是固态驱动器(SSD)。
图2是在计算机系统200中实现贝叶斯神经网络的现有技术的处理流程的图。图2示出了在计算机系统200的不同组件(例如,部分、位置)中发生的枚举1到7的操作。贝叶斯神经网络参数201存储在数据存储设备202中。在一些示例中,贝叶斯神经网络参数201是几千兆字节。中央处理单元(CPU)204从数据存储设备202取得贝叶斯神经网络参数201并将贝叶斯神经网络参数201发送到枚举操作1中的主机动态随机存取存储器(DRAM)206。
在枚举操作2中,CPU 204将来自数据存储设备202或网络接口设备(未示出)的输入数据203加载到主机DRAM 206。计算机系统200在图形处理单元(GPU)208或加速器208中实现贝叶斯神经网络。贝叶斯神经网络参数201可以是几千兆字节,需要比GPU 208或加速器208能够提供的更多的存储器。
枚举操作3包括将贝叶斯神经网络参数201从主机DRAM 206传送到GPU 208的存储器210。
枚举操作4包括将输入数据102从主机DRAM 206传送到GPU 208的存储器210。
在枚举操作5处,GPU 208从基于贝叶斯神经网络参数201生成的概率分布中采样权重。采样的权重被分配给贝叶斯神经网络的对应神经元。采样权重存储在存储器210中。
在枚举操作6中,GPU 208对输入数据203执行推理过程。GPU 208在将GPU存储器210中存储的采样权重与输入数据相乘之前访问存储的采样权重。可以多次执行(例如,二十次或任何其他次数)贝叶斯神经网络直到满足目标准确度,这可以涉及概率分布的未采样权重的多次采样和对输入数据203的多次推理。贝叶斯神经网络的每次执行使用权重的唯一采样,这涉及在CPU 204、主机DRAM 206、GPU/加速器存储器210和GPU 208之间执行大量存储器事务。在一些现有技术中,对于整个推理过程,权重的采样存储在GPU/加速器存储器210中,或者中间结果存储在GPU/加速器存储器210中。在一些现有技术中,贝叶斯神经网络参数201被连续传送到CPU 204以用于矩阵乘法。由于工作流的性质,现有技术的技术在计算上是复杂的并且具有降低的并行化能力。在一些现有技术中,在执行贝叶斯神经网络时缺乏速度(例如,降低的有效速度)决定了贝叶斯神经网络不能在嵌入式设备或数据中心中执行。
在枚举操作7中,将结果聚合在一起并发送到数据存储设备202。在枚举操作7中,将每次迭代的结果聚合在一起以构建单个聚合结果(例如,单个置信区间),然后传送到主机DRAM 206或数据存储设备202。在一些现有技术中,每次迭代的结果在输出处被聚合成包括概率密度函数的单个聚合结果。
图2所示的现有技术实现方式具有如下操作速度:该操作速度受CPU 204和主机DRAM 206之间以及GPU 208和GPU/加速器存储器210之间的总线上的数据访问速度的限制。因此,由于基于总线的存储器访问,在贝叶斯神经网络中使用现有技术的多次存储器访问以执行计算的时间效率低且功率效率低。
图3是根据本公开的教导的包括用于实现贝叶斯神经网络(BNN)的贝叶斯神经网络推理逻辑的示例计算设备300的框图。示例计算设备300包括示例处理器301(例如,示例主机处理器、中央处理单元(CPU)、示例图形处理单元(GPU)等)、示例存储器310、示例数据存储设备330、示例通信电路380和示例加速器设备390。示例处理器301通常被配置为执行机器可读指令并运行程序。示例通信电路380通常被配置为经由例如网络从示例计算设备300发送信息和/或在计算设备300处接收信息。示例加速器设备390通常被配置为通过硬件加速来实现数据处理操作。示例存储器310通常被配置为存储诸如贝叶斯神经网络参数和输入数据之类的数据以实现贝叶斯神经网络。示例存储器310包括示例存储器单元302、示例存储器控制器306和示例介质访问电路304。示例数据存储设备330通常被配置作为替换位置(例如,长期存储)以存储可用于实现贝叶斯神经网络的信息。在本文公开的示例中,示例存储器310和示例数据存储设备330可以使用相同类型的数据存储技术来实现,例如三维(3D)交叉点存储器(例如,英特尔傲腾存储器)或任何其他合适的存储器。然而,在示例存储器310的情况下,存储技术被用作短期系统存储器,并且在示例数据存储设备330的情况下,存储技术被用作长期存储。在本文公开的一些示例中,使用示例存储器310中的数据实现贝叶斯神经网络。在其他示例中,使用示例数据存储设备330中的数据实现贝叶斯神经网络。在另外的示例中,使用示例存储器310和示例数据存储器330中的数据实现贝叶斯神经网络。示例数据存储设备330包括示例存储器单元332、示例存储器控制器336和示例介质访问电路334。示例存储器单元332与示例存储器单元302基本相似或相同,示例介质访问电路334与示例介质访问电路304基本相似或相同,并且示例存储器控制器336与示例存储器控制器306基本相似或相同。
详细地转向示例存储器310,示例存储器控制器306包括示例贝叶斯神经网络推理逻辑311。在一些示例中,存储器控制器306的贝叶斯神经网络推理逻辑311被配置为通过控制存储器操作来设置BNN以复制BNN参数值和来自存储器单元302的输入数据到贝叶斯神经网络推理逻辑312以设置BNN,并且贝叶斯神经网络推理逻辑312被配置为基于BNN参数和输入数据执行BNN推理操作。在其他示例中,存储器控制器306中的贝叶斯神经网络推理逻辑311被配置为既设置BNN又执行BNN推理操作。在任一情况下,贝叶斯神经网络推理逻辑311和/或贝叶斯神经网络推理逻辑312使用示例BNN推理流水线(在图7中讨论)执行BNN推理操作。示例介质访问电路304包括张量逻辑单元320,张量逻辑单元320包括计算逻辑单元314,计算逻辑单元314包括示例贝叶斯神经网络推理逻辑312。在所示示例中,示例贝叶斯神经网络推理逻辑312包括样本乘法累加逻辑(例如,图5的随机样本乘法累加(random-sample-multiply-accumulate,RSMA)逻辑502)以执行随机样本乘加(random-sample-multiply-add)运算。附加地或替代地,示例贝叶斯神经网络推理逻辑311包含与示例贝叶斯神经网络推理逻辑312相同或相似的样本乘法累加逻辑。在另外的示例中,示例贝叶斯神经网络推理逻辑312被配置为设置并执行示例BNN推理流水线,并且从存储器控制器306中省略贝叶斯神经网络推理逻辑311。数据存储设备330的贝叶斯神经网络推理逻辑341、342可以以与上文针对贝叶斯神经网络推理逻辑311、312描述的配置类似的配置来实现。
示例存储器单元302总体被配置为存储推理计算的示例单个聚合结果。在一些示例中,示例存储器单元302在将示例贝叶斯神经网络参数加载到乘法累加寄存器之前存储示例贝叶斯神经网络参数。示例存储器单元302(和示例存储器单元332)总体被配置为中间存储器以快速访问用于生成BNN的数据。示例介质访问电路304包括总体被配置为运行矩阵计算的示例张量逻辑单元320和总体被配置为执行在示例BNN推理流水线中利用的随机样本乘加运算的示例贝叶斯神经网络推理逻辑312。在一些示例中,示例介质访问电路304被配置为访问来自示例主机处理器301的命令。在这样的示例中,命令使示例介质访问电路304启动示例BNN推理流水线。在其他示例中,示例介质访问电路304能够使用示例贝叶斯神经网络推理逻辑311、312、341、342来基于如下操作生成贝叶斯神经网络推理结果:在示例本地存储器(例如,示例静态随机存取存储器(SRAM)318)中生成多个隐藏层数据、并通过贝叶斯神经网络流水线提供多个隐藏层数据,直到生成贝叶斯神经网络100的推理结果。在另外的示例中,示例介质访问电路304被配置为对输入数据和多个采样贝叶斯神经网络权重执行矩阵计算和逐元素非线性激活函数以执行贝叶斯神经网络推理。
示例张量逻辑单元320包括示例计算逻辑单元314、示例纠错逻辑单元316(例如纠错码(ECC)逻辑)和示例静态随机存取存储器(SRAM)318。在一些示例中,示例存储器单元302和示例介质访问电路304形成在单个半导体衬底上,如图4所示。
图4示出了包括图3的示例存储器单元302和示例介质访问电路304的示例半导体衬底400(例如,半导体管芯)。可用于实现示例存储器单元302的示例非易失性存储器(例如,作为两级存储器方案中的远存储器和/或作为数据存储设备的组件)包括3D交叉点存储器技术(例如,英特尔傲腾存储器)(在图6中进一步描述)。在所示示例中,介质访问电路304是由互补金属氧化物半导体(CMOS)(作为示例存储器单元302下方或上方的层)构成的集成电路。示例存储器单元302能够在将示例贝叶斯神经网络参数加载到示例介质访问电路304之前存储示例贝叶斯神经网络参数。介质访问电路304的输出,其中介质访问电路304的输出可以是示例单个聚合结果(例如,置信区间)或迭代结果。示例介质访问电路304能够通过在半导体衬底400内执行衬底内数据访问(例如,读取和/或写入)以访问存储在示例存储器单元302上的输入数据来执行计算,而不需要外部(例如,芯片外或管芯外)读取和/或写入主机存储器DRAM或GPU以访问用于计算的数据。
图5是图3的存储器单元302和介质访问电路304的示例实现。图5详细示出了示例介质访问电路304和示例存储器单元302之间的通信(例如,数据流)。在图5的示例中,示例存储器单元302和示例介质访问电路304被示出为分区(例如,划分)为示例集群510、520、530。在图5的示例中仅示出了三个集群(例如,集群510、520和530)。然而,在其他示例中可以包括具有类似布局的任意数量的集群。示例集群510包括多个示例存储器分区511a、511b和511c(也称为分区集511)、图3的示例SRAM 318、图3的示例纠错逻辑单元316、以及图3的计算逻辑单元314的示例计算逻辑单元314a。示例集群520和示例集群530具有与示例集群510相似的组件和功能。示例分区集521和示例分区集531具有与示例分区集511相似的相似组件和功能。示例存储器分区511a、511b和511c总体被配置为存储位级数据。示例SRAM 318还包括总体被配置为存储矩阵的值的示例暂存器512、514和516。
示例集群510利用示例计算逻辑单元314a从分区集511读取矩阵数据的示例第一子集(例如,矩阵A)并且将矩阵数据的示例第一子集提供给示例纠错逻辑单元316。示例计算逻辑单元314a包括示例随机样本乘法累加(RSMA)逻辑502。在本文公开的示例中,RSMA逻辑502由BNN推理逻辑312(图3)实现。示例纠错逻辑单元316能够纠正矩阵数据的示例第一子集中的错误并且将改变广播到其他示例集群520和/或530中的对应示例暂存器532、552。矩阵数据的示例第一子集然后在第一示例暂存器512(例如,运算数据寄存器512)处被接受。示例运算数据寄存器512根据示例贝叶斯神经网络100的执行过程的当前步骤接受输入数据102(图1)或乘积。示例计算逻辑单元314a激活示例RSMA逻辑502,RSMA逻辑502可以访问贝叶斯神经网络参数114(图1),例如贝叶斯神经网络概率分布中心位置和描述权重将从其采样的概率分布112的不确定性。示例RSMA逻辑502将描述权重的贝叶斯神经网络参数加载到第二示例暂存器514(例如,乘法累加寄存器514)。示例RSMA逻辑502基于加载在示例乘法累加寄存器514中的贝叶斯神经网络参数随机对权重进行采样。RSMA逻辑502使用矩阵乘法运算将采样权重与示例运算数据寄存器512处存储/加载的输入数据相乘,并累加(例如,相加)示例运算数据寄存器512中的数据(例如,输入数据102或乘积、来自先前隐藏层的变换积)和乘法累加寄存器514中的示例采样权重,产生存储在第三示例暂存器516(例如,输出寄存器516)处的矩阵C。示例暂存器512和514能够对示例第一子集(例如,矩阵A)和矩阵数据的示例第二子集(矩阵B)执行矩阵计算(例如,矩阵乘法和累加),产生存储在示例输出寄存器516中的输出数据(例如,矩阵C)。示例输出数据可以在被存储在分区集511(例如,分区511c)中之前用于进一步的矩阵计算。图5的示例示出了矩阵计算如何可以同时发生,因为示例暂存器512、514、516可以乘以两个矩阵的第一部分,而集群520的暂存器532、534和536同时乘以相同的两个矩阵的第二部分,从而产生存储在示例暂存器536处的输出数据。在一些示例中,示例暂存器552、554、556的功能类似于示例暂存器532、534、536。在一些示例中,RSMA逻辑502对权重进行采样并将权重应用于第二集群520的矩阵B,并将权重应用于示例集群530的矩阵B。在这样的示例中,示例A矩阵都是矩阵数据的不同子集。在其他示例中,示例A矩阵包括相同的数据部分,并且示例RSMA逻辑502对矩阵B的唯一权重进行采样。
图6示出可用于实现图3的存储器单元302的示例瓦片(tile)架构。示例瓦片架构在本文中也被称为交叉点架构(例如,其中存储器单元位于字线和位线的交叉处且可单独寻址且其中位存储基于体电阻变化的架构),其中每个示例存储器单元(例如,瓦片)610、612、614、616、618、620、622、624、626、628、630、632、634、636、638、640通过示例x参数和示例y参数(例如,列和行)可寻址。示例存储器单元302包括多个分区,每个分区包括瓦片架构。分区可以堆叠为层602、604、606以形成三维交叉点架构(例如,3D交叉点(XPoint)存储器,诸如英特尔傲腾存储器)。与只有固定大小的多位数据结构(例如,字节、字等)可寻址的典型存储器设备不同,示例介质访问电路被配置为应示例存储器控制器的请求从存储器单元302读取各个位或其他数据单元,示例存储器控制器可以响应于从处理器接收到相应的请求而产生请求。在一些示例中,3D交叉点存储器技术(例如,英特尔傲腾存储器)能够显著增加示例处理器301(图3)的并行化能力。在一些示例中,3D交叉点存储器技术(例如,英特尔傲腾存储器)用于非易失性存储应用数据平台应用程序和物联网应用程序,包括数据中心应用程序和M2存储器应用程序,例如自动驾驶汽车或机器人应用程序。
图7是可用于实现图3的示例贝叶斯神经网络推理逻辑311、312、341、342的示例BNN推理流水线700。在一些示例中,示例BNN推理流水线700由示例存储器控制器306、336实现。在一些示例中,示例BNN推理流水线700由示例介质访问电路304实现。在其他示例中,示例BNN推理流水线700由示例存储器控制器306、336和示例介质访问电路304、334实现。示例BNN推理流水线700包括示例运算选择器702、示例随机数生成器704、示例神经元级逻辑单元705、示例解复用器707和示例复用器708。示例运算选择器702将示例贝叶斯神经网络参数114和示例输入数据102从示例数据存储器332(图3)和/或从图3的示例存储器单元302加载到示例SRAM 318(图3)。示例运算选择器702可以选择要执行的运算,例如标记为“随机样本乘加”的示例张量运算706。示例随机数生成器704创建要在张量运算(例如,矩阵乘法、确定最大值、逐元素非线性激活函数等)中使用的非密码级随机数。示例神经元级逻辑单元705与示例张量逻辑单元320(图3)基本相似或相同。示例神经元级逻辑单元705对示例输入数据102应用示例张量运算706(示出为Ti(x))。例如,示例神经元级逻辑单元705利用标记为“随机样本乘加”的示例张量运算706。示例张量运算706利用随机数生成器704从示例分布参数114描述的示例分布112(图1A和1B)中对权重进行采样,将选择的权重(例如,图1B的选择的权重111、113、结果权重、结果等)乘以示例输入数据102和/或隐藏层数据(例如,第一隐藏层的第一变换乘积),然后根据需要累加(例如,相加)相乘的结果(例如,乘积)。示例张量运算706在一个步骤中发生,并且示例采样权重不存储在存储器中,而是在与示例数据寄存器512(图5)中的数据相乘之前,从加载在乘法累加寄存器中的示例贝叶斯神经网络参数中采样。示例神经元级逻辑单元705然后应用由运算选择器702(例如,RSMA)选择的运算。示例解复用器707将相乘结果(例如,隐藏层数据)路由到寄存器710中的对应矩阵C(来自图5)。示例复用器708确定将隐藏层数据路由到哪里。示例复用器708可以在另一运算中(例如,在随后的隐藏层处)重新使用隐藏层数据并将隐藏层数据路由回示例运算选择器702。示例复用器708可以将隐藏层数据存储在SRAM 318中。如果隐藏层数据被确定为是迭代结果,则示例复用器可以将结果存储在存储器单元302中。示例结果1 712a、结果2712b指的是来自张量运算的不同结果,使得如果有十个张量节点(例如,隐藏层中的十个神经元),则生成十个结果。在其他示例中,示例结果1712a和结果2 712b指的是在相应集群处生成的不同结果(例如,隐藏层数据),使得如果有五个集群,则生成五个结果。在其他示例中,神经元级逻辑单元705对相乘结果执行示例逐元素非线性激活函数(例如,sigmoid、tanh、ReLU等),并且示例解复用器707将变换后的结果路由到SRAM 318(图3)的对应示例暂存器512、514、516(图5)(例如,示例运算数据寄存器512、示例乘法累加寄存器514和示例输出寄存器516)。如果在示例贝叶斯神经网络100中存在另一隐藏层(例如,第二隐藏层109),则示例复用器708确定将哪些中间结果710路由到下一隐藏层(例如,第二隐藏层109)中要使用的示例运算选择机制702。如果没有更多隐藏层,则示例复用器确定在哪里存储完成结果712。随后,示例完成结果712被传送到示例主机存储器370(图3)或存储在数据存储设备330(图3)或示例存储器310(图3)中的示例设备300(图3)中。在一些示例中,示例完成结果712被组合以创建包含概率密度函数的单个聚合结果,概率密度函数包含示例答案和示例不确定性。
图8-10是可用于实现与图3的示例处理器301分开的图3的存储器310和/或数据存储设备330的示例子板的示意图。示例子板实现示例加速器设备以根据本公开的教导实现BNN。以此方式,主机处理器(例如,图3的处理器301)可以将BNN处理卸载到子板上。通过卸载这样的处理,主机处理器被释放来执行其他操作。此外,子板可以比主机CPU更快地执行BNN处理。
图8的示例子板800基于英特尔傲腾存储器,其中示例介质访问电路304和示例存储器单元302形成在相同衬底(例如,图4的半导体衬底400)上。在相同衬底400上形成示例介质访问电路304和示例存储器单元302允许示例子板800实现贝叶斯神经网络推理,而不会因多次片外存储器读取、片外存储器写入以及示例CPU 301的计算而降低现有技术的性能。示例介质访问电路304能够执行矩阵运算(例如,张量计算或矩阵-矩阵乘加),中间结果保存在示例SRAM 318中,而示例存储器单元302能够在访问数据时在单个字节级可寻址。在一些示例中,存储器单元302在访问数据时在单个位级可寻址。在图8的示例中,结果可以通过示例主机接口802发送到处理器301。
图9是可用于实现与图3的示例主机处理器301分开的图3的存储器310和/或数据存储设备330的替代示例子板900的示意图。在图9中,示例第一衬底902包含示例介质访问电路304和示例存储器控制器306。同样在图9中,示例第二衬底904包含示例存储器单元302。示例子板900是实现BNN推理并且经由示例主机接口906将示例结果发送到处理器301的设备。示例子板900可以用于增加示例介质访问电路304和示例存储器控制器306之间的通信速度。
图10是可用于实现与图3的示例处理器301分开的图3的存储器310和/或数据存储设备330的替代示例子板1000的示意图。在图10中,示例第一衬底1002包含示例介质访问电路304,示例第二衬底1004包含示例存储器单元302,示例第三衬底1006包含示例存储器控制器306。示例第三衬底1006、示例第一衬底1002和示例第二衬底1004彼此以电路连接。示例子板1000是实现BNN推理并且经由示例主机接口1008将结果发送到处理器的设备的实现,使得示例第一衬底1002、示例第二衬底1004、示例第三衬底1006之间的通信速度可以增加。
图11是可用于实现图3的示例计算设备300的示例系统1100,其基于枚举操作1101到1105来实现根据本公开的教导的贝叶斯神经网络。
在枚举操作1101中,示例存储器控制器306、336从示例存储器单元302读取示例BNN参数114。在一些示例中,示例BNN参数在由示例存储器控制器306、336读取之前从外部存储器/主机存储器370写入示例存储器单元302。
在枚举操作1102处,示例处理器301从示例存储器单元302(图3)加载示例输入数据。在其他示例中,输入数据从示例存储器/主机存储器370(图3)或网络接口设备(未示出)提供给示例存储器单元302(图3)。示例输入数据加载到矩阵A中的SRAM(图3)。
在枚举操作1103处,示例贝叶斯神经网络推理逻辑311、312、341、342(图3)利用示例贝叶斯神经网络参数114来创建未采样权重的概率分布以收集要加载到乘法累加寄存器512B(图5)中的采样权重(例如,图1B的采样权重111、113)。
在枚举操作1104处,示例贝叶斯神经网络推理逻辑311、312、341、342将加载在乘法累加寄存器514(图5)中的示例采样权重111、113与输入数据102相乘,并且累加矩阵的元素。累加的矩阵(例如,隐藏层数据)然后在被发送到下一隐藏层之前,在产生示例迭代结果之前,传递逐元素非线性激活函数。示例操作1104使用示例介质访问电路304(图3)和存储器单元302进行。示例贝叶斯神经网络可以被执行多次(例如,二十或任何其他次数)或直到满足目标准确度,它使用未采样权重的多次采样和对输入数据的多次推理。贝叶斯神经网络的每次执行使用权重的唯一采样,这通常使用大量存储器访问。与在CPU 204、主机DRAM206和GPU 208之间使用大量片外存储器事务的现有技术不同,本文公开的一些示例将示例介质访问电路304和示例存储器单元302共同定位在相同的半导体管芯或半导体衬底(例如,图4的半导体衬底400)中以显著减少或消除大量存储器事务。这种近存储器配置使得能够执行矩阵计算,而无需进行大量片外数据读取和/或写入。出于本公开的目的,“近”被定义为“紧邻、相邻、位置接近”。例如,近存储器比相对远离(例如,在单独芯片上的单独半导体衬底上或在单独印刷电路板上)处理设备(例如,硬件加速器、逻辑电路、处理器、控制器等)的远存储器相对更靠近(例如,相邻或在相同半导体衬底上或在相同芯片上或在相同印刷电路板上)处理设备。在一些示例中,示例存储器单元302和示例介质访问电路304能够执行示例贝叶斯神经网络,以从示例处理器301释放循环。
在枚举操作1105中,示例贝叶斯神经网络推理逻辑311、312、341、342(图3)将迭代结果聚合在一起并将完成的单个最终结果(例如,置信区间)发送到示例主机存储器(例如,示例外部存储器370)和/或存储设备(例如,图3的示例数据存储设备330和/或任何其他数据存储设备)。在一些示例中,外部存储器370是易失性存储器(例如,DRAM、SRAM等),并且存储设备是非易失性存储器(例如,3D交叉点存储器、闪存、磁存储器等)。
在本文公开的示例中,用于将神经网络参数值加载到寄存器中的装置可以由神经网络推理逻辑311、312实现。此外,在本文公开的示例中,用于对神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果的装置可以由神经网络推理逻辑311、312实现。此外,在本文公开的示例中,用于将神经网络推理结果传送到半导体衬底外部的主机存储器或半导体衬底外部的主机处理器中的至少一者的装置可以由存储器控制器306实现。此外,在本文公开的示例中,用于访问来自主机处理器301的命令(该命令使与寄存器形成在相同半导体衬底上的介质访问电路304启动神经网络推理流水线)的装置可以由介质访问电路304实现。此外,在本文公开的示例中,用于对本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行样本乘加运算的装置可以由张量逻辑单元320实现。
虽然图3中示出了实现存储器310和/或数据存储设备330的示例方式,但是图3中所示的元素、过程和/或设备中的一个或多个可以以任何其他方式组合、划分、重新布置、省略、消除和/或实现。此外,示例介质访问电路304、334、示例存储单元302、312、示例存储器控制器306、336、示例张量逻辑单元320、350、示例SRAM 318、348、示例纠错逻辑单元316、346、示例计算逻辑单元314、344、示例贝叶斯神经网络推理逻辑311、312、341、342、和/或更一般地图4的示例存储器310和/或示例数据存储设备330可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,示例介质访问电路304、334、示例存储器单元302、312、示例存储器控制器306、336、示例张量逻辑单元320、示例SRAM 318、348、示例纠错逻辑单元316、346、示例计算逻辑单元314、344、示例贝叶斯神经网络推理逻辑311、312、341、342、和/或更一般地示例存储器310和/或示例数据存储设备330中的任意项可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(PLD)和/或(一个或多个)现场可编程逻辑器件(FPLD)实现。当阅读本专利的任何装置或系统权利要求以涵盖纯软件和/或固件实现时,示例介质访问电路304、334、示例存储器单元302、312、示例存储器控制器306、336、示例张量逻辑单元320、350、示例SRAM 318、348、示例纠错逻辑单元316、346、示例计算逻辑单元314、344、示例贝叶斯神经网络推理逻辑311、312、341、342、和/或更一般地图4的示例存储器310和/或示例数据存储设备330中的至少一个在此明确定义为包括非暂态计算机可读存储设备或存储盘,例如存储器、数字通用盘(DVD)、压缩盘(CD)、蓝光盘等,包括软件和/或固件。更进一步,除了或代替图3中所示的那些,图3的示例存储器310和/或示例数据存储设备330可以包括一个或多个元素、过程和/或设备,和/或可以包括任何或所有所示元素、过程和设备中的一个以上。如本文所使用的,短语“与…通信”(包括其变体)包括直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接物理(例如,有线)通信和/或持续通信,而是附加地包括以周期性间隔、排定间隔、非周期性间隔和/或一次性事件进行的选择性通信。
图12-14中示出了表示用于实现图3的示例存储器310和/或示例数据存储设备330的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是由计算机处理器和/或处理器电路(例如以下结合图15讨论的示例处理器平台1500中所示的处理器1512)执行的一个或多个可执行程序或可执行程序的部分。程序可以体现在存储在非暂态计算机可读存储介质(例如CD-ROM、软盘、硬盘驱动器、DVD、蓝光光盘或与处理器1512相关联的存储器)上的软件中,但是整个程序和/或其部分可以替代地由除处理器1512之外的设备执行和/或体现在固件或专用硬件中。此外,虽然参照图5所示的流程图描述了示例程序,但是可以替代地使用实现示例存储器310和/或示例数据存储设备330的许多其他方法。例如,可以改变块的执行顺序,和/或可以改变、消除或组合所描述的一些块。附加地或替代地,任何或所有块可以由被构造成在不执行软件或固件的情况下执行相应操作的一个或多个硬件电路(例如,分立和/或集成模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)实现。处理器电路可以分布在不同的网络位置和/或一个或多个设备(例如,单个机器中的多核处理器、跨服务器机架分布的多个处理器等)本地。
本文描述的机器可读指令可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等中的一种或多种存储。本文描述的机器可读指令可以存储为可用于创建、制造和/或产生机器可执行指令的数据或数据结构(例如,指令、代码、代码表示等的部分)。例如,机器可读指令可以被分段并存储在位于网络或网络集合的相同或不同位置(例如,在云中、在边缘设备中等)的一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、改编、更新、组合、补充、配置、解密、解压、解包、分发、重新分配、编译等中的一种或多种,以使其直接由计算设备和/或其他机器可读、可解释和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被分别压缩、加密并存储在单独的计算设备上,其中这些部分在解密、解压缩和组合时形成一组可执行指令,该组可执行指令实现可以一起形成程序(例如这里描述的程序)的一个或多个功能。
在另一示例中,机器可读指令可以被存储在如下状态下:它们可以被处理器电路读取,但是需要添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用程序编程接口(API)等,以便在特定计算设备或其他设备上执行指令。在另一示例中,在机器可读指令和/或(一个或多个)相应的程序可以全部或部分执行之前,可能需要配置机器可读指令(例如,存储的设置、数据输入、记录的网络地址等)。因此,本文使用的机器可读介质可以包括机器可读指令和/或(一个或多个)程序,而不管机器可读指令和/或(一个或多个)程序在存储或以其他方式静止或传输时的特定格式或状态。
本文描述的机器可读指令可以用任何过去、现在或将来的指令语言、脚本语言、编程语言等来表示。例如,机器可读指令可以使用以下任何一种语言来表示:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、Swift等。
如上所述,图12-14的示例过程可以使用存储在非暂态计算机和/或机器可读介质(例如硬盘驱动器、闪存、只读存储器、压缩盘、数字多功能盘、高速缓存、随机存取存储器和/或任何其他存储设备或存储盘,其中信息存储任何持续时间(例如,延长的时间段,永久地,简短的瞬间,临时缓冲,和/或缓存信息))上的可执行指令(例如,计算机和/或机器可读指令)实现。如本文所使用的,术语非暂态计算机可读介质被明确地定义为包括任何类型的计算机可读存储设备和/或存储盘并且不包括传播信号并且不包括传输介质。
“包括”和“包含”(及其所有形式和时态)在本文中用作开放性术语。因此,每当权利要求采用任何形式的“包括”或“包含”(例如,包含、包括、组成、构成、具有等)作为前序或在任何类型的权利要求叙述内时,应理解为在不超出相应权利要求或引用的范围的情况下,可以存在附加元素、术语等。如本文所使用的,当短语“至少”用作例如权利要求前序中的过渡术语时,它以与术语“包含”和“包括”是开放性的相同的方式是开放性的。术语“和/或”当以例如A、B和/或C的形式使用时是指A、B、C的任何组合或子集,例如(1)A单独,(2)B单独,(3)C单独,(4)A与B,(5)A与C,(6)B与C,以及(7)A与B和C。如本文在描述结构、组件、项目、对象和/或事物的上下文中所使用的,短语“A和B中的至少一个”旨在指代包括如下任意项的实现:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。类似地,如本文在描述结构、组件、项目、对象和/或事物的上下文中所使用的,短语“A或B中的至少一个”旨在指代包括如下任意项的实现:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。如本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中所使用的,短语“A和B中的至少一个”旨在指代包括如下任意项的实现:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。类似地,如本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中所使用的,短语“A或B中的至少一个”旨在指代包括如下任意项的实现:(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B。
如本文所使用的,单数引用(例如,“一”、“一个”、“第一”、“第二”等)不排除复数。如本文所使用的,术语“一”或“一个”实体是指该实体中的一个或多个。术语“一”(或“一个”)、“一个或多个”和“至少一个”在本文中可以互换使用。此外,尽管单独列出,但多个装置、元素或方法动作可以由例如单个单元或处理器来实现。此外,虽然单独的特征可能被包括在不同的示例或权利要求中,但这些可能被组合,并且包括在不同的示例或权利要求中并不意味着特征的组合是不可行的和/或有利的。
图12-14的示例计算机可读指令结合存储器310和数据存储设备330两者中的BNN推理逻辑311、312、341、342在执行BNN推理操作时描述。然而,在一些示例中,可以使用存储器310或数据存储设备330中的仅一者的BNN推理逻辑311、312、341、342。
图12是表示可被执行以实现贝叶斯神经网络逻辑311、312、341、342(图3)以生成贝叶斯神经网络的机器可读指令1200的流程图。图12的示例指令1200被分成示例处理器阶段1202和示例BNN推理逻辑阶段1204。处理器阶段1202的指令1200可由图3的示例处理器301和/或图15的示例处理器1512执行。BNN推理逻辑阶段1204的指令1200可由示例介质访问电路304、334(图3)执行以实现BNN推理逻辑312、342(图3)。附加地或替代地,BNN推理逻辑阶段1204的指令1200可由示例存储器控制器306、336(图3)执行以实现BNN推理逻辑311、341(图3)。
当示例处理器301发现计算设备能力时,示例指令1200开始(块1210)。例如,处理器301(例如,主机处理器、CPU、GPU等)可以通过向示例存储器310和/或示例数据存储设备330发送请求贝叶斯神经网络推理逻辑311、312、341、342的能力的查询来发现计算设备能力。在所示示例中,处理器301可以寻求发现是否有任何电路内设备(例如,存储器310和/或数据存储设备330)支持实现贝叶斯神经网络的能力。例如,如本文所公开的,包括BNN推理逻辑311、312、341、342的设备(例如,存储器310和/或数据存储设备330)可以支持贝叶斯神经网络能力。
示例处理器301向示例贝叶斯神经网络推理逻辑311、312、341、342发送流水线描述、输入数据位置和输出位置(块1220)。示例处理器301可以通过提供与示例流水线描述相对应的存储器地址、与示例输入数据位置相对应的存储器地址以及与示例输出位置相对应的存储器地址来发送示例流水线描述、示例输入数据位置、示例输出位置。
BNN推理逻辑311、341配置图7的BNN推理流水线700(块1230)。例如,BNN推理逻辑311、341可以通过开发神经网络的拓扑、将BNN参数114加载(例如,存储)在乘法累加寄存器514(图5)中、并根据访问的示例流水线描述选择激活函数来配置BNN推理流水线700(图7)。在一些示例中,BNN推理逻辑312、342能够配置BNN推理流水线700。
示例张量逻辑单元320访问介质的数据对象的子集(块1240)。例如,示例计算设备300可以通过利用示例张量逻辑单元320访问存储在存储器单元302、332(图3)中的输入数据(图1A和7)来访问介质上的数据对象的子集。数据对象的示例可以是像素数据、音频数据、传感器数据等。附加地或替代地,如果推理过程发生在示例存储器310(图3)中,则示例BNN推理逻辑311、312可以访问加载在3D交叉点存储器(例如,英特尔傲腾存储器)或任何其他合适的存储器单元302中的输入数据。例如,如果推理过程发生在数据存储设备330(图3)中,则示例BNN推理逻辑341、342可以访问加载在3D交叉点存储器(例如,英特尔傲腾存储器)或任何其他合适的存储器单元332中的输入数据。
示例介质访问电路304、334的示例张量逻辑单元320(图3)通过BNN推理流水线700(图7)处理数据对象的示例访问子集(块1250)。例如,示例介质访问电路304、334的张量逻辑单元320可以通过BNN推理流水线700(图7)通过利用示例计算逻辑单元314(图3)、示例纠错逻辑单元316(图3)和示例SRAM 318(图3)对权重进行随机采样来处理数据对象的访问子集,并将数据子集与采样权重中的对应权重相乘,并将隐藏层数据存储在示例SRAM 318(图3)中。示例BNN推理逻辑312、342能够计算随机样本乘加运算,并使用逐元素非线性激活函数来转换访问子集。关于如何通过示例BNN推理流水线700处理子集的示例细节在上面结合图5和图7进行了描述。
示例张量逻辑单元320确定在块1250中处理的数据对象的示例子集是否是最后的子集(块1260)。例如,如果示例张量逻辑单元320确定在块1250中处理的数据对象的示例子集不是最后的子集(例如,“否”),则控制返回到块1240以选择数据对象的附加子集。例如,如果示例张量逻辑单元320确定在块1250中处理的数据对象的示例子集是数据对象的最后的子集(例如,“是”),则控制前进到块1270。
示例BNN推理逻辑311、312、341、342(图3)的示例复用器708(图7)将结果存储在介质中或将结果传送到主机存储器(块1270)。例如,示例BNN推理逻辑311、312、341、342(图3)的示例复用器708(图7)可以通过根据目标输出位置路由结果来将迭代结果存储在存储器单元302(图3)中或将结果传送到主机存储器370(图3)。在一些示例中,后处理单元(未示出)在将最终单个完成结果(例如,单个最终置信区间)发送到存储器单元302(图3)或示例主机存储器370(图3)之前聚合迭代结果。图12的示例指令结束。
图13是表示可被执行以实现存储器310(图3)以生成贝叶斯神经网络的机器可读指令1300的流程图。
附加地或替代地,可以执行机器可读指令1300以实现数据存储设备330(图3)以生成贝叶斯神经网络。
贝叶斯神经网络推理逻辑311、341(图3)在乘法累加寄存器中加载多个贝叶斯神经网络参数(块1310)。例如,存储器控制器306、336中的贝叶斯神经网络推理逻辑311、341控制存储器操作以通过访问来自存储器单元302(图3)的贝叶斯神经网络参数并将贝叶斯神经网络参数加载到乘法累加寄存器514(图5)中来加载多个贝叶斯神经网络参数值(例如,图1A和11的贝叶斯神经网络参数114)。
示例BNN推理逻辑312、342(图3)基于多个贝叶斯神经网络参数114(图1A和图7)和输入数据102(图1A和图7)执行随机样本乘加运算以生成贝叶斯神经网络推理结果(块1320)。例如,示例BNN推理逻辑312、342可以对多个贝叶斯神经网络参数114和输入数据执行随机样本乘加运算以通过利用加载在示例乘法累加寄存器中的多个贝叶斯神经网络参数114对贝叶斯神经网络权重进行随机采样、将采样权重与加载在示例运算数据寄存器中的输入数据102相乘、并相加(例如,或累加)乘积来生成贝叶斯神经网络推理结果。在一些示例中,在转换用于下一个隐藏层的数据之前,对生成的乘积执行示例逐元素非线性激活函数。重复块1320的示例过程,直到生成贝叶斯神经网络推理结果。
示例存储器控制器306将贝叶斯神经网络推理结果传送到主机存储器或主机处理器(块1330)。例如,示例存储器控制器306可以通过利用示例存储器控制器306将结果路由到相应的输出数据位置来将贝叶斯神经网络推理结果(例如,第一推理迭代结果712a)传送到衬底(例如,图4的半导体衬底400)外部的主机存储器(例如,图3和图11的示例主机存储器370)或衬底外部的处理器(例如,图3的主机处理器301)。图13的示例指令结束。
图14是表示可以被执行以实现示例存储器310(图3)和/或示例数据存储设备330(图3)以生成贝叶斯神经网络的机器可读指令1400的流程图。尽管示例指令1400是结合示例存储器310的组件来描述的,但是示例指令1400可以类似地实现示例数据存储设备330的组件。示例指令1400开始于块1410,在块1410处贝叶斯神经网络推理逻辑311、312(图3)在乘法累加寄存器中加载多个贝叶斯神经网络参数值。例如,贝叶斯神经网络推理逻辑311、312可以通过访问来自存储器单元302(图3)的贝叶斯神经网络参数并将贝叶斯神经网络参数加载到乘法累加寄存器514(图5)中来加载多个贝叶斯神经网络参数值(例如,图1A和图11的贝叶斯神经网络参数114)。
BNN推理逻辑311、312确定在贝叶斯神经网络的接下来的阶段中是否存在至少一个神经元层(块1420)。例如,如果BNN推理逻辑311、312确定在示例贝叶斯神经网络中有至少一个神经元层要处理(例如,“是”),则控制前进到块1430。否则,如果BNN推理逻辑311、312确定在示例贝叶斯神经网络中没有至少一个神经元层要处理(例如,“否”),则控制前进到块1470。
示例BNN推理逻辑312随机采样贝叶斯神经网络权重(块1430)。例如,示例BNN推理逻辑312可以基于加载在乘法累加寄存器中的示例性BNN参数114在概率分布(例如,图1A和图1B的概率分布112)中随机采样贝叶斯神经网络权重。
示例计算逻辑单元314(图3)将选择的贝叶斯神经网络权重与输入数据矩阵相乘(块1440)。例如,示例计算逻辑314可以通过利用示例操作数据寄存器512(图5)以及示例乘法累加寄存器514将选择的贝叶斯神经网络权重(例如,采样权重111、113)与输入数据(例如,输入数据102)相乘以生成示例输出寄存器516处的输出。矩阵乘法运算包括将矩阵的一行的元素与另一矩阵的一列的元素相乘,并且将结果相加或累加。
示例BNN推理逻辑311、312将逐元素非线性激活函数应用于示例生成的乘积(例如,图7的示例隐藏层数据710)(块1450)。示例BNN推理逻辑311、312可以执行如上文结合图1A所述的逐元素非线性激活函数118以将生成的乘积转换为受约束值。例如,逐元素非线性激活函数118可以是tanh、sigmoid或修正的线性单元测试。
在块1460处,示例BNN推理逻辑311、312将乘积(例如,示例隐藏层数据或图7的示例结果712)发送到下一神经元层。例如,示例BNN推理逻辑312可以通过将乘积(例如,示例隐藏层数据、示例变换乘积)加载到下一神经元层(例如,图1A的第二隐藏层108)中的相应神经元(例如数据运算寄存器512(图5))来将乘积发送到下一神经元层。控制返回到块1420以确定是否有至少另一神经元层要处理。
当示例BNN推理逻辑311、312在块1420确定没有另一神经元层要处理时,示例BNN推理逻辑311、312在输出神经元处生成贝叶斯神经网络推理结果(块1470)。
示例BNN推理逻辑311、312通过使用多个采样的贝叶斯神经网络权重对输入数据执行贝叶斯神经网络推理来生成贝叶斯神经网络推理结果(块1470)。例如,示例BNN推理逻辑311、312可以通过经由示例BNN推理流水线700聚合在不同迭代处生成的结果来生成贝叶斯神经网络推理结果(例如,图7的结果712)。
示例存储器控制器306(图3)将贝叶斯神经网络推理结果传送到主机存储器或主机处理器(块1480)。例如,示例存储器控制器306可以将贝叶斯神经网络推理结果传送到衬底(例如,图4的半导体衬底400)外部的主机存储器(例如,图3和图11的示例主机存储器370)或衬底外部的主机处理器(例如,图3的主机处理器301)。图14的示例指令结束。
图15是被构造为执行图12-14的指令以实现图3的装置的示例处理器平台1500的框图。处理器平台1500可以是例如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,手机、智能手机、平板电脑(例如iPadTM))、个人数字助理(PDA)、互联网设备、DVD播放器、CD播放器、数字录像机、蓝光播放器、游戏机、个人录像机、机顶盒、耳机或其他可穿戴设备、或任何其他类型的计算设备。
所示示例的处理器平台1500包括处理器1512。所示示例的处理器1512是硬件。例如,处理器1512可以由一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或来自任何期望系列或制造商的控制器来实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在一些示例中,处理器1512实现图3的处理器301。
所示示例的处理器1512包括本地存储器1513(例如,高速缓存)。所示示例的处理器1512经由总线1518与包括易失性存储器1514和非易失性存储器1516的主存储器通信。易失性存储器1514可以通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器和/或任何其他类型的随机存取存储器设备实现。在一些示例中,易失性存储器1514实现主机存储器370(图3)。非易失性存储器1516可以由闪存和/或任何其他所需类型的存储设备来实现。对主存储器1514、1516的访问由存储器控制器控制。
所示示例的处理器平台1500还包括接口电路1520。接口电路1520可以通过任何类型的接口标准来实现,例如以太网接口、通用串行总线(USB)、蓝牙接口、近场通信(NFC)接口和/或PCI Express接口。
在所示示例中,一个或多个输入设备1522连接到接口电路1520。(一个或多个)输入设备1522允许用户将数据和/或命令输入到处理器1512中。(一个或多个)输入设备可以通过例如音频传感器、麦克风、相机(静止或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、等值点和/或语音识别系统实现。
一个或多个输出设备1524也连接到所示示例的接口电路1520。输出设备1524可以例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、就地切换(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所示示例的接口电路1520通常包括图形驱动卡、图形驱动芯片和/或图形驱动处理器。
所示示例的接口电路1520还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口之类的通信设备以促进经由网络1526与外部机器(例如,任何种类的计算设备)进行数据交换。通信可以经由例如以太网连接、数字用户线(DSL)连接、电话线连接、同轴电缆系统、卫星系统、现场无线系统、蜂窝电话系统等。
所示示例的处理器平台1500还包括用于存储软件和/或数据的一个或多个大容量存储设备1528。这种大容量存储设备1528的示例包括软盘驱动器、硬盘驱动器盘、压缩盘驱动器、蓝光盘驱动器、独立盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
图12-14中表示的机器可执行指令1532可以存储在大容量存储设备1528中、易失性存储器1514中、非易失性存储器1516中和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
在图15的示例中,存储器310(图3)和数据存储设备330(图3)与总线1518以电路连接。
从上文可以理解,已经公开了实现贝叶斯神经网络的示例方法、装置和制品。所公开的方法、装置和制品通过在主机处理器外部的装置上运行贝叶斯神经网络来提高使用计算设备的效率,使得主机处理器可以自由地执行其他计算,该装置包括存储器单元、介质访问电路和贝叶斯神经网络推理逻辑。所公开的方法、装置和制品因此针对计算机功能的一个或多个改进。
本文公开了实现贝叶斯神经网络的示例方法、装置、系统和制品。进一步的示例及其组合包括以下:示例1包括一种用于实现神经网络的装置,所述装置包括:存储器,形成在衬底上;神经网络推理逻辑,形成在与所述存储器相同的衬底上,所述神经网络推理逻辑用于:在寄存器中加载神经网络参数值,并对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和存储器控制器,用于将所述神经网络推理结果传送到所述衬底外部的主机存储器或所述衬底外部的主机处理器中的至少一者。
示例2包括示例1所述的装置,还包括介质访问电路,所述介质访问电路与所述存储器以电路连接,所述介质访问电路形成在与所述存储器和所述神经网络推理逻辑相同的衬底上,所述介质访问电路包括所述寄存器以从所述存储器接收所述神经网络参数值。
示例3包括示例1所述的装置,还包括:介质访问电路,用于访问来自所述主机处理器的命令,所述命令使所述介质访问电路启动神经网络推理流水线。
示例4包括示例1所述的装置,其中,在所述衬底的第一层上使用互补金属氧化物半导体形成所述神经网络推理逻辑,所述第一层与包括所述存储器的所述衬底的第二层相邻。
示例5包括示例1所述的装置,其中,所述存储器是三维交叉点存储器。
示例6包括示例1所述的装置,其中,所述主机处理器是图形处理单元。
示例7包括示例1所述的装置,还包括介质访问电路和所述介质访问电路中的本地存储器,所述神经网络推理逻辑基于如下操作来生成所述神经网络推理结果:在所述本地存储器中生成隐藏层数据,并通过神经网络推理流水线提供所述隐藏层数据。
示例8包括示例7所述的装置,其中,所述存储器是非易失性存储器并且所述本地存储器是易失性存储器。
示例9包括示例7所述的装置,还包括:张量逻辑,用于对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行样本乘加运算。
示例10包括示例9所述的装置,其中,所述逐元素非线性激活函数是sigmoid函数、tanh函数或ReLU函数中的至少一种。
示例11包括一种非暂态计算机可读存储介质,包括计算机可读指令,所述指令在执行时使一个或多个处理器至少:将来自形成在半导体衬底上的存储器的神经网络参数值加载到形成在相同半导体衬底上的神经网络推理逻辑的寄存器中;和对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者。
示例12包括示例11所述的非暂态计算机可读介质,其中,所述指令使所述一个或多个处理器进一步访问来自所述主机处理器的命令,所述命令使形成在相同半导体衬底上的介质访问电路启动神经网络推理流水线。
示例13包括示例11所述的非暂态计算机可读介质,其中,所述存储器是三维交叉点存储器。
示例14包括示例11所述的非暂态计算机可读介质,其中,所述主机处理器是图形处理单元。
示例15包括示例11所述的非暂态计算机可读介质,其中,所述指令使所述一个或多个处理器基于以下操作生成所述神经网络推理结果:在形成在相同半导体衬底上的介质访问电路的本地存储器中生成隐藏层数据;和通过神经网络推理流水线提供所述隐藏层数据。
示例16包括示例15所述的非暂态计算机可读介质,其中,所述存储器是非易失性存储器并且所述本地存储器是易失性存储器。
示例17包括示例15所述的非暂态计算机可读介质,其中,所述指令使所述一个或多个处理器对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行样本乘加运算。
示例18包括示例17所述的非暂态计算机可读介质,其中,所述逐元素非线性激活函数是sigmoid函数、tanh函数或ReLU函数中的至少一种。
示例19包括一种用于实现神经网络的方法,所述方法包括:将神经网络参数值从形成在半导体衬底上的存储器加载到形成在相同半导体衬底上的寄存器中;对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者。
示例20包括示例19所述的方法,还包括访问来自所述主机处理器的命令,所述命令使形成在与所述寄存器相同的半导体衬底上的介质访问电路启动神经网络推理流水线。
示例21包括示例19所述的方法,其中,所述存储器是三维交叉点存储器。
示例22包括示例19所述的方法,其中,所述主机处理器是图形处理单元。
示例23包括示例19所述的方法,其中,所述神经网络推理结果的生成基于在形成在相同半导体衬底上的本地存储器中生成隐藏层数据,并通过神经网络推理流水线提供所述隐藏层数据。
示例24包括示例23所述的方法,其中,所述存储器是非易失性存储器并且所述本地存储器是易失性存储器。
示例25包括示例23所述的方法,还包括对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行样本乘加运算。
示例26包括示例25所述的方法,其中,所述逐元素非线性激活函数是sigmoid函数、tanh函数或ReLU函数中的至少一种。
示例27包括一种用于实现神经网络的装置,所述装置包括:用于将神经网络参数值加载到形成在半导体衬底上的寄存器中的装置,所述神经网络参数值存储在形成在相同半导体衬底上的存储器中;用于对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果的装置;和用于将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者的装置。
示例28包括示例27所述的装置,还包括用于访问来自所述主机处理器的命令的装置,所述命令使与所述寄存器形成在相同半导体衬底上的介质访问电路启动神经网络推理流水线。
示例29包括示例27所述的装置,其中,所述存储器是三维交叉点存储器。
示例30包括示例27所述的装置,其中,所述主机处理器是图形处理单元。
示例31包括示例27所述的装置,其中,所述神经网络推理结果基于形成在相同半导体衬底上的本地存储器中的隐藏层数据和相同半导体衬底上的神经网络推理流水线。
示例32包括示例31所述的装置,其中,所述存储器是非易失性存储器并且所述本地存储器是易失性存储器。
示例33包括示例31所述的装置,还包括:用于对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行样本乘加运算的装置。
示例34包括示例33所述的装置,其中,所述逐元素非线性激活函数是sigmoid函数、tanh函数或ReLU函数中的至少一种。尽管本文公开了某些示例方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利涵盖了完全落入本专利权利要求范围内的所有方法、装置和制品。
Claims (25)
1.一种用于实现神经网络的装置,所述装置包括:
存储器,形成在衬底上;
神经网络推理逻辑,形成在与所述存储器相同的衬底上,所述神经网络推理逻辑用于:
在寄存器中加载神经网络参数值;和
对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和
存储器控制器,用于将所述神经网络推理结果传送到所述衬底外部的主机存储器或所述衬底外部的主机处理器中的至少一者。
2.如权利要求1所述的装置,还包括:介质访问电路,所述介质访问电路与所述存储器以电路连接,所述介质访问电路形成在与所述存储器和所述神经网络推理逻辑相同的衬底上,所述介质访问电路包括所述寄存器以从所述存储器接收所述神经网络参数值。
3.如权利要求1所述的装置,还包括:介质访问电路,用于访问来自所述主机处理器的命令,所述命令使所述介质访问电路启动神经网络推理流水线。
4.如权利要求1所述的装置,其中,在所述衬底的第一层上使用互补金属氧化物半导体形成所述神经网络推理逻辑,所述第一层与包括所述存储器的所述衬底的第二层相邻。
5.如权利要求1所述的装置,其中,所述存储器是三维交叉点存储器。
6.如权利要求1所述的装置,其中,所述主机处理器是图形处理单元。
7.如权利要求1-6中任一项所述的装置,还包括:介质访问电路和所述介质访问电路中的本地存储器,所述神经网络推理逻辑基于如下操作来生成所述神经网络推理结果:在所述本地存储器中生成隐藏层数据,并通过神经网络推理流水线提供所述隐藏层数据。
8.如权利要求7所述的装置,其中,所述存储器是非易失性存储器并且所述本地存储器是易失性存储器。
9.如权利要求7所述的装置,还包括:张量逻辑,用于对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行所述样本乘加运算。
10.如权利要求9所述的装置,其中,所述逐元素非线性激活函数是sigmoid函数、tanh函数或ReLU函数中的至少一种。
11.一种用于实现神经网络的方法,所述方法包括:
将神经网络参数值从形成在半导体衬底上的存储器加载到形成在相同半导体衬底上的寄存器中;
对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果;和
将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者。
12.如权利要求11所述的方法,还包括:访问来自所述主机处理器的命令,所述命令使形成在与所述寄存器相同的半导体衬底上的介质访问电路启动神经网络推理流水线。
13.如权利要求11所述的方法,其中,所述存储器是三维交叉点存储器。
14.如权利要求11所述的方法,其中,所述主机处理器是图形处理单元。
15.如权利要求11-14中任一项所述的方法,其中,所述神经网络推理结果的生成基于如下项:在形成在相同半导体衬底上的本地存储器中生成隐藏层数据,并通过神经网络推理流水线提供所述隐藏层数据。
16.如权利要求15所述的方法,其中,所述存储器是非易失性存储器并且所述本地存储器是易失性存储器。
17.如权利要求15所述的方法,还包括:对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行所述样本乘加运算。
18.如权利要求17所述的方法,其中,所述逐元素非线性激活函数是sigmoid函数、tanh函数或ReLU函数中的至少一种。
19.一种机器可读存储介质,包括代码,所述代码在被执行时使得机器执行权利要求11-18中任一项所述的方法。
20.一种用于实现神经网络的装置,所述装置包括:
用于将神经网络参数值加载到形成在半导体衬底上的寄存器中的装置,所述神经网络参数值存储在形成在相同半导体衬底上的存储器中;
用于对所述神经网络参数值和输入数据执行样本乘加运算以生成神经网络推理结果的装置;和
用于将所述神经网络推理结果传送到所述半导体衬底外部的主机存储器或所述半导体衬底外部的主机处理器中的至少一者的装置。
21.如权利要求20所述的装置,还包括:用于访问来自所述主机处理器的命令的装置,所述命令使与所述寄存器形成在相同半导体衬底上的介质访问电路启动神经网络推理流水线。
22.如权利要求20所述的装置,其中,所述存储器是三维交叉点存储器。
23.如权利要求20所述的装置,其中,所述主机处理器是图形处理单元。
24.如权利要求20所述的装置,其中,所述神经网络推理结果基于如下项:形成在相同半导体衬底上的本地存储器中的隐藏层数据,和相同半导体衬底上的神经网络推理流水线。
25.如权利要求20-24中任一项所述的装置,还包括:用于对所述本地存储器中的隐藏层数据执行矩阵计算和逐元素非线性激活函数以执行所述样本乘加运算的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,181 | 2020-12-23 | ||
US17/133,181 US20210150323A1 (en) | 2020-12-23 | 2020-12-23 | Methods and apparatus to implement a neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114662646A true CN114662646A (zh) | 2022-06-24 |
Family
ID=75910019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111396101.1A Pending CN114662646A (zh) | 2020-12-23 | 2021-11-23 | 实现神经网络的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210150323A1 (zh) |
CN (1) | CN114662646A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220398037A1 (en) * | 2021-06-14 | 2022-12-15 | Western Digital Technologies, Inc. | Systems and Methods of Compensating Degradation in Analog Compute-In-Memory (ACIM) Modules |
CN115312095B (zh) * | 2022-10-10 | 2023-01-03 | 电子科技大学 | 一种支持内部数据更新的存内计算流水乘加电路 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160093624A1 (en) * | 2014-09-25 | 2016-03-31 | Kilopass Technology, Inc. | Thyristor Volatile Random Access Memory and Methods of Manufacture |
US10127494B1 (en) * | 2017-08-02 | 2018-11-13 | Google Llc | Neural network crossbar stack |
US11315019B2 (en) * | 2017-11-15 | 2022-04-26 | Google Llc | Learning neural network structure |
US10496374B2 (en) * | 2018-03-22 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Crossbar array operations using ALU modified signals |
KR20200139858A (ko) * | 2019-06-04 | 2020-12-15 | 삼성전자주식회사 | 메모리 장치 |
US11374171B2 (en) * | 2019-06-17 | 2022-06-28 | Samsung Electronics Co., Ltd. | Memristor and neuromorphic device comprising the same |
-
2020
- 2020-12-23 US US17/133,181 patent/US20210150323A1/en active Pending
-
2021
- 2021-11-23 CN CN202111396101.1A patent/CN114662646A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210150323A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Goldsborough | A tour of tensorflow | |
JP2021521505A (ja) | 包括的機械学習サービスを提供するアプリケーション開発プラットフォームおよびソフトウェア開発キット | |
CN116011510A (zh) | 用于优化机器学习架构的框架 | |
US20210319317A1 (en) | Methods and apparatus to perform machine-learning model operations on sparse accelerators | |
US20220027792A1 (en) | Deep neural network model design enhanced by real-time proxy evaluation feedback | |
US20190147342A1 (en) | Deep neural network processor with interleaved backpropagation | |
US11461651B2 (en) | System on a chip with deep learning accelerator and random access memory | |
US20220092408A1 (en) | Neural network weight distribution using a tree direct-memory access (dma) bus | |
CN114662646A (zh) | 实现神经网络的方法和装置 | |
EP3836030A1 (en) | Method and apparatus with model optimization, and accelerator system | |
US20220147812A1 (en) | Compiler with an artificial neural network to optimize instructions generated for execution on a deep learning accelerator of artificial neural networks | |
US20210264237A1 (en) | Processor for reconstructing artificial neural network, electrical device including the same, and operating method of processor | |
US10990525B2 (en) | Caching data in artificial neural network computations | |
CN113490955A (zh) | 用于产生金字塔层的架构的系统和方法 | |
US11704562B1 (en) | Architecture for virtual instructions | |
CN116011509A (zh) | 硬件感知的机器学习模型搜索机制 | |
WO2023097428A1 (en) | Methods and apparatus to perform parallel double-batched self-distillation in resource-constrained image recognition applications | |
US11954580B2 (en) | Spatial tiling of compute arrays with shared control | |
WO2022040963A1 (en) | Methods and apparatus to dynamically normalize data in neural networks | |
US20220147810A1 (en) | Discovery of hardware characteristics of deep learning accelerators for optimization via compiler | |
US20220147808A1 (en) | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network | |
US11922306B2 (en) | Tensor controller architecture | |
US11972349B1 (en) | Flexible compute array utilization in a tensor processor | |
JP2020191017A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
WO2020121030A1 (en) | Caching data in artificial neural network computations |
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 |