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

数据处理装置以及数据处理方法

文献发布时间:2023-06-19 13:49:36


数据处理装置以及数据处理方法

技术领域

本公开的实施例涉及一种数据处理装置以及一种数据处理方法。

背景技术

当前,基于神经网络(Neural Network)算法的人工智能技术已在日常生活的许多应用场景中展现出了强大的能力,例如语音处理、目标识别与检测、图像处理、自然语言处理等。但是由于算法本身的特点,算法对于硬件的计算能力提出了较高的要求。传统的处理装置由于其存储与计算分离的设计特点,在功耗与运算效率上无法有效地满足特定场景下的人工智能应用的需要。目前大规模的神经网络算法需要借助有强大计算能力的计算集群才能得到较好的表现,从而无法有效地部署在例如移动电子设备、物联网设备、边缘设备等体积、电源等资源有限的场景中使用。

发明内容

本公开一些实施例提供了一种数据处理装置,包括:双向数据处理模块,包括至少一个存储计算一体化的计算阵列,被配置为执行计算任务,其中,计算任务包括推理计算任务和训练计算任务;控制模块,被配置为将双向数据处理模块的工作模式切换为推理工作模式以执行推理计算任务,以及将双向数据处理模块的工作模式切换为训练工作模式以执行训练计算任务;参数管理模块,被配置为设置双向数据处理模块的权重参数;输入输出模块,被配置为响应于控制模块的控制,根据计算任务的输入数据生成计算输入信号,并将计算输入信号提供给双向数据处理模块,从双向数据处理模块接收计算输出信号并根据计算输出信号生成输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,所述计算阵列包括忆阻器阵列以用于实现所述存储计算一体化,所述忆阻器阵列包括阵列布置的多个忆阻器。

例如,在本公开一些实施例提供的一种数据处理装置中,所述参数管理模块包括:权重阵列写单元,被配置为通过使用所述权重参数改变所述多个忆阻器中每个忆阻器的电导值以将所述权重参数写入所述忆阻器阵列;以及,权重阵列读单元,被配置为从所述忆阻器阵列读取所述多个忆阻器中每个忆阻器的电导值,完成权重参数的读取。

例如,在本公开一些实施例提供的一种数据处理装置中,所述输入输出模块包括:第一输入子模块,与所述双向数据处理模块的第一连接端侧连接以提供用于所述推理计算任务的第一输入数据的输入信号;第一输出子模块,与所述双向数据处理模块的第二连接端侧连接以接收所述推理计算任务的计算结果并产生第一输出数据;第二输入子模块,与所述双向数据处理模块的第二连接端侧连接以提供基于所述训练计算任务的第二输入数据的输入信号;第二输出子模块,与所述双向数据处理模块的第一连接端侧连接以接收所述训练计算任务的计算结果并产生第二输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,所述第一输入子模块包括:第一数据缓冲单元;第一数模信号转换器;第一多路选通器,其中,所述第一数据缓冲单元配置为接收所述第一输入数据,并将所述第一输入数据提供至所述第一数模信号转换器,所述第一数模信号转换器配置为对所述第一输入数据进行数模转换并将转换输出的第一输入信号提供至所述第一多路选通器,所述第一多路选通器配置为通过选通的通道将所述第一输入信号提供至所述双向数据处理模块的第一连接端侧,所述第一输出子模块包括:第二多路选通器;第一采样保持单元;第二模数信号转换器;第一移位累加单元;第二数据缓冲单元,其中,所述第二多路选通器配置为从所述双向数据处理模块的第二连接端侧接收所述第一输出信号,且通过选通的通道向所述第一采样保持单元提供所述第一输出信号,所述第一采样保持单元配置为对所述第一输出信号采样后将采样后的第一输出信号提供给所述第二模数信号转换器,所述第二模数信号转换器配置为对所述采样后的第一输出信号进行模数转换,并将转换输出的第一输出数据提供给所述第一移位累加单元,所述第一移位累加单元配置为将所述第一输出数据提供给所述第二数据缓冲单元,所述第二数据缓冲单元配置为输出所述第一输出数据,所述第二输入子模块包括:第三数据缓冲单元;第三数模信号转换器;第三多路选通器,其中,所述第三数据缓冲单元配置为接收所述第二输入数据,并将所述第二输入数据提供至所述第三数模信号转换器,所述第三数模信号转换器配置为对所述第二输入数据进行数模转换并将转换输出的第二输入信号提供至所述第三多路选通器,所述第三多路选通器配置为通过选通的通道将所述第二输入信号提供至所述双向数据处理模块的第二连接端侧,所述第二输出子模块包括:第四多路选通器;第二采样保持单元;第四模数信号转换器;第二移位累加单元;第四数据缓冲单元,其中,所述第四多路选通器配置为从所述双向数据处理模块的第一连接端侧接收所述第二输出信号,通过选通的通道向所述第二采样保持单元提供所述第二输出信号,所述第二采样保持单元配置为对所述第二输出信号采样后将采样后的第二输出信号提供给所述第四模数信号转换器,所述第四模数信号转换器配置为对所述采样后的第二输出信号进行模数转换,并将转换输出的第二输出数据提供给所述第二移位累加单元,所述第二移位累加单元配置为将所述第二输出数据提供给所述第四数据缓冲单元,所述第四数据缓冲单元配置为输出所述第二输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,所述控制模块配置为:在所述推理工作模式,将所述第一输入子模块与所述双向数据处理模块的第一连接端侧连接以提供用于所述推理计算任务的第一输入数据的输入信号,以及将所述第一输出子模块与所述双向数据处理模块的第二连接端侧连接以接收所述推理计算任务的计算结果并产生第一输出数据;以及,在所述训练工作模式,将所述第二输入子模块,与所述双向数据处理模块的第二连接端侧连接以提供基于所述训练计算任务的第二输入数据的输入信号,以及将所述第二输出子模块与所述双向数据处理模块的第一连接端侧连接以接收所述训练计算任务的计算结果并产生第二输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,所述输入输出模块包括:第一输入输出子模块,与所述双向数据处理模块的第一连接端侧连接以提供基于所述推理计算任务的第一输入数据的第一输入信号,以及与所述双向数据处理模块的第一连接端侧连接以接收所述训练计算任务的计算结果并产生第二输出数据;第二输入输出子模块,与所述双向数据处理模块的第二连接端侧连接以提供基于所述训练计算任务的第二输入数据的输入信号,以及与所述双向数据处理模块的第二连接端侧连接以接收所述推理计算任务的计算结果并产生第一输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,所述第一输入输出子模块包括:第一数据缓冲单元;第一移位累加单元;第一数模信号转换器;第一模数信号转换器;第一采样保持单元;第一多路选择器,其中,所述第一数据缓冲单元配置为接收所述第一输入数据,并将所述第一输入数据提供至所述第一数模信号转换器,所述第一数模信号转换器配置为对所述第一输入数据进行数模转换并将转换输出的第一输入信号提供至所述第一多路选通器,所述第一多路选通器配置为通过选通的通道将所述第一输入信号提供至所述双向数据处理模块的第一连接端侧,以及,所述第一多路选通器配置为从所述双向数据处理模块的第一端侧接收所述第二输出信号,通过选通的通道向所述第一采样保持单元提供所述第二输出信号,所述第一采样保持单元配置为对所述第二输出信号采样后将采样后的第二输出信号提供给所述第一模数信号转换器,所述第一模数信号转换器配置为对所述采样后的第二输出信号进行模数转换,并将转换输出的第二输出数据提供给所述第一移位累加单元,所述第一移位累加单元配置为将所述第二输出数据提供给所述第一数据缓冲单元,所述第一数据缓冲单元配置为输出所述第二输出数据,所述第二输入输出子模块包括:第二多路选择器;第二采样保持单元;第二数模信号转换器;第二模数信号转换器;第二移位累加单元;第二数据缓冲单元。其中,所述第二数据缓冲单元配置为接收所述第二输入数据,并将所述第二输入数据提供至所述第二数模信号转换器,所述第二数模信号转换器配置为对所述第二输入数据进行数模转换并将转换输出的第二输入信号提供至所述第二多路选通器,所述第二多路选通器配置为通过选通的通道将所述第二输入信号提供至所述双向数据处理模块的第二连接端侧,以及,所述第二多路选通器配置为从所述双向数据处理模块的第二连接端侧所述第一输出信号,通过选通的通道向所述第二采样保持单元提供所述第一输出信号,所述第二采样保持单元配置为对所述第一输出信号采样后将采样后的第一输出信号提供给所述第二模数信号转换器,所述第二模数信号转换器配置为对所述采样后的第一输出信号进行模数转换,并将转换输出的第一输出数据提供给所述第二移位累加单元,所述第二移位累加单元配置为将所述第一输出数据提供给所述第二数据缓冲单元,所述第二数据缓冲单元配置为输出所述第一输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,所述控制模块配置为:响应于所述推理工作模式,将所述第一输入输出子模块与所述双向数据处理模块的第一连接端侧连接以提供基于所述推理计算任务的第一输入数据的第一输入信号,以及将所述第二输入输出子模块与所述双向数据处理模块的第二连接端侧连接以接收所述推理计算任务的计算结果并产生第一输出数据;以及,响应于所述训练工作模式,将所述第二输入输出子模块与所述双向数据处理模块的第二连接端侧连接以提供基于所述训练计算任务的第二输入数据的输入信号,以及将所述第一输入输出子模块与所述双向数据处理模块的第一连接端侧连接以接收所述训练计算任务的计算结果并产生第二输出数据。

