掌桥专利:专业的专利平台
掌桥专利
首页

芯片、神经网络训练系统、内存管理方法及装置、设备

文献发布时间:2023-06-19 11:02:01


芯片、神经网络训练系统、内存管理方法及装置、设备

技术领域

本公开涉及人工智能技术领域,尤其涉及芯片、神经网络训练系统、内存管理方法及装置、设备。

背景技术

随着人工智能技术的发展,各种神经网络模型被广泛用于各个领域。由于神经网络模型越来越复杂,模型规模也越来越大,其所涉及的数据量也在不断增大。为了提高神经网络的训练速度,可以采用一些芯片(比如,AI芯片)加速神经网络训练,而通常单个芯片的存储空间非常有限,往往无法满足大规模的神经网络模型对内存的需求。目前通常采用多个芯片对神经网络进行加速训练,以弥补单个芯片内存不足的缺陷,多个芯片可从CPU接收指令,并根据指令共同完成对神经网络的加速训练。由于采用芯片训练神经网络时,芯片与CPU通信所使用的通信链路和CPU下发指令的通信链路相同,因而当使用芯片的数量较多时,每个芯片都要与CPU通信,从而会严重占用CPU下发指令的通信链路,影响CPU下发指令的效率,从而影响训练效率。同时,由于芯片的数量较多时,芯片之间的通信数据量较大,而芯片之间通信效率较低,也会影响神经网络训练效率。

发明内容

本公开提供一种芯片、神经网络训练系统、内存管理方法及装置、设备。

根据本公开实施例的第一方面,提供一种芯片,所述芯片包括处理单元、地址转换单元以及至少一个通信接口,每个所述通信接口可用于连接外接设备,所述外接设备的类型包括外部存储器和/或其他芯片,

所述处理单元,用于将待读取或待写入的与神经网络训练有关的数据对应的原始地址发送给所述地址转换单元,其中,所述原始地址为所述其他芯片中的物理地址;

所述地址转换单元,用于将所述原始地址转换为与所述外接设备的类型相匹配的目标地址并输出,以使所述处理单元在所述外接设备的所述目标地址读取或写入所述数据。

在一些实施例中,所述地址转换单元包括存储子单元;

所述存储子单元,用于存储所述其他芯片中的物理地址与所述外部存储器中的物理地址之间的映射关系;

所述地址转换单元,用于在确定所述通信接口连接所述外部存储器的情况下,基于所述映射关系将所述原始地址转换为所述目标地址。

在一些实施例中,所述地址转换单元,还用于在确定所述通信接口连接所述其他芯片的情况下,直接将所述原始地址确定为所述目标地址。

在一些实施例中,所述其他芯片的存储单元的物理地址被预先划分为多个地址分区,每个地址分区内的物理地址可通过预设的映射关系映射成所述外部存储器中的物理地址;

所述地址转换单元,用于确定所述原始地址所在的地址分区,基于所述原始地址所在的地址分区和所述映射关系确定所述目标地址。

在一些实施例中,所述地址转换单元包括多组第一寄存器,每组所述第一寄存器用于存储指示一个所述地址分区的地址范围的指示信息;

所述地址转换单元,用于根据所述指示信息确定所述原始地址所在的地址分区。

在一些实施例中,所述地址转换单元包括还包括多组第二寄存器,每组所述第二寄存器用于存储一个所述地址分区当前的使能状态信息;

所述地址转换单元,用于基于以下方式确定所述通信接口连接所述外部存储器:

基于所述使能状态信息从所述多个地址分区中确定目标地址分区;

在根据所述指示信息确定所述原始地址落入所述目标地址分区的地址范围内的情况下,确定所述通信接口连接所述外部存储器。

在一些实施例中,所述外部存储器包括DDR,所述DDR与所述芯片通过总线通信,所述总线包括PCIE总线。

在一些实施例中,所述处理单元还用于:

确定与所述神经网络训练有关的数据所处的状态,所述状态与所述数据下一次被使用的时间与当前时间之间的时间间隔有关;

根据所述状态确定是否将存储于所述芯片的内部存储器中的所述数据存储至所述外部存储器,和/或是否将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述处理单元还用于:响应于根据所述状态确定将存储于所述芯片的内部存储器中的所述数据存储至所述外部存储器,将待存储至所述外部存储器的数据对应的所述原始地址发送给所述地址转换单元,以使所述地址转换单元将所述原始地址转换为所述外部存储器中的所述目标地址;和/或

响应于根据所述状态确定将存储于所述外部存储器中的所述数据存储至所述内部存储器,将待存储至所述内部存储器的数据对应的所述原始地址发送给所述地址转换单元,以使所述地址转换单元将所述原始地址转换为所述外部存储器中的所述目标地址。

在一些实施例中,所述状态包括第一状态和第二状态;所述处理单元用于:

在存储于所述内部存储器中的所述数据处于所述第一状态的情况下,确定将存储于所述内部存储器中的所述数据存储至所述外部存储器;

在存储于所述外部存储器中的所述数据的处于第二状态的情况下,确定将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述处理单元用于基于以下方式确定所述数据所处的状态:

根据所述神经网络中各层与对应芯片当前处理的当前层之间间隔的层数,以及所述神经网络当前的计算方向,确定与所述各层有关的数据所处的状态。

在一些实施例中,所述处理单元用于:

基于所述计算方向和所述层数从所述神经网络中确定目标层,所述目标层在所述当前层之后参与计算,且与所述当前层之间间隔的层数小于预设层数;

将与所述目标层有关的数据所处的状态确定为所述第二状态;

将所述神经网络中除所述目标层以外的其他层有关的数据确定为所述第一状态。

在一些实施例中,所述预设层数基于所述芯片对所述神经网络每层进行计算所需的时间,以及所述数据在所述内部存储器和所述外部存储器之间的传输时间确定。

根据本公开实施例的第二方面,提供一种神经网络训练系统,所述神经网络训练系统包括主处理器和多个上述第一方面提及的芯片,多个所述芯片通过所述通信接口连接;多个所述芯片,用于接收所述主处理器的指令,并基于所述指令对所述神经网络进行加速训练。

在一些实施例中,所述地址转换单元包括存储子单元;

所述存储子单元,用于存储所述其他芯片中的物理地址与所述外部存储器中的物理地址之间的映射关系;

所述地址转换单元,用于在确定所述通信接口连接所述外部存储器的情况下,基于所述映射关系将所述原始地址转换为所述目标地址。

