CN113841165A - 用于训练人工神经网络的***和方法 - Google Patents
用于训练人工神经网络的***和方法 Download PDFInfo
- Publication number
- CN113841165A CN113841165A CN201980092228.9A CN201980092228A CN113841165A CN 113841165 A CN113841165 A CN 113841165A CN 201980092228 A CN201980092228 A CN 201980092228A CN 113841165 A CN113841165 A CN 113841165A
- Authority
- CN
- China
- Prior art keywords
- ann
- mram
- write
- values
- iterations
- 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/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/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/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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/005—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Mram Or Spin Memory Techniques (AREA)
Abstract
一种计算设备,包括一个或多个处理器、包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM)、不同于MRAM的类型的第二随机存取存储器,以及存储用于由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。计算设备接收在其上训练人工神经网络(ANN)的第一数据并且通过使用包括MRAM的第一RAM,执行第一训练迭代集以使用第一数据训练ANN,并且在执行第一训练迭代集之后,使用不同于MRAM的类型的第二RAM执行第二训练迭代集以使用第一数据训练ANN来训练ANN。计算设备存储所训练的ANN的值。所训练的ANN被配置为基于所存储的值对第二数据进行分类。
Description
技术领域
本发明一般涉及存储器应用领域,包括但不限于使用磁存储器训练人工神经网络。
背景技术
现代人工神经网络(ANN)对大量数据进行训练,以在它们可以被部署之前优化它们的内部参数--例如,它们的权重和偏差。优化过程(即,训练)涉及通过训练数据的大量迭代(即,时期(epoch))。由于至芯片或来自芯片的(训练数据的)大量数据传输以及片上存储器的能量泄漏,训练需要大量能量使用。相关的问题是SRAM的占用空间大,这限制了可用的片上存储器,从而增加了对数据传输的需要。
发明内容
为了降低训练过程的成本,本公开的一些实施例至少部分地使用易错存储器来训练ANN。易错存储器比无错存储器需要更少的能量,并且具有潜在占用更小的片上面积。通常,将易错存储器用于ANN训练过程的一部分不影响训练过程的效率,并且实际上可以为ANN训练过程的初始“高熵”阶段(例如,搜索ANN参数空间)提供有益程度的随机性。这种ANN包括但不限于全连接网络(FNN)和卷积神经网络(CNN)。
(A1)为此,在一些实现方式中,提供一种在计算设备处执行的方法。该计算设备包括一个或多个处理器、包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM)、不同于MRAM的类型的第二随机存取存储器和存储由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。在一些实施例中,该非暂时性计算机可读存储介质包括用于执行该方法的指令。该方法包括接收在其上训练人工神经网络(ANN)的第一数据。该方法包括通过以下来训练ANN:使用包括MRAM的第一RAM,执行第一训练迭代集以使用第一数据训练ANN;以及在执行第一训练迭代集之后,使用不同于MRAM的类型的第二RAM,执行第二训练迭代集以使用第一数据训练ANN。该方法进一步包括存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值,对第二数据进行分类。
(A2)在(A1)的一些实现方式中,第一训练迭代集中的每一个包括从包括MRAM的第一RAM中读取ANN的权重集的值;使用一个或多个处理器,执行算术操作集以更新ANN的权重集的值;以及将ANN的所更新的权重集写入包括MRAM的第一RAM。
(A3)在(A2)的一些实现方式中,第一训练迭代集中的每一个包括从包括MRAM的第一RAM中读取ANN的偏差集的值;使用一个或多个处理器,执行算术操作集以更新ANN的偏差集的值;以及将ANN的所更新的偏差集写入包括MRAM的第一RAM。
(A4)在(A3)的一些实现方式中,第二训练迭代集中的每一个包括:从不同于MRAM的类型的第二RAM中读取ANN的权重集和/或偏差集的值;使用一个或多个处理器,执行算术操作集以更新ANN的权重集和/或偏差集的值;以及将ANN的所更新的权重集和/或偏差集写入不同于MRAM的类型的第二RAM。
(A5)在(A3)-(A4)的任一个的一些实施例中,第二训练迭代集中的每一个包括:从不同于MRAM的类型的第二RAM中读取ANN的激活集的值;使用一个或多个处理器,执行算术操作集以更新ANN的激活集的值;以及将ANN的所更新的激活集写入不同于MRAM的类型的第二RAM。
(A6)在(A1)-(A5)的任一个的一些实现方式中,包括MRAM的第一RAM与一个或多个处理器在相同芯片上。
(A7)在(A1)-(A6)的任一个的一些实现方式中,在第一训练迭代集期间,第一RAM作为易错存储器操作。
(A8)在(A1)-(A7)的任一个的一些实现方式中,所训练的ANN的所存储的值包括所存储的权重;方法进一步包括:在第一训练迭代集期间,执行错误检测,错误检测包括检测存储在第一RAM中的相应权重中的错误;在使用相应权重之前,用零值替换存储在相应权重中的值。
(A9)在(A7)-(A8)的任一个的一些实现方式中,第一RAM的误码率低于第一训练迭代集的收敛的阈值。
(A10)在(A9)的一些实现方式中,收敛的阈值大于:10-3、10-5、或10-7。
(A11)在(A9)-(A10)的任一个的一些实现方式中,误码率大于:10-4、10-6、或10-8。
(A12)在(A1)-(A11)的任一个的一些实现方式中,第二RAM包括静态RAM(SRAM)。
(A13)在(A1)-(A12)的任一个的一些实现方式中,第一训练迭代集包括超过用于训练ANN的训练迭代的总数的20%、40%、60%、80%或95%。
(A14)在(A1)-(A13)的任一个的一些实现方式中,该方法进一步包括在训练ANN之后:接收第二数据;以及使用所训练的ANN的所存储的值,为第二数据分配分数。
在一些实现方式中,提供一种电子***。该电子***包括一个或多个处理器;包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM);不同于MRAM的类型的第二随机存取存储器;以及存储可由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。该指令包括用于执行下述操作的指令:通过使用包括MRAM的第一RAM执行第一训练迭代集,使用第一数据训练人工神经网络(ANN);通过使用包括不同于MRAM的类型的第二RAM执行第二训练迭代集,使用第一数据训练ANN;以及存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值对第二数据进行分类。
在一些实现方式中,电子***包括芯片。
在一些实现方式中,电子***被配置为执行如上的方法(A1)-(A14)中的任何一个。
(B1)此外,在一些实现方式中,在计算设备处执行的一种方法,该计算设备包括一个或多个处理器、磁随机存取存储器(MRAM)和存储指令的非暂时性计算机可读存储介质。在一些实施例中,非暂时性计算机可读存储介质包括用于执行该方法的指令。该方法包括接收在其上训练人工神经网络(ANN)的第一数据。该方法进一步包括使用MRAM,通过对第一数据执行第一训练迭代集来训练ANN。第一迭代集中的每一个包括使用对应于第一写入错误率的第一写入参数,将ANN的权重集的值写入MRAM。训练ANN进一步包括在执行第一迭代集之后,对第一数据执行第二训练迭代集。第二迭代集中的每一个包括使用对应于第二写入错误率的第二写入参数,将ANN的权重集的值写入MRAM。第二写入错误率低于第一写入错误率。该方法进一步包括存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值对第二数据进行分类。
(B2)在(B1)的一些实现方式中,第一迭代集中的每一个包括写入ANN的偏差集和激活集的值;以及第二迭代集中的每一个包括写入ANN的偏差集和激活集的值。
(B3)在(B1)-(B2)的任一个的一些实现方式中,第一写入参数包括第一写入脉冲持续时间;以及第二写入参数包括比第一写入脉冲持续时间长的第二写入脉冲持续时间。
(B4)在(B1)-(B3)的任一个的一些实现方式中,第一写入参数包括第一写入电流;以及第二写入参数包括大于第一写入电流的第二写入电流。
(B5)在(B1)-(B4)的任一个的一些实现方式中,使用对应于第一写入错误率的写入参数将ANN的权重集的值写入MRAM包括在不使用纠错码的情况下写入值;以及使用对应于第二写入错误率的第二写入参数将ANN的权重集的值写入MRAM包括使用纠错码写入值。
(B6)在(B1)-(B5)的任一个的一些实现方式中,第一训练迭代集中的每一个包括:从MRAM中读取ANN的权重集的值;使用一个或多个处理器,执行算术操作集来更新ANN的权重集的值,其中,对该迭代写入MRAM的ANN的权重集的值是更新的权重集。
(B7)在(B6)的一些实现方式中,第二训练迭代集中的每一个包括:从MRAM中读取ANN的权重集的值;使用一个或多个处理器,执行算术操作集以更新ANN的权重集的值,其中,对该迭代写入MRAM的ANN的权重集的值是更新的权重集。
(B8)在(B1)-(B7)的任一个的一些实现方式中,MRAM与一个或多个处理器在相同芯片上。
(B9)在(B1)-(B8)的任一个的一些实现方式中,该方法进一步包括:在第一训练迭代集期间,执行错误检测,错误检测包括检测存储在MRAM中的相应权重中的错误;在使用相应权重之前,用零值替换为相应权重存储的值。
(B10)在(B1)-(B9)的任一个的一些实现方式中,第一写入参数对应于低于第一训练迭代集的收敛的阈值的误码率。
(B11)在(B10)的一些实现方式中,收敛的误码率阈值大于:10-3、10-5、或10-7。
(B12)在(B1)-(B11)的任一个的一些实现方式中,第一写入错误率大于:10-4、10-6、或10-8。
(B13)在(B1)-(B12)的任一个的一些实现方式中,第一训练迭代集包括超过用于训练ANN的训练迭代的总数的20%、40%、60%、80%或95%。
(B14)在(B1)-(B13)的任一个的一些实现方式中,第一迭代集中的每一个包括使用对应于第一读取错误率的第一读取参数,将ANN的权重集的值读取到MRAM;以及第二迭代集中的每一个包括使用对应于第二读取错误率的第二读取参数,将ANN的权重集的值读取到MRAM,其中,第二读取错误率低于第一读取错误率。
(B15)在(B14)的一些实现方式中,第一读取参数包括第一读取脉冲持续时间;以及第二读取参数包括比第一读取脉冲持续时间长的第二读取脉冲持续时间。
(B16)在(B1)-(B15)的任一个的一些实现方式中,第一读取参数包括第一读取电流;以及第二读取参数包括大于第一读取电流的第二读取电流。
(B17)在(B1)-(B16)的任一个的一些实现方式中,该方法进一步包括在训练ANN之后:接收第二数据;以及使用所存储的所训练的ANN的值,对第二数据分配分数。
在一些实现方式中,提供一种***,该***具有一个或多个处理器;磁随机存取存储器(MRAM);被配置为将数据写入MRAM的写入电路;以及非暂时性计算机可读存储介质。非暂时性计算机可读存储介质存储用于由一个或多个处理器执行的指令,包括接收在其上训练人工神经网络(ANN)的第一数据的指令。该指令进一步包括用于使用MRAM,通过对第一数据执行第一训练迭代集来训练ANN的指令。第一迭代集中的每一个包括使用写入电路,使用对应于第一写入错误率的第一写入参数,将ANN的权重集的值写入MRAM。指令包括用于在执行第一迭代集之后,对第一数据执行第二训练迭代集的指令。第二迭代集中的每一个包括使用写入电路,使用对应于第二写入错误率的第二写入参数,将ANN的权重集的值写入MRAM。第二写入错误率低于第一写入错误率。指令进一步包括用于存储所训练的ANN的值的指令。所训练的ANN被配置为基于所存储的值对第二数据进行分类。
在一些实现方式中,电子***包括芯片。
在一些实现方式中,电子***被配置为执行如上的方法(B1)-(B17)中的任何一个。
虽然ANN被用作可以从本文所述的方法和设备受益的训练过程的具体示例,但是应当注意到,任何资源密集型优化过程(例如,统计过程)也可以从本文所述的方法和设备中受益。因此,本公开的一些实施例不仅适用于ANN,而且适用于任何种类的优化(例如,统计)过程。本公开的一些实施例适用于机器学习过程。此类机器学习过程可能包括监督学习(例如分类、回归)、聚类(例如潜在狄利克雷分配)、降维、结构化预测、异常检测和强化学习。因此,训练机器学习过程可以包括为任何上述应用训练模型。
例如,在一些实施例中,提供了一种在计算设备处执行的方法。该计算设备包括一个或多个处理器、包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM)、不同于MRAM的类型的第二随机存取存储器和存储由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。该方法包括接收在其上训练机器学习过程的第一数据。该方法包括通过以下来训练机器学习过程:使用包括MRAM的第一RAM,执行第一训练迭代集以使用第一数据训练机器学习过程;以及在执行第一训练迭代集之后,使用不同于MRAM的类型的第二RAM,执行第二训练迭代集以使用第一数据训练机器学习过程。该方法进一步包括基于训练,存储机器学习过程的值。机器学习过程的值被用来重新配置机器(例如,使机器不同于使用值重新配置机器之前操作)。
作为另一示例,在一些实现方式中,提供一种在计算设备处执行的方法,该计算设备包括一个或多个处理器、磁随机存取存储器(MRAM)和存储用于由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。指令包括用于接收在其上训练机器学习过程的第一数据的指令。该指令进一步包括用于使用MRAM,通过对第一数据执行第一训练迭代集来训练机器学习过程的指令。第一迭代集中的每一个包括使用对应于第一写入错误率的第一写入参数,将机器学习过程的值写入MRAM。训练机器学习过程进一步包括在执行第一迭代集之后,对第一数据执行第二训练迭代集。第二迭代集中的每一个包括使用对应于第二写入错误率的第二写入参数,将机器学习过程的值写入MRAM。第二写入错误率低于第一写入错误率。该指令进一步包括用于存储机器学习过程的值的指令。机器学习过程的值被用来重新配置机器(例如,使机器不同于使用值重新配置机器之前操作)。
因此,为设备和***提供了训练优化过程(例如,机器学习过程、ANN训练等)的方法,提高了这些***和设备的有效性、效率和用户满意度。
附图说明
为了更好地理解各个所述的实现方式,应当结合以下附图来参考以下实现方式的描述,其中,在所有附图中,相同的附图标记指代相应的部分。
图1图示根据一些实现方式的芯片结构的示意图。
图2图示根据一些实现方式的芯片结构的示意图。
图3A图示了根据一些实现方式的损失函数的曲线图。
图3B图示了根据一些实现方式的多次迭代的训练损失的图。
图4A-4B图示了根据一些实现方式的用于训练人工神经网络的方法。
图5A-5C图示了根据一些实现方式的用于训练人工神经网络的方法。
图6是根据一些实施例的用于训练人工神经网络的计算机***的框图。
在附图的几个视图中,相同的附图标记指代相应的部分。
具体实施方式
现在将详细地参考实现方式,其示例在附图中示出。在以下详细描述中,阐述了许多具体细节以便提供对各个所描述的实现方式的全面理解。然而,对于本领域普通技术人员显而易见的是,可以在没有这些具体细节的情况下实施各个所描述的实现方式。在其他情况下,未详细地描述非常公知的方法、过程、组件、电路和网络,以便不必要地混淆实施例的方面。
完全连接的人工神经网络可以在数学上表示如下:
A1=f1(W1X+b1) (1a)
Ai=fi(WiAi-1+bi) (1b)
O=fn(WnAn-1+bn) (1c)
在上述等式(1a)-(1c)中,Ai表示激活,Wi表示权重,bi表示偏差。变量X表示输入数据。参数n表示神经网络中的层数。激活的最后一层O被称为输出。在训练期间,将输出与已知结果进行比较以确定损失函数。函数fi是激活函数,通常是简单的非线性函数,诸如ReLU:f(x)=max(0,x)。
ANN训练过程旨在通过迭代过程优化某些网络参数(例如,权重和偏差)。参数的总数通常超过106并且可以达到109。在这样的多维空间中找到全局最小值是巨大的挑战。在一些实现方式中,该过程通过用随机值初始化网络参数开始。在整个迭代过程中,调整网络参数以减小10x维景观的错误度量(例如,理想地找到错误度量的全局最小值)。起始点通常远离最小值,并且存在迭代过程可能陷入局部最小值的风险。因此,以高熵搜索开始迭代过程通常是有益的,其中,每个早期迭代以大的步长调整网络参数以大致了解错误景观。在过程即将结束时,当网络接近期望的解时,采取小的小心步长来找到最小值。
因此,对于大部分训练过程来说,高精度是不必要的。相反,一定程度的随机性可以有助于更好地探索错误景观。此外,如果高精度以片上面积和能量为代价,则使用较少强调精度但集中于能量成本、面积和/或速度的硬件可能更好。
因此,根据一些实施例,ANN训练过程被分成两部分:第一迭代集和第二迭代集。对于第一迭代集,一些实现方式用易错存储器替换ANN训练过程中的高准确的存储器。只要错误不太频繁以至于在训练的第一迭代集期间阻止收敛,对功效的损害就很小,并且通常在能量成本、芯片面积和速度方面是值得的。当错误是可检测的并且可以被约束时尤其如此。
第一迭代集可以包括从训练开始到几乎结束(例如,直到最后10个时期)的大多数迭代(例如,时期)。在这些迭代期间,使用易错的节能存储器,诸如MRAM或MRAM与小SRAM缓冲器的组合。在该第一阶段期间,当数据被存储在外部存储器中或从外部存储器加载时,错误可能以不太高的某个率(例如0.01%-50%)发生。在一些实施例中,当检测到错误数字时,用零值替换该错误数字,或者约束该错误数字的值,以便不淹没其余数据。所得到的信息包含少量的约束错误,例如0.01%-50%的错误零。尽管存在这些错误,但ANN的训练照常继续。
对于最后的迭代(例如,最后10个时期),使用无错存储器。这可以是SRAM,或者它可以是具有纠错算法的MRAM、最后两个的组合,或一些其他类型的存储器。该无错存储器使得该过程能够导向追踪网络参数的损失函数的最小值(例如,全局最小值或至少局部最小值)。
还应当注意到,取决于读取/写入时间(例如,用于读取/写入MRAM的电脉冲的持续时间),MRAM可以用作易错存储器或基本上无错存储器。因此,当将MRAM用于ANN训练过程的至少第一部分时,MRAM可以以更快的读取/写入时间来操作(例如,与无错误MRAM相比),因为与短读取/写入时间相关联的错误率不影响结果。
此外,在一些实现方式中,MRAM用于所有迭代以训练ANN,但是在计算的最后阶段期间降低了读和/或写速度。这使得读取和写入操作在接近最小值时不太容易错。
图1图示了包括芯片102的电子***的示意图。该***包括第一类型的RAM(例如,易错MRAM)和第二类型的RAM(例如,无错RAM,其可以包括一个或多个外部(例如,片外)设备,诸如RAM芯片100)。例如,RAM芯片100包括DRAM或另一形式的存储器(例如,其不同于磁性RAM)。在一些实现方式中,芯片102包括促进芯片102与外部RAM芯片100之间的通信的RAM接口104(例如,DDR3接口)。芯片102包括SRAM缓冲器/高速缓存108,用于缓冲在ANN训练过程期间由处理器112使用的数据。例如,SRAM缓冲器/高速缓存108缓冲存储在片外(例如,在外部RAM 100中)的数据和/或存储在MRAM 110(例如,易错存储器)中的数据。例如,在ANN训练过程的第一迭代集期间,用于训练ANN的数据被存储在MRAM 110中(例如,执行ANN训练过程的第一迭代集所需的所有数据被存储在MRAM 110中)。根据SRAM缓冲器/高速缓存108的需要,从MRAM 110高速缓存数据,使得其可用于处理器112(例如,算术逻辑单元(ALU)),处理器112执行训练ANN所需的计算。在一些实现方式中,数据包括ANN的值,诸如权重、激活和偏差。在一些实现方式中,数据包括中间值(例如,在ANN的训练期间)。
在ANN训练过程的第二迭代集期间,用于训练ANN的数据被存储在RAM芯片100中。数据通过RAM接口104在芯片102上和芯片102外被总线连接。根据SRAM缓冲器/高速缓存108的需要,从RAM芯片100高速缓存数据,使得其可用于处理器112。在一些实现方式中,第二迭代集产生ANN参数的最终值(例如,在ANN已经被完全训练之后的权重和偏差的值),其经由主机接口106导出到主机计算机。
在一些实现方式中,处理单元112执行用于训练ANN的指令(例如,用于执行过程400的指令)。在一些实现方式中,可由一个或多个处理器单元112执行的指令被存储在非暂时性计算机可读存储介质中。在一些实现方式中,指令被存储在芯片102上。在一些实现方式中,指令被存储在芯片外(例如,存储在RAM芯片100中)。在一些实现方式中,芯片102包括两种不同类型的存储器,包括MRAM 110和不同于MRAM的第二类型的存储器。例如,虽然RAM芯片100被示出为与芯片102分离,但是应当理解,在一些实现方式中,存储在RAM芯片100上的数据被存储在芯片102上。
尽管未示出,但是在一些实施例中,第一迭代集的第一RAM(例如MRAM 110)和第二迭代集的不同于第一RAM的第二RAM驻留在芯片102上。在一些实施例中,一个或多个处理器(例如,处理器单元112)驻留在芯片上。在一些实施例中,存储用于训练ANN的指令的非暂时性计算机可读存储介质驻留在芯片102上。在一些实施例中,当芯片102上电时,(例如,从主机计算机)向非暂时性计算机可读存储介质加载(例如,写入)指令。在一些实施例中,非暂时性计算机可读存储介质包括第一RAM或第二RAM的一部分。在一些实施例中,如下所述,在训练ANN之后,芯片102被用来对未训练的第二数据进行分类。在接收到第二数据之后,片外存储器(例如,RAM芯片100)存储第二数据中的一些或全部。
图2图示了计算设备(例如,芯片202)的示意图。与图1的***(其中,使用第一RAM执行第一ANN训练迭代集并且使用与第一RAM不同的第二RAM执行第二ANN训练迭代集)不同,图2图示了第一ANN训练迭代集和第二ANN训练迭代集均由相同RAM(例如,MRAM 210)执行的计算设备。然而,在第一ANN训练迭代集期间,第一RAM以易错模式操作,而在第二ANN训练操作集中,第一RAM以无错模式操作。
为此,在一些实现方式中,芯片202包括主机接口206(例如,PCIe接口)、SRAM缓冲器/高速缓存208、MRAM 210和处理器单元212。在一些实现方式中,MRAM 210与用于将数据(例如,在ANN的训练迭代期间计算的ANN权重)写入MRAM的写入电路214和用于从MRAM读取数据(例如,ANN权重的值)的读取电路216可通信地耦合。在一些实施例中,写入电路包括字线和位线(例如,导线)以及相应的晶体管的集(例如,用于激活字线和位线)。在一些实施例中,写入电路包括存储第一写入参数和第二写入参数的存储器或与之耦合。在一些实施例中,读取电路被配置为修改用于从MRAM读取值的读取参数。在一些实施例中,写入电路被配置为修改用于将值写入MRAM的写入参数。
应当注意到,在一些实施例中,芯片102还包括类似的写入电路和读取电路,但是为了简单起见,这些特征在图1中未示出。
在一些实现方式中,芯片202包括存储用于接收第一数据的指令的非暂时性计算机可读存储介质,在所述第一数据上训练人工神经网络(ANN)。这些指令进一步包括用于使用MRAM 210,通过对第一数据执行第一训练迭代集来训练ANN的指令。第一迭代集中的每个迭代包括使用写入电路,使用与第一写入错误率相对应的第一写入参数,将ANN的权重集的值写入MRAM。指令包括用于在执行第一迭代集之后,对第一数据执行第二训练迭代集的指令。第二迭代集中的每个迭代包括使用写入电路,使用与第二写入错误率相对应的第二写入参数,将ANN的权重集的值写入MRAM。第二写入错误率低于第一写入错误率。指令进一步包括用于存储所训练的ANN的值的指令。所训练的ANN被配置为基于所存储的值,对第二数据进行分类。
因此,芯片202使用MRAM(例如,对于所有迭代)训练ANN,并且在第一迭代集期间读取/写入参数,以便以高读取/写入错误率训练ANN,并且在第二迭代集期间使用比第一迭代集的读取/写入错误率更低的读取/写入错误率来读取/写入参数。
在一些实现方式中,芯片202包括如参考图1所描述的芯片102的任何或所有模块。
图3A图示了ANN的损失函数300的曲线图。出于概念目的而示出了损失函数300,即为了说明ANN训练过程的初始部分不需要高精度存储器的事实。为此,损失函数300的曲线图被简化以示出作为单个参数的函数的错误。然而,应当注意到,参数的总数通常超过106并且可以达到109。
如图所示,存在两个迭代集,第一迭代集(例如,由虚线表示)在易错存储器(例如,MRAM)上执行。第一训练迭代集开始于迭代302。随着该过程更接近识别损失函数300的最小值,在无错存储器(诸如SRAM、DRAM或具有纠错的MRAM)上执行第二迭代集304(例如,由实线表示,在执行第一迭代集之后执行)。在一些实施例中,第一训练迭代集包括超出用于训练ANN的训练迭代的总数的20%、40%、60%、80%或95%。因此,ANN的大部分训练是在密集、快速、节能存储器(例如,MRAM)上执行的,尽管存储器不太准确。如所示,当训练迭代收敛到损失函数300的最小值时,执行第二训练迭代集304。当执行训练迭代时,更新权重、偏差和/或激活集。
图3B图示了第一迭代集的训练损失(例如,由虚线306表示的训练损失)和第二迭代集的训练损失(例如,由实线308表示的训练损失)的图。如图3B所示,来自(例如,使用MRAM执行的)第一迭代集的错误不是太大,并且ANN仍然能够被训练(例如,以计算和存储要应用于未经训练的数据的权重)。如上所解释的,第一迭代集是在MRAM(例如,或MRAM和SRAM的组合)上执行的,而第二迭代集是在SRAM(例如,或SRAM和DRAM的组合)上执行的。在第一迭代集期间,当数据存储在存储器(例如,外部存储器)中或从存储器(例如,外部存储器)加载时,错误可能以不太高的某个率(例如,0.01%-50%)发生。然后,可以执行错误检测和掩蔽,使得当检测到错误数字时,用零值替换(例如,掩蔽)该错误数字,或者约束该错误数字的值,以便不淹没其余数据。所得到的信息包含少量的受约束的错误,例如0.01%-50%的错误零。尽管存在这些错误,但训练照常继续。
图4A-4B图示了根据本发明实现方式的用于训练人工神经网络的方法400。在计算设备(例如,图1中所示的计算设备)处执行(402)方法400,该计算设备包括一个或多个处理器(例如,处理器单元112)、包括磁随机存取存储器(MRAM)(例如,MRAM 110)的第一随机存取存储器(RAM)、与MRAM不同类型的第二随机存取存储器(例如,RAM芯片100),以及具有用于由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。
在一些实现方式中,包括MRAM的第一RAM与一个或多个处理器在相同芯片上(404)(例如,如图1所示)。例如,MRAM允许片上存储器数据的增加,因此减少了对芯片上和芯片外的数据移动的需要。数据移动需要大量能量,因此如本文所述,在方法400中使用MRAM比使用常规类型的存储器的常规ANN训练方法更有效。在一些实现方式中,不同于MRAM的类型的第二RAM与包括MRAM的第一RAM在相同芯片上。在一些实现方式中,包括MRAM的第一RAM在包括一个或多个第一处理器的第一芯片上,而与MRAM不同的第二RAM在与第一芯片不同的、包括与一个或多个第一处理器不同的一个或多个第二处理器的一个或多个第二芯片(例如,RAM芯片100)上。
在一些实现方式中,第二RAM包括(406)静态RAM(SRAM)。在一些实现方式中,第二RAM包括动态RAM(DRAM)。在一些实施例中,第二RAM包括高带宽存储器(HBM)。
方法400包括接收(408)在其上训练人工神经网络(ANN)的第一数据。在一些实施例中,第一数据存储在数据库中(例如,存储在片上或片外)。在一些实现方式中,响应于(例如,经由主机接口106)来自主机的指令接收第一数据。
该方法进一步包括通过使用包括MRAM的第一RAM,执行(412)第一训练迭代集(例如,时期)以使用第一数据训练ANN来训练(410)ANN。在一些实现方式中,第一训练迭代集包括训练迭代的总数的(至少)前一半。在一些实现方式中,第一训练迭代集包括除了最后N次迭代之外的所有训练迭代,其中,N是整数。例如,第一训练迭代集包括除了最后10次迭代(例如,N=10)之外的所有训练迭代。
在一些实现方式中,第一训练迭代集中的每一个包括(414)从包括MRAM的第一RAM读取ANN的权重集的值,并且使用一个或多个处理器执行算术操作集以更新的ANN的权重集的值。计算设备将ANN的所更新的权重集写入包括MRAM的第一RAM。在一些实现方式中,写入第一RAM的所更新的权重集的值包括中间值(例如,不是要应用于未经训练的数据的最终值)。例如,在第一训练迭代集期间写入的更新值是中间值,因为最终值是在执行第二训练迭代集之后确定的。在一些实现方式中,第一训练迭代集中的每一个包括(416)从包括MRAM的第一RAM读取ANN的偏差(和/或激活)集的值,并且使用一个或多个处理器执行算术操作集以更新ANN的偏差(和/或激活)集的值。计算设备将ANN的所更新的偏差(和/或激活)集写入包括MRAM的第一RAM。
在一些实施例中,MRAM包括磁性隧道结(MTJ)。在一些实施例中,MRAM包括自旋转移矩(STT)存储器。通过使用位中的两个或更多个磁性层(例如,自由层和参考数据)的相对取向来编码存储在MRAM中的数据。可以基于位的电阻来确定该位的值(例如,存储在该位中的数据的值),因为磁阻效应(例如,自由层和固定层的相应磁化的反平行布置具有与自由层和固定层的平行布置不同的电阻),该位的电阻基于磁化的相对取向而改变。
在一些实施例中,通过向MRAM位施加电流脉冲(例如,具有幅度和时间长度的写入脉冲)来写入MRAM位,以在自旋转移矩的作用下切换该位。通过将较小的脉冲(例如,具有较小幅度和/或较短时间长度的读取脉冲)施加到该位以确定其电阻来读取MRAM位。对于一些MRAM(例如,MTJ),脉冲幅度和长度存在上限和下限。例如,当读取该位时,读取脉冲的电压(及由此的电流)应当足够高并且施加足够长的时间以允许确定MTJ状态(例如,允许由读出放大器确定该位的电阻),但是电压不应当太高,或者读取脉冲不应当太长而使得数据被干扰(例如,通过STT的动作)。当写入该位时,电压应当足够高并且施加足够长的时间,使得信息被正确且可靠地写入,但是不应太高或太长,以至于写入脉冲压迫或破坏MTJ。
因此,在各种情况下,当读取和写入数据到MRAM时,存在以下类型的错误:
(a1)写入错误:当写入脉冲电压幅度不够高(或写入脉冲不够长)以将数据写入MRAM时,发生写入错误。取决于电压脉冲和MRAM的特性,可以确定正确写入的概率。
(a2)击穿错误:当用于写入的写入电压幅度太高(或写入脉冲太长)以致于MRAM位由于隧道氧化物势垒的击穿而被损坏时,发生击穿错误。
(b)保留错误:当MRAM不保留(例如,丢失)已写入其中的数据时,发生保留错误。取决于MRAM的特性和空闲时间,可以确定数据被正确保留的概率。
(c1)读取错误:当所施加的电压幅度不够高(或读取脉冲不够长)以检测MRAM位的电阻状态时,发生读取错误。这些错误是由于读出放大器而不是MRAM而产生的。
(c2)读取干扰错误:当读取电压太高(或读取脉冲太长)以致于其在尝试读取MRAM位时干扰了MRAM位的状态(例如,有效地写入MRAM位)时,发生读取干扰错误。可以由读取脉冲和MRAM特性计算读取干扰概率。在一些实施例中,读取错误优于读取干扰错误。由此,使用限制读取干扰错误的数量的读取参数(例如,读取电压和/或脉冲长度低于用于引起读取干扰错误的相应阈值,即使以更大数量的读取错误为代价)来执行本文所述的读取操作。减轻上述错误类型的一种常规方式是使用纠错码(ECC)。纠错码是昂贵的,不仅在存储器容量方面,而且因为ECC减慢了读取存储器的过程。相反,在本方法的一些实现方式中,在第一训练迭代集期间,第一RAM***作(418)为易错存储器。例如,计算设备在第一训练迭代集期间不对MRAM执行纠错(或执行最小纠错)。
在一些实现方式中,所训练的ANN的所存储的值包括所存储的权重,并且该方法进一步包括:在第一训练迭代集期间,执行(420)错误检测,该错误检测包括检测存储在第一RAM中的相应权重(或激活或偏差)的错误。权重的值可能是不正确的(例如,错误的),因为(I)所存储的权重的值是错误的(例如,写入错误、保留错误或读取干扰错误);或者(II)所存储的权重的值是正确的,但是被不正确地读取。在一些实施例中,当检测到相应权重的错误时,针对迭代使用零值来代替(例如,迭代以尝试读取权重集开始,在权重中检测到错误,并且用零值替换错误来执行迭代的计算)。另外,在一些情况下(例如,当所存储的权重的值错误时),计算设备在使用相应权重之前(例如,在前向或后向传播中)用零值替换存储在相应权重中的值。在一些实施例中,该方法包括确定错误值是否被正确读取(例如,确定该值是被不正确地存储还是被不正确地读取)。在一些实施例中,根据确定错误值被正确地读取,执行用零值替换存储在相应权重中的值。
在某些情况下,检测并且用零值屏蔽错误显著放宽了收敛的要求(例如,第一训练迭代集可以容忍高得多的误码率并且仍然收敛)。除了所存储的权重外,相对于所存储的偏差、激活以及可能的其他网络参数,也会发生错误。以上对错误的讨论通常适用于任何网络参数。
在一些实现方式中,第一RAM具有(422)低于第一训练迭代集的收敛的阈值的误码率。例如,在一些实现方式中,可以为第一RAM配置误码率。例如,在一些实施例中,MRAM的误码率取决于写入脉冲持续时间和/或写入脉冲长度,并且(例如,从校准曲线)选择写入脉冲持续时间和/或写入脉冲长度以在第一训练操作集期间,以低于收敛的阈值的误码率操作第一RAM。
在一些实现方式中,收敛的阈值大于(424):10-3、10-5、10-7(例如,在误码率方面)。在一些实施例中,在没有错误检测和掩蔽的情况下执行该方法,并且收敛的阈值大于10-2、10-3、10-4。在一些实现方式中,误码率大于(426):10-4、10-6、10-8。
在一些实现方式中,第一训练迭代集包括(428)超过用于训练ANN的训练迭代的总数的20%、40%、60%、80%或95%。
该方法包括,在执行第一训练迭代集之后,使用不同于MRAM的类型的第二RAM,执行(430)第二训练迭代集以使用第一数据训练ANN。在一些实现方式中,第二训练迭代集包括未包括在第一训练迭代集中的所有剩余迭代。例如,用于训练ANN的总训练迭代包括第一训练迭代集和第二训练迭代集。
在一些实现方式中,第二训练迭代集中的每一个包括(432)从不同于MRAM的类型的第二RAM读取ANN的权重集和/或偏差集的值(例如,在第一训练迭代集期间存储的中间值),并且使用一个或多个处理器执行算术操作集以更新ANN的权重集和/或偏差集的值。第二训练迭代集中的每一个进一步包括将ANN的所更新的权重集和/或偏差集写入与MRAM不同的类型的第二RAM。在一些实现方式中,在第二训练迭代集期间写入的所更新的权重集和/或偏差集的值包括中间值。在一些实现方式中,在第二训练迭代集结束时(例如,在最终训练迭代期间),ANN的所更新的权重集和/或偏差(和/或激活)集的值包括最终值,其中,存储最终值,使得计算设备可以将最终所存储的值应用于所接收的第二数据(例如,未分类的第二数据),以便对第二数据进行分类。在一些实现方式中,中间所存储的值被存储在MRAM中(例如,芯片上),并且最终所存储的值被存储在非易失性片外存储器中。在一些实现方式中,所有立即存储的值被存储在MRAM中(例如,可从MRAM获得),并且不需要在芯片上和/或芯片外总线传输数据。在一些实现方式中,仅中间所存储的值的子部分被存储在MRAM中。
该方法进一步包括存储(434)所训练的ANN的值(例如,权重和/或偏差),其中,所训练的ANN被配置为基于所存储的值对第二数据进行分类(例如,通过分配分类分数来对第二数据进行分类)。
在一些实现方式中,在训练ANN之后,计算设备接收(436)第二数据(例如,未训练的数据);以及使用所训练的ANN的所存储的值,对第二数据分配分数。在一些实现方式中,在使用所训练的ANN的存储(最终)值为第二数据分配分数(例如,分类)之后,计算设备将分配的分数(例如,经由主机接口106)提供给主机设备。
在一些实现方式中,提供了一种电子***(例如,图1所示的***)。该电子***包括一个或多个处理器、包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM)、不同于MRAM的类型的第二随机存取存储器,以及存储可由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。这些指令包括用于以下操作的指令:通过使用包括MRAM的第一RAM执行第一训练迭代集以使用第一数据训练人工神经网络(ANN)、通过使用包括不同于MRAM的类型的第二RAM执行第二训练迭代集以使用第一数据训练ANN,以及存储所训练的ANN的值。所训练的ANN被配置为基于所存储的值对第二数据进行分类。
在一些实现方式中,电子***包括芯片(例如,芯片102)。在一些实施例中,第一RAM(例如,MRAM 110)和第二RAM(例如,存储在SRAM缓冲器/高速缓存108中的第二RAM的至少一部分)驻留在芯片102上。在一些实施例中,一个或多个处理器(例如,处理器单元112)驻留在芯片上。在一些实施例中,一个或多个处理器包括算术逻辑单元(ALU)。在一些实施例中,非暂时性计算机可读存储介质驻留在芯片上。在一些实施例中,当芯片上电时,非暂时性计算机可读存储介质被加载(例如,写入)指令。在一些实施例中,非暂时性计算机可读存储介质包括第一RAM或第二RAM的一部分。在一些实施例中,电子***包括片外存储器(例如,DRAM、HBM、RAM芯片100),其在第一训练迭代集和/或第二训练迭代集期间保持第一数据中的一些或全部(例如,在第一迭代集和第二迭代集期间,根据需要将第一数据总线传输到芯片上和芯片外)。同样地,在一些实施例中,在接收到第二数据之后,片外存储器存储第二数据中的一些或全部(例如,当向第二数据分配分数时)。在一些实施例中,当芯片断电时,片外存储器(例如,非易失性存储器)存储指令。在一些实施例中,芯片包括与片外存储器可通信地耦合的缓冲器(例如,SRAM缓冲器/高速缓存108)。在一些实施例中,缓冲器包括第一RAM或第二RAM的一部分。在一些实现方式中,电子***被配置为执行方法400的操作中的任一个。
图5A-5B图示了用于训练人工神经网络的方法500。方法500在计算设备(例如,图2所示的芯片202)处执行(502),该计算设备包括一个或多个处理器、磁随机存取存储器(MRAM)和存储用于由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。在一些实现方式中,MRAM与一个或多个处理器在(504)相同芯片上。
该方法包括接收(506)在其上训练人工神经网络(ANN)的第一数据。使用MRAM,计算设备通过对第一数据执行第一训练迭代集来训练(508)ANN。第一迭代集中的每一个包括使用与第一写入错误率相对应的第一写入参数将ANN的权重集的值写入MRAM。上文参考方法400(图4A-4B)讨论了各种类型的错误。为简洁起见,在此不再重复这些细节。本文描述的错误率可以是指根据各种实施例,特定错误率(例如,特定类型的错误的错误率)或净错误率(例如,基于错误组合的率,因为(I)权重的所存储的值是错误的(例如,写入错误、保留错误或读取干扰错误);以及(II)用于权重的所存储的值是正确的但它被不正确地读取)。
在一些实现方式中,第一训练迭代集中的每一个包括(510)从MRAM读取ANN的权重集的值,并且使用一个或多个处理器执行算术操作集以更新ANN的权重集的值。针对该迭代写入MRAM的ANN的权重集的值是所更新的权重集。
在一些实现方式中,在第一训练迭代集期间,计算设备执行(512)错误检测,该错误检测包括检测存储在MRAM中的相应权重(或激活或偏差)中的错误,并且在使用相应权重(例如,在前向或后向传播中)之前,用零值替换为相应权重存储的值。在一些情况下,检测和用零值掩蔽错误显著放宽了对收敛的要求(例如,第一训练迭代集可以容忍高得多的误码率并且仍然收敛)。
在一些实现方式中,第一写入参数对应于(514)低于第一训练迭代集的收敛的阈值的误码率(例如,在读取过程期间,以低于收敛的阈值的误码率生成错误)。在一些实施例中,可以为第一RAM配置误码率。例如,在一些实施例中,MRAM的误码率取决于写入脉冲持续时间和/或写入脉冲长度,并且(例如,从校准曲线)选择写入脉冲持续时间和/或写入脉冲长度以在第一训练操作集期间,以低于收敛的阈值的误码率操作第一RAM。
在一些实现方式中,收敛的阈值大于(516):10-3、10-5、或10-7(516)。在一些实施例中,在没有错误检测和掩蔽的情况下执行该方法,并且收敛的阈值大于10-2、10-3或10-4。
在一些实现方式中,第一写入错误率大于(518):10-4、10-6、或10-8。
在一些实现方式中,第一训练迭代集包括(520)超出用于训练ANN的训练迭代的总数的20%、40%、60%、80%或95%。
在执行第一迭代集之后,计算设备对第一数据执行(522)第二训练迭代集。第二迭代集中的每一个包括使用对应于第二写入错误率的第二写入参数(例如,在读取过程期间,以低于收敛的阈值的误码率生成错误),将ANN的权重集的值写入MRAM。第二写入错误率低于第一写入错误率。
在一些实施例中,写入错误率逐渐减小。为此,在一些实施例中,存在两个以上迭代集,包括第三迭代集。第三迭代集中的每一个包括使用对应于第三写入错误率的第三写入参数,将ANN的权重集的值写入MRAM。第三写入错误率低于第一写入错误率和第二错误率。在一些实施例中,每个迭代集包括单次迭代。在一些实施例中,每个迭代集包括多个迭代。
在一些实现方式中,第一迭代集中的每一个包括(524)写入ANN的偏差集和激活集的值,并且第二迭代集中的每一个包括写入ANN的偏差集和激活集的值。
在一些实现方式中,第一写入参数包括(526)第一写入脉冲持续时间,以及第二写入参数包括比第一写入脉冲持续时间长的第二写入脉冲持续时间。
在一些实现方式中,第一写入参数包括(528)第一写入电流,第二写入参数包括大于第一写入电流的第二写入电流。
在一些实现方式中,使用对应于第一写入错误率的写入参数将ANN的权重集的值写入MRAM包括(530)在不使用纠错码的情况下写入值,以及使用对应于第二写入错误率的第二写入参数将ANN的权重集的值写入MRAM包括使用纠错码写入值。在一些实施例中,第一迭代集包括错误检测和掩蔽,如上所述,但不包括纠错。
在一些实现方式中,第二训练迭代集中的每一个包括(532)从MRAM读取ANN的权重集的值,并且使用一个或多个处理器执行算术操作集以更新ANN的权重集的值。对该迭代写入MRAM的ANN的权重集的值是所更新的权重集。
在一些实现方式中,第一迭代集中的每一个包括(534)使用对应于第一读取错误率的第一读取参数,将ANN的权重集的值读取到MRAM,并且第二迭代集中的每一个包括使用对应于第二读取错误率的第二读取参数,将ANN的权重集的值读取到MRAM。第二读取错误率低于第一读取错误率。
在使用第三迭代集的一些实施例中,第三迭代集中的每一个包括使用对应于第三读取错误率的第三读取参数,将ANN的权重集的值读取到MRAM。第三读取错误率低于第一读取错误率和第二读取错误率(例如,读取错误率随着训练进行而逐渐减小)。
在一些实现方式中,第一读取参数包括(536)第一读取脉冲持续时间,且第二读取参数包括比第一读取脉冲持续时间长的第二读取脉冲持续时间。
在一些实现方式中,第一读取参数包括(538)第一读取电流,而第二读取参数包括大于第一读取电流的第二读取电流。
计算设备存储(540)所训练的ANN的值。所训练的ANN被配置为基于所存储的值,对第二数据(例如,未训练的数据)进行分类。
在一些实现方式中,在训练ANN之后,计算设备接收(542)第二数据并且使用所训练的ANN的所存储的值,对第二数据分配分数。
在一些实现方式中,提供了一种电子***。该***包括一个或多个处理器、磁随机存取存储器(MRAM)、被配置成将数据写入MRAM的写入电路、以及存储用于由一个或多个处理器执行的指令的非暂时性计算机可读存储介质。在一些实施例中,写入电路包括字线和位线(例如,导线)以及对应的晶体管的集(例如,用于激活字线和位线)。在一些实施例中,写入电路包括存储第一写入参数和第二写入参数的存储器或与该存储器耦合。所存储的指令包括用于接收在其上训练人工神经网络(ANN)的第一数据的指令。所述指令进一步包括用于使用MRAM,通过对第一数据执行第一训练迭代集来训练ANN的指令。第一迭代集中的每一个包括使用写入电路,使用对应于第一写入错误率的第一写入参数,将ANN的权重集的值写入MRAM。指令包括用于在执行第一迭代集之后,对第一数据执行第二训练迭代集的指令。第二迭代集中的每一个包括使用写入电路,使用对应于第二写入错误率的第二写入参数,将ANN的权重集的值写入MRAM。第二写入错误率低于第一写入错误率。指令进一步包括用于存储所训练的ANN的值的指令。所训练的ANN被配置为基于所存储的值对第二数据进行分类。
在一些实现方式中,电子***包括芯片(例如,芯片202)。在一些实施例中,MRAM驻留在芯片上。在一些实施例中,一个或多个处理器驻留在芯片上。在一些实施例中,一个或多个处理器包括算术逻辑单元(ALU)。在一些实施例中,非暂时性计算机可读存储介质驻留在芯片上。在一些实施例中,当芯片上电时,非暂时性计算机可读存储介质被加载(例如,写入)指令。在一些实施例中,非暂时性计算机可读存储介质包括MRAM的一部分。在一些实施例中,电子***包括片外存储器(例如,DRAM、HBM),其在第一训练迭代集和/或第二训练迭代集期间保持第一数据中的一些或全部(例如,在第一迭代集和第二迭代集期间,根据需要将第一数据总线传输到芯片上和芯片外)。同样地,在一些实施例中,在接收到第二数据之后,片外存储器存储第二数据中的一些或全部(例如,当向第二数据分配分数时)。在一些实施例中,当芯片断电时,片外存储器(例如,非易失性存储器)存储指令。在一些实施例中,芯片包括与片外存储器可通信地耦合的缓冲器。在一些实施例中,缓冲器包括MRAM的一部分。在一些实施例中,缓冲器包括不同于MRAM的类型的存储器(例如SRAM)。
在一些实现方式中,电子***被配置为执行参考方法500所描述的操作中的任一个。
图6是根据一些实施例的用于训练人工神经网络的计算机***630的框图。计算机***630通常包括用于执行程序或指令的一个或多个处理器(有时称为CPU)602;存储器610;一个或多个通信接口606;以及用于互连这些组件的一个或多个通信总线605。在一些实施例中,处理器602包括参考图1-2示出和描述的芯片102/202。计算机***630可选地包括通过一个或多个通信总线605,耦合到计算机***630的其他组件的用户接口609,用户接口609包括显示设备611和一个或多个输入设备613(例如,键盘、鼠标、触摸屏、小键盘等中的一个或多个)。一个或多个通信总线605可以包括互连***组件并控制***组件之间的通信的电路(有时称为芯片组)。
计算机***630使用通信接口606将信息传送到外部***,并从外部***(诸如外部数据库652(例如,其可以存储ANN训练数据或由训练的ANN分类的数据)接收通信。计算机***630和外部数据库652之间的连接可以包括通信网络,诸如互联网或公共或专有无线网络。
存储器610包括高速随机存取存储器,诸如DRAM、SRAM、DDRRAM或其他随机存取固态存储器设备,以及可以包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备或其他非易失性固态存储设备。存储器610可选地包括远离CPU 602放置的一个或多个存储设备。存储器610或者存储器610内的非易失性存储器设备包括计算机可读存储介质。在一些实施例中,存储器610或存储器610的计算机可读存储介质存储以下程序、模块和数据结构或其子集:
·操作***612,其包括用于处理各种基本***服务和用于执行硬件相关任务的过程;
·通信模块614,其协同通信接口606操作以处理计算机130与外部***之间的通信;
·用户接口模块616,用于从用户接口数据库609的一个或多个输入设备613接收信息,并且经由一个或多个显示器或输出设备611,将信息传达给计算机***630的用户;
·ANN训练模块618,用于训练人工神经网络(例如,使***执行本文所述的任何ANN训练方法);
·用于训练人工神经网络的ANN训练数据620(例如,指示正确分类的输入和标签的集合)。
操作***612和上述所标识的模块和应用中的每一个对应于用于执行上述功能的指令集。该指令集可以由计算机***630的一个或多个处理器602执行。上述所标识的模块、应用或程序(即,指令集)不需要被实现为单独的软件程序、过程或模块,并因此在各个实施例中,可以组合或以其他方式重新布置这些模块的各种子集。在一些实施例中,存储器610存储上面标识的模块和数据结构的子集。此外,存储器610可选地存储上文未描述的附加模块和数据结构。
图6更多地旨在作为计算机***630中可能存在的各种特征的功能描述,而不是作为本文描述的实施例的结构示意图。实际上,并且如本领域普通技术人员所认识到的,可以组合单独示出的项目,并且可以分离一些项目。例如,图6中单独示出的一些项目可以组合成单个模块或组件,并且单个项目可以使用两个或更多个模块或组件来实现。模块和组件的实际数量以及如何在它们之间分配特征将因实现方式而异。
另外,在一些实施例中,上述功能中的一些或全部可以用硬件电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、包括处理器和存储器的“片上***”等)来实现。为此,在一些实施例中,CPU 602包括用于执行这些和其他任务的专用硬件。
尽管各种附图中的一些以特定顺序示出了多个逻辑阶段,但是可以重新排序不依赖于顺序的阶段,并且可以组合或分解其他阶段。虽然具体提及了一些重新排序或其他分组,但是其他对于本领域普通技术人员而言将是显而易见的,因此本文呈现的排序和分组不是替代方案的详尽列表。此外,应当认识到,这些阶段可以用硬件、固件、软件或其任何组合来实现。
还应当理解,尽管在某些情况下,术语第一、第二等在本文中被用于描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于将一个元件与另一个元件区分开。例如,在不脱离各种所描述的实现方式的范围的情况下,第一电子设备可以被称为第二电子设备,并且类似地,第二电子设备可以被称为第一电子设备。第一电子设备和第二电子设备都是电子设备,但它们不是相同类型的电子设备。
在描述本文的各种所描述的实施例的描述中使用的术语是仅是为了描述特定实现方式的目的,而不是旨在限制。如在各个所述的实现方式及所附权利要求的描述中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。还应当理解,本文所用的术语“和/或”是指并涵盖相关列出的项目的一个或多个的任何和所有可能的组合。将进一步理解,术语“包括”和/或“包含”当在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
如本文所使用的,根据上下文,术语“如果”可选地被解释为意指“当......时”或“在.....时”或“响应于确定”或“响应于检测到”或“根据确定”。类似地,根据上下文,短语“如果确定”或“如果检测到[所述条件或事件]”可选地被解释为意指“在确定时”或“响应于确定”或“在检测到[所述条件或事件]时”或“响应于检测到[所述条件或事件]”或“根据确定检测到[所述条件或事件]”。
出于解释的目的,前面的描述已经参考具体实现方式进行了描述。然而,上面的说明性讨论并不旨在穷举或将权利要求的范围限制为所公开的精确形式。鉴于以上教导,可以有许多修改和变更。选择实现方式以便最好地解释作为权利要求及其实际应用的基础的原理,从而使得本领域其他技术人员能够最好地使用具有适合于预期的特定用途的各种修改的实现方式。
Claims (37)
1.一种方法,包括:
在计算设备处执行操作集,所述计算设备包括一个或多个处理器、包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM)、不同于MRAM的类型的第二随机存取存储器和存储由所述一个或多个处理器执行的指令的非暂时性计算机可读存储介质,所述操作集包括:
接收在其上训练人工神经网络(ANN)的第一数据;
通过:
使用包括所述MRAM的第一RAM,执行第一训练迭代集以使用所述第一数据训练所述ANN;以及
在执行所述第一训练迭代集之后,使用不同于MRAM的类型的所述第二RAM,执行第二训练迭代集以使用所述第一数据训练所述ANN,
来训练所述ANN;以及
存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值,对第二数据进行分类。
2.如权利要求1所述的方法,其中:
所述第一训练迭代集中的每一个包括:
从包括所述MRAM的所述第一RAM中读取所述ANN的权重集的值;
使用所述一个或多个处理器,执行算术操作集以更新所述ANN的所述权重集的所述值;以及
将所述ANN的所更新的权重集写入包括所述MRAM的所述第一RAM。
3.如权利要求2所述的方法,其中:
所述第一训练迭代集中的每一个包括:
从包括所述MRAM的所述第一RAM中读取所述ANN的偏差集的值;
使用所述一个或多个处理器,执行算术操作集以更新所述ANN的所述偏差集的所述值;以及
将所述ANN的所更新的偏差集写入包括所述MRAM的所述第一RAM。
4.如权利要求3所述的方法,其中:
所述第二训练迭代集中的每一个包括:
从不同于MRAM的类型的所述第二RAM中读取所述ANN的所述权重集和/或所述偏差集的值;
使用所述一个或多个处理器,执行所述算术操作集以更新所述ANN的所述权重集和/或所述偏差集的所述值;以及
将所述ANN的所更新的权重集和/或偏差集写入不同于所述MRAM的类型的所述第二RAM。
5.如权利要求3-4中的任一项所述的方法,其中:
所述第二训练迭代集中的每一个包括:
从不同于MRAM的类型的所述第二RAM中读取所述ANN的激活集的值;
使用所述一个或多个处理器,执行所述算术操作集以更新所述ANN的所述激活集的所述值;以及
将所述ANN的所更新的激活集写入不同于所述MRAM的类型的所述第二RAM。
6.如权利要求1-5中的任一项所述的方法,其中,包括所述MRAM的所述第一RAM与所述一个或多个处理器在相同芯片上。
7.如权利要求1-6中的任一项所述的方法,其中,在所述第一训练迭代集期间,所述第一RAM作为易错存储器操作。
8.如权利要求7所述的方法,其中:
所训练的ANN的所存储的值包括所存储的权重;
所述方法进一步包括:
在所述第一训练迭代集期间,执行错误检测,所述错误检测包括检测存储在所述第一RAM中的相应权重中的错误;
在使用所述相应权重之前,用零值替换存储在所述相应权重中的值。
9.如权利要求7-8中的任一项所述的方法,其中,所述第一RAM具有低于所述第一训练迭代集的收敛的阈值的误码率。
10.如权利要求9所述的方法,其中,所述收敛的阈值大于:10-3、10-5、或10-7。
11.如权利要求9-10中的任一项所述的方法,其中,所述误码率大于:10-4、10-6、或10-8。
12.如权利要求1-11中的任一项所述的方法,其中,所述第二RAM包括静态RAM(SRAM)。
13.如权利要求1-12中的任一项所述的方法,其中,所述第一训练迭代集包括超过用于训练所述ANN的训练迭代的总数的20%、40%、60%、80%或95%。
14.如权利要求1-13中的任一项所述的方法,进一步包括在训练所述ANN之后:
接收第二数据;以及
使用所训练的ANN的所存储的值,为所述第二数据分配分数。
15.一种电子***,包括:
一个或多个处理器;
包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM);
不同于MRAM的类型的第二随机存取存储器;
存储可由所述一个或多个处理器执行的指令的非暂时性计算机可读存储介质,所述指令包括用于以下的指令:
通过使用包括MRAM的所述第一RAM执行第一训练迭代集,来使用第一数据训练人工神经网络(ANN);
通过使用包括不同于MRAM的类型的所述第二RAM执行第二训练迭代集,来使用所述第一数据训练所述ANN;以及
存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值对第二数据进行分类。
16.一种电子***,包括:
一个或多个处理器;
包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM);
不同于MRAM的类型的第二随机存取存储器;
存储可由所述一个或多个处理器执行的指令的非暂时性计算机可读存储介质,所述指令包括用于执行如权利要求1-14中的任一项所述的方法的指令。
17.一种存储可由电子设备执行的一个或多个程序的非暂时性计算机可读存储介质,所述电子设备包括一个或多个处理器、包括磁随机存取存储器(MRAM)的第一随机存取存储器(RAM)和不同于MRAM的类型的第二随机存取存储器,所述一个或多个程序包括用于执行如权利要求1-14中的任一项所述的方法的指令。
18.一种方法,包括:
在计算设备处执行操作集,所述计算设备包括一个或多个处理器、磁随机存取存储器(MRAM)和存储由所述一个或多个处理器执行的指令的非暂时性计算机可读存储介质,所述操作集包括:
接收在其上训练人工神经网络(ANN)的第一数据;
使用所述MRAM,通过:
对所述第一数据执行第一训练迭代集,其中,所述第一迭代集中的每一个包括使用对应于第一写入错误率的第一写入参数,将所述ANN的权重集的值写入所述MRAM;以及
在执行所述第一迭代集之后,对所述第一数据执行第二训练迭代集,其中,所述第二迭代集中的每一个包括使用对应于第二写入错误率的第二写入参数,将所述ANN的所述权重集的值写入所述MRAM,其中,所述第二写入错误率低于所述第一写入错误率,
来训练所述ANN;
存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值对第二数据进行分类。
19.如权利要求18所述的方法,其中:
所述第一迭代集中的每一个包括写入所述ANN的偏差集和激活集的值;以及
所述第二迭代集中的每一个包括写入所述ANN的所述偏差集和所述激活集的值。
20.如权利要求18-29中的任一项所述的方法,其中:
所述第一写入参数包括第一写入脉冲持续时间;以及
所述第二写入参数包括比所述第一写入脉冲持续时间长的第二写入脉冲持续时间。
21.如权利要求18-20中的任一项所述的方法,其中:
所述第一写入参数包括第一写入电流;以及
所述第二写入参数包括大于所述第一写入电流的第二写入电流。
22.如权利要求18-21中的任一项所述的方法,其中:
使用对应于所述第一写入错误率的写入参数将所述ANN的所述权重集的所述值写入所述MRAM包括写入所述值而不使用纠错码;以及
使用对应于所述第二写入错误率的第二写入参数将所述ANN的所述权重集的所述值写入所述MRAM包括使用纠错码写入所述值。
23.如权利要求18-22中的任一项所述的方法,其中:
所述第一训练迭代集中的每一个包括:
从所述MRAM中读取所述ANN的所述权重集的所述值;
使用所述一个或多个处理器,执行算术操作集来更新所述ANN的所述权重集的所述值,
其中,对于所述迭代写入所述MRAM的所述ANN的所述权重集的所述值是所更新的权重集。
24.如权利要求23所述的方法,其中:
所述第二训练迭代集中的每一个包括:
从所述MRAM中读取所述ANN的所述权重集的所述值;
使用所述一个或多个处理器,执行所述算术操作集以更新所述ANN的所述权重集的所述值,
其中,对于所述迭代写入所述MRAM的所述ANN的所述权重集的所述值是所更新的权重集。
25.如权利要求18-24中的任一项所述的方法,其中,所述MRAM与所述一个或多个处理器在相同芯片上。
26.如权利要求18-25中的任一项所述的方法,进一步包括:
在所述第一训练迭代集期间,执行错误检测,所述错误检测包括检测存储在所述MRAM中的相应权重中的错误;
在使用所述相应权重之前,用零值替换为所述相应权重存储的值。
27.如权利要求18-26中的任一项所述的方法,其中,所述第一写入参数对应于低于所述第一训练迭代集的收敛的阈值的误码率。
28.如权利要求18-27中的任一项所述的方法,其中,所述收敛的阈值大于:10-3、10-5、或10-7。
29.如权利要求18-28中的任一项所述的方法,其中,所述第一写入错误率大于:10-4、10-6、或10-8。
30.如权利要求18-29中的任一项所述的方法,其中,所述第一训练迭代集包括超过用于训练所述ANN的训练迭代的总数的20%、40%、60%、80%或95%。
31.如权利要求18-30中的任一项所述的方法,其中:
所述第一迭代集中的每一个包括使用对应于第一读取错误率的第一读取参数,将所述ANN的所述权重集的值读取到所述MRAM;以及
所述第二迭代集中的每一个包括使用对应于第二读取错误率的第二读取参数,将所述ANN的所述权重集的值读取到所述MRAM,其中,所述第二读取错误率低于所述第一读取错误率。
32.如权利要求31所述的方法,其中:
所述第一读取参数包括第一读取脉冲持续时间;以及
所述第二读取参数包括比所述第一读取脉冲持续时间长的第二读取脉冲持续时间。
33.如权利要求31-32中的任一项所述的方法,其中:
所述第一读取参数包括第一读取电流;以及
所述第二读取参数包括大于所述第一读取电流的第二读取电流。
34.如权利要求18-33中的任一项所述的方法,进一步包括在训练所述ANN之后:
接收第二数据;以及
使用所存储的所训练的ANN的值,对所述第二数据分配分数。
35.一种***,包括:
一个或多个处理器;
磁随机存取存储器(MRAM);
写入电路,所述写入电路被配置为将数据写入所述MRAM;以及
存储用于由所述一个或多个处理器执行的指令的非暂时性计算机可读存储介质,所述指令包括用于以下的指令:
接收在其上训练人工神经网络(ANN)的第一数据;
使用所述MRAM,通过:
对所述第一数据执行第一训练迭代集,其中,所述第一迭代集中的每一个包括使用所述写入电路,使用对应于第一写入错误率的第一写入参数将所述ANN的权重集的值写入所述MRAM;以及
在执行所述第一迭代集之后,对所述第一数据执行第二训练迭代集,其中,所述第二迭代集中的每一个包括使用所述写入电路,使用对应于第二写入错误率的第二写入参数将所述ANN的所述权重集的值写入所述MRAM,其中,所述第二写入错误率低于所述第一写入错误率,
来训练所述ANN;
存储所训练的ANN的值,其中,所训练的ANN被配置为基于所存储的值对第二数据进行分类。
36.一种***,包括:
一个或多个处理器;
磁随机存取存储器(MRAM);
写入电路,所述写入电路被配置为将数据写入所述MRAM;以及
存储用于由所述一个或多个处理器执行的指令的非暂时性计算机可读存储介质,所述指令包括用于执行如权利要求18-34中的任一项所述的方法的指令。
37.一种存储由***执行的一个或多个程序的非暂时性计算机可读存储介质,所述***具有一个或多个处理器、磁随机存取存储器(MRAM)和被配置为将数据写入所述MRAM的写入电路,所述一个或多个程序包括用于执行如权利要求18-34中的任一项所述的方法的指令。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/223,055 US20200193282A1 (en) | 2018-12-17 | 2018-12-17 | System and Method for Training Artificial Neural Networks |
US16/223,058 US11586906B2 (en) | 2018-12-17 | 2018-12-17 | System and method for training artificial neural networks |
US16/223,058 | 2018-12-17 | ||
US16/223,055 | 2018-12-17 | ||
PCT/US2019/066847 WO2020131868A1 (en) | 2018-12-17 | 2019-12-17 | System and method for training artificial neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113841165A true CN113841165A (zh) | 2021-12-24 |
Family
ID=69326626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980092228.9A Pending CN113841165A (zh) | 2018-12-17 | 2019-12-17 | 用于训练人工神经网络的***和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113841165A (zh) |
WO (1) | WO2020131868A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11599773B2 (en) | 2018-12-27 | 2023-03-07 | Micron Technology, Inc. | Neural networks and systems for decoding encoded data |
US11563449B2 (en) | 2021-04-27 | 2023-01-24 | Micron Technology, Inc. | Systems for error reduction of encoded data using neural networks |
US11973513B2 (en) | 2021-04-27 | 2024-04-30 | Micron Technology, Inc. | Decoders and systems for decoding encoded data using neural networks |
US11755408B2 (en) | 2021-10-07 | 2023-09-12 | Micron Technology, Inc. | Systems for estimating bit error rate (BER) of encoded data using neural networks |
-
2019
- 2019-12-17 WO PCT/US2019/066847 patent/WO2020131868A1/en active Application Filing
- 2019-12-17 CN CN201980092228.9A patent/CN113841165A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2020131868A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11501109B2 (en) | Non-volatile memory die with on-chip data augmentation components for use with machine learning | |
CN113841165A (zh) | 用于训练人工神经网络的***和方法 | |
US11914860B2 (en) | Data storage for artificial intelligence-based applications | |
US11507843B2 (en) | Separate storage and control of static and dynamic neural network data within a non-volatile memory array | |
US10691537B2 (en) | Storing deep neural network weights in non-volatile storage systems using vertical error correction codes | |
US20130305123A1 (en) | Switchable on-die memory error correcting engine | |
US10733039B2 (en) | Effective chip yield for artificial intelligence integrated circuit with embedded memory | |
KR102626162B1 (ko) | 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법 | |
US11520521B2 (en) | Storage controller having data augmentation components for use with non-volatile memory die | |
US11189358B2 (en) | Method of controlling operation of nonvolatile memory device using machine learning and storage system | |
US10740165B2 (en) | Extending the error correction capability of a device using a neural network | |
JP7069233B2 (ja) | 特定のシステムレベルトリガ及びポリシーに基づいた不規則なコードスキームの適応的使用 | |
US20200193282A1 (en) | System and Method for Training Artificial Neural Networks | |
Donato et al. | Memti: Optimizing on-chip nonvolatile storage for visual multitask inference at the edge | |
US11836607B2 (en) | System and method for classifying data using neural networks with errors | |
CN115762608A (zh) | 压缩存储器装置中使用的深度神经网络 | |
US20130246847A1 (en) | Method of detecting error in write data and data processing system to perform the method | |
US11574194B2 (en) | System and method for training neural networks with errors | |
US11586906B2 (en) | System and method for training artificial neural networks | |
US20220044102A1 (en) | Fault tolerant artificial neural network computation in deep learning accelerator having integrated random access memory | |
CN117693758A (zh) | 与递归神经网络一起使用的非易失性存储器(nvm)设备的混合存储器管理 | |
US11681909B2 (en) | Memory component with a bus to transmit data for a machine learning operation and another bus to transmit host data | |
US10163515B1 (en) | Memory system having feature boosting and operating method thereof | |
WO2019027849A1 (en) | SYSTEMS AND METHODS FOR PARTIAL DIGITAL RELEASE | |
US11080059B1 (en) | Reducing firmware size and increasing firmware performance |
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 |