CN112101534A - 用于深度神经网络的可重新配置存储器压缩技术 - Google Patents
用于深度神经网络的可重新配置存储器压缩技术 Download PDFInfo
- Publication number
- CN112101534A CN112101534A CN202010218244.2A CN202010218244A CN112101534A CN 112101534 A CN112101534 A CN 112101534A CN 202010218244 A CN202010218244 A CN 202010218244A CN 112101534 A CN112101534 A CN 112101534A
- Authority
- CN
- China
- Prior art keywords
- weights
- weight
- memory
- hash
- matrix
- 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
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/044—Recurrent networks, e.g. Hopfield 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/045—Combinations of 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
- G06N3/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文中描述的示例涉及神经网络,神经网络的来自矩阵的权重是从存储在具有用于生成乘法和进位运算的处理引擎的芯片上的存储器中的权重集合中选择的。存储在存储器中的权重集合中的权重的数量可少于矩阵中的权重的数量,从而减少了用于存储矩阵中的权重的存储器的量。可使用来自反向传播的梯度在训练中生成存储器中的权重。可使用对表中的条目的制表散列计算来选择存储器中的权重。
Description
技术领域
本文中描述的各种示例涉及神经网络的矩阵权重值的存储和检索。
背景技术
在人工智能(AI)和机器学习(ML)的上下文中,深度神经网络(DNN)在执行诸如对象分类、对象检测、语音识别和其它推理的任务方面变得越来越流行。DNN在性能驱动服务器和功率优化边缘装置两者中得到应用。现有技术DNN具有多个密集连接的层,其要求低计算强度(例如,每位的运算)并且虑及最小数据重新使用。低计算强度环境的示例包括多层感知器(MLP)和长短期存储器(LSTM)。由于数据集的大小的增长,模型大小(例如,网络中的参数的数量)也非常快速地增长。随着模型的大小增加,激活和权重的数量增加。这转化为存储这些参数的芯片上和芯片外存储器要求的增加。由这些模型所使用的权重的大小常常超过具有加速器的芯片上可用的存储器的总量,并且外部存储器(例如,动态随机存取存储器(DRAM)、盘或固态驱动器)与加速器之间的数据转移招致(incur)显著的能量开销和数据的可用性的延迟。由网络中的这些低计算强度引起的输入/输出(I/O)存储器瓶颈可导致硬件利用不足,并且可限制技术缩放的优点。
附图说明
图1描绘了全连接的神经网络的示例。
图2描绘了系统。
图3描绘了用于深度神经网络的基于散列的(hashing-based)权重共享方案的一示例。
图4A描绘了神经网络的训练中间或隐藏层的前馈阶段(feed-forward phase)。
图4B描绘了使用误差反向传播(error back-propagation)的神经网络的训练阶段的一示例。
图5A示出了供在基于散列的权重压缩方案中使用的一示例高级别微架构。
图5B描绘了用于通过使用多个计算单元来并行地确定多个虚拟权重的方式的一示例。
图6A和6B提供了采用虚拟权重的检索和处理的数据并行架构的一示例。
图7描绘了复用器树的一示例。
图8描绘了可用于从神经网络的紧凑的权重集合中提供权重矩阵中的权重的过程。
图9描绘了系统。
具体实施方式
用于降低NN模型的存储器占用的现有解决方案包括降低的位精度、稀疏性/剪枝(sparsity/pruning)等。降低位精度(量化)涉及通过在前馈操作期间量化值和误差反向传播来训练具有高精度值的网络。稀疏性/剪枝技术涉及用于移除冗余参数的迭代训练过程,使得准确度的降级最小。
当与半精度浮点网络比较时,诸如二进制(-1/1权重)和三进制(-1/0/1权重)网络的量化的神经网络可提供大约8-16倍的模型大小的降低。然而,为了实现类似的网络性能,量化的网络常常必须在模型大小上被放大,从而损失了压缩比的重要部分。剪枝有助于通过迭代训练摆脱冗余的模型参数。然而,得到的网络通常在权重连接中具有非结构化的稀疏性,从而没有最大化权重压缩的量。此外,基于剪枝的权重压缩在训练期间以完全密集的权重矩阵开始,并且因此仅对于推理阶段实现压缩益处。
各种实施例规定(provide for)了在对性能的影响可忽略的情况下,采用空间高效的散列电路系统来压缩由以下网络使用的权重的存储器大小:DNN、人工神经网络、神经网络、卷积神经网络、空间不变人工神经网络(SIANN)、深度Q网络(DQN)及其变化。模型大小的高压缩比可被实现,导致超过其它权重压缩技术的面积和能量节省。压缩比被定义为压缩的模型大小(NN参数)与未压缩模型大小的比。
各种实施例提供了低硅占用系统或环境以及基于可重新配置散列的权重压缩技术以至少降低DNN的存储器占用。在一些实施例中,散列方案将随机的连接集合分组到桶(bucket)中,使得它们应用相同的权重,从而提供高压缩比,因为单个权重被存储以用于多个连接的桶。相应地,对于DNN,一个或多个隐藏层的权重矩阵的一部分或全部可被压缩成较小的权重集合。可在训练或推理的运行时间期间通过使用散列表、散列表的一个或多个条目的异或(XOR)、随后基于来自XOR运算的输出从较小的权重集合的权重查找操作来构造权重矩阵。权重矩阵中的某些元素可共享相同的值,从而降低在训练或推理期间存储和使用的权重的量。在训练阶段期间,可针对权重矩阵设置压缩方案。在推理阶段期间,可应用相同的压缩方案,从而提供跨训练和推理阶段两者的存储器压缩益处。
各种实施例可根据降低对芯片外存储器或存储装置的存储器访问来提供高能量节省以访问权重。与从例如静态随机存取存储器(SRAM)或外部芯片外存储器检索权重的基线网络(baseline network)相比,提出的散列单元可提供多于5X的能量节省来计算存储器索引以及从本地寄存器中取字。通过采用散列方案来压缩全连接的层,在MNIST、CIFAR-10和TIMIT数据集上验证(validate)了各种实施例。比起基线网络来,对于诸如多层感知器(MLP)的不同网络和诸如长短期存储器(LSTM)的循环网络,各种实施例允许超过64-89X的权重存储器降低。使用本文中描述的散列技术压缩的LSTM使用50X的更少权重来实现具有256个隐藏神经元(neuron)/层的2层双向网络的类似分类准确度(与来自基线网络的86%分类准确度相比,84%音素分类准确度)。50X压缩比在存储器占用方面类似于具有0.6%非零权重的稀疏网络。这样的稀疏网络由于分类准确度的严重降级而很难处理(intractable)。50X压缩比也大致转化成对外部存储器访问(来自DRAM、HBM等)的能量节省的50X改进,因为模型常常被存储在外部存储器中并且在调用推理操作时涌到加速器中。
各种实施例使DNN中的结构化稀疏性能够实现高效权重存储。可通过可重新配置的散列单元来调整结构化稀疏性以实现更好的网络性能。当与其它权重压缩方案比较时,各种实施例可在没有附加存储器开销的情况下以最小的性能的降级实现极高的压缩比。在训练阶段期间设置压缩方案,并且在训练阶段期间实现存储器压缩的类似益处。此外,权重矩阵的重构利用计算而不是存储器,从而由于非常有限量的存储器访问而提供了高能效。
图1描绘了全连接神经网络的一示例,尽管实施例不限于在此示例中使用。全连接神经网络包括通过突触(synapse)Wij(存储器单元)彼此连接的神经元ai l(计算单元)。假设DNN的第i全连接层中的神经元的数量是Nl i,则第i与第i+1全连接层之间的突触连接的数量是Nl i × Nl i+1。随着DNN的模型大小增加以应对增加的大小数据集,存储该模型所需的存储器的量也增加。然而,神经网络加速器常常设计有固定的存储器预算。如果两个层之间的突触连接的数量超过此预算,则权重矩阵的部分从芯片外存储器涌到芯片上存储器,并且计算被执行。遵循相同的过程,直到接收到整个权重矩阵。然而,芯片外数据移动招致极高的能量开销,并且还可能在权重矩阵的部分的可用性方面引入延迟。
图2描绘了这样的系统,在所述系统中可使用实施例。存储器202可存储真实权重值,供在训练或推理期间在生成矩阵中的一个或多个虚拟权重中使用。存储器202可以是易失性存储器(例如,DRAM、SRAM、高速缓存),并且在一些情况下使用高带宽存储器(HBM)可兼容接口,或者可以是存储级存储器(storage class memory)(例如,因特尔傲腾(IntelOptane)或三星(Samsung)Z-NAND)。芯片上权重值的存储可指存储器装置中权重值的存储,所述存储器装置在与中央处理单元(CPU)204、图形处理单元(GPU)206或加速器208(要访问权重并使用权重对输入值执行计算)的母板、管芯或插槽相同的母板、管芯或插槽上。可经由总线或接口(例如,PCIe)访问芯片外存储器220或存储装置222,并且芯片外存储器或存储装置安装在与处理器、加速器、GPU、CPU或核(要访问权重并使用权重对输入值执行计算)的母板、管芯或插槽分开的母板、管芯或插槽上。
在一些实施例中,CPU可包括一个或多个处理器核。核可处理指令,所述指令当被执行时,执行用于系统和/或用户软件的操作。在一些实施例中,一个或多个核中的至少一个被配置成处理具体指令集。在一些实施例中,指令集可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。一个或多个核可各自处理不同的指令集,所述指令集可包括用于促进其它指令集的仿真的指令。处理器核还可包括其它处理装置,例如数字信号处理器(DSP)。
在一些实施例中,一个或多个核包括高速缓存存储器。取决于架构,一个或多个核可具有单个内部高速缓存或多级的内部高速缓存。在一些实施例中,高速缓存存储器在一个或多个处理器核的各种组件之间被共享。在一些实施例中,一个或多个核还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),所述外部高速缓存可使用已知的高速缓存一致性技术在一个或多个处理器核之间被共享。
图3描绘了用于DNN的基于散列的权重共享方案的一示例。各种实施例提供了采用散列函数来生成矩阵中的虚拟权重的值和坐标的可重新配置的权重共享方案。突触权重被分组成随机的连接集合,使得相同散列桶中的连接共享相同权重。真实权重矩阵含有唯一权重值,并且存储在具有使用输入和权重值执行计算的计算引擎的芯片上。例如,取决于应用和硬件,真实权重值可以是任何整数(8、16位)或任何浮点精度(半、单或双)数。相比之下,虚拟权重可在运行时间生成,并且不需要在训练或推理阶段之前存储在芯片上或芯片外,尽管虚拟权重的一部分可存储在芯片上或芯片外。虚拟权重在训练期间被存储并且根据真实权重值被确定。从真实权重中检索虚拟权重以用于推理阶段。在训练和推理的运行时间期间,使用散列单元来构造用于计算的虚拟权重矩阵。散列单元可使用从芯片上存储器检索的预设散列表,所述表含有虚拟权重(Wv)和真实权重(Wr)之间的映射并且在训练阶段期间可重新配置。
虚拟权重矩阵通过以下等式构造:,其中hl是对于第l层的散列函数。基于散列表的权重压缩方案是通过相同或不同的真实-虚拟权重映射方案来表示隐藏层的方式。在一些实施例中,通过使用散列表,虚拟权重矩阵中的虚拟权重到真实权重的映射可设置为伪随机选择的真实权重。注意,在训练阶段期间,可尝试将虚拟权重映射到真实权重的一个或多个表,并且可选择产生最佳性能的表以供在推理期间使用。
图4A描绘了神经网络的中间或隐藏层的训练的前馈阶段。在此示例中,输入层402提供变量ao 1至a2 1(例如,神经元)。虚拟权重404提供了大小为3×4的权重矩阵以用于与隐藏层406的应用连接。隐藏层406可提供经由加权连接(例如,突触)到输出层或另一个隐藏层(未示出)的链接(link)。输出层可接收加权输入集合并通过激活函数产生输出以提供预测或推理。散列表410可表示索引的伪随机选择。在此示例中,散列单元408使用散列表410从所存储的真实权重412之中伪随机地选择虚拟权重来生成虚拟权重404中的权重。换句话说,通过使用散列表410中的条目,散列单元408可从所存储的真实权重412之中伪随机地选择真实权重以用于包括在虚拟权重404中。所存储的真实权重412可以是存储在具有处理器或加速器的芯片上的存储器中的权重值,所述处理器或加速器要使用输入变量和虚拟权重404来执行计算。在此示例中,四(4)个真实权重被分布在十二(12)个虚拟权重之间,使得单个真实权重分配给三(3)个虚拟权重,但是在伪随机位置中。在其它示例中,可用的真实权重可在虚拟权重之间不均匀分配。
图4B描绘了使用误差反向传播的神经网络的训练阶段的一示例。在利用全应用的权重的前馈之后,存在输出与目标输出的比较、误差反向传播、增量(delta)权重/梯度(gradient)的确定以及替换真实权重值的生成。输出和目标之间的误差的反向传播(例如,损失函数)可使用均方根误差被确定,铰链损失(hinge loss)和随机梯度下降(stochasticgradient descent)可被应用以校正误差,所述铰链损失和随机梯度下降是针对每个参数确定损失函数的最小值(导数)的函数。一个或多个隐藏层的权重矩阵的训练可通过其它技术来实现,所述技术包括但不限于:由OpenAI提出的进化策略、凸优化、离散优化、近端反向传播、直接反馈对准、遗传算法、马尔可夫链蒙特卡罗(MCMC)、模拟退火、单纯形、Broyden-Fletcher-Goldfarb-Shanno (BFGS)、网格搜索等。
在一些示例中,在训练神经网络之后,虚拟权重404的梯度是可用的。针对从相同真实权重中选择的虚拟权重所确定的梯度可被加在一起并除以共享相同真实权重的虚拟权重的数量。例如,可将梯度ΔW00、ΔW02和ΔW01加在一起并除以三以提供覆盖源W0的得到的W0值。可将梯度ΔW10、ΔW11和ΔW12加在一起并除以三以提供覆盖源W1的得到的W1值。可将梯度ΔW20、ΔW20和ΔW22加在一起并除以三以提供覆盖源W2的得到的W2值。可将梯度ΔW30、ΔW32和ΔW31加在一起并除以三以提供覆盖源W3的得到的W3值。得到的值W0-W3可被存储到真实权重412的相应存储的W0-W3中。
制表散列单元可用于确定虚拟权重位置和源真实权重值之间的反向(reverse)关联。在推理期间,基于制表散列单元和散列表中的条目,真实权重被加载并用于虚拟权重。可使用相对于图2的一个或多个核或加速器来执行散列单元和加法器以及缩放因子计算。
图5A示出了供在基于散列的权重压缩方案中使用的一示例高级别微架构。一示例散列方案将可重新配置散列表502与计算单元504一起使用。可使用从来自权重和散列表存储器510的表0至表n-1中选择的表用随机选取的条目填充散列表502。表0至表n-1是散列表,其包括从对于权重0至权重n-1之中的权重的索引集合中选择的伪随机条目。加载信号使存储在寄存器堆中的散列表(例如,表0至表n-1)和权重(例如,权重0至权重n-1)被加载到相应的散列表502和真实权重506中。
权重和散列表存储器510可位于具有计算单元504和PE 512的芯片上,由此它们共享相同母板、电路板和/或物理外壳。在计算单元504中使用XOR树来生成可虑及较小的散列表大小和较少的存储器使用的散列。
散列表502中的条目的宽度(N或n)可等于来自权重和散列表存储器510中的权重0至权重n-1的真实权重条目的数量的索引地址的长度。在训练阶段(例如,前馈计算)期间,散列表502中的条目被用于确定用于将到真实权重的索引映射到一个或多个虚拟权重的虚拟权重索引。计数器可用于跟踪虚拟权重的索引。对于具有p x q个虚拟权重的层,计数器从0运行到p*q-1。
虚拟权重具有对应的存储器地址,由此机器学习过程或软件参考所述地址来检索权重。根据各种实施例,从所述地址导出(derive from)计数器。在实施例中,通过位屏蔽(bit-masking)将计数器分裂成多个非重叠段,并且将分段的计数器用作指针来选择散列表502中的条目以虑及散列表502的多个条目的并行选择。
来自散列表502的多个输出被提供到计算单元504。计算单元504确定供在一个或多个虚拟权重508中使用的真实权重的突触地址。对于三个元素XOR运算和k =64条目散列表,三个64到1的N位复用器可用于将来自散列表的三个条目提供到XOR运算。在一些实施例中,使用异或(XOR)单元来实现计算单元504,所述异或单元使用从散列表502检索的一个或多个条目来执行计算。在此示例中,可将来自散列表的3N位条目一起XOR以生成真实权重的索引或地址。使用计算单元504的计算规定了对来自散列表502的条目的制表散列操作。长度N的虚拟权重索引是根据对来自散列表502的条目的XOR树运算提供的。值nh表示并行的PE和散列操作的数量。相应地,在单个时钟周期中,可执行nh个并行XOR运算以计算nh个真实权重的位置(例如,索引)。nh的值是设计选择,并且除了其它因素之外,还可基于硅的大小。
在一些示例中,散列表502包括k个条目,其中k = 2n/3,并且n是每计数器值的地址位的数量。在此示例中,n = 18并且k = 218/3 =64。并行的散列运算和PE的数量= nh。相应地,0:(nh-1)非重叠计数器值可并行使用。在下一个周期中,计数器值可从nh:(2*nh-1)变动。计数器(地址)值可继续递增,直到其达到(p*q-1)为止。计数器可以被划分成log2(k)个位的段。每计数器值读取的散列表条目的数量= ceil(n/log2(k))。在此示例中,n = 18以及k =64,并且每计数器值读取的散列表条目的数量= 3。注意,随着k增加,每计数器值读取更多的散列表存储器和更少的散列表条目(对于给定的地址宽度),并且可使用更少的XOR电路。
来自计算单元504的虚拟权重索引用于访问来自权重和散列表存储器510的真实权重值。在从真实权重(权重0至权重n-1)获得虚拟权重508的值之后,虚拟权重被传递到处理元件(PE)512上。PE 512提供对虚拟权重和输入激活的乘法和累加(MAC)运算。PE可被实现为乘法器和累加器(MAC)单元。MAC单元执行xw +部分总和,其中虚拟权重是w,并且x是输入值。PE的一示例电路以分解图示出。将所得到的部分总和写回到存储器供在另一层或输出中使用。
图5A的系统能够实现单指令多数据(SIMD)操作,因为通过采用多个XOR树结构,可并行获得多个虚拟权重,所述XOR树结构可对从单个散列表取的指针进行操作。
图5A的系统通过跨网络的多个层或层内的段对散列函数进行时间复用能够实现模块化结构。例如,将一个散列表从外部存储器或芯片上存储器或存储装置加载到系统中。也将对应压缩的权重(真实权重)从与存储散列表的存储器相同或不同的存储器加载到系统存储器中。使用PE单元执行计算,并且将下一个散列表和压缩的(真实权重)权重的集合加载到系统中。
图5B描绘了通过使用多个计算单元来并行地确定多个虚拟权重的方式的一示例。在此示例中,虚拟权重的存储器地址是18位(Addr [17:0])。在此实例中,addr[17:12]、addr[11:6]及addr[5:0]可用作到散列表602中的条目的指针。addr[5:0]表示行内的列,并被分配到并行计算单元604-0至604-63。addr[17:6]可通过将生成addr[17:12]和addr[11:6]的所有可能值的所有组合的所有可能值被递增。addr[17:6]表示要读取的存储器的“行”,使得addr[17:6]的计数器递增以前进到另一行。计算单元604-0至604-63针对虚拟权重计算真实权重的地址。相应地,行的所有列的虚拟权重地址可由计算单元604-0至604-63并行地确定。针对与列号62中的虚拟权重相关联的计算单元604-62示出了一示例计算单元。虚拟权重地址可对应于真实权重606中的真实权重地址。行的所有列的真实权重值可并行地输出到处理引擎608- 0至608-nh-1,其中真实权重值是虚拟权重的值。处理引擎608-0至608-nh-1可使用虚拟权重和输入激活值来执行乘法和进位运算。
图6A和6B提供了采用使用多个核、加速器或处理装置来检索和处理虚拟权重的数据并行架构的一示例。如果神经网络层大,其矩阵中具有许多虚拟权重值,则二维权重矩阵可被分裂成具有单独的散列表和真实权重的不同块(chunk)。可在多个不同的核上并行地执行各种块的虚拟权重计算。例如,虚拟权重矩阵中的虚拟权重的列可被映射到不同的核以允许在不同的核上并行的点积计算。每个块可使用散列表映射到真实权重,并且可跨多个块使用相同或不同的散列表。相关计算和权重的块可以是数据独立的,并且不需要核之间的数据移动来允许并行操作。
对于具有从k =64大小的散列表接收三个条目的3个XOR单元的计算单元,三个64:1复用器可用于控制哪些值输出到nh个计算单元(例如,XOR)。然而,三个64:1复用器所需的硅面积可能过大。各种实施例提供了从散列表中选择条目的另一种方式,比起基线三个64比1复用器方案来,该方式可导致40%的面积的节省和功率节省。
在一些实施例中,在其中使用计算元件的多个副本(replica)的情况下,到散列表中的条目的开始计数器可设置成nh的最接近的倍数,其中nh是计算元件的副本的数量。换句话说,设置虚拟权重地址,使得并行计算单元的开始地址是nh的整数倍。此属性强制所有nh个计数器在除最低有效nh个位之外的所有位位置中具有相同值。因此,可将用于对应的子范围字的得到的复用器树实现为如图7中所示出的小复用器树和移位寄存器。指针中的其它子范围字对于并行计算单元是恒定的,并且因此对于并行计算单元可共享从散列表接收输出的复用器树。使用计算单元对来自复用器树的输出进行XOR以获得存储器索引,所述存储器索引又用于索引真实权重以获得虚拟权重。然后,将虚拟权重发送到处理元件(例如,MAC装置)以用于使用输入值的计算。
例如,针对并行单元的数量nh=16,散列表可被分裂成的16个条目的4个群组(例如,条目0-15、16-31、32-47和48-63)。在此示例中,计数器值是18位值,并且在其最低有效位C[3:0]中具有0000。计数器位C[5:4]可用作到要使用的哪些散列表条目(例如,H0-H15、H16-31、H32-H47或H48-H63)中的索引。计数器位C[11:6]可表示用于从散列表中的64个条目当中选择一个的计算索引。计数器位C[17:12]也可表示用于从散列表中的64个条目当中选择一个的计算索引。在由计数器位C[11:6]和计数器位C[17:12]选择的条目之间执行的XOR运算被输出,并作为输入馈送到第二XOR 702。第二XOR 702在由计数器位C[5:4]选择的16个条目群组与来自计数器位C[11:6]和计数器位C[17:12]的XOR运算的输出之间执行XOR。来自第二XOR 702的输出提供到真实权重的索引来选择真实权重以用于提供到处理元件(PE)。
图8描绘了可用于从神经网络的存储权重的紧凑集合分配权重矩阵中的权重的过程。动作802-808可在训练中使用。在802,所述过程可使用存储在存储器中的权重值来生成矩阵的权重。例如,动作802可包括动作804,由此所述过程使用散列计算来从稀疏的权重集合之中选择权重值。稀疏权重的数量可少于权重矩阵中的权重的数量。散列计算可以是涉及XOR运算的使用的制表散列计算。散列计算可使用散列表的两个或更多条目,其中条目是从稀疏权重值集合中的多个权重中选择的伪随机值。稀疏的权重集合可存储在具有使用权重执行乘法(例如,矩阵乘法)的处理元件的芯片上。
在806,所述过程可基于训练操作来更新存储在稀疏权重值中的权重值。例如,作为训练神经网络的结果,梯度值可被反向传播并且用于修改稀疏权重值。例如,动作806可包括动作808。在动作808,可将与相同稀疏权重值相关联的权重矩阵中权重的得到的梯度值加在一起,通过除以共享相同稀疏权重值的权重的数量来缩放,并且得到的值存储在稀疏权重值中。可使用其它缩放值。
动作810至812可以用于推理。在810,所述过程可基于散列操作来生成到存储在存储器中的稀疏权重值的索引。例如,可使用制表散列技术来从散列表中选择两个或更多条目,并将条目一起XOR。条目可表示从在806和808中确定的稀疏权重集合中随机选择权重。在812,可从与执行XOR运算的计算元件和执行乘法的处理元件的管芯或板相同的管芯或板上的存储器检索权重。来自稀疏权重的多个权重可被并行检索,并且被提供用于并行乘法和进位运算。本文中描述的各种系统和架构可用于使用散列表和XOR运算来并行地确定稀疏权重值。
图9描绘了系统。系统900包括处理器910,所述处理器为系统900提供指令的处理、操作管理和执行。处理器910可包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核、或为系统900提供处理的其它处理硬件、或处理器的组合。处理器910控制系统900的总体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)等,或此类装置的组合。
在一个示例中,系统900包括耦合到处理器910的接口912,所述接口912可表示用于需要更高带宽连接的系统组件(诸如,存储器子系统920或图形接口组件940或加速器942)的更高速接口或高吞吐量接口。接口912表示接口电路,其可以是独立组件或被集成到处理器管芯上。在存在的情况下,图形接口940与图形组件通过接口连接,以用于向系统900的用户提供可视显示。在一个示例中,图形接口940可驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可指具有大约100 PPI(每英寸的像素)或更大的像素密度的显示,并且可包括诸如全HD (例如,1080p)、视网膜显示、4K(超高清晰度或UHD)或其它格式的格式。在一个示例中,显示器可包括触摸屏显示器。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或两者来生成显示。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或两者来生成显示。
加速器942可以是可由处理器910访问或使用的固定功能卸载引擎。例如,加速器942之中的加速器可提供压缩(DC)能力、诸如公钥加密(PKE)的密码术(cryptography)服务、密码(cipher)、散列/认证能力、解密或其它能力或服务。在一些实施例中,附加地或备选地,加速器942之中的加速器提供如本文中描述的现场选择控制器能力。在一些情况下,加速器942可集成到CPU插槽(例如,到包括CPU并且给CPU提供电接口的母板或电路板的连接器)中。例如,加速器942可包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑、以及诸如现场可编程门阵列(FPGA)的可编程处理元件。加速器942可提供可使其可供人工智能(AI)或机器学习(ML)模型加以使用的图形处理单元、处理器核或多个神经网络。例如,AI模型可使用或包括以下项中的任何或其组合:强化学习方案、Q-学习方案、深度-Q学习或异步优势Actor-Critic(A3C)、组合神经网络、循环组合神经网络或其它AI或ML模型。可使多个神经网络、处理器核或图形处理单元可供AI或ML模型加以使用。
本文中描述的各种实施例可由处理器910、图形940和/或加速器942使用,以确定用于神经网络的权重,其中权重被存储在存储器930中。
存储器子系统920表示系统900的主存储器,并且为要由处理器910执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统920可包括一个或多个存储器装置930,诸如只读存储器(ROM)、闪速存储器、易失性存储器、或此类装置的组合。存储器930存储和托管(host)(除其它事情以外)操作系统(OS)932以提供用于在系统900中执行指令的软件平台。此外,应用934可在来自存储器930的OS 932的软件平台上执行。应用934表示具有其自己的操作逻辑以执行一个或多个功能的执行的程序。过程(process)936表示向OS932或一个或多个应用934或组合提供辅助功能的代理或例程。OS 932、应用934和过程936提供软件逻辑以为提供系统900功能。在一个示例中,存储器子系统920包括存储器控制器922,其是用于生成命令并向存储器930发布命令的存储器控制器。将理解,存储器控制器922可以是处理器910的物理部分或接口912的物理部分。例如,存储器控制器922可以是集成到具有处理器910的电路上的集成存储器控制器。
易失性存储器是如果到装置的功率中断则其状态(并且因此存储在其中的数据)不确定的存储器。动态易失性存储器要求刷新存储在装置中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器),或某一变体(诸如,同步DRAM(SDRAM))。如本文中所描述的存储器子系统可与诸如以下存储器技术的多个存储器技术兼容:DDR3(双倍数据速率版本3,由JEDEC(联合电子装置工程委员会)在2007年6月27日最初发布)、DDR4(DDR版本4,初始规范由JEDEC在2012年九月出版)、DDR4E(DDR版本4)、LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC在2013年8月)、LPDDR4(LPDDR版本4,JESD209-4,由JEDEC在2014年8月最初出版)、WIO2(宽输入/输出版本2,JESD229-2,由JEDEC在2014年8月最初出版)、HBM(高带宽存储器,JESD325,由JEDEC在2013年10月最初出版)、LPDDR5(当前由JEDEC讨论中)、HBM2(HBM版本2,当前由JEDEC讨论中),或其它存储器技术或存储器技术的组合,以及基于此类规范的派生或扩展的技术。JEDEC标准在www.jedec.org可得到。
虽然没有具体示出,但是将理解,系统900可包括装置之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其它总线。总线或其它信号线可将组件通信地或电地耦合在一起,或者既通信地又电地耦合组件。总线可包括物理通信线、点对点连接、桥接器、适配器、控制器或其它电路系统或组合。总线可包括例如以下总线中的一个或多个:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线。
在一个示例中,系统900包括接口914,所述接口914可耦合到接口912。在一个示例中,接口914表示接口电路,其可包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口914。网络接口950为系统900提供通过一个或多个网络与远程装置(例如,服务器或其它计算装置)通信的能力。网络接口950可包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)或基于其它有线或无线标准的或专有接口。网络接口950可向远程装置传送数据,这可包括发送存储在存储器中的数据。网络接口950可从远程装置接收数据,这可包括将接收的数据存储到存储器中。可结合网络接口950、处理器910和存储器子系统920使用各种实施例。
在一个示例中,系统900包括一个或多个输入/输出(I/O)接口960。I/O接口960可包括一个或多个接口组件,用户通过所述接口组件与系统900交互(例如,音频、字母数字、触觉/触摸或其它接口连接)。外围接口970可包括上面没有具体提到的任何硬件接口。外围设备一般指从属地连接到系统900的装置。从属连接是这样的连接,在该连接中系统900提供操作在其上执行并且用户与其交互的软件平台或硬件平台或两者。
在一个示例中,系统900包括用于以非易失性方式存储数据的存储子系统980。在一个示例中,在某些系统实现中,存储装置980的至少某些组件可与存储器子系统920的组件重叠。存储子系统980包括(一个或多个)存储装置984,所述存储装置984可以是或包括用于以非易失性方式存储大量数据的任何常规介质(诸如,一个或多个基于光、固态或磁的盘或组合)。存储装置984经代码或指令和数据986保持在持久状态中(即,尽管中断到系统900的功率,值仍被保留)。存储装置984一般可被认为是“存储器”,尽管存储器930通常是用于向处理器910提供指令的执行或操作存储器。鉴于存储装置984是非易失性的,存储器930可包括易失性存储器(即,如果到系统900的功率中断,则数据的状态或值是不确定的)。在一个示例中,存储子系统980包括与存储装置984通过接口连接的控制器982。在一个示例中,控制器982是处理器910或接口914的物理部分,或者可包括处理器910和接口914两者中的电路或逻辑。
非易失性存储器(NVM)装置是即使到装置的功率中断其状态仍确定的存储器。在一个实施例中,NVM装置可包括块可寻址存储器装置,诸如NAND技术,或者更具体地,多阈值电平(multi-threshold level)NAND闪速存储器(例如,单电平单元“SLC”)、多电平单元(“MLC”)、四电平单元(“QLC”)、三电平单元(“TLC”)或某一其它NAND)。NVM装置还可包括字节可寻址就地写(write-in-place)三维交叉点存储器装置,或其它字节可寻址就地写NVM装置(也称为持久存储器),诸如单电平或多电平相变存储器(PCM)或相变存储器与开关(phase change memory with a switch)(PCMS)、使用硫族化物相变材料(例如,硫族化物玻璃)、包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM)的电阻存储器、纳米线存储器、铁电随机存取存储器(FeRAM,FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM的NVM装置、基于自旋电子磁结存储器的装置、基于磁隧道化结(MTJ)的装置、基于DW(畴壁)和SOT(自旋轨道转移)的装置、基于晶闸管的存储器装置、或上面任何项的组合、或其它存储器。
功率源(未描绘)向系统900的组件提供功率。更具体地,功率源通常与系统900中的一个或多个功率供应通过接口连接,以向系统900的组件提供功率。在一个示例中,功率供应包括用于插入到壁装电源插座中的AC到DC(交流到直流)适配器。此类AC电源可以是可再生能源(例如,太阳能)功率源。在一个示例中,功率源包括DC功率源,诸如外部AC到DC转换器。在一个示例中,功率源或功率供应包括用于通过接近充电场进行充电的无线充电硬件。在一个示例中,功率源可包括内部电池、交流供应、基于运动的(motion-based)功率供应、太阳能功率供应或燃料电池源。
在一示例中,可使用处理器、存储器、存储装置、网络接口和其它组件的互连计算板(sled)来实现系统900。可使用高速互连,诸如PCIe、以太网或光互连(或其组合)。
本文中的实施例可在各种类型的计算和联网设备(诸如,交换机、路由器、机架和刀片服务器(blade server)(诸如,在数据中心和/或服务器场环境中采用的那些服务器))中实现。在数据中心和服务器场中使用的服务器包括阵列服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络供给(network provision)通信互连,例如将服务器集合分区成局域网(LAN),在LAN之间具有适当的交换和路由设施,以形成专用内联网。例如,云托管设施通常可采用具有大量服务器的大型数据中心。刀片包括被配置成执行服务器类型功能的单独的计算平台,即“卡上服务器”。相应地,每个刀片包括与常规服务器公用的组件,所述组件包括提供内部布线(即,总线)以用于将适当的集成电路(IC)与安装到板的其它组件耦合的主印刷电路板(主板)。
可使用硬件元件、软件元件或两者的组合来实现各种示例。在一些示例中,硬件元件可包括装置、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体装置、芯片、微芯片、芯片集等。在一些示例中,软件元件可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现一示例可根据任何数量的因素(诸如期望的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束)而变化,如针对给定实现所期望的那样。注意,硬件、固件和/或软件元件在本文中可统称或单独地称为“模块”、“逻辑”、“电路”或“电路系统”。
可使用或作为制品或至少一个计算机可读介质来实现一些示例。计算机可读介质可包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,计算机可读介质可包括用于存储或维护指令的非暂时性存储介质,所述指令在由机器、计算装置或系统执行时,使机器、计算装置或系统执行根据所描述的示例的方法和/或操作。指令可包括任何合适类型的代码,诸如源代码、编译代码、解译代码、可执行代码、静态代码、动态代码等。可根据预定义的计算机语言、方式或语法来实现指令,以用于指导机器、计算装置或系统执行某个功能。可使用任何适合的高级、低级、面向对象、可视、编译和/或解译编程语言来实现指令。
至少一个示例的一个或多个方面可由存储在表示处理器内的各种逻辑的至少一个机器可读介质上的代表性指令来实现,所述代表性指令当由机器、计算装置或系统读取时,使机器、计算装置或系统制作用于执行本文中描述的技术的逻辑。被称为“IP核”的此类表示可被存储在有形的机器可读介质上,并且被供应到各种客户或制造设施以加载到实际做逻辑或处理器的制作机器中。
短语“一个示例”或“一示例”的出现不一定全部指相同的示例或实施例。本文中描述的任何方面可与本文中描述的任何其它方面或类似方面组合,而不管所述方面是否相对于相同的附图或元件被描述。附图中所描绘的块功能的划分、省略或包括不意味着用于实现这些功能的硬件组件、电路、软件和/或元件将必然被划分、省略或包括在实施例中。
可使用表达“耦合的”和“连接的”连同它们的派生词来描述一些示例。这些术语不一定旨在作为彼此的同义词。例如,使用术语“连接的”和/或“耦合的”的描述可指示两个或更多元件彼此直接物理或电接触。然而,术语“耦合的”还可意味着两个或更多元件彼此不直接接触,但是还仍然彼此协作或交互。
术语“第一”、“第二”等在本文中不指代任何顺序、数量或重要性,而是用于将一个元件与另一个元件区分。术语“一(a和an)”在本文中不指代数量的限制,而是指代所参考的项目中的至少一个的存在。本文中参考信号使用的术语“使有效(asserted)”指代信号的状态,其中信号是活动的,并且其可通过向信号施加逻辑0或逻辑1中的任何逻辑电平来实现。术语“跟随”或“在…之后”可指紧跟或跟随某个其它事件或一些其它事件之后。根据备选实施例,也可执行步骤的其它序列。此外,取决于特定应用,可添加或移除附加步骤。可使用改变的任何组合,并且受益于本公开的本领域普通技术人员将理解其许多变化、修改和备选实施例。
除非以其它方式具体陈述,诸如短语“X、Y或Z中的至少一个”的析取(disjunctive)语言在如一般用于呈现项目、术语等的上下文内以其它方式理解,否则诸如短语“X、Y或Z中的至少一个”的析取(disjunctive)语言可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)。因此,此类析取语言一般不旨在并且不应该暗示某些实施例要求X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。此外,除非以其它方式具体陈述,诸如短语“X、Y和Z中的至少一个”的连接性语言也应该被理解为意味着X、Y、Z或其任何组合,包括“X、Y和/或Z”。
下面提供了本文中公开的装置、系统和方法的说明性示例。装置、系统和方法的实施例可包括下面描述的示例中的任何一个或多个以及任何组合。
示例1包括一种神经网络推理引擎,所述神经网络推断引擎包括:处理器以及存储器,所述处理器被配置成基于使用来自表的条目从权重集合中进行选择的制表散列操作来生成神经网络的至少一个隐藏层的矩阵的权重,其中所述表与所述至少一个隐藏层相关联,并且所述权重集合包括比至少一个隐藏层的所述矩阵的所述权重的数量更小数量的权重,所述存储器位于具有所述处理器的芯片上,所述存储器被配置成存储所述表和所述权重集合。
示例2包括任何示例的神经网络推理引擎,其中所述表要将所述矩阵的权重分组成伪随机连接集合,并且相同散列桶中的所述连接共享来自所述权重集合的相同权重。
示例3包括任何示例的神经网络推理引擎,其中至少一个隐藏层的所述矩阵的所述权重包括一个或多个权重的集合,所述权重是来自所述权重集合的单个权重值。
示例4包括任何示例的神经网络推理引擎并且包括树用于对来自所述表的至少两个条目执行XOR运算的XOR树。
示例5包括任何示例的神经网络推理引擎,其中所述存储器被配置成存储用于所述隐藏层的至少一个表和用于第二隐藏层的至少一个表。
示例6包括任何示例的神经网络推理引擎,其中所述处理器要执行至少一个乘法和进位运算以基于所述矩阵的权重和输入激活值来计算值。
示例7包括任何示例的神经网络推理引擎,其中地址与所述矩阵的权重相关联,并且所述神经网络推理引擎包括:复用器,所述复用器用于从所述表转移条目以用于所述制表散列操作,其中所述复用器包括:至少一个移位寄存器,所述移位寄存器用于基于所述权重的所述地址的第一部分来将所述表的内容移位;第二复用器,所述第二复用器用于基于所述权重的所述地址的第二部分将来自至少一个移位寄存器的内容输出;第三复用器,所述第三复用器用于基于所述权重的所述地址的第三部分将来自至少一个移位寄存器的内容输出;XOR逻辑,所述XOR逻辑用于对来自所述第二和第三复用器的输出执行XOR运算并生成输出;以及第二XOR逻辑,所述第二XOR逻辑用于对来自所述XOR逻辑的输出和所述表的所移位的内容执行XOR运算。
示例8包括任何示例的神经网络推理引擎,其中当所述神经网络推理引擎在训练模式中操作时,所述处理器要:确定所述权重集合中的单个权重值的索引;基于所述单个权重值来设置所述矩阵的两个或更多权重;确定所述两个或更多权重的梯度;以及通过所述两个或更多权重的梯度的总和除以所述两个或更多权重的数量来替换所述单个权重值。
示例9包括任何示例的神经网络推理引擎,其中当所述神经网络推理引擎在推理模式中操作时,所述处理器要:确定所述权重集合中的单个权重值的索引;基于所述单个权重值来设置所述矩阵的两个或更多权重;以及使用所述单个权重值和激活信号来执行乘法和进位运算。
示例10包括任何示例的神经网络推理引擎并且包括以下中的一个或多个:推理引擎加速器、图形处理单元、网络接口或存储装置。
示例11包括一种方法,所述方法包括:在神经网络的推理阶段期间:基于来自表的多个条目的制表散列,从存储在存储器中的权重集合中选择权重矩阵中的第一权重;以及基于来自所述表的多个条目的第二制表散列,从存储在存储器中的所述权重集合中选择所述权重矩阵中的第二权重,其中:所述权重矩阵中的权重的数量大于存储在存储器中的所述权重集合,以及所述表存储在存储器中。
示例12包括任何示例的方法并且包括对来自所述表的多个条目执行制表散列以生成到存储在存储器中的所述权重集合中的权重的索引。
示例13包括任何示例的方法,其中所述制表散列包括对来自所述表的两个条目的XOR运算以及对来自所述XOR运算的输出和来自所述表的第三条目的第二XOR运算。
示例14包括任何示例的方法并且包括:选择第二表;基于来自所述第二表的条目来执行第三制表散列,以生成到存储在存储器中的所述权重集合中的权重的索引;以及基于来自基于来自所述第二表的条目的所述第三制表散列的所述索引来设置第三权重。
示例15包括任何示例的方法并且包括基于输入激活以及所述第一和第二权重来执行乘法和进位运算,以及将来自所述乘法和进位运算的输出存储到存储器中。
示例16包括任何示例的方法并且包括:基于所述第一权重的地址的非重叠部分从所述表中选择条目供在所述制表散列中使用,以及基于所述第二权重的地址的非重叠部分从所述表中选择条目供在所述第二制表散列中使用。
示例17包括任何示例的方法并且包括:分配第一核,以用于选择所述权重矩阵中的所述第一权重和选择所述权重矩阵中的所述第二权重,以及使用所述第一和第二权重执行乘法和进位计算,以及分配第二核,以用于选择权重矩阵中的第三权重和选择所述权重矩阵中的第四权重,以及使用所述第三和第四权重执行乘法和进位计算。
示例18包括一种用于执行神经网络推理的系统,所述系统包括:存储器;至少一个核,所述核通信地耦合到所述存储器,其中所述存储器和所述至少一个核安装到相同的板;以及用于执行以下操作的加速器装置:执行表中的条目的制表散列以生成索引,以及使用权重集合并且基于来自所述表中的条目的所述制表散列的索引来形成权重矩阵,其中所述权重集合中的权重的数量少于所述权重矩阵中的权重的数量。
示例19包括任何示例的系统,其中制表散列包括对来自所述表的两个条目的XOR运算以及对来自所述XOR运算的输出和来自所述表的第三条目的第二XOR运算。
示例20包括任何示例的系统,其中加速装置要:基于输入激活和所述权重矩阵来执行乘法和进位运算,以及将来自所述乘法和进位运算的输出存储到所述存储器中。
示例21包括任何示例的系统,其中所述表存储在所述存储器中,并且所述表包括从所述权重集合中的多个权重中随机选择的索引。
Claims (21)
1.一种神经网络推理引擎,包括:
处理器,所述处理器被配置成基于使用来自表的条目从权重集合中进行选择的制表散列操作来生成神经网络的至少一个隐藏层的矩阵的权重,其中所述表与所述至少一个隐藏层相关联,并且所述权重集合包括比至少一个隐藏层的所述矩阵的所述权重的数量更小数量的权重,以及
存储器,所述存储器位于具有所述处理器的芯片上,所述存储器被配置成存储所述表和所述权重集合。
2.如权利要求1所述的神经网络推理引擎,其中所述表要将所述矩阵的权重分组成伪随机连接集合,并且相同散列桶中的所述连接共享来自所述权重集合的相同权重。
3.如权利要求1所述的神经网络推理引擎,其中至少一个隐藏层的所述矩阵的所述权重包括一个或多个权重的集合,所述权重是来自所述权重集合的单个权重值。
4.如权利要求1所述的神经网络推理引擎,包括:
XOR树,所述XOR树用于对来自所述表的至少两个条目执行XOR运算。
5.如权利要求1所述的神经网络推理引擎,其中所述存储器被配置成存储用于所述隐藏层的至少一个表和用于第二隐藏层的至少一个表。
6.如权利要求1所述的神经网络推理引擎,其中所述处理器要执行至少一个乘法和进位运算以基于所述矩阵的权重和输入激活值来计算值。
7.如权利要求1所述的神经网络推理引擎,其中地址与所述矩阵的权重相关联,并且所述神经网络推理引擎包括:
复用器,所述复用器用于从所述表转移条目以用于所述制表散列操作,其中所述复用器包括:
至少一个移位寄存器,所述移位寄存器用于基于所述权重的所述地址的第一部分来将所述表的内容移位;
第二复用器,所述第二复用器用于基于所述权重的所述地址的第二部分将来自至少一个移位寄存器的内容输出;
第三复用器,所述第三复用器用于基于所述权重的所述地址的第三部分将来自至少一个移位寄存器的内容输出;
XOR逻辑,所述XOR逻辑用于对来自所述第二和第三复用器的输出执行XOR运算并生成输出;以及
第二XOR逻辑,所述第二XOR逻辑用于对来自所述XOR逻辑的输出和所述表的所移位的内容执行XOR运算。
8.如权利要求1所述的神经网络推理引擎,其中当所述神经网络推理引擎在训练模式中操作时,所述处理器用于:
确定所述权重集合中的单个权重值的索引;
基于所述单个权重值来设置所述矩阵的两个或更多权重;
确定所述两个或更多权重的梯度;以及
通过所述两个或更多权重的梯度的总和除以所述两个或更多权重的数量来替换所述单个权重值。
9.如权利要求1所述的神经网络推理引擎,其中当所述神经网络推理引擎在推理模式中操作时,所述处理器用于:
确定所述权重集合中的单个权重值的索引;
基于所述单个权重值来设置所述矩阵的两个或更多权重;以及
使用所述单个权重值和激活信号来执行乘法和进位运算。
10.如权利要求1所述的神经网络推理引擎,包括以下中的一个或多个:推理引擎加速器、图形处理单元、网络接口或存储装置。
11.一种用于使用权重执行推理的方法,所述方法包括:
在神经网络的推理阶段期间:
基于来自表的多个条目的制表散列,从存储在存储器中的权重集合中选择权重矩阵中的第一权重;以及
基于来自所述表的多个条目的第二制表散列,从存储在存储器中的所述权重集合中选择所述权重矩阵中的第二权重,其中:
所述权重矩阵中的权重的数量大于存储在存储器中的所述权重集合,以及
所述表存储在存储器中。
12.如权利要求11所述的方法,包括:
对来自所述表的多个条目执行制表散列以生成到存储在存储器中的所述权重集合中的权重的索引。
13.如权利要求11所述的方法,其中所述制表散列包括对来自所述表的两个条目的XOR运算以及对来自所述XOR运算的输出和来自所述表的第三条目的第二XOR运算。
14.如权利要求11所述的方法,包括:
选择第二表;
基于来自所述第二表的条目来执行第三制表散列,以生成到存储在存储器中的所述权重集合中的权重的索引;以及
基于来自基于来自所述第二表的条目的所述第三制表散列的所述索引来设置第三权重。
15.如权利要求11所述的方法,包括:
基于输入激活以及所述第一和第二权重来执行乘法和进位运算,以及
将来自所述乘法和进位运算的输出存储到存储器中。
16.如权利要求11所述的方法,包括:
基于所述第一权重的地址的非重叠部分从所述表中选择条目供在所述制表散列中使用,以及
基于所述第二权重的地址的非重叠部分从所述表中选择条目供在所述第二制表散列中使用。
17.如权利要求11所述的方法,包括:
分配第一核,以用于选择所述权重矩阵中的所述第一权重和选择所述权重矩阵中的所述第二权重,以及使用所述第一和第二权重执行乘法和进位计算,以及
分配第二核,以用于选择权重矩阵中的第三权重和选择所述权重矩阵中的第四权重,以及使用所述第三和第四权重执行乘法和进位计算。
18.一种用于执行神经网络推理的系统,所述系统包括:
存储器;
至少一个核,所述核通信地耦合到所述存储器,其中所述存储器和所述至少一个核安装到相同的板;以及
用于执行以下操作的加速器装置:
执行表中的条目的制表散列以生成索引,以及
使用权重集合并且基于来自所述表中的条目的所述制表散列的索引来形成权重矩阵,其中所述权重集合中的权重的数量少于所述权重矩阵中的权重的数量。
19.如权利要求18所述的系统,其中制表散列包括对来自所述表的两个条目的XOR运算以及对来自所述XOR运算的输出和来自所述表的第三条目的第二XOR运算。
20.如权利要求18所述的系统,其中加速装置用于:
基于输入激活和所述权重矩阵来执行乘法和进位运算,以及
将来自所述乘法和进位运算的输出存储到所述存储器中。
21.如权利要求18所述的系统,其中所述表存储在所述存储器中,并且所述表包括从所述权重集合中的多个权重中随机选择的索引。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/443548 | 2019-06-17 | ||
US16/443,548 US11625584B2 (en) | 2019-06-17 | 2019-06-17 | Reconfigurable memory compression techniques for deep neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112101534A true CN112101534A (zh) | 2020-12-18 |
Family
ID=68056364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010218244.2A Pending CN112101534A (zh) | 2019-06-17 | 2020-03-25 | 用于深度神经网络的可重新配置存储器压缩技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11625584B2 (zh) |
EP (1) | EP3754561A1 (zh) |
CN (1) | CN112101534A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112598129A (zh) * | 2021-03-03 | 2021-04-02 | 之江实验室 | 基于ReRAM神经网络加速器的可调硬件感知的剪枝和映射框架 |
CN112862100A (zh) * | 2021-01-29 | 2021-05-28 | 网易有道信息技术(北京)有限公司 | 用于优化神经网络模型推理的方法及设备 |
CN113408713A (zh) * | 2021-08-18 | 2021-09-17 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
WO2023071658A1 (zh) * | 2021-10-28 | 2023-05-04 | 华为技术有限公司 | Ai模型的处理方法、运算方法及装置 |
CN118626408A (zh) * | 2024-08-09 | 2024-09-10 | 华中科技大学 | 一种存内计算系统 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11037330B2 (en) | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
US12093696B1 (en) | 2018-04-20 | 2024-09-17 | Perceive Corporation | Bus for transporting output values of a neural network layer to cores specified by configuration data |
US10977338B1 (en) | 2018-04-20 | 2021-04-13 | Perceive Corporation | Reduced-area circuit for dot product computation |
US11210586B1 (en) | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US11886979B1 (en) | 2018-04-20 | 2024-01-30 | Perceive Corporation | Shifting input values within input buffer of neural network inference circuit |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
US10990525B2 (en) * | 2018-12-12 | 2021-04-27 | Mipsology SAS | Caching data in artificial neural network computations |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
US11966837B2 (en) * | 2019-03-13 | 2024-04-23 | International Business Machines Corporation | Compression of deep neural networks |
US11868901B1 (en) | 2019-05-21 | 2024-01-09 | Percieve Corporation | Compiler for optimizing memory allocations within cores |
US11620495B1 (en) * | 2019-08-16 | 2023-04-04 | Perceive Corporation | Neural networks with spatial and temporal features |
KR102419681B1 (ko) * | 2019-09-02 | 2022-07-08 | 광운대학교 산학협력단 | 가변 정전 용량형 가중치 메모리 소자와 가중치 메모리 시스템 및 그 동작 방법 |
CN111105018B (zh) * | 2019-10-21 | 2023-10-13 | 深圳云天励飞技术有限公司 | 一种数据处理方法及装置 |
CN112712097B (zh) * | 2019-10-25 | 2024-01-05 | 杭州海康威视数字技术股份有限公司 | 一种基于开放平台的图像识别方法、装置及用户端 |
US11899765B2 (en) | 2019-12-23 | 2024-02-13 | Dts Inc. | Dual-factor identification system and method with adaptive enrollment |
US20210209450A1 (en) * | 2020-01-03 | 2021-07-08 | International Business Machines Corporation | Compressed weight distribution in networks of neural processors |
WO2021138842A1 (en) * | 2020-01-08 | 2021-07-15 | Alibaba Group Holding Limited | Methods and apparatuses for processing neural network |
CN111461293B (zh) * | 2020-03-17 | 2023-06-06 | 湖南大学 | 基于gpu的深度神经网络模型训练方法、装置和计算机设备 |
CN111628866B (zh) * | 2020-05-22 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 神经网络校验方法、装置、设备及可读存储介质 |
TWI759799B (zh) * | 2020-07-17 | 2022-04-01 | 華邦電子股份有限公司 | 用於執行深度神經網路運算的記憶體及其操作方法 |
US20230368017A1 (en) * | 2020-10-05 | 2023-11-16 | Khalifa University of Science and Technology | Approximate computing and data reuse architectures for ai edge devices |
JP2022136575A (ja) * | 2021-03-08 | 2022-09-21 | オムロン株式会社 | 推論装置、モデル生成装置、推論方法、及び推論プログラム |
US20220300816A1 (en) * | 2021-03-19 | 2022-09-22 | Rebellions Inc. | Neural processing device and method for pruning thereof |
US20220366224A1 (en) * | 2021-05-13 | 2022-11-17 | Micron Technology, Inc. | Binary neural network in memory |
CN114546251B (zh) * | 2021-05-27 | 2024-08-16 | 北京灵汐科技有限公司 | 权重矩阵数据存储方法、数据获取方法和装置、电子设备 |
CN113568659B (zh) * | 2021-09-18 | 2022-02-08 | 深圳比特微电子科技有限公司 | 参数配置模型的训练方法、参数配置方法和参数配置设备 |
CN114004730B (zh) * | 2021-11-03 | 2024-09-17 | 奥特贝睿(天津)科技有限公司 | 一种基于图形处理器的深度神经网络多模型并行推理方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8977627B1 (en) * | 2011-11-01 | 2015-03-10 | Google Inc. | Filter based object detection using hash functions |
US9646105B2 (en) * | 2012-11-08 | 2017-05-09 | Texas Instruments Incorporated | Reduced complexity hashing |
US10824934B2 (en) * | 2017-01-12 | 2020-11-03 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
US20180204113A1 (en) * | 2017-01-13 | 2018-07-19 | Ebay Inc. | Interaction analysis and prediction based neural networking |
US11531859B2 (en) * | 2017-08-08 | 2022-12-20 | Samsung Electronics Co., Ltd. | System and method for hashed compressed weighting matrix in neural networks |
-
2019
- 2019-06-17 US US16/443,548 patent/US11625584B2/en active Active
-
2020
- 2020-03-20 EP EP20164427.5A patent/EP3754561A1/en active Pending
- 2020-03-25 CN CN202010218244.2A patent/CN112101534A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862100A (zh) * | 2021-01-29 | 2021-05-28 | 网易有道信息技术(北京)有限公司 | 用于优化神经网络模型推理的方法及设备 |
CN112598129A (zh) * | 2021-03-03 | 2021-04-02 | 之江实验室 | 基于ReRAM神经网络加速器的可调硬件感知的剪枝和映射框架 |
CN113408713A (zh) * | 2021-08-18 | 2021-09-17 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
CN113408713B (zh) * | 2021-08-18 | 2021-11-16 | 成都时识科技有限公司 | 消除数据副本的方法、神经网络处理器及电子产品 |
WO2023071658A1 (zh) * | 2021-10-28 | 2023-05-04 | 华为技术有限公司 | Ai模型的处理方法、运算方法及装置 |
CN118626408A (zh) * | 2024-08-09 | 2024-09-10 | 华中科技大学 | 一种存内计算系统 |
Also Published As
Publication number | Publication date |
---|---|
US20190303750A1 (en) | 2019-10-03 |
EP3754561A1 (en) | 2020-12-23 |
US11625584B2 (en) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625584B2 (en) | Reconfigurable memory compression techniques for deep neural networks | |
Imani et al. | Floatpim: In-memory acceleration of deep neural network training with high precision | |
US10877752B2 (en) | Techniques for current-sensing circuit design for compute-in-memory | |
US11347477B2 (en) | Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations | |
Chi et al. | Prime: A novel processing-in-memory architecture for neural network computation in reram-based main memory | |
Song et al. | Pipelayer: A pipelined reram-based accelerator for deep learning | |
Bavikadi et al. | A review of in-memory computing architectures for machine learning applications | |
Gupta et al. | Nnpim: A processing in-memory architecture for neural network acceleration | |
CN111542826A (zh) | 支持模拟协处理器的数字架构 | |
KR20220054357A (ko) | 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템 | |
Angizi et al. | Accelerating deep neural networks in processing-in-memory platforms: Analog or digital approach? | |
US20210209450A1 (en) | Compressed weight distribution in networks of neural processors | |
Yavits et al. | GIRAF: General purpose in-storage resistive associative framework | |
US20220374691A1 (en) | Processing element and neural processing device including same | |
CN115904311A (zh) | 用于多位存储单元中计算的模拟乘法-累加部件 | |
Roohi et al. | Processing-in-memory acceleration of convolutional neural networks for energy-effciency, and power-intermittency resilience | |
CN115443467A (zh) | 具有深度学习加速器和随机存取存储器的集成电路装置 | |
US20220188606A1 (en) | Memory Configuration to Support Deep Learning Accelerator in an Integrated Circuit Device | |
Sridharan et al. | X-former: In-memory acceleration of transformers | |
KR20220054411A (ko) | 스파이킹 이벤트와 관련된 메모리 내 프로세싱 동작 수행 및 관련 방법, 시스템 및 디바이스 | |
CN114265673A (zh) | 利用共享控制的计算阵列的空间分片 | |
Liu et al. | IM3A: Boosting Deep Neural Network Efficiency via I n-M emory A ddressing-A ssisted A cceleration | |
Lu et al. | An RRAM-Based Computing-in-Memory Architecture and Its Application in Accelerating Transformer Inference | |
US11733763B2 (en) | Intelligent low power modes for deep learning accelerator and random access memory | |
WO2022098495A1 (en) | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network |
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 |