在一些实施例中,所述地址转换单元,还用于在确定所述通信接口连接所述其他芯片的情况下,直接将所述原始地址确定为所述目标地址。

在一些实施例中,所述其他芯片的存储单元的物理地址被预先划分为多个地址分区,每个地址分区内的物理地址可通过预设的映射关系映射成所述外部存储器中的物理地址;

所述地址转换单元,用于确定所述原始地址所在的地址分区,基于所述原始地址所在的地址分区和所述映射关系确定所述目标地址。

在一些实施例中,所述地址转换单元包括多组第一寄存器,每组所述第一寄存器用于存储指示一个所述地址分区的地址范围的指示信息;

所述地址转换单元,用于根据所述指示信息确定所述原始地址所在的地址分区。

在一些实施例中,所述地址转换单元包括还包括多组第二寄存器,每组所述第二寄存器用于存储一个所述地址分区当前的使能状态信息;

所述地址转换单元,用于基于以下方式确定所述通信接口连接所述外部存储器:

基于所述使能状态信息从所述多个地址分区中确定目标地址分区;

在根据所述指示信息确定所述原始地址落入所述目标地址分区的地址范围内的情况下,确定所述通信接口连接所述外部存储器。

在一些实施例中,所述外部存储器包括DDR,所述DDR与所述芯片通过总线通信,所述总线包括PCIE总线。

在一些实施例中,所述处理单元还用于:

确定与所述神经网络训练有关的数据所处的状态,所述状态与所述数据下一次被使用的时间与当前时间之间的时间间隔有关;

根据所述状态确定是否将存储于所述芯片的内部存储器中的所述数据存储至所述外部存储器,和/或是否将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述处理单元还用于:响应于根据所述状态确定将存储于所述芯片的内部存储器中的所述数据存储至所述外部存储器,将待存储至所述外部存储器的数据对应的所述原始地址发送给所述地址转换单元,以使所述地址转换单元将所述原始地址转换为所述外部存储器中的所述目标地址;和/或

响应于根据所述状态确定将存储于所述外部存储器中的所述数据存储至所述内部存储器,将待存储至所述内部存储器的数据对应的所述原始地址发送给所述地址转换单元,以使所述地址转换单元将所述原始地址转换为所述外部存储器中的所述目标地址。

在一些实施例中,所述状态包括第一状态和第二状态;所述处理单元用于:

在存储于所述内部存储器中的所述数据处于所述第一状态的情况下,确定将存储于所述内部存储器中的所述数据存储至所述外部存储器;

在存储于所述外部存储器中的所述数据的处于第二状态的情况下,确定将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述处理单元用于基于以下方式确定所述数据所处的状态:

根据所述神经网络中各层与对应芯片当前处理的当前层之间间隔的层数,以及所述神经网络当前的计算方向,确定与所述各层有关的数据所处的状态。

在一些实施例中,所述处理单元用于:

基于所述计算方向和所述层数从所述神经网络中确定目标层,所述目标层在所述当前层之后参与计算,且与所述当前层之间间隔的层数小于预设层数;

将与所述目标层有关的数据所处的状态确定为所述第二状态;

将所述神经网络中除所述目标层以外的其他层有关的数据确定为所述第一状态。

在一些实施例中,所述预设层数基于所述芯片对所述神经网络每层进行计算所需的时间,以及所述数据在所述内部存储器和所述外部存储器之间的传输时间确定。

根据本公开实施例的第三方面,提供一种芯片的内存管理方法,所述芯片包括至少一个通信接口和内部存储器,所述通信接口用于连接至少一个外部存储器,所述方法包括:

在使用所述芯片对神经网络进行训练的过程中,确定与所述神经网络训练有关的数据所处的状态,所述状态与所述数据下一次被使用的时间与当前时间之间的时长相关;

根据所述状态确定是否将存储于所述内部存储器中的所述数据存储至所述外部存储器,和/或是否将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述方法还包括:

响应于根据所述状态确定将存储于所述芯片的内部存储器中的所述数据存储至所述外部存储器,将待存储至所述外部存储器的数据对应的原始地址转换为所述外部存储器中的所述目标地址,以在所述外部存储器的所述目标地址写入待存储至所述外部存储器的数据;和/或

响应于根据所述状态确定将存储于所述外部存储器中的所述数据存储至所述内部存储器,将待存储至所述内部存储器的数据对应的所述原始地址转换为所述外部存储器中的目标地址,以从所述外部存储器的所述目标地址读取所述待存储至所述内部存储器的数据。

在一些实施例中,所述状态包括第一状态和第二状态;

在存储于所述内部存储器中的所述数据处于所述第一状态的情况下,确定将存储于所述内部存储器中的所述数据存储至所述外部存储器;

在存储于所述外部存储器中的所述数据的处于所述第二状态的情况下,确定将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,确定与所述神经网络训练有关的数据的所处的状态,包括:

根据所述神经网络中各层与所述芯片当前处理的当前层之间间隔的层数,以及所述芯片当前对所述神经网络进行计算的计算方向确定与所述各层有关的数据所处的状态。

在一些实施例中,根据所述神经网络中各层与所述芯片当前处理的当前层之间间隔的层数,以及所述芯片当前对所述神经网络进行计算的计算方向确定与所述各层有关的数据的所处的状态,包括:

基于所述计算方向和所述层数从所述神经网络中确定目标层,所述目标层在所述当前层之后参与计算,且与所述当前层之间间隔的层数小于预设层数;

将与所述目标层有关的数据所处的状态确定为所述第二状态;

将所述神经网络中除所述目标层以外的其他层有关的数据确定为所述第一状态。

在一些实施例中,所述预设层数基于所述芯片对所述神经网络每层进行计算所需的时间,以及所述数据在所述内部存储器和所述外部存储器之间的传输时间确定。

根据本公开实施例的第四方面,提供一种芯片的内存管理装置,所述装置用于对芯片进行内存管理,所述芯片包括至少一个通信接口和内部存储器,所述通信接口用于连接至少一个外部存储器,所述装置包括:

状态确定模块,在使用所述芯片对神经网络进行训练的过程中,确定与所述神经网络训练有关的数据所处的状态,所述状态与所述数据下一次被使用的时间与当前时间之间的时长相关;