例如,在本公开一些实施例提供的一种数据处理装置中,还包括:复用单元选择模块,被配置为在所述控制模块的控制下,响应于所述推理工作模式,选择所述第一数据缓冲单元,所述第一数模信号转换器,所述第一多路选择器进行输入,所述选择第二多路选择器,所述第二采样保持单元,所述第二模数信号转换器,所述第二移位累加单元和所述第二数据缓冲单元进行输出;响应于所述训练工作模式,选择所述第二数据缓冲单元,所述第二数模信号转换器,所述第二多路选择器进行输入,所述第一多路选择器,所述第一采样保持单元,所述第一模数信号转换器,所述第一移位累加单元和所述第一数据缓冲单元进行输出。

例如,在本公开一些实施例提供的一种数据处理装置中,还包括:处理单元接口模块,被配置为与所述数据处理装置外的外部设备进行通信。

例如,在本公开一些实施例提供的一种数据处理装置中,还包括:功能函数单元,被配置为向所述输出数据提供非线性运算操作。

本公开一些实施例提供了一种数据处理方法,用于上述任一所述的数据处理装置,包括:所述控制模块获取当前的工作模式并控制所述双向数据处理模块;响应于所述工作模式为所述推理工作模式,所述双向数据处理模块使用用于执行推理计算任务的推理权重参数,执行所述推理计算任务;响应于所述工作模式为所述训练工作模式,所述双向数据处理模块使用用于执行训练计算任务的训练权重参数,执行所述训练计算任务。

例如,在本公开一些实施例提供的一种数据处理方法中,所述执行推理计算任务包括:接收所述第一输入数据并将所述第一输入数据生成第一计算输入信号;对所述第一计算输入信号执行存储计算一体化操作,并输出第一计算输出信号;根据所述第一计算输出信号生成所述第一输出数据;以及,所述双向数据处理模块执行训练计算任务包括:接收所述第二输入数据并将所述第二输入数据生成第二计算输入信号;对所述第二计算输入信号执行存储计算一体化操作,并输出第二计算输出信号;根据所述第二计算输出信号生成所述第二输出数据。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1A为矩阵向量乘法的示意图;

图1B为用于执行矩阵向量乘法的忆阻器阵列的示意图;

图2是一种部署神经网络算法进行推理计算的数据处理装置的示意图;

图3是图2所示的数据处理装置进行推理计算的数据处理方法的流程图;

图4是本公开至少一实施例提供的一种数据处理装置的示意图;

图5是本公开至少一实施例提供的一种数据处理方法的流程图;

图6是本公开至少一实施例提供的另一种数据处理装置的示意图;

图7是本公开至少一实施例提供的另一种数据处理方法的流程图;

图8是本公开至少一实施例提供的再一种数据处理方法的流程图;

图9是多个数据处理装置的数据调度过程的示意图;

图10是本公开至少一实施例提供的一种数据处理系统的示意图;

图11为图10所示的数据处理系统执行推理计算任务的数据流示意图;

图12为图10所示的数据处理系统执行训练计算任务的数据流示意图;以及

图13为图10所示的数据处理系统执行逐层训练计算任务的数据流示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。

目前,大多数的神经网络算法的核心计算步骤由大量的矩阵向量乘法构成。图1A为矩阵向量乘法的示意图。如图1A所示,矩阵G与列向量V相乘得到列向量I,列向量I的每一个元素I1,I2,…,In由矩阵G的对应的一行元素与列向量V进行向量内积相乘得到。以矩阵G的第一行乘以列向量V得到列向量的第一个元素I1为例,矩阵G的第一行的n个元素G11,G12,…,G1n的每一个元素与列向量V的n个元素V1,V2,…,Vn的每一个元素相乘后得到的n个乘积再相加即可得到列向量I对应的第一个元素I1。列向量I的其他元素I2,…,In的每一个元素的计算方法由元素I1的计算方法依次类推。

