本发明涉及片上训练,特别涉及一种基于矩阵低秩分解的忆阻器存算一体片上训练方法及装置。
背景技术:
1、近十几年,人工智能领域经历了显著的技术革新,特别是深度学习算法在计算机视觉、自然语言处理和强化学习等多个方向取得了很大进展。这些算法通常依赖于大规模的神经网络模型,这些模型的参数量和数据量都急剧增长,因此对计算资源的需求也随之增长。传统的基于cmos的冯诺依曼架构芯片,如cpu,由于其存储和处理单元的分离,导致在执行深度学习任务时能效低,算力小。虽然gpu算力很高,但在能效方面仍存在不足。因此在边缘计算场景中,基于非冯架构的高算力高能效的芯片,是一个关键的研究方向。
2、基于非易失性存储阵列的存算一体计算芯片突破冯诺依曼架构限制,将存储单元和计算单元融合,减少数据在存储单元和计算单元之间搬移的时延和能耗。在面向神经网络等计算密集型任务时,存储单元和计算单元融合所带来的高能效更加突出。在存算一体计算芯片中,核心计算单元由非易失性存储阵列和外围电路(如模数转换器,数模转换器等)组成,其可以通过模拟计算的方式,加速神经网络等计算密集任务中的核心算子--矩阵向量乘(matrix vector multiplication,mvm)的计算。尽管该方案具备高能效的特点,且具有算力的扩展性,然而由非易失性存储阵列和外围电路利用模拟计算实现矩阵向量乘计算时,会面临忆阻器单元、忆阻器阵列、外围模拟电路等多层级非理想因素的叠加影响使得计算过程发生精度损失,使得计算结果低于数字芯片的计算结果。尤其面对多层深度网络时,非理想因素所带来的精度损失更加严重。
3、针对存算一体存在的精度损失问题,当前的解决方案分为两种,一种是离线训练方案,另外一种是片上训练方案。
4、离线训练的思路是对计算过程中的忆阻器阵列以及外围电路的非理想因素进行建模,获得紧凑模型,如器件的relaxation模型、器件有限状态(量化模型)、器件读写噪声模型、电路的ir-drop模型等,并将这些模型带入网络训练中,利用神经网络的冗余特性,获得可以容忍这些非理想因素的模型,然后部署到芯片中。然而这个方法存在两个问题:1)建模难:器件阵列以及电路的非理想因素多数是强耦合的,这使得构建芯片状态的模型影响因子很多,且很难利用这些紧凑模型完全契合芯片实际的工作行为。因此,训练出来的网络并不能够完全适应芯片上的非理想因素,使得训练后的网络部署芯片后往往发生精度降低现象;2)难以适应芯片变化:训练出来的网络,在部署到忆阻器阵列的过程中,会存在写入误差。并且在写入后,由于器件存在retention等特性,使得权重值会随时间发生漂移,离线学习无法适应这些芯片内部的变化。
5、片上训练的思路是,将芯片纳入训练过程中,即首先将离线训练获得的网络模型部署到芯片上,然后进行进一步的适应性训练。在适应性训练过程中,推理过程在芯片上实际完成,然后计算梯度在片上进行更新,以获得更高的计算准确率。该方案不需要完美的紧凑模型来表示芯片行为,同样也能够适应芯片的变化。当前主要有混合训练,逐层训练等方法。然而,这些方法存在以下的问题:1)混合训练只能对最后的少数层进行片上调整,这种方法不具有可扩展性。面对深度大规模神经网络的片上部署时,最后层的冗余性不能完全的解决前面层的精度损失;2)逐层训练是一种layer-wise的贪婪算法。其可以训练出适应芯片非理想因素的深层神经网络。然而,其训练的代价极大,包括时间成本和功耗成本,这使得这种方法不具备实际应用可能。
6、与此同时,无论是离线训练还是片上训练,在部署深层神经网络过程中,相较于数字芯片的计算结果,尽管能够补偿大部分非理想因素的影响,但仍然会存在比较大的精度损失。这是模拟忆阻器阵列特性决定的。
技术实现思路
1、本发明提供一种基于矩阵低秩分解的忆阻器存算一体片上训练方法及装置,以解决现有片上训练方法时间功耗代价过大,可扩展性不强,不能适用于大规模深度神经网络,训练后仍然存在较大的精度损失等问题。
2、本发明第一方面实施例提供一种基于矩阵低秩分解的忆阻器存算一体片上训练方法,包括以下步骤:将目标训练网络模型代入预设非理想因素模型中进行离线训练,以获得对目标存算一体芯片实际非理想因素具有容忍能力的预训练模型;利用矩阵低秩分解网络对所述预训练模型进行低秩分解,以获得主干预训练网络和旁路网络;将所述主干预训练网络部署至所述目标存算一体芯片的忆阻器阵列中,将所述旁路网络部署至所述目标存算一体芯片的数字单元中,以对所述忆阻器阵列和所述数字单元进行片上训练,得到训练后的忆阻器阵列。
3、可选地,还包括:在进行离线训练前,对所述目标训练网络模型进行量化加噪,以利用量化加噪后的目标训练网络模型代入所述预设非理想因素模型中进行离线训练。
4、可选地,所述利用矩阵低秩分解网络对所述预训练模型进行低秩分解,获得主干预训练网络和旁路网络,包括:获取所述预训练模型的主网络层,并将所述主网络层作为所述主干预训练网络;利用矩阵低秩分解网络对所述主网络层进行低秩分解,获得多个两层小网络,以将所述多个两层小网络作为所述旁路网络。
5、可选地,每个两层小网络为两层全连接层网络或两层卷积层网络。
6、可选地,所述将所述主干预训练网络部署至所述目标存算一体芯片的忆阻器阵列中,将所述旁路网络部署至所述目标存算一体芯片的数字单元中,以对所述忆阻器阵列和所述数字单元进行片上训练,得到训练后的忆阻器阵列,包括:将所述主干预训练网络部署至所述目标存算一体芯片的忆阻器阵列中进行前向推理,得到第一输出;将所述旁路网络部署至所述目标存算一体芯片的数字单元中进行前向推理,得到第二输出;将所述第一输出和所述第二输出与预设理论值进行比较,根据比较结果获得残差;利用所述残差对所述旁路网络的梯度进行反向更新,得到所述训练后的忆阻器阵列。
7、本发明第二方面实施例提供一种基于矩阵低秩分解的忆阻器存算一体片上训练装置,包括:离线训练模块,用于将目标训练网络模型代入预设非理想因素模型中进行离线训练,以获得对目标存算一体芯片实际非理想因素具有容忍能力的预训练模型;低秩分解模块,用于利用矩阵低秩分解网络对所述预训练模型进行低秩分解,以获得主干预训练网络和旁路网络;片上训练模块,用于将所述主干预训练网络部署至所述目标存算一体芯片的忆阻器阵列中,将所述旁路网络部署至所述目标存算一体芯片的数字单元中,以对所述忆阻器阵列和所述数字单元进行片上训练,得到训练后的忆阻器阵列。
8、可选地,所述片上训练模块包括数字矩阵乘计算单元、第一模拟存算一体计算子单元、第二模拟存算一体计算子单元和特殊函数计算单元,其中,
9、模拟存算一体计算单元,用于将所述主干预训练网络部署至所述目标存算一体芯片的忆阻器阵列中进行前向推理,得到第一输出;
10、第一数字矩阵乘计算单元,用于将所述旁路网络部署至所述目标存算一体芯片的数字单元中进行前向推理,得到第二输出;
11、特殊函数计算单元,用于将所述第一输出和所述第二输出与预设理论值进行比较,获得残差;
12、第二数字矩阵乘计算单元,用于利用所述残差对所述旁路网络的梯度进行反向更新,得到训练后的忆阻器阵列。
13、本发明第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法。
14、本发明第四方面实施例提供一种计算机程序产品,该计算机程序/指令被处理器执行时实现如上的基于矩阵低秩分解的忆阻器存算一体片上训练方法。
15、本发明第五方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,该程序被处理器执行时实现如上的基于矩阵低秩分解的忆阻器存算一体片上训练方法。
16、本发明实施例提出的基于矩阵低秩分解的忆阻器存算一体片上训练方法及装置,将离线训练后的网络模型部署到忆阻器阵列上后,将若干层对应的旁路网络部署在数字单元中并进行片上训练,在片上训练的过程中,旁路网络的参数量和计算量远远小于原始网络对应层,并且权重的更新只发生在旁路网络,因此不需要对忆阻器进行反复的编程操作,收敛快速,并且功耗代价很小,可扩展至大规模的深度神经网络,也可以提升整个系统的计算精度,精度上限更接近于全数字芯片的计算结果。
17、本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
1.一种基于矩阵低秩分解的忆阻器存算一体片上训练方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法,其特征在于,还包括:
3.根据权利要求1所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法,其特征在于,所述利用矩阵低秩分解网络对所述预训练模型进行低秩分解,获得主干预训练网络和旁路网络,包括:
4.根据权利要求3所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法,其特征在于,每个两层小网络为两层全连接层网络或两层卷积层网络。
5.根据权利要求1所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法,其特征在于,所述将所述主干预训练网络部署至所述目标存算一体芯片的忆阻器阵列中,将所述旁路网络部署至所述目标存算一体芯片的数字单元中,以对所述忆阻器阵列和所述数字单元进行片上训练,得到训练后的忆阻器阵列,包括:
6.一种基于矩阵低秩分解的忆阻器存算一体片上训练装置,其特征在于,包括:
7.根据权利要求6所述的基于矩阵低秩分解的忆阻器存算一体片上训练装置,其特征在于,所述片上训练模块包括数字矩阵乘计算单元、第一模拟存算一体计算子单元、第二模拟存算一体计算子单元和特殊函数计算单元,其中,
8.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-5任一项所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法。
9.一种计算机程序产品,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-5任一项所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-5任一项所述的基于矩阵低秩分解的忆阻器存算一体片上训练方法。