判定模块,根据所述状态确定是否将存储于所述内部存储器中的所述数据存储至所述外部存储器,和/或是否将所述外部存储器中的所述数据存储至所述内部存储器。在一些实施例中,所述状态包括第一状态和第二状态;

在存储于所述内部存储器中的所述数据处于所述第一状态的情况下,确定将存储于所述内部存储器中的所述数据存储至所述外部存储器;

在存储于所述外部存储器中的所述数据的处于所述第二状态的情况下,确定将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述状态确定模块用于确定与所述神经网络训练有关的数据的所处的状态时,具体用于:

根据所述神经网络中各层与所述芯片当前处理的当前层之间间隔的层数,以及所述芯片当前对所述神经网络进行计算的计算方向确定与所述各层有关的数据所处的状态。

在一些实施例中,所述状态确定模块用于根据所述神经网络中各层与所述芯片当前处理的当前层之间间隔的层数,以及所述芯片当前对所述神经网络进行计算的计算方向确定与所述各层有关的数据的所处的状态时,具体用于:

基于所述计算方向和所述层数从所述神经网络中确定目标层,所述目标层在所述当前层之后参与计算,且与所述当前层之间间隔的层数小于预设层数;

将与所述目标层有关的数据所处的状态确定为所述第二状态;

将所述神经网络中除所述目标层以外的其他层有关的数据确定为所述第一状态。

在一些实施例中,所述预设层数基于所述芯片对所述神经网络每层进行计算所需的时间,以及所述数据在所述内部存储器和所述外部存储器之间的传输时间确定。

根据本公开实施例的第五方面,提供一种电子设备,包括处理器、存储器以及如本公开第一方面及第一方面任一实施例提供的芯片,和/或执行本公开第三方面及第三方面任一实施例提供的内存管理方法。

本公开实施例中为了扩大单个芯片的内存,对芯片中原有的用于芯片之间通信的通信接口进行功能扩展,使其既可以连接外部存储器,又可以连接其他芯片。为了可以通过原有的片间通信的通信接口实现对外部存储器的访问,芯片中包括用于对地址进行转换的地址转换单元。芯片中的处理单元在向该通信接口连接的外接设备读取或者写入与神经网络训练有关的数据时,可以将待读取或者待写入的数据对应的原始地址发送给地址转换单元,其中,原始地址为其他芯片中的物理地址,地址转换单元可以基于通信接口连接的外接设备的类型将原始地址转化为与外接设备相匹配的目标地址,比如外部存储器或者其他芯片中的地址,以便处理单元可以成功地从外接设备的目标地址读取或者写入数据。通过对原有的接口进行功能扩展,使其可以连接外部存储器,可以增大单个芯片的内存容量,从而在对大规模的神经网络进行训练时,可以减少芯片的数量,从而减小芯片之间通信的数据量,提高训练效率,同时,也可以减少芯片与CPU之间通信的数据量,减少对CPU通信链路的占用,提高CPU下发指令的效率。此外,通过增大单个芯片的内存容量,从而只需简单的数据并行便可以实现对大规模神经网络的训练,提高训练效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。

图1是本公开实施例的神经网络训练系统的示意图。

图2是本公开实施例的一种芯片的结构示意图。

图3是本公开实施例的一种神经网络训练系统的示意图。

图4是本公开实施例的一种地址映射的示意图。

图5是本公开实施例的一种神经网络训练过程的示意图。

图6是本公开实施例的一种芯片的内存管理方法的示意图。

图7是本公开实施例的一种内存管理装置的示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。

人工智能技术已在各个领域广泛应用,为了提高神经网络模型预测结果的准确度,目前的神经网络模型的结构越来越复杂,模型规模也越来越大,模型涉及到的数据量也越来越多。以目前常用的GPT-3模型为例,模型的参数量高达1750亿个,即便仅仅存储模型中的权重(以浮点数32位计)也需要700GB。因而可以采用一些芯片来加速神经网络训练,比如,AI芯片。AI芯片主要用于执行神经网络模型训练过程中的特定计算任务,以加速神经网络训练。目前,AI芯片的内存一般在32~80GB,远远无法满足大规模神经网络模型对内存的需求。

为了解决单个芯片内存不够的问题,通常采用多机多卡的训练系统,通过数据并行或者模型并行的方式来训练神经网络。多机多卡的训练系统如图1所示,一个节点中可以包括多个AI芯片(也叫加速卡,如图1中的V100 GPU),各AI芯片可以通过PCIE(Peripheralcomponent interconnect express)链路和CPU通信,如图1所示,各V100 GPU通过PCIESwitch(PCIE桥接器)与CPU通信连接,同时各AI芯片之间可以通过NVlink(一种通信协议)链路通信,不同的CPU之间可以通过QPI(QPI,Common System Interface,公共系统接口)通信。以模型并行的训练方式为例,可以把模型的不同的层的参数分别存储在不同的AI芯片上,举个例子,假设模型有40层,训练系统中一共有8个AI芯片,则每个AI芯片可以存储5层的模型参数,不同的AI芯片计算出各自存储的模型的层的计算结果后,可以传输给其他AI芯片或者CPU。由于一个节点的存储空间可能不太够,通常需要多个节点(即多机),而不同节点的AI芯片之间通过NIC(Network Interface Controller,网卡)通信,不仅通信带宽低,而且延时很大,导致模型效率很低。此外,由于AI芯片是通过PCIE链路与CPU通信,而CPU需要通过PCIE链路下发指令,因而当AI芯片数量较多时,每个AI芯片都要与CPU通信,会严重抢占CPU PCIE链路,导致CPU下发命令的效率降低。

基于此,本公开实施例提供另一种解决方案,可以通过扩展单个芯片的内存,增大单个芯片的内存容量,从而可以减少在神经网络训练中所使用的芯片的数量,可以大大减小芯片之间的通信数据量,提高训练效率。同时,也可以减少芯片与主处理器(比如,CPU)通信的数据量,减少对主处理器的PCIE通信链路的占用,提高主处理器指令下发的效率。

具体的,本公开实施例提供了一种芯片,该芯片可以是可用于加速神经网络训练的各种芯片,比如,可以是AI芯片,也可以是其他具有相似功能的芯片。

如图2所示,该芯片包括处理单元21、地址转换单元22以及至少一个通信接口23,每个通信接口23可用于连接外接设备24,该外接设备24的类型可以是外部存储器和/或用于加速神经网络训练的其他芯片。