基于忆阻器阵列等非易失性存储器件实现的交叉阵列可以非常高效地完成矩阵向量乘法运算。图1B为用于执行矩阵向量乘法的示例性忆阻器阵列的示意图。如图1B所示,忆阻器阵列包括交叉但互相绝缘的n条位线(Bit Line,BL)BL1,BL2,…,BLn;n条字线(WordLine,WL)WL1,WL2,…,WLn以及n条源线(Source Line,SL)SL1,SL2,…,SLn。例如,一条字线与一条位线的交汇处与一条源线交汇,该交汇处设置有一个忆阻器和一个晶体管,该忆阻器的一端与该条位线连接,该忆阻器的另一端和该晶体管的漏极连接,该晶体管的栅极和该条字线连接,该晶体管的源极和该条源线连接。将该忆阻器阵列的每个忆阻器的电导值对应设置为图1A中矩阵G的每个元素G11~Gnn的值;将图1A中列向量V的每个元素V1,V2,…,Vn的值映射为电压值,并对应施加到该忆阻器阵列的每条位线BL1,BL2,…,BLn上;在每条位线WL1,WL2,…,WLn分别逐列施加导通对应的本列的每个晶体管的导通电压Vwl1,Vwl2,…,Vwln后,根据欧姆定律以及基尔霍夫电流定律,每条源线SL1,SL2,…,SLn的输出电流值就是列向量I中对应的元素I1,I2,…,In的值。例如,源线SL1的输出电流值等于n条位线BL1,BL2,…,BLn上施加的电压值V1,V2,…,Vn分别乘以对应的每个忆阻器的电导值G11,G12,…,G1得到乘积后再累加得到的源线SL1的输出电流值就是列向量I中元素I1的值,因此通过测量所有列的输出电流值即可得到图1A所示的矩阵向量乘法的结果。

基于例如忆阻器阵列等的非易失性存储阵列的存算一体计算装置具有存储与计算相互融合的特点,该存算一体计算装置相比传统处理器计算装置具有高计算效率,低功耗的优势,因而该存算一体计算装置可以为在更广泛的场景下部署神经网络算法提供硬件支持。

图2是一种部署神经网络算法进行推理计算的数据处理装置的示意图。如图2所示,该数据处理装置(或处理单元(PE))包括输入模块、输出模块、计算单元、阵列读写单元、状态控制与转换单元、特殊功能函数单元以及处理单元接口模块,这些单元和模块可以通过电路实现,例如数字电路。其中,输入模块包括输入缓冲单元、数模转换器以及多路选择器;输出模块包括多路选择器、采样保持单元、模数转换器、移位累加单元以及输出缓冲单元;计算单元可以包含多个计算阵列,每个计算阵列基于忆阻器阵列。在状态控制与转换单元的控制下,输入模块将接收到的输入数据经过缓冲、数模转换后,根据选通器的选通通道经过位线端输入到计算单元进行线性计算处理,计算单元处理的结果经过源线端输出后叠加上神经网络算法所需的非线性运算的计算结果,并经过多路选通器输出后,再经过采样保持和模数转换,最后移位累加并缓冲后输出推理计算的结果。非线性运算(例如线性整流运算)、非线性激活函数运算等则由功能函数单元(例如特殊功能函数单元)提供。处理单元接口模块则用于与数据处理装置之外的外部设备,例如外部存储设备、主控单元以及其他数据处理设备等进行通信,例如,传递数据、指令等,以进行设备间的协同工作。

图3是对应于图2的数据处理装置进行进行推理计算的数据处理方法的流程图。如图3所示,在推理计算过程中,该数据处理装置先进行推理模型的部署。其中,该部署过程包括模型输入,编译优化,权重部署以及推理模式配置。当神经网络模型算法确定之后,利用模型编译等技术,可以将神经网络模型算法中的各个运算单元进行优化,获得一个优化的权重在该数据处理装置中的部署方案。例如,将神经网络模型的结构数据输入后,将结构数据例如权重数据编译为能够写入忆阻器阵列的电压信号,并将该电压信号通过写入忆阻器阵列,以改变忆阻器阵列的每个忆阻器的电导值,从而完成权重部署。数据处理装置根据输入的模型结构数据进一步配置输入和输出模块,以及配置用于实现非线性运算的特殊功能函数模块、与外部进行通信的处理单元接口模块。数据处理装置完成对推理模型的部署配置之后,将进入前向推理工作模式,例如开始接收外部的任务数据并将任务数据输入,按照已有的配置信息,数据处理装置的计算单元开始执行计算任务以进行片上任务计算,直到所有的计算任务完成后,数据处理装置将结果输出到外部,至此完成前向推理过程。

数据处理装置在上述过程中可以不需要与主控单元进行数据传输,当多个数据处理装置进行并行协同工作时,它们之间可以通过各自的处理单元接口模块进行数据传输,以进行数据同步。

但是,上述数据处理装置面向神经网络算法的推理应用,无法为神经网络算法的模型训练提供硬件支持。然而目前在基于忆阻器阵列的处理器芯片上进行模型训练的方案为了获得较高的效率,常采用深度定制化的设计,从而使硬件缺乏一定的灵活性,无法满足多种神经网络算法的推理与训练的要求。

神经网络算法的训练方法主要使用反向传播算法(Back Propagation,BP)。反向传播算法类似于沿推理计算的正向传播算法相反的方向逐层更新神经网络算法每层的权重矩阵,权重矩阵的更新值由每层的误差值计算得到。每层的误差值由与该层相邻的后一层的权重矩阵的转置与的后一层的误差值相乘得到。因而,在得到一个神经网络算法最后一层的误差值和最后一层的权重矩阵的条件下,即可计算出最后一层的权重矩阵更新值,同时可根据反向传播算法计算出倒数第二层误差值,从而计算出倒数第二层的权重矩阵更新值,依次类推,直到反向更新完毕该神经网络算法的所有层。因此,本公开至少一实施例提供了一种可以同时支持神经网络推理与训练的存算一体的数据处理装置,如图4所示,该数据处理装置包括双向处理模块100、控制模块200、参数管理模块300、输入输出模块400。

