本发明涉及存算一体,特别涉及一种神经网络权重映射至忆阻器存算一体芯片的方法及装置。
背景技术:
1、随着人工智能、大数据、物联网等新一代信息技术的兴起,数据量呈现爆炸式增长,对传统计算系统的算力支撑提出了巨大挑战。传统计算系统基于冯诺依曼架构,将存储和计算分离,数据在存储和计算单元之间来回搬移,导致数据传输延迟和功耗损耗。
2、存算一体技术是一种将存储和计算单元进行融合的新型计算架构,可以有效解决传统计算系统的“存储墙”和“功耗墙”问题。存算一体技术将存储与计算融合至统一单元内,计算神经网络所需的权重数据不需要在存储器和计算器之间来回搬移,可以大大提高系统的性能和能效。
3、忆阻器是一种新型非易失性存储器,具有高密度、低功耗、可重编程等特点,非常适合存算一体技术。忆阻器的阻值可以根据电流的流动状态进行改变,可以模拟神经元之间的连接,从而实现人工智能应用。通常采用基于忆阻器的存算一体芯片需要将神经网络权重映射至忆阻器阵列,利用基尔霍夫定律可在o(n)的时间复杂度以内计算出乘法累加的结果。一种常用的映射方式接近的方案是直接映射,即将待映射的神经网络权重中需要相加的部分重排在同一列,将不需要相加的部分重排在不同列。以全连接和卷积为例,如图1和2所示:图中展示了将全连接算子与卷积算子映射至1t1r(一个晶体管与一个忆阻器作为基本单元)忆阻器阵列具体对应关系,对于全连接算子而言,需要将算子的行列与忆阻器阵列中的行列做一一对应;而对卷积算子而言,需要先将权重进行重排,同一通道内的权重排布至同一列内,不同通道的权重排布至不同列,然后与忆阻器阵列中的行列做一一对应。
4、采用直接映射的方式简单直接的将网络的权重与忆阻器阵列的物理位置进行了一一对应,在需要使用该权重时,将输入数据按行向输入,由列项输出并传给下一个阵列的输入。该方案的好处是只需要对网络权重按照忆阻器阵列需求重排即可;但劣势也十分明显,该方案在物理层面上构建了一种权重与忆阻器阵列之间的绑定关系。该绑定关系使得权重规模决定了所需使用的忆阻器阵列规模,在网络规模越来越大的情况下,会急剧增加所需忆阻器的数量,从而带来庞大的面积开销;除此之外在权重复用度较低的神经网络场景下,该绑定关系极大的限制了忆阻器阵列和阵列利用率,在硬件层面造成了严重的算力浪费。
5、在神经网络中,权重复用是一种用于减少模型中参数量的技术。权重复用的概念在卷积神经网络(convolutional neural networks,cnn)中最为明显。在cnn中,卷积核在输入数据上滑动,用于检测空间层次的特征,如边缘、纹理等。这个过程就是在进行权重复用,因为同一个卷积核在整个输入数据上都被使用。然而并不是所有神经网络都具有高复用度的设计。例如在基于transformer的大语言模型中,权重几乎都以全连接的形式出现,这意味着在一次前向推理过程中,每一个权重只会被使用一次,形成了权重复用度极低的应用场景。如果采用直接映射的方式用忆阻器阵列实现大语言模型,则会造成与对应权重发生绑定的忆阻器阵列在一起前向推理的过程中只被调用一次。以llama 7b为例,在一次前向推理过程中忆阻器阵列的平均利用率只有1.1%。这意味着在整个计算过程中,同一时间最高只能调用1.1%的算力。
6、因此,亟待一种实现将任意神经网络权重映射至忆阻器阵列,且能够提高忆阻器阵列的利用率映射方法。
技术实现思路
1、本发明提供一种神经网络权重映射至忆阻器存算一体芯片的方法及装置,以解决传统直接映射中出现的权重与物理阵列形成绑定关系后,会急剧增加所需忆阻器数量,进而带来庞大的面积开销,并限制了忆阻器阵列和阵列利用率等问题。
2、本发明第一方面实施例提供一种神经网络权重映射至忆阻器存算一体芯片的方法,包括以下步骤:对目标神经网络权重进行扩充与切分,得到多组子矩阵;对所述多组子矩阵进行基矩阵分解,得到多个不同的线性组合;将所述多个不同的线性组合映射至目标忆阻器阵列上,以在前向推理过程中,计算映射后的目标忆阻器阵列的输出结果。
3、可选地,所述对目标神经网络权重进行扩充与切分,得到多组子矩阵,包括:将所述目标神经网络权重进行维度扩充,得到目标忆阻器阵列规模整数倍的神经网络权重;将所述神经网络权重按照最小规模矩阵进行切分,得到所述多组子矩阵。
4、可选地,所述对所述多组子矩阵进行基矩阵分解,得到多个不同的线性组合,包括:对所述多组子矩阵进行基矩阵分解,使每组子矩阵均共享同一组基矩阵,得到所述多个不同的线性组合。
5、可选地,所述将所述多个不同的线性组合映射至目标忆阻器阵列上,以在前向推理过程中,计算映射后的目标忆阻器阵列的输出结果,包括:将所述多个不同的线性组合映射至所述目标忆阻器阵列上,得到所述映射后的目标忆阻器阵列;在前向推理过程中,利用数模转换器向所述映射后的目标忆阻器阵列输入预设电压值或预设电流值,并利用模数转换器输出所述目标忆阻器阵列中每个阵列的计算结果;将所述每个阵列的计算结果与其各自对应的反映射系数相乘,并将每个阵列的输出结果进行累加,得到所述输出结果。
6、本发明第二方面实施例提供一种神经网络权重映射至忆阻器存算一体芯片的装置,包括:扩充与切分模块,用于对目标神经网络权重进行扩充与切分,得到多组子矩阵;基矩阵分解模块,用于对所述多组子矩阵进行基矩阵分解,得到多个不同的线性组合;映射与计算模块,用于将所述多个不同的线性组合映射至目标忆阻器阵列上,以在前向推理过程中,计算映射后的目标忆阻器阵列的输出结果。
7、可选地,所述扩充与切分模块包括:扩充单元,用于通过补零方式将所述目标神经网络权重进行维度扩充,得到所述目标忆阻器阵列规模整数倍的神经网络权重;切分单元,用于将所述神经网络权重按照最小规模矩阵进行切分,得到所述多组子矩阵。
8、可选地,所述基矩阵分解模块具体用于:对所述多组子矩阵进行基矩阵分解,使每组子矩阵均共享同一组基矩阵,得到所述多个不同的线性组合。
9、可选地,所述映射与计算模块包括:映射单元,用于将所述多个不同的线性组合映射至所述目标忆阻器阵列上,得到所述映射后的目标忆阻器阵列;第一计算单元,用于在前向推理过程中,利用数模转换器向所述映射后的目标忆阻器阵列输入预设电压值或预设电流值,并利用模数转换器输出所述目标忆阻器阵列中每个阵列的计算结果;第二计算单元,用于将所述每个阵列的计算结果与其各自对应的反映射系数相乘,并将每个阵列的输出结果进行累加,得到所述输出结果。
10、本发明第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的神经网络权重映射至忆阻器存算一体芯片的方法。
11、本发明第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,该程序被处理器执行时实现如上的神经网络权重映射至忆阻器存算一体芯片的方法。
12、本发明实施例提出的神经网络权重映射至忆阻器存算一体芯片的方法及装置,可实现将任意神经网络权重映射至忆阻器阵列,可大大减少忆阻器阵列所需数量,减少面积开销;同时也可以避免传统直接映射中出现的权重与物理阵列形成绑定关系的劣势,将极大提高忆阻器阵列的利用率,使得忆阻器存算一体芯片算力在网络推理过程中能得到充分利用。
13、本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
1.一种神经网络权重映射至忆阻器存算一体芯片的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的神经网络权重映射至忆阻器存算一体芯片的方法,其特征在于,所述对目标神经网络权重进行扩充与切分,得到多组子矩阵,包括:
3.根据权利要求1所述的神经网络权重映射至忆阻器存算一体芯片的方法,其特征在于,所述对所述多组子矩阵进行基矩阵分解,得到多个不同的线性组合,包括:
4.根据权利要求1所述的神经网络权重映射至忆阻器存算一体芯片的方法,其特征在于,所述将所述多个不同的线性组合映射至目标忆阻器阵列上,以在前向推理过程中,计算映射后的目标忆阻器阵列的输出结果,包括:
5.一种神经网络权重映射至忆阻器存算一体芯片的装置,其特征在于,包括:
6.根据权利要求5所述的神经网络权重映射至忆阻器存算一体芯片的装置,其特征在于,所述扩充与切分模块包括:
7.根据权利要求5所述的神经网络权重映射至忆阻器存算一体芯片的装置,其特征在于,所述基矩阵分解模块具体用于:
8.根据权利要求5所述的神经网络权重映射至忆阻器存算一体芯片的装置,其特征在于,所述映射与计算模块包括:
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-4任一项所述的神经网络权重映射至忆阻器存算一体芯片的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-4任一项所述的神经网络权重映射至忆阻器存算一体芯片的方法。