其中,处理单元21用于将待读取或待写入的与神经网络训练有关的数据对应的原始地址发送给地址转换单元,其中,原始地址为其他芯片中的物理地址;

地址转换单元22用于将原始地址转换为与外接设备24的类型相匹配的目标地址并输出,以使处理单元21在外接设备24的目标地址读取或写入该数据。

为了实现芯片可以外接其他的存储器,以扩大单个芯片的内存容量,同时可以尽量减小对芯片结构的改动,本公开实施例对芯片中原有的用于芯片之间通信的片间通信接口做了功能扩展,使其既可以连接其他的芯片,在与其他芯片共同训练模型时,可以实现片间通信。同时,该通信接口也可以连接外接的外部存储器,以扩展单个芯片的内存容量。至于何时与其他芯片通信,何时与外部存储器通信与芯片结构及芯片工作过程中的调度策略有关,此处不做限制。

当然,由于本公开实施例中对通信接口的功能做了扩展,而由于原有的芯片之间的通信接口的接口协议所定义的地址为其他芯片中的物理地址,为了支持内存扩展,实现可以通过该通信接口访问外部存储器,可以在芯片中增加地址转换单元,以通过地址转换单元将其他芯片中的物理地址映射到外部存储器中物理地址,实现处理单元从外部存储器中读写数据。其中,本公开实施例的地址转换单元可以包括一个或者多个,在一些实施例中,可以所有通信接口共用一个地址转换单元,用于对各个接口输出的地址进行地址转换。在一些实示例中,为了简化地址转换单元的数据处理流程,也可以每个通信接口对应一个地址转换单元,用于对从该通信接口输出的地址进行转换。

在对神经网络训练的过程中,当芯片中的处理单元要读取与神经网络进行训练相关的数据以用于计算时,或要存储计算得到的与神经网络训练有关的数据时,可以将待读取或待写入的数据对应的原始地址发送给地址转换单元,其中,原始地址可以是数据读取或写入指令中携带的地址,由于指令中的携带的地址为原有的通信接口协议中定义的地址,因而,原始地址均为其他芯片中的物理地址。由于各通信接口连接的外接设备可能是其他芯片,也可能是外部存储器,因而地址转换单元可以确定通信接口连接的外接设备的类型,然后基于外接设备的类型将该原始地址转换成与外接设备的类型相匹配的目标地址,并通过该通信接口输出,以便处理单元可以从外接设备的目标地址中读取该数据或者向该外接设备的目标地址写入该数据。

其中,本公开实施例中的数据包括神经网络在训练过程中所用到的各种张量,比如,训练过程中的输入数据(比如,样本数据)、神经网络训练过程中产生的过程数据:每一层的模型参数,比如,权重、偏置等,以及神经网络每一层的输出结果,比如,激活,损失等。

在一些实施例中,该芯片可以用于神经网络训练系统,如图3所示,该神经网络训练系统包括主处理器和多个该芯片,多个该芯片可以相互通信连接,多个该芯片可以从主处理器中接收指令,然后基于接收到的指令完成对神经网络的加速训练。其中,主处理器可以是CPU,也可以是其他的处理器,主处理器用于向各个芯片分配计算任务,以便芯片基于指令完成计算任务。在一些场景,各芯片也可以将计算结果传输给主处理器,以便主处理器对计算结果进行汇总处理。由于芯片外接外部存储器,单个芯片的内存容量增大了,因而,可以减少芯片的数量,从而减小芯片之间通信的数据量,提高处理效率,同时,也可以减少芯片与主处理器的通信数据量,减少对主处理器通信链路的占用,提高主处理器下发指令的效率。

在一些实施例中,地址转换单元包括存储子单元,存储子单元用于存储其他芯片中的物理地址与该外部存储器中的物理地址之间的映射关系。比如,可以将其他芯片中的部分或者全部物理地址映射成外部存储器中的物理地址,具体的映射方式可以根据实际需求确定。比如,可以将芯片中的物理地址划分成多个地址分区,外部存储器中的物理地址划分成多个地址分区,芯片中的一个地址分区与外部存储器中的一个地址分区关联,相关联的两个地址分区中的地址可以通过某种转化方式相互转化。地址转换单元在接收到处理单元发送的原始地址后,可以先确定该原始地址对应的通信接口当前连接的外接设备的类型,比如,是外部存储器还是其他芯片,如果确定该通信接口连接的是外部存储器,则根据存储的映射关系将该原始地址转换为外部存储器中的目标地址。

当然,在一些实施例中,如果地址转换单元确定该原始地址对应的通信接口连接的是其他芯片,则无需对原始地址进行转换,直接将该原始地址作为目标地址输出即可。

由于一个芯片中可以包括多个通信接口,部分通信接口可以连接外部存储器,部分通信接口可以连接其他芯片,为了对不同的接口进行区分,原始地址可以携带接口标识,地址转换单元在接收到处理单元发送的原始地址后,可以先根据接口标识确定该接口标识对应的通信接口连接的是其他芯片还是外部存储器,然后再确定是否对该原始地址进行转换。在一些实施例中,如果地址转换单元用于对所有上述通信接口进行地址转换,则地址转换单元可以包括多个寄存器,每个寄存器对应一个通信接口,用于标识该通信接口所连接的外接设备的类型,举个例子,假设芯片中包括12个通信接口,则地址转单元可以包括12个寄存器,每个寄存器可以通过1或0状态标识该接口当前连接的是其他芯片或者是外部存储器。当然,在一个通信接口对应一个地址转换单元的场景,即一个地址转换单元用于对一个通信接口进行地址转换,则每个地址转换单元可以包括一个寄存器,用于存储该通信接口所连接的外接设备的类型。

在一些实施例中,为了方便地址转换单元快速地将芯片中的原始地址转换成外部存储器中的目标地址。可以将芯片的存储单元中待映射的物理地址划分成多个地址分区,每个地址分区可以对应一段地址,每个地址分区的地址可以通过预设的映射关系映射成外部存储器中的物理地址。地址转换单元在接收到原始地址后,可以确定原始地址所在的地址分区,然后基于原始地址所在的地址分区,以及该地址分区对应的映射关系将原始地址转换成目标地址。其中,可以将芯片的存储单元中的部分或者全部地址划分成多个地址分区,地址分区的数量和每个地址分区包含地址的数量可以根据实际需求设置。