双向数据处理模块100包括一个或多个存储计算一体化的计算阵列110,因此双向数据处理模块100可以包括多通道的输入端和多通道的输出端。该双向数据处理模块100用于执行计算任务,计算任务包括推理计算任务和训练计算任务。控制模块200用于将双向数据处理模块的工作模式切换为推理工作模式以执行推理计算任务,以及将双向数据处理模块的工作模式切换为训练工作模式以执行训练计算任务。例如,控制模块200可以实现为CPU、SoC、FPGA、ASIC等硬件或固件,或硬件或固件与软件的任何组合。参数管理模块300用于设置双向数据处理模块的权重参数。输入输出模块400在控制模块200的控制下,根据计算任务的输入数据生成计算输入信号,并将计算输入信号提供给双向数据处理模块,从双向数据处理模块接收计算输出信号并根据计算输出信号生成输出数据。

例如,双向处理模块100的计算阵列110可以包括忆阻器阵列。忆阻器阵列用于实现存储计算一体化。忆阻器阵列可以包括阵列布置的多个忆阻器,每个忆阻器阵列可以采用图1B所示的结构,也可以采用其他能够执行矩阵乘法计算的结构,例如,构成忆阻器阵列的忆阻器单元不包括开关电路,或者忆阻器单元包括2T2R(即两个开关元件以及两个忆阻器单元)。

例如,参数管理模块300包括权重阵列写单元和权重阵列读单元。权重阵列写单元可以通过使用权重参数改变多个忆阻器中每个忆阻器的电导值,以便将权重参数写入忆阻器阵列。相对应地,权重阵列读单元可以从忆阻器阵列读取多个忆阻器中每个忆阻器当前的电导值,以便完成当前实际权重参数的读取,例如,被读取的实际权重参数与预设权重参数进行比较,从而确定是否需要重新设定权重参数。

例如,在一个示例中,数据处理装置为了能够处理神经网络算法的推理计算任务和训练计算任务两个方向的任务,数据处理装置可以设置两套输入模块和两套输出模块,其中,一套输入模块和一套输出模块用于处理神经网络算法的推理计算任务的数据输入输出,另一套输入模块和另一套输出模块用于处理神经网络算法的训练计算任务的数据输入输出。在这种情况下,输入输出模块包括推理计算输入模块,推理计算输出模块,训练计算输入模块以及训练计算输出模块。例如,推理计算输入模块相当于本公开的第一输入子模块,推理计算输出模块相当于本公开的第一输出子模块,训练计算输入模块相当于本公开的第二输入子模块,训练计算输出模块相当于本公开的第二输出子模块。

例如,推理计算输入模块可以与双向数据处理模块100的推理计算输入端连接,并提供用于推理计算任务的推理输入信号,推理输入信号可以是推理输入数据经过推理计算输入模块的处理得到的模拟信号,例如以电压信号的形式施加到忆阻器阵列的位线端。推理计算输出模块可以与双向数据处理模块100的推理计算输出端连接,接收推理计算任务的计算结果,该计算结构为电流信号的形式从忆阻器阵列的源线端输出,推理计算输出模块将该计算结果转换为推理输出数据进行输出。

训练计算输入模块可以与双向数据处理模块100的训练计算输入端连接,并提供基于训练计算任务的训练计算输入信号,训练计算输入信号可以是训练计算输入数据经过训练计算输入模块的处理得到的模拟信号,例如以电压信号的形式施加到忆阻器阵列的源线端。训练计算输出模块可以与双向数据处理模块100的训练计算输出端连接,接收训练计算任务的计算结果,该计算结构为电流信号的形式从忆阻器阵列的位线端输出,数据处理模块100将该计算结果转换为训练计算输出数据进行输出。

例如,双向数据处理模块100的推理计算输入端对应于本公开的双向数据处理模块的第一连接端侧;双向数据处理模块100的训练计算输入端对应于本公开的双向数据处理模块的第二连接端侧;推理输入数据对应于本公开的第一输入数据;推理输出数据对应于本公开的第一输出数据;训练输入数据对应于本公开的第二输入数据;训练输出数据对应于本公开的第二输出数据。

例如,在另一个示例中,推理计算输入模块与训练计算输入模块在功能上相同,可以使用同一种输入模块。推理计算输入模块与训练计算输入模块中的任一种输入模块都可以包括输入数据缓冲单元(buffer)、数模信号转换器(DAC)以及输入多路选通器(MUX)。例如,在一个示例中,输入数据缓冲单元对应于本公开的第一数据缓冲单元,在另一个示例中,则对应于本公开的第三数据缓冲单元;在一个示例中,数模信号转换器对应于本公开的第一数模信号转换器,在另一个示例中,则对应于本公开的第三数模信号转换器;在一个示例中,输入多路选通器对应于本公开的第一多路选通器,在另一个示例中,则对应于本公开的第三多路选通器。其中,输入数据缓冲单元可以由各种缓存器(cache)、存储器(memory)等实现。输入数据缓冲单元用于接收输入数据,例如输入数据可以是推理计算输入数据或训练计算输入数据。之后,输入数据缓冲单元将输入数据提供至输入数模信号转换器,数模信号转换器对输入数据进行数字信号到模拟信号的转换,并将转换输出的模拟输入信号提供至输入多路选通器。输入多路选通器可以经切换开关(未示出)将模拟输入信号提供至双向数据处理模块100的推理计算输入端(例如位线端)或训练计算输入端(例如源线端)通过输入多路选通器选通的通道。双向数据处理模块100的推理计算输入端或训练计算输入端对应于多个计算单元110,因此均具有多个通道。

在该另一个示例中,同样地,例如,推理计算输出模块与训练计算输出模块在功能上也相同,可以使用同一种输出模块。推理计算输出模块与训练计算输出模块中的任一种输出模块都可以包括输出多路选通器(MUX)、采样保持单元、模数信号转换器(ADC)、移位累加单元以及输出数据缓冲单元等。例如,在一个示例中,输出多路选通器对应于本公开的第二多路选通器,在另一个示例中,则对应于本公开的第四多路选通器;在一个示例中,采样保持单元对应于本公开的第一采样保持单元,在另一个示例中,则对应于本公开的第二采样保持单元;在一个示例中,模数信号转换器对应于本公开的第二模数信号转换器,在另一个示例中,则对应于本公开的第四模数信号转换器;在一个示例中,移位累加单元对应于本公开的第一移位累加单元,在另一个示例中,则对应于本公开的第二移位累加单元;在一个示例中,输出数据缓冲单元对应于本公开的第二数据缓冲单元,在另一个示例中,则对应于本公开的第四数据缓冲单元。其中,经另一切换开关(未示出),输出多路选通器可以通过选通的通道从双向数据处理模块100的推理计算输出端或训练计算输出端接收多路输出信号,例如推理计算输出信号或训练计算输出信号。之后,输出多路选通器可以向采样保持单元提供输出信号。采样保持单元可以由各种采样器与电压保持器实现,用于对输出信号采样后将采样后的输出信号提供给模数信号转换器。模数信号转换器用于对采样后的模拟输出信号进行模拟信号到数字信号的转换,并将转换输出的数字输出数据提供给移位累加单元。移位累加单元可以由移位寄存器实现,用于将输出数据进行叠加并提供给输出数据缓冲单元。输出数据缓冲单元可以使用输入数据缓冲单元的实现方式,用于将输出数据的数据速率与外部数据速率匹配。在该示例中,上述两个切换开关由控制单元控制,从而可以使得整个数据处理装置在推理工作模式和训练工作模式之间切换。此外,在该示例中,计算阵列的输入信号数量和输出信号数量是相同的。

例如,在数据处理装置设置两套输入模块和两套输出模块的情况下,控制模块200可以配置为进行如下操作。在推理工作模式下,控制模块200将推理计算输入模块与双向数据处理模块100的推理计算输入端连接,以提供用于推理计算任务的推理计算输入信号,推理计算输入信号可以由推理计算输入数据经过输入输出模块400的转换得到。推理计算输出模块与双向数据处理模块100的推理计算输出端连接,以接收推理计算任务的计算结果并产生推理计算输出数据。在训练工作模式下,控制模块200将训练计算输入模块与双向数据处理模块100的训练计算输入端连接,以提供基于训练计算任务的训练计算输入信号,训练计算输入信号可以由训练计算输入数据经过输入输出模块400的转换得到。训练计算输出模块与双向数据处理模块100的训练计算输出端连接,以接收训练计算任务的计算结果并产生训练计算输出数据。

例如,在再一个示例中,数据处理装置还可以将双向数据处理模块100位线端的输入模块和输出模块集成为一个复用的输入输出子模块,将双向数据处理模块100源线端的输入模块和输出模块集成为另一个复用的输入输出子模块。因此两个输入输出子模块相同,其中一个输入输出子模块可以与双向数据处理模块100的位线端连接,以提供基于推理计算任务的推理计算输入信号,推理计算输入信号可以由推理计算输入数据经过输入输出模块400的转换而来;同时,该输入输出子模块接收训练计算任务的计算结果并产生训练计算输出数据。另一个输入输出子模块可以与双向数据处理模块100的源线端连接,以提供基于训练计算任务的训练计算输入信号,训练计算输入信号可以由训练计算输入数据经过输入输出模块400的转换而来;同时,该输入输出子模块接收推理计算任务的计算结果并产生推理计算输出数据。

例如,该输入输出子模块每个可以包括数据缓冲单元、移位累加单元、数模信号转换器、模数信号转换器、采样保持单元以及多路选择器。例如,在一个示例中,数据缓冲单元对应于本公开的第一数据缓冲单元,在另一个示例中,则对应于本公开的第二数据缓冲单元;在一个示例中,移位累加单元对应于本公开的第一移位累加单元,在另一个示例中,则对应于本公开的第二移位累加单元;在一个示例中,数模信号转换器对应于本公开的第一数模信号转换器,在另一个示例中,则对应于本公开的第二数模信号转换器;在一个示例中,模数信号转换器对应于本公开的第一模数信号转换器,在另一个示例中,则对应于本公开的第二模数信号转换器;在一个示例中,采样保持单元对应于本公开的第一采样保持单元,在另一个示例中,则对应于本公开的第二采样保持单元;在一个示例中,多路选择器对应于本公开的第一多路选择器,在另一个示例中,则对应于本公开的第二多路选择器。其中,除了复用的数据缓冲单元以及多路选择器之外,剩余的移位累加单元,数模信号转换器,模数信号转换器以及采样保持单元与上述两套输入模块和两套输出模块的情况下的实现方式相同。其中,数据缓冲单元可以是复用的,数据缓冲单元除了可以用于将训练计算输出数据输出之外,还可以用于接收推理计算输入数据,并将推理计算输入数据提供至数模信号转换器。数模信号转换器用于对推理计算输入数据进行数模转换并将转换输出的推理计算输入信号提供至多路选通器。多路选通器可以是双向复用的,多路选通器通过选通的通道将推理计算输入信号提供至双向数据处理模块100的位线端。同时,多路选通器还可以用于从双向数据处理模块100的位线端接收训练计算输出信号,多路选通器通过选通的通道向采样保持单元提供训练计算输出信号。采样保持单元用于对训练计算输出信号采样后将采样后的训练计算输出信号提供给模数信号转换器,模数信号转换器用于对采样后的训练计算输出信号进行模数转换,并将转换输出的训练计算输出数据提供给移位累加单元,移位累加单元用于将训练计算输出数据提供给数据缓冲单元,数据缓冲单元还可以用于输出训练计算输出数据。

例如,在数据处理装置使用复用的输入输出子模块的情况下,数据处理装置可以仅包括两个复用的输入输出子模块。控制模块200可以配置为推理工作模式下和训练工作模式下进行不同操作。在推理工作模式下,控制模块200可以将一个输入输出子模块与双向数据处理模块100的位线端连接,以提供基于推理计算任务的推理计算输入信号,推理计算输入信号可以由推理计算输入数据转换而来。同时可以将另一个输入输出子模块与双向数据处理模块100的源线端连接以接收推理计算任务的计算结果并产生推理计算输出数据。对应地,在训练工作模式下,控制模块200可以将一个输入输出子模块与双向数据处理模块100的源线端连接以提供基于训练计算任务的训练计算输入信号,训练计算输入信号可以由训练计算输入数据转换而来。同时可以将另一个输入输出子模块与双向数据处理模块100的位线端连接以接收训练计算任务的计算结果并产生训练计算输出数据。

例如,在数据处理装置使用复用的输入输出子模块的情况下,数据处理装置还可以包括复用单元选择模块500。在控制模块200的控制下,复用单元选择模块500可以用于在推理工作模式下,选择两个输入输出子模块中其中一个输入输出子模块的数据缓冲单元、数模信号转换器以及多路选择器作为输入通道;同时对应地选择另一个输入输出子模块的多路选择器、采样保持单元、模数信号转换器、移位累加单元和数据缓冲单元作为输出通道。

做好了推理工作模式的输入通道与输出通道的配置后,在训练工作模式下,只需将推理工作模式的输入通道与输出通道的配置进行相反的设置即可。例如,在训练工作模式下,复用单元选择模块500将在推理工作模式下作为输入通道的输入输出子模块中包括的多路选择器、采样保持单元、模数信号转换器、移位累加单元和数据缓冲单元作为输出通道;同时对应地将在推理工作模式下作为输出通道的输入输出子模块包括的数据缓冲单元、数模信号转换器以及多路选择器作为输入通道。