在一些实施例中,地址转换单元中可以包括多组第一寄存器,每组第一寄存器对应一个地址分区,每组第一寄存器中存储有指示一个地址分区的地址范围的指示信息,其中,指示信息可以是各种指示该地址分区地址范围的信息,比如,可以是该地址分区的起始地址和结束地址,也可以是起始地址以及结束地址与起始地址之间的偏移量,或者是结束地址与结束地址与起始地址之间的偏移量,具体可以根据实际需求设置。地址转换单元在接收到原始地址后,可以并行地和各组第一寄存储器中存储的指示信息进行比较,确定该原始地址所在的地址分区,然后基于该地址分区对应的映射关系将原始地址转换成外部存储器中的目标地址。

在一些实施例中,地址转换单元中还可以包括多组第二寄存器,每组第二寄存器对应一个地址分区,每组第二寄存器中存储有一个地址分区当前的使能状态信息。使能状态信息用于指示各地址分区当前的使能状态,如该地址分区被使能,即可以用于与地址转换单元接收到的原始地址比较,以判定原始地址是否落入该地址分区的范围,如果该地址分区未被使能,则不用于与接收到的原始地址进行比较。当地址转换单元在接收到原始地址后,可以根据第二寄存器中存储的使能状态信息从多个地址分区中确定一个或多个目标地址分区,目标地址分区为使能的地址分区,然后可以并行地将原始地址与目标地址分区的地址范围进行比较,如果原始地址未落入任何一个目标地址分区的范围内,则确定通信接口连接的是其他芯片,这种情况下,则无需对原始地址进行转换,直接将原始地址输出即可。当然,如果原始地址落入其中一个目标地址分区的地址范围内,则直接根据该目标地址分区的映射关系对其进行转换,转换成目标地址后输出。

举个例子,如图4所示,可以将芯片中存储单元的部分或者全部物理地址空间划分成N个地址分区(其中,N可以根据实际需求设定),同样的,外部存储器中的物理地址空间也划分成N个地址分区,芯片中的第N个地址分区和外部存储器中的第N个地址分区对应,针对每个地址分区N,地址转换单元中都有一组对应的寄存器,寄存器用来存储该地址分区的使能状态信息、该地址分区的起始地址(start_addr)、该地址分区的结束地址(end_addr)、以及该地址分区在外部存储器中的基准地址(tgrt_base_addr)。地址转换单元在接收到处理单元发送的原始地址(addr1)后,可以将原始地址(addr1)与使能的各地址分区并行比较,如果在其范围,比如,假设原始地址(addr1)在地址分区N的范围内,则根据公式(1)转化成外部存储器中的目标地址(addr2):

addr2=addr1–start_addr+tgrt_base_addr

其中,addr2表示目标地址,addr1表示地址转换单元接收到的原始地址,start_addr表示地址分区N的起始地址,tgrt_base_addr表示地址分区N在外部存储器中的基准地址。

在确定目标地址(addr2)后,即可以通过通信接口输出该目标地址,以便处理单元从该外部存储器的该目标地址中读取或写入数据。

当然,如果将原始地址(addr1)与使能的各地址分区并行比较,都不在其范围,则可以无需对原始地址(addr1)进行转换,即直接将原始地址输出即可。

在一些实施例中,外部存储器可以是DDR存储器,DDR存储器可以和芯片通过总线通信,该总线可以是PCIE总线。当然,外部存储器也可以是其他类型的存储器,总线的类型也可以根据存储器的需求设置成其他类型的总线,本公开实施例不作限制。

本公开实施例通过对芯片的内存进行扩展,使得单个芯片具有更大的存储空间,从而可以采用较少的芯片便可以完成神经网络的训练,可以减少芯片之间通信的数据量,提高神经网络的训练效率。同时,也可以减少芯片与CPU之间的通信数据量,减小对CPU的PCIE通信链路的占用。

另外,对于一些模较大的模型,单个芯片的内存无法存储整个模型的参数,因而需要采用模型并行的训练方式,这种方式的训练效率也比较低。通过增大单个芯片的内存容量,仅单个芯片便可以存储整个模型的参数,从而只需简单的数据并行就可以完成神经网络的训练,无需通过复杂的模型并行的方式,大大提高了神经网络的训练效率。

通过在芯片中增加外接的存储器,可以增大单个芯片的存储容量,但是外部存储器的接入给芯片的内存管理也带来了挑战。在接入外部存储器后,如何管理芯片的内部内存和外接内存,以更好的利用外接的内存来提高芯片在训练神经网络时的处理效率,显得尤为关键。

在一些实施例中,在使用芯片对神经网络训练的过程中,处理单元用于可以确定与神经网络训练有关的数据当前所处的状态,其中,各数据的状态与各数据下一次被使用的时间与当前时间之间的时长有关,该状态可以用于指示各数据下一次被使用的时间与当前时间之间间隔时长的长短。其中,状态可以是指示该数据还有多久被使用到的各种状态。比如,可以根据数据下一次被使用的时间与当前时间的时长将数据确定成不同的状态,比如,如果一个数据在小于预设时长内会被使用,则可以确定为active状态,如果一个数据在大于预设时长后才会被使用,则可以确定为inactive状态。当然,实际使用中,也可以根据需要将数据划分成更多种状态,针对不同状态的数据进行不同的处理。

在确定各数据所处的状态后,可以根据该状态确定是否需要将当前存储于内部存储器中的数据存储到外部存储器中,和/或是否需要将存储在外部存储器中的数据存储到内部存储器中。由于芯片每计算得到一层的输出结果后,会先存储于内部存储器,在使用数据时,也是从内部存储器中获取,因此,需要将即将使用的数据置于内部存储器中,短时间内不会用到的数据存储于外部存储器。比如,如果该状态指示该数据即将被用到,而该数据此时存储在外部存储器中,则可以将该数据从外部存储器中存储至内部存储器,便于芯片计算时使用,而如果该状态指示该数据还需很久才会使用到,而该数据此时存储在内部存储器中,则可以将数据从内部存储器存储至外部存储器中,以释放内部存储器的内存空间,用于存储即将使用的数据。