例如,数据处理装置还可以包括处理单元接口模块,处理单元接口模块用于与数据处理装置外的外部设备进行通信。例如,数据处理装置可以通过处理单元接口模块经由互连装置与外部的主控模块、存储器等进行数据传输,以扩展数据处理装置的功能。该互连装置可以为总线、片上网络等。

例如,数据处理装置还可以包括功能函数单元,功能函数单元用于对经双向数据处理模块100处理并由输出模块输出的数据提供非线性运算操作。例如,功能函数单元可以执行神经网络算法中的线性整流运算(ReLU)、S曲线激活函数(SIGMOD)运算等非线性运算。

本公开至少一实施例提供了一种数据处理方法,该数据处理方法用于本公开实施例的数据处理装置。

如图5所示,该数据处理方法可以用于图4所示的数据处理装置,该数据处理方法包括:

步骤S101,由控制模块获取当前的工作模式并控制双向数据处理模块;

步骤S102,当工作模式为推理工作模式时,双向数据处理模块使用用于执行推理计算任务的推理权重参数,以执行推理计算任务;

步骤S103,当工作模式为训练工作模式时,双向数据处理模块使用用于执行训练计算任务的训练权重参数,以执行训练计算任务。

下面将结合图4对上述三个步骤进行详细的非限制性说明。

对于步骤S101,数据处理装置的控制模块获取当前的工作模式。

例如,数据处理装置的控制模块200可以根据用户的设置或者输入的数据类型判断当前的工作模式,当前的工作模式包括推理工作模式和训练工作模式,例如神经网络算法的推理工作模式和神经网络算法的训练工作模式。例如,当输入的数据类型是推理计算输入数据时,控制模块200可以将当前的工作模式判定为推理工作模式;当输入的数据类型是训练计算输入数据时,控制模块200可以将当前的工作模式判定为训练工作模式。根据获取的工作模式,控制模块可以控制双向数据处理模块执行相应的工作模式。

对于步骤S102,当工作模式为推理工作模式时,双向数据处理模块使用用于执行推理计算任务的推理权重参数,以执行推理计算任务。

例如,在推理工作模式下,数据处理装置执行推理计算任务之前可以设置用于推理的权重参数,例如,将神经网络算法每个层的权重参数部署到双向数据处理模块100的多个计算阵列110上,每个计算阵列对应于神经网络算法的一个层。数据处理装置设置完用于推理计算任务的权重参数后,可以准备接受推理计算输入数据,使用这些权重参数以及输入数据以执行推理计算任务。

对于步骤S103,当工作模式为训练工作模式时,双向数据处理模块使用用于执行训练计算任务的训练权重参数,以执行训练计算任务。

例如,类似于推理工作模式,数据处理装置执行训练计算任务之前,如果需要,可以设置用于训练的权重参数,或者使用之前用于其他操作(例如推理操作)的权重参数。数据处理装置设置完用于训练计算任务的权重参数后,可以准备接收训练计算输入数据,使用这些权重参数以及输入数据以执行训练计算任务。

例如,数据处理装置执行推理计算任务时,可以先通过输入输出模块400接收推理计算输入数据。数据处理装置的双向数据处理模块100基于忆阻器阵列实现。忆阻器阵列用于接收并处理模拟信号,且输出也是模拟信号。大多数情况下,接收的推理计算输入数据是数字信号。因此不能将接收到的推理计算输入数据直接传送给双向数据处理模块100进行处理,需要先将数字的推理计算输入数据转换成模拟的推理计算输入信号。例如可以使用数模信号转换器将推理计算输入数据转换为推理计算输入信号。

之后,数据处理装置可以使用双向数据处理模块100对转换后的推理计算输入信号执行存储计算一体化操作,例如执行基于忆阻器阵列的矩阵乘法运算。执行完毕后,双向数据处理模块100将计算出的推理计算输出信号输出给数据处理装置的输入输出模块400以进行后续处理。推理计算输出信号可以是神经网络算法推理计算后的分类结果。

最后,为了便于后续的数据处理,数据处理装置需要将双向数据处理模块100输出的模拟信号转换为数字信号。例如数据处理装置可以通过输入输出模块400将模拟的推理计算输出信号转换为数字的推理计算输出数据,并将数字的推理计算输出数据进行输出。例如,推理计算输入信号对应于本公开的第一计算输入信号;推理计算输出信号对应于本公开的第一计算输出信号。

例如,数据处理装置执行训练计算任务时,类似执行推理计算任务。数据处理装置接收训练计算输入数据并将训练计算输入数据生成训练计算计算输入信号的过程与推理计算任务的相同,此处不再赘述。

之后,数据处理装置的双向数据处理模块100对训练计算输入信号执行存储计算一体化操作时,例如执行基于忆阻器阵列的矩阵乘法运算时,需要输出神经网络算法每一层的计算结果,并将每一层的计算结果作为训练计算输出信号经过输入输出模块400输出到数据处理装置外部的主控单元,以便主控单元进行残差计算。外部的主控单元根据计算得到的残差进一步计算神经网络算法每一层的权重更新值,并将权重更新值回传给数据处理装置,数据处理装置的参数管理模块300根据该权重更新值更新双向数据处理模块100的计算阵列110的权重值。计算阵列110的权重值可以对应于忆阻器阵列的电导值。根据训练计算输出信号生成训练计算输出数据的过程与推理计算任务相同,此处不再赘述。例如,训练计算输入信号对应于本公开的第二计算输入信号;训练计算输出信号对应于本公开的第二计算输出信号。

本公开至少一实施例的数据处理装置既可以在数据流的驱动下,调度数据获得较高的推理效率,也可在控制单元的调度下灵活配置数据流路径,满足各种复杂网络模型算法训练的需求。同时该数据处理装置具有推理与训练能力的高能效、高算力。例如,本公开至少一实施例的数据处理装置能够在保护用户隐私的前提下,完成本地训练,实现增量训练或联邦学习,满足用户定制化的应用需求。本公开至少一实施例的数据处理装置通过片上训练或逐层校准,可以增加基于忆阻器阵列的存算一体设备的稳定性和可靠性,使该存算一体设备自适应地恢复系统准确率,缓解器件非理想特性、其他噪声以及寄生参数等对系统精度的影响。

下面将结合一个具体但非限制性的示例说明本公开至少一实施例提出的一种数据处理装置、用于该数据处理装置的方法以及包括该数据处理装置的数据处理系统。

例如,图6是本公开至少一实施例提供的另一种数据处理装置的示意图,图6所示的数据处理装置是图4所示的数据处理装置的一种实施方式。