在一些实施例中,当处理单元根据该状态确定需要将存储于芯片的内部存储器中的某些数据存储至外部存储器时,处理单元可以将这些数据对应的原始地址发送给地址转换单元,从而地址转换单元可以将该原始地址转换为外部存储器中的目标地址,以便处理单元将这些数据存储至外部存储器的目标地址中。比如,在一些场景中,可以由CPU基于芯片当前计算至神经网络的第几层,以及芯片的计算能力确定哪些层的数据暂时不用,可以存储至外部存储器中,从而CPU可以给处理单元发送指令,该指令中可以携带待存储至外部存储器中的数据,以及该数据对应的原始地址(比如,可以预先从外部存储器中划分出一块地址用于存储内部存储器中暂时不用的数据,对于CPU来说,其所知道的地址为这块地址对应的原始地址),进而处理单元可以将指令中携带的而原始地址发送给地址转换单元,以得到该原始地址对应的外部存储器中实际的目标地址,并将这些数据存储至目标地址中。

同样的,如果处理单元根据该状态确定需要将存储外部存储器中的某些数据存储至内部存储器时,处理单元可以将这些数据对应的原始地址发送给地址转换单元,从而地址转换单元可以将该原始地址转换为外部存储器中的目标地址,以便处理单元从外部存储器的目标地址中读取这些数据。比如,在一些场景中,可以由CPU基于芯片当前计算至神经网络的第几层,以及芯片的计算能力确定哪些层的数据即将要使用,需存储至内部存储器中,从而CPU可以给处理单元发送指令,该指令中可以携带待存储至内部存储器中的数据,以及该数据对应的原始地址(比如,CPU是预先知道哪层的数据存储在哪个地址空间,但对于CPU来说,其所知道的地址为这块地址对应的原始地址),进而处理单元可以将指令中携带的而原始地址发送给地址转换单元,以得到该原始地址对应的外部存储器中实际的目标地址,并将从外部存储器的目标地址读取这些数据。

在一些实施例中,各数据所处的状态可以包括第一状态和第二状态,如果数据处于第一状态,说明其还需要较长时间才会使用到,因而如果存储于内部存储器中的数据处于第一状态,则确定可以先将该数据存储至外部存储器中,以释放内部存储器中的内存空间。如果数据处于第二状态,则说明其即将会被用到,如果存储于外部存储器中的数据处于第二状态,则确定可以将该数据存储至内部存储器中,以便芯片在需要使用该数据时,可以直接从内部存储器获取并使用,提高处理效率。

在一些实施例中,在确定与神经网络训练有关的各数据的所处的状态时,可以根据神经网络中各层与芯片当前处理的当前层之间间隔的层数,以及芯片当前对神经网络进行计算的计算方向确定与各层有关的数据的状态信息。其中,计算方向可以根据芯片当前对神经网络进行计算所处的阶段确定,比如,如果此时处于前向传播的阶段,则其计算方向是从第1层往后进行计算,如果此时处于反向传播的阶段,则其计算方向是从最后1层往前进行计算。根据计算方向和各层与当前层之间间隔的层数可以确定与各层相关的数据还需多久才会用到,从而可以确定与各层相关的数据所处的状态。

举个例子,假设神经网络共20层,如果此时处于前向传播的过程,当前计算的是第5层,那么第5层之前的层(1-4层)的数据短时间不会被用到,因而这些层相关的数据可以确定为第一状态,在第5层之后与其间隔层数大于一定层数的数据短时间也不会用到,比如,与第5层间隔5层以上的层(比如10-20层),因而这些层的模型参数也可以确定为第一状态。同样的,反向传播阶段也可以采用类似的手段确定。

在一些实施例中,在根据神经网络中各层与芯片当前处理的当前层之间间隔的层数,以及芯片当前对神经网络进行计算的计算方向确定与各层有关的数据的所处的状态时,可以基于当前的计算方向和各层与当前层之间间隔的层数从神经网络中确定目标层,其中,目标层为在当前层之后计算,且与当前层之间间隔的层数小于预设层数的神经网络层。然后将与该目标层有关的数据所处的状态确定为第二状态。同时,将除目标层以外的层的数据所处的状态确定为第一状态。

举个例子,假设神经网络共20层,如果此时处于前向传播阶段,当前计算的是第5层,由于是从前往后计算,那么即将要用到的是第6、7、8层的参数,因而,可以将这些位于当前层之后,且与当前层间隔的层数小于一定层数,比如3层或者5层的神经网络层确定为目标层,然后将这些层相关的数据确定为第二状态。其他层的数据则为短时间不会用到的数据,因而可以确定为第一状态。

在一些实施例中,在确定当前需将与当前层间隔多少层的神经网络层确定为目标层时,可以基于芯片对神经网络每层进行计算所需的时间,以及数据在内部存储器和外部存储器之间的传输时间确定。举个例子,假设当前计算的是第5层,神经网络对每一层进行计算所需时间为1s,将每一层相关的数据从外部存储器搬运至内部存储器所需时间为2s,那么在计算第5层时,需确保第5层之后的至少2层的数据已存储至内部存储器中,才能保证神经网络在后续计算时,不会出现要使用的数据需从外部临时读取的问题,从而可以优化内存的利用,提高处理效率。

通过结合神经网络训练过程中,各数据在不同时间段用到的特点,可以将即将用到的数据存储到内部存储器中,而短时间不会用到的数据存储至外部存储器,保证处理单元在要使用某个数据时,可以直接从内部存储器读取,以提高处理效率。

进一步地,本公开实施例还提供了一种神经网络训练系统,该神经网络训练系统包括主处理器和多个上述实施例中所述的芯片,多个所述芯片通过通信接口连接;多个所述芯片,用于接收所述主处理器的指令,并基于所述指令对所述神经网络进行加速训练。

其中,所述芯片的具体结构和功能可参考上述芯片实施例中的描述,在此不再赘述。

通过在芯片中增加外接的存储器,可以增大单个芯片的存储容量,但是外部存储器的接入给芯片的内存管理也带来了挑战。在接入外部存储器后,如何管理芯片的内嵌内存和外接内存,以更好的利用外接的内存来提高芯片在训练神经网络时的处理效率,显得尤为关键。

由于不论是芯片的内嵌内存还是外接内存,其主要用途都是存储神经网络训练过程中所用到的数据。其中,这些数据包括神经网络在训练过程中的各种张量,比如训练过程中的输入数据(比如,样本数据)、神经网络训练练过程中产生的过程数据:神经网络每一层的模型参数,比如,权重、偏置、等,以及神经网络每一层的输出结果,比如,损失等。

为了更好的理解本公开实施例提供的芯片内存的管理方法,以下先结合一个例子对神经网络的训练过程进行简单介绍,如图5所示,为一种神经网络模型的示意图,其包括输入层、隐藏层以及输出层,对于结构比较复杂,规模较大的神经网络,其往往包含很多个隐藏层。神经网络进行训练的过程通常包括前向传播和反向传播两个过程,在前向传播的过程中,由输入层输入用于训练神经网络的样本数据后,会依次经过神经网络中的每一层,并且根据每一层当前的模型参数计算得到一个输出结果(如图中的每一层的输出),每一层的输出可以作为下一层的输入,以对下一层进行计算,同时每一层的输出在反向传播过程时也要用到,以用于调整神经网络该层的模型参数。当完成每一层的计算后,可以根据最后的输出确定一个损失,然后进行反向传播的过程,反向传播过程中,会根据确定的损失从后往前依次更新神经网络的每一层的模型参数(如图中每一层更新后的参数)。然后不断的重复前向传播和反向传播的过程,直至损失收敛。

从上述神经网络的训练过程可知,不管是在前向传播还是反向传播的过程中,芯片都是按照从前往后或者从后往前的顺序依次对每一层进行计算,以得到每一层的计算结果,而在对当前层进行计算时,只需用到与当前层计算有关的数据,比如,当前层输入、以及当前层的模型参数(比如,权重或者偏置),而与当前层相隔比较远的层相关的数据则可能在很长一段时间之后才会用到。此外,当前层的输出的结果(比如,前向传播过程中输出的激活,或者反向传播更新后的当前成的模型参数),需在下一次对当前层进行计算时,才会用到,这中间也会相隔比较长时间。

基于神经网络训练过程中存在的上述特点,本公开实施例中提供了一种芯片的内存管理方法,由于从芯片内部存储器读取数据的速度会远远大于从外部存储器中读取数据的速度,因而,在对神经网络训练的过程中,可以将短时间内不会用到的数据存储到外部存储器中,从而释放内部存储器的空间,而即将要用到的数据可以预先从外部存储器中搬运至内部存储器中存储,以便需用于对神经网络进行计算时可以直接从内部存储器中读取并使用,从而可以提高神经网络训练过程中的处理效率。

本公开实施例提供的方法可以由芯片执行,也可以由与芯片通信的其他处理器执行。比如,针对一些神经网络训练系统,其可以包括一个CPU和多个芯片,多个芯片可以接收CPU的指令,从而根据CPU的指令对神经网络进行训练。在这种场景下,该内存管理方法可以由CPU执行,CPU确定各数据当前的所处的状态,该状态可以用于指示该数据还需多久被使用,然后通知芯片哪些数据即将被使用,哪些还需较长时间才会使用,以便芯片将短时间不用的数据从内部存储器中搬运至外部存储器,以及将即将使用的数据从外部存储器搬运至内部存储器。当然,该内存管理方法也可以由芯片执行,比如CPU可以将确定各数据的当前所处状态的相关的数据发送给芯片,由芯片确定各数据的当前所处的状态,确定哪些数据即将被使用,哪些还需较长时间才会使用,以便将短时间不用的数据从内部存储器中搬运至外部存储器,以及将即将使用的数据从外部存储器搬运至内部存储器。

具体的,如图6所示,本公开实施例中的内存管理方法包括以下步骤:

S602、在使用所述芯片对神经网络进行训练的过程中,确定与所述神经网络训练有关的数据所处的状态,所述状态与所述数据下一次被使用的时间与当前时间之间的时长相关;

S604、根据所述状态确定是否将存储于所述内部存储器中的所述数据存储至所述外部存储器,和/或是否将存储于所述外部存储器中的所述数据存储至所述内部存储器。

在步骤S602中,在使用芯片对神经网络训练的过程中,可以确定与神经网络训练有关的数据当前所处的状态,其中,各数据的状态与各数据下一次被使用的时间与当前时间之间的时长有关,该状态可以用于指示各数据下一次被使用的时间与当前时间之间间隔时长的长短。其中,状态可以是指示该数据还有多久被使用到的各种状态。比如,可以根据数据下一次被使用的时间与当前时间的时长将数据确定成不同的状态,比如,如果一个数据在小于预设时长内会被使用,则可以确定为active状态,如果一个数据在大于预设时长后才会被使用,则可以确定为inactive状态。当然,实际使用中,也可以根据需要将数据划分成更多种状态,针对不同状态的数据进行不同的处理。

在步骤S604中,在确定各数据所处的状态后,可以根据该状态确定是否需要将当前存储于内部存储器中的数据存储到外部存储器中,以及是否需要将存储在外部存储器中的数据存储到内部存储器中。由于芯片每计算得到一层的输出结果后,会先存储于内部存储器,在使用数据时,也是从内部存储器中获取,因此,需要将即将使用的数据置于内部存储器中,短时间内不会用到的数据存储于外部存储器。比如,如果该状态指示该数据即将被用到,而该数据此时存储在外部存储器中,则可以将该数据从外部存储器中存储至内部存储器,便于芯片计算时使用,而如果该状态指示该数据还需很久才会使用到,而该数据此时存储在内部存储器中,则可以将数据从内部存储器存储至外部存储器中,以释放内部存储器的内存空间,用于存储即将使用的数据。

在一些实施例中,所述芯片可以是上述实施例(芯片实施例)中所述描述的芯片。当然,也可以是具有其他结构的芯片,只要芯片可以连接外部存储器,并从外部存储器读写数据即可,本申请实施例不作限制。在一些实施例中,所述芯片为上述实施例中所述描述的芯片,则所述方法还包括:

响应于根据所述状态确定将存储于所述芯片的内部存储器中的所述数据存储至所述外部存储器,将待存储至所述外部存储器的数据对应的原始地址转换为所述外部存储器中的所述目标地址,以在所述外部存储器的所述目标地址写入待存储至所述外部存储器的数据;和/或

响应于根据所述状态确定将存储于所述外部存储器中的所述数据存储至所述内部存储器,将待存储至所述内部存储器的数据对应的所述原始地址转换为所述外部存储器中的目标地址,以从所述外部存储器的所述目标地址读取所述待存储至所述内部存储器的数据。在一些实施例中,各数据所处的状态可以包括第一状态和第二状态,如果数据处于第一状态,说明其还需要较长时间才会使用到,因而如果存储于内部存储器中的数据处于第一状态,则确定可以先将该数据存储至外部存储器中,以释放内部存储器中的内存空间。如果数据处于第二状态,则说明其即将会被用到,如果存储于外部存储器中的数据处于第二状态,则确定可以将该数据存储至内部存储器中,以便芯片在需要使用该数据时,可以直接从内部存储器获取并使用,提高处理效率。