如图6所示,该数据处理装置包括双向数据处理模块100、控制模块200、参数管理模块300、两个输入输出模块400、复用单元选择模块500、处理单元接口模块600以及功能函数模块700。

双向数据处理模块100具有位线端1001和源线端1002,位线端1001可以用于接收和输出数据;源线端1002也可以用于接收和输出数据,双向数据处理模块100包括一个或者多个计算阵列,每个计算阵列可以是忆阻器阵列,参数管理模块300包括权重阵列读单元和权重阵列写单元,每个输入输出模块400包括数据缓冲单元、移位累加单元、模数转换器、数模转换器、采样保持单元、多路选择器。双向数据处理模块100可以通过忆阻器阵列完成对输入数据的矩阵乘法运算,并将矩阵乘法运算的计算结果输出。控制模块200用于控制数据处理装置执行运算任务。参数管理模块300通过权重阵列写单元将权重值转换为双向数据处理模块100的忆阻器阵列的写入电压信号,以此来改变忆阻器阵列的每个忆阻器单元的电导值,以完成权重值的写入;或者通过权重阵列读单元将双向数据处理模块100的忆阻器阵列的每个忆阻器的电导值作为权重值读出。

该数据处理装置兼容前向数据路径与反向数据路径。前向数据路径可以是执行神经网络算法的推理计算任务的路径,反向数据路径可以是执行神经网络算法的训练计算任务的路径。前向数据路径的输入部分与反向数据路径的输出部分可以共用同一个输入输出模块400,前向数据路径的输出部分与反向数据路径的输入部分也可以共用同一个输入输出模块400。在同一个输入输出模块400中,数据缓冲单元和多路选通器可以为前向数据路径与反向数据路径共用(复用)。复用单元选择模块500用于配置前向数据路径与反向数据路径共用的数据缓冲单元和多路选通器。例如,当数据处理模块执行前向数据路径的任务时,复用单元选择模块500将其中一个输入输出模块400中的数据缓冲单元和多路选通器配置为输入模式,该输入输出模块400可以用于前向数据路径的输入,将另一个输入输出模块400中的数据缓冲单元和多路选通器配置为输出模式,该输入输出模块400可以用于反向数据路径的输入。反之,当数据处理模块执行反向数据路径的任务时,复用单元选择模块500将上述过程做相反的配置即可。该数据处理装置执行反向数据路径的任务时,例如执行神经网络算法的训练计算任务时,处理单元接口模块600用于将神经网络模型中各层计算结果的误差值传输到数据处理装置外部的主控单元进行权重值更新计算,并将计算出的权重更新值传回该数据处理装置。功能函数单元700用于提供神经网络模型中的非线性运算计算功能,例如线性整流运算,非线性激活函数运算等非线性运算。

图7是本公开至少一实施例提供的另一种数据处理方法的流程图,该数据处理方法用于图6所示的数据处理装置。

例如,数据处理装置执行前向数据路径的任务与前述的推理计算方法的过程相同,此处不再赘述。数据处理装置执行反向数据路径的任务的方法流程如图7所示。图7中,根据反向传播算法(Back Propagation,BP),数据处理装置首先将训练集数据按批次(Batch)进行输入,训练集数据包括数据项和标签值(Lable),按照推理计算的方式,将所有批次的训练集数据在数据处理装置上进行推理计算,得出并记录每个批次训练数据集的输出结果以及推理计算过程的中间结果。推理计算包括模型输入、编译优化、权重部署、训练模式配置、任务数据输入、片上任务计算以及前向推理的七个步骤。在反向数据路径下,训练模式配置可以是对数据处理装置按照训练计算方式进行配置,例如可以通过复用单元选择模块将输入输出模块的数据缓冲单元和多路选通器配置为与反向数据路径相对应的数据方向。任务数据输入可以从双向数据处理模块的源线端输入。模型输入、编译优化、权重部署、片上任务计算以及前向推理步骤与前述图3中所示的相应步骤相同,此处不再赘述。

在推理计算任务过程中,推理计算的结果可以从双向数据处理模块的位线端输出。在推理计算任务完成后,数据处理装置将推理计算的输出结果、中间结果以及标签值通过处理单元接口模块传输到数据处理装置外部的主控单元。主控单元根据标签值与输出结果的差得出最后输出层的误差,即完成误差及计算,然后计算出最后输出层的权重更新梯度,从而计算出权重更新值,并将权重更新值通过处理单元接口模块传输给数据处理装置。最后输出层属于用于该推理计算的神经网络模型。数据处理装置的参数管理模块根据权重更新值计算电导值更新量,将该电导值更新量转换为能够写入忆阻器阵列的电压值,通过权重阵列写单元将该电压值写入最后输出层对应的忆阻器阵列,从而更新最后输出层权重。同理,其余层也按照类似的做法,通过前一层的权重值以及前一层的误差得出该层的权重梯度,从而得出当前层的权重更新值,直到所有层完成更新。最后当全部训练集数据都完成训练且权重更新完成后,可以利用验证集进行评估,从而判断是否终止训练,如果满足终止训练条件则数据处理装置输出训练结果,否则,数据处理装置继续输入训练数据进行新一轮的训练。

图8是本公开至少一实施例提供的再一种数据处理方法的流程图,该数据处理方法可以是是一种神经网络算法执行反向数据路径的逐层训练方法,可以用于图6所示的数据处理装置。

例如,数据处理装置可以使用逐层训练的神经网络模型训练方法。如图8所示,数据处理装置还可以满足神经网络推理加速应用的需求,以逐层训练的方式对神经网络模型各个层的权重值进行更新,从而将神经网络模型各个层对应的忆阻器阵列的电导值进行调整。逐层训练的方法流程如下:首先将初始化的权重部署在数据处理装置的硬件上,并进行前向推理计算。其中,推理计算包括模型输入、编译优化、权重部署、训练模式配置、任务数据输入以及片上任务计算的六个步骤与前述图7中所示的相应步骤相同,此处不再赘述。数据处理装置的处理接口模块将将神经网络算法卷积层和全连接层的推理结果,以及拥有训练好权重的经网络算法软件模型的推理结果,输出到数据处理装置外部的主控模块。该主控模块将神经网络算法卷积层和全连接层的推理结果与拥有训练好权重的经网络算法软件模型的推理结果进行对比,求出每层的残差,并判断当前每层的残差值是否在预先设定好的阈值范围内,如果残差值不在阈值范围内,则由主控模块根据残差值以及上一层的输出结果计算出该权重值的变化量,并将权重值的更新量输出到数据处理装置。从而,数据处理装置的参数管理模块根据权重值的更新量生成忆阻器阵列电导值写入电压信号,并写入忆阻器阵列进行电导值更新;如果残差值在阈值范围内,则进行下一层的校准,直到所有的卷积层与全连接层都已校准完毕,并输出训练结果。