在一些实施例中,在步骤S602中,在确定与神经网络训练有关的各数据的所处的状态时,可以根据神经网络中各层与芯片当前处理的当前层之间间隔的层数,以及芯片当前对神经网络进行计算的计算方向确定与各层有关的数据的状态信息。其中,计算方向可以根据芯片当前对神经网络进行计算所处的阶段确定,比如,如果此时处于前向传播的阶段,则其计算方向是从第1层往后进行计算,如果此时处于反向传播的阶段,则其计算方向是从最后1层往前进行计算。根据计算方向和各层与当前层之间间隔的层数可以确定与各层相关的数据还需多久才会用到,从而可以确定与各层相关的数据所处的状态。

举个例子,假设神经网络共20层,如果此时处于前向传播的过程,当前计算的是第5层,那么第5层之前的层(1-4层)的数据短时间不会被用到,因而这些层相关的数据可以确定为第一状态,在第5层之后与其间隔层数大于一定层数的数据短时间也不会用到,比如,与第5层间隔5层以上的层(比如10-20层),因而这些层的模型参数也可以确定为第一状态。同样的,反向传播阶段也可以采用类似的手段确定。

在一些实施例中,在根据神经网络中各层与芯片当前处理的当前层之间间隔的层数,以及芯片当前对神经网络进行计算的计算方向确定与各层有关的数据的所处的状态时,可以基于当前的计算方向和各层与当前层之间间隔的层数从神经网络中确定目标层,其中,目标层为在当前层之后计算,且与当前层之间间隔的层数小于预设层数的神经网络层。然后将与该目标层有关的数据所处的状态确定为第二状态。同时,将除目标层以外的层的数据所处的状态确定为第一状态。

举个例子,假设神经网络共20层,如果此时处于前向传播阶段,当前计算的是第5层,由于是从前往后计算,那么即将要用到的是第6、7、8层的参数,因而,可以将这些位于当前层之后,且与当前层间隔的层数小于一定层数,比如3层或者5层的神经网络层确定为目标层,然后将这些层相关的数据确定为第二状态。其他层的数据则为短时间不会用到的数据,因而可以确定为第一状态。

在一些实施例中,在确定当前需将与当前层间隔多少层的神经网络层确定为目标层时,可以基于芯片对神经网络每层进行计算所需的时间,以及数据在内部存储器和外部存储器之间的传输时间确定。举个例子,假设当前计算的是第5层,神经网络对每一层进行计算所需时间为1s,将每一层相关的数据从外部存储器搬运至内部存储器所需时间为2s,那么在计算第5层时,需确保第5层之后的至少2层的数据已存储至内部存储器中,才能保证神经网络在后续计算时,不会出现要使用的数据需从外部临时读取的问题,从而可以优化内存的利用,提高处理效率。

当然,实际应用中,如果芯片内嵌内存足够大,可以将神经网络所有的模型参数(比如,权重、偏置)都存储到内嵌内存中,而每层的输出则可以根据其所处的状态确定将其放置在内嵌内存或者外部存储器。当然,在芯片的内嵌内存不足以存储所有模型参数时,则对于模型参数,也可以根据其所处状态确定将其放置在内嵌内存或者外部存储器中。

本公开实施例提供的内存管理方法可以结合神经网络训练过程的特点,对芯片的内存进行管理,在对芯片的内存进行扩展的同时,也可以提高对神经网络进行处理的效率。同时,由于芯片自身可以实现对内存的管理,对于编程人员来说,无需考虑外接存储器后需对内存进行管理的问题,减少了因芯片内存扩展给编程人员带来的不便。

相应地,本公开实施例提供一种芯片的内存管理装置,如图7所示,所述装置70用于对芯片进行内存管理,所述芯片包括至少一个通信接口和内部存储器,所述通信接口用于连接至少一个外部存储器,所述装置70包括:

状态确定模块71,在使用所述芯片对神经网络进行训练的过程中,确定与所述神经网络训练有关的数据所处的状态,所述状态与所述数据下一次被使用的时间与当前时间之间的时长相关;

判定模块72,根据所述状态确定是否将存储于所述内部存储器中的所述数据存储至所述外部存储器,和/或是否将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述状态包括第一状态和第二状态;

在存储于所述内部存储器中的所述数据处于所述第一状态的情况下,确定将存储于所述内部存储器中的所述数据存储至所述外部存储器;

在存储于所述外部存储器中的所述数据的处于所述第二状态的情况下,确定将所述外部存储器中的所述数据存储至所述内部存储器。

在一些实施例中,所述状态确定模块用于确定与所述神经网络训练有关的数据的所处的状态时,具体用于:

根据所述神经网络中各层与所述芯片当前处理的当前层之间间隔的层数,以及所述芯片当前对所述神经网络进行计算的计算方向确定与所述各层有关的数据所处的状态。

在一些实施例中,所述状态确定模块用于根据所述神经网络中各层与所述芯片当前处理的当前层之间间隔的层数,以及所述芯片当前对所述神经网络进行计算的计算方向确定与所述各层有关的数据的所处的状态时,具体用于:

基于所述计算方向和所述层数从所述神经网络中确定目标层,所述目标层在所述当前层之后参与计算,且与所述当前层之间间隔的层数小于预设层数;

将与所述目标层有关的数据所处的状态确定为所述第二状态;

将所述神经网络中除所述目标层以外的其他层有关的数据确定为所述第一状态。

在一些实施例中,所述预设层数基于所述芯片对所述神经网络每层进行计算所需的时间,以及所述数据在所述内部存储器和所述外部存储器之间的传输时间确定。

其中,所述内存管理装置用于对芯片内存进行管理的具体实现细节可参考上述方法中的描述,在此不再赘述。

进一步地,本公开实施例还提供一种电子设备,所述电子设备包括处理器、存储器以及上述实施例中所述的芯片,和/或所述电子设备的所述存储器中存储有可供所述处理器执行的计算机指令,所述处理器执行所述计算机指令时实现上述实施例中任一项所述的内存管理方法。

本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的内存管理方法。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

相关技术
  • 芯片、神经网络训练系统、内存管理方法及装置、设备
  • 芯片、神经网络训练系统、内存管理方法及装置、设备
技术分类

06120112773152