通过对数据处理装置进行逐层训练,能够抵抗非理想因素对最终训练出的神经网络算法精度的影响,以大幅度提升神经网络算法的精度,更精细化地更新神经网络算法的权重值以及对神经网络算法的计算结果进行更精细的校准。

图9是多个数据处理装置的数据调度过程的示意图。如图9所示,计算核心模块包括图6所示的多个数据处理装置,多个数据处理装置通过处理单元接口模块互相传输信息,多个数据处理装置分别通过处理单元接口模块与主控单元传输信息。在前向数据路径任务下,例如神经网络算法的推理工作模式下,计算核心模块接受外部的数据输入,并将该数据输入分配给各个数据处理装置。各个数据处理装置在接收到数据输入后,按照已有的配置信息执行前向数据路径的推理计算任务,直到所有的计算任务完成,计算核心模块将各个数据处理装置的计算结果输出到外部。为获得较高的执行效率,各个数据处理装置可以不需要与主控单元进行信息传输。此外,各个数据处理装置之间还可以通过总线模块传输信息。在反向数据路径任务下,例如,在神经网络算法的训练模式下,数据处理装置除了需要执行上述的推理计算任务外,还需要获得神经网络算法的卷积层以及全连接层的权重更新值,以更新忆阻器阵列的电导值,从而数据流相比推理工作模式更加复杂。因此,各个数据处理装置需要利用主控单元进行数据调度,以通过主控单元计算神经网络算法的卷积层以及全连接层的权重值更新的大小,并通过处理单元接口模块将权重更新值取回。

图10是本公开至少一实施例提供的一种数据处理系统的示意图。该数据处理系统包括图6所示的数据处理装置,可以用于执行神经网络算法的推理计算任务以及训练计算任务。

如图10所示,该数据处理系统包括:路由模块、计算核心模块、主控单元、总线模块、接口模块、时钟模块以及电源模块。路由模块用于数据处理系统与外部的数据输入和数据输出。数据输入包括将外部的数据通过路由模块输入到计算核心模块或者通过总线模块传送到主控单元;数据输出包括通过路由模块将数据处理系统处理完毕的数据输出到数据处理系统外。计算核心模块用于实现神经网络算法的矩阵向量乘法、激活、池化等运算,并通过路由模块或者总线模块接收数据。主控单元用于训练计算任务的数据调度,例如主控单元可以通过总线模块与计算核心模块以及路由模块进行数据传输,主控单元可以但不限于采用嵌入式的微处理器实现,例如基于RISC-V架构或者ARM架构的MCU等。主控模块可以通过总线模块配置不同的接口地址实现对其余模块的控制和数据传输。总线模块用于提供各模块之间的数据传输协议以及进行数据传输。例如总线模块可以是AXI总线。各模块具有不同的总线接口地址,可以通过配置各模块数据地址信息完成各模块的数据传输。接口模块用于扩展数据处理系统的能力,接口模块可以通过各种协议的接口连接不同的外设。例如,接口模块可以是但不限于PCIE接口、SPI接口等,以实现数据处理系统与更多的外部设备进行数据、指令传输的功能。时钟模块用于为各个模块中的数字电路提供工作时钟。电源模块则用于管理各模块的工作电源。

图11为图10所示的数据处理系统执行推理计算任务的数据流示意图。例如,如图11所示,在前向数据路径任务下,例如在推理模式下,数据通路可以是:路由模块从外部接受输入数据,之后传入到计算核心模块进行推理计算。当模型参数量较大时,模型权重将被部署在计算核心模块的多个数据处理装置中,此时具有数据依赖关系的数据处理装置之间可以通过总线模块进行数据传输。计算核心模块的多个数据处理装置按照配置对输入的数据进行推理计算处理,直到所有的输入数据被计算完成。计算完成后,计算结果将通过路由模块输出到系统外部。

图12为图10所示的数据处理系统执行训练计算任务的数据流示意图。在反向数据路径任务下,例如在训练模式下,如图12所示,数据通路可以是:路由模块从外部接收输入数据,之后通过总线模块传入到主控单元和计算核心模块,经过前向推理计算得到神经网络算法每一层的残差值,根据每一层的残差值与该层对应的输入计算得到权重更新值。前向推理计算过程中的权重更新计算过程可以由主控单元进行处理实现,该过程中计算核心模块通过总线模块与主控单元进行数据传输。得出神经网络算法每一层的权重更新值后,主控单元发出控制信号,以配置对应的数据处理模块进行权重更新。整个训练过程需要将神经网络算法输出层残差进行反向传输得到各层的残差,循环执行直到完成神经网络算法所有层的训练更新。

图13为图10所示的数据处理系统执行逐层训练计算任务的数据流示意图。在反向数据路径任务下,例如在逐层训练模式下,如图13所示,数据通路可以是:路由模块从外部接收输入数据,之后通过总线模块传入到主控单元,之后主控单元会将数据通过总线模块传入到计算核心模块执行训练计算任务,当神经网络算法卷积层以及全连接层运算完成之后,计算结果将通过总线模块传入到主控单元,主控单元再次通过总线模块传入到路由模块,从而通过路由模块将计算结果输出到数据处理系统外部。在数据处理系统外部,计算结果经过与神经网络算法软件模型计算出的计算结果进行比较得出权重更新值之后,将权重更新值通过路由模块传入到数据处理系统内部并通过总线模块传入主控单元,之后通过主控单元将权重更新值经过总线模块传入计算核心模块中,同时配置对应的数据处理模块进行权重更新,这一逐层训练计算过程将执行直到数据处理系统的计算结果与外部神经网络算法软件计算结果的差值在设定的阈值之内为止。从而,通过对神经网络算法进行逐层训练,使得数据处理系统能够对数据处理装置的权重值更精细化地进行更新,从而可以更加有效地抵抗数据处理系统的非理想因素对神经网络算法最终识别精度的影响。

因此,该数据处理系统既可在数据流驱动下进行数据调度,以满足神经网络算法推理运算的高效性需求,也可在主控单元的控制下实现数据流的细粒度调度,支持各种神经网络算法的推理、训练计算任务,适应多种应用场景需求。

对于本公开,还有以下几点需要说明:

(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以权利要求的保护范围为准。

相关技术
  • 图像数据处理方法、用于图像数据处理方法的程序、记录有用于图像数据处理方法的程序的记录介质和图像数据处理装置
  • PET 数据处理方法、PET 数据处理装置、计算机可读的存储介质、以及数据处理方法
技术分类

06120113821316