首页 / 专利库 / 电脑零配件 / 计算机系统 / 神经网络处理方法、计算机系统及存储介质

神经网络处理方法、计算机系统及存储介质

阅读:822发布:2020-05-08

专利汇可以提供神经网络处理方法、计算机系统及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种神经网络的处理方法,上述方法包括如下步骤:获取原始网络的模型数据集及模型结构参数,其中,模型数据集包括原始网络中各个计算 节点 对应的网络权值,模型结构参数包括原始网络中多个计算节点的连接关系及各个计算节点的计算属性;根据原始网络的模型数据集和模型结构参数运行原始网络,获得原始网络中各个计算节点对应的指令;根据原始网络的各个计算节点对应的网络权值及指令,生成原始网络对应的离线模型,并将原始网络对应的离线模型存储至非易失性 存储器 中。本发明还提供了一种 计算机系统 及存储介质。本发明的神经网络处理方法、计算机系统及存储介质,缩短处理器运行同一网络的运行时间,提高处理器的处理速度及效率。,下面是神经网络处理方法、计算机系统及存储介质专利的具体信息内容。

1.一种神经网络的处理方法,其特征在于,所述方法包括如下步骤:
获取原始网络的模型数据集及模型结构参数,其中,所述模型数据集包括所述原始网络中各个计算节点对应的网络权值,所述模型结构参数包括所述原始网络中多个计算节点的连接关系及各个计算节点的计算属性;
根据所述原始网络的模型数据集和模型结构参数,对所述原始网络进行编译运行,获得所述原始网络中各个计算节点对应的指令;
根据所述原始网络的各个计算节点对应的网络权值及指令,生成所述原始网络对应的离线模型,并将所述原始网络对应的离线模型存储至非易失性存储器中,其中,所述离线模型包含所述原始网络中各个计算节点对应的网络权值及指令,每个所述计算节点的网络权值及指令对应存储。
2.根据权利要求1所述的方法,其特征在于,所述的根据所述原始网络的模型数据集和模型结构参数运行所述原始网络,获得所述原始网络中各个计算节点对应的指令的步骤,包括:
根据所述原始网络的模型结构参数,获得所述原始网络中各个计算节点的执行顺序;
按照所述原始网络中各个计算节点的执行顺序运行所述原始网络,分别获得所述原始网络中各个计算节点对应的指令。
3.根据权利要求1所述的方法,其特征在于,所述的根据所述原始网络的各个计算节点对应的网络权值及指令,生成所述原始网络对应的离线模型的步骤,包括:
根据所述原始网络的模型数据集和模型结构参数,获得所述原始网络的内存分配方式;
根据所述原始网络的内存分配方式,将所述原始网络运行过程中的相关数据存储至第一存储器中,其中,所述原始网络运行过程中的相关数据包括所述原始网络的各个计算节点对应的网络权值、指令、输入数据及输出数据;
从所述第一存储器中获取所述原始网络的各个计算节点对应的网络权值及指令,并将所述原始网络的各个计算节点对应的网络权值及指令存储于第二存储器中,生成所述离线模型,其中,所述第二存储器为非易失性存储器
4.根据权利要求3所述的方法,其特征在于,所述离线模型中还包括节点接口数据,所述节点接口数据用于表示所述原始网络的各个计算节点的连接关系。
5.根据权利要求1所述的方法,其特征在于,根据所述原始网络的模型数据集和模型结构参数运行所述原始网络的步骤,包括:
计算机系统的处理器或虚拟设备根据所述原始网络的模型数据集和模型结构参数运行所述原始网络。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括如下步骤:
获取新的原始网络的模型数据集和模型结构参数;
若所述新的原始网络存在对应的离线模型时,则从所述非易失性存储器中获取所述新的原始网络对应的离线模型,并根据所述新的原始网络对应的离线模型运行所述新的原始网络;
若所述新的原始网络不存在对应的离线模型,则根据所述新的原始网络的模型数据集和模型结构参数运行所述新的原始网络,生成所述新的原始网络对应的离线模型,并将所述新的原始网络对应的离线模型存储至非易失性存储器中。
7.一种神经网络的处理方法,其特征在于,所述方法还包括如下步骤:
获取原始网络的模型结构参数,其中,所述模型结构参数包括所述原始网络中多个计算节点的连接关系;
从非易失性存储器中获取所述原始网络对应的离线模型,其中,所述原始网络对应的离线模型中包含所述原始网络的各个计算节点对应的网络权值及指令;
根据所述原始网络对应的离线模型以及所述原始网络的模型结构参数运行所述原始网络。
8.一种计算机系统,其特征在于,包括处理器、第一存储器及第二存储器,所述第一存储器或所述第二存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,执行如权利要求1-5任一项或权利要求7所述的方法。
9.一种计算机系统,其特征在于,包括处理器、第一存储器及第二存储器,所述第一存储器或所述第二存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,执行如权利要求6所述的方法。
10.根据权利要求8所述的计算机系统,其特征在于,所述处理器为中央处理器图像处理器、数字信号处理器、现场可编辑阵列或专用神经网络处理器。
11.根据权利要求9所述的计算机系统,其特征在于,所述处理器为中央处理器、图像处理器、数字信号处理器、现场可编辑门阵列或专用神经网络处理器。
12.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个处理器执行时,执行如权利要求1-5任一项或权利要求7所述的方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个处理器执行时,执行如权利要求6所述的方法。

说明书全文

神经网络处理方法、计算机系统及存储介质

技术领域

[0001] 本发明涉及深度学习技术领域,特别是涉及一种神经网络处理方法、计算机系统及存储介质。

背景技术

[0002] 随着人工智能技术的发展,如今深度学习已无处不在且必不可少,并随之产生了许多可扩展的深度学习系统,例如,TensorFlow、MXNet、Caffe和PyTorch等等,上述深度学习系统可以用于提供各种能够在CPU或GPU等处理器上运行的神经网络模型。一般地,处理器在运行神经网络模型时,如运行Caffe网络模型时,每次均需要对该神经网络模型中的各个计算节点分别进行编译、解析,之后,按照该神经网络模型的结构形式按照一定的形式执行各个计算节点。其中,神经网络模型以及网络结构可以是已训练好或未训练好的人工神经网络模型数据。上述对神经网络的处理方法会影响处理器的处理速度,处理效率较低。

发明内容

[0003] 鉴于上述的网络模型处理方法导致的处理效率低的问题,本发明的目的在于提供一种神经网络处理方法、计算机系统及存储介质,提高装置对神经网络的处理速度及处理效率。
[0004] 为实现上述目的,本发明采用如下技术方案:
[0005] 一种神经网络的处理方法,所述方法包括如下步骤:
[0006] 获取原始网络的模型数据集及模型结构参数,其中,所述模型数据集包括所述原始网络中各个计算节点对应的网络权值,所述模型结构参数包括所述原始网络中多个计算节点的连接关系及各个计算节点的计算属性;
[0007] 根据所述原始网络的模型数据集和模型结构参数运行所述原始网络,获得所述原始网络中各个计算节点对应的指令;
[0008] 根据所述原始网络的各个计算节点对应的网络权值及指令,生成所述原始网络对应的离线模型,并将所述原始网络对应的离线模型存储至非易失性存储器中。
[0009] 在其中一个实施例中,所述的根据所述原始网络的模型数据集和模型结构参数运行所述原始网络,获得所述原始网络中各个计算节点对应的指令的步骤,包括:
[0010] 根据所述原始网络的模型结构参数,获得所述原始网络中各个计算节点的执行顺序;
[0011] 按照所述原始网络中各个计算节点的执行顺序运行所述原始网络,分别获得所述原始网络中各个计算节点对应的指令。
[0012] 在其中一个实施例中,所述的根据所述原始网络的各个计算节点对应的网络权值及指令,生成所述原始网络对应的离线模型的步骤,包括:
[0013] 根据所述原始网络的模型数据集和模型结构参数,获得所述原始网络的内存分配方式;
[0014] 根据所述原始网络的内存分配方式,将所述原始网络运行过程中的相关数据存储至第一存储器中,其中,所述原始网络运行过程中的相关数据包括所述原始网络的各个计算节点对应的网络权值、指令、输入数据及输出数据;
[0015] 从所述第一存储器中获取所述原始网络的各个计算节点对应的网络权值及指令,并将所述原始网络的各个计算节点对应的网络权值及指令存储于第二存储器中,生成所述离线模型,其中,所述第二存储器为非易失性存储器
[0016] 在其中一个实施例中,所述离线模型中还包括节点接口数据,所述节点接口数据用于表示所述原始网络的各个计算节点的连接关系。
[0017] 在其中一个实施例中,根据所述原始网络的模型数据集和模型结构参数运行所述原始网络的步骤,包括:
[0018] 计算机系统的处理器或虚拟设备根据所述原始网络的模型数据集和模型结构参数运行所述原始网络。
[0019] 在其中一个实施例中,所述方法还包括如下步骤:
[0020] 获取新的原始网络的模型数据集和模型结构参数;
[0021] 若所述新的原始网络存在对应的离线模型时,则从所述非易失性存储器中获取所述新的原始网络对应的离线模型,并根据所述新的原始网络对应的离线模型运行所述新的原始网络;
[0022] 若所述新的原始网络不存在对应的离线模型,则根据所述新的原始网络的模型数据集和模型结构参数运行所述新的原始网络,生成并存储所述新的原始网络对应的离线模型。
[0023] 同时,本发明还提供了一种神经网络的处理方法,所述方法还包括如下步骤:
[0024] 获取原始网络的模型结构参数,其中,所述模型结构参数包括所述原始网络中多个计算节点的连接关系;
[0025] 从非易失性存储器中获取所述原始网络对应的离线模型,其中,所述原始网络对应的离线模型中包含所述原始网络的各个计算节点对应的网络权值及指令;
[0026] 根据所述原始网络对应的离线模型以及所述原始网络的模型结构参数运行所述原始网络。
[0027] 基于同一发明构思,本发明还提供了一种计算机系统,包括处理器、第一存储器及第二存储器,所述第一存储器或所述第二存储器中存储有计算机程序,所述处理器在执行所述计算机程序时,执行上述任一项所述的方法。
[0028] 在其中一个实施例中,所述处理器为中央处理器图像处理器、数字信号处理器、现场可编辑阵列或专用神经网络处理器。
[0029] 此外,本发明还提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,当所述计算机程序被一个或多个处理器执行时,执行上述任一项所述的方法。
[0030] 本发明的有益效果是:
[0031] 本发明的神经网络处理方法、计算机系统及存储介质,通过将原始网络运行过程中生成的各个计算节点对应的指令,以及原始网络的各个计算节点对应的网络权值进行存储,获得原始网络对应的离线模型,这样当再次运行该原始网络时,可以直接运行该原始网络对应的离线模型,无需重新对该原始网络的模型数据集及模型结构参数等相关数据进行编译,从而缩短处理器运行同一网络的运行时间,进而提高处理器的处理速度及效率。附图说明
[0032] 图1为一实施例的计算机系统的系统框图
[0033] 图2为另一实施例的计算机系统的系统框图;
[0034] 图3为一实施例的神经网络的处理方法的流程图
[0035] 图4为另一实施例的神经网络的处理方法的流程图;
[0036] 图5为又一实施例的神经网络的处理方法的流程图;
[0037] 图6为再一实施例的神经网络的处理方法的流程图;
[0038] 图7为一实施例的神经网络的网络结构图;
[0039] 图8为图7中神经网络的离线模型生成过程示意图;
[0040] 图9为又一实施例的计算机系统的系统框图;
[0041] 图10为一实施例的神经网络的处理方法的流程图;
[0042] 图11为一实施例的神经网络的处理方法的流程图;
[0043] 图12为一实施例的神经网络的处理方法的流程图;
[0044] 图13为一实施例的神经网络的处理方法的流程图;
[0045] 图14为一实施例的神经网络的网络结构图及等效网络结构图;
[0046] 图15为图14中神经网络的第一离线模型的生成过程示意图;
[0047] 图16为图14中神经网络的第一离线模型、第二离线模型的生成过程示意图。

具体实施方式

[0048] 为了使本发明的技术方案更加清楚,以下结合附图,对本发明的神经网络处理方法、计算机系统及存储介质作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明并不用于限定本发明。
[0049] 图1为一实施例的计算机系统的框图,该计算机系统可以包括处理器110、与该处理器110连接的第一存储器120及第二存储器130。其中,该处理器110用于提供计算和控制能,其可以包括获取模111、运算模块113及控制模块112等等,其中,该获取模块111可以是IO(Input输入/Output输出)接口等硬件模块,运算模块113及控制模块112均为硬件模块。例如,运算模块113及控制模块112可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。
[0050] 可选地,处理器可以是通用处理器,如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)或DSP(Digital Signal Processing,数字信号处理),该处理器还可以为IPU(Intelligence Processing Unit,智能处理器)等专用神经网络处理器。当然,该处理器还可以是指令集处理器、相关芯片组、专用微处理器(如,专用集成电路(ASIC))或用于缓存用途的板载存储器等等。
[0051] 该第一存储器或第二存储器还可以存储有计算机程序,该计算机程序用于实现本申请实施例中提供的神经网络处理方法。具体地,该神经网络处理方法用于生成与该处理器接收的原始网络相对应的离线模型,该原始网络对应的离线模型中可以包含该原始网络中各个计算节点的网络权值以及指令等必要的网络结构信息,其中,指令可以用于表明该计算节点用于执行何种计算功能,其具体可以包括该原始网络中各个计算节点的计算属性以及各个计算节点之间的连接关系等信息,从而在处理器再次运行该原始网络时,可以直接运行该原始网络对应的离线模型,无需再次对同一原始网络进行编译等操作,从而缩短处理器运行该网络时的运行时间,进而提高处理器的处理速度及效率。
[0052] 进一步地,第一存储器120可以是内存储器,如缓存等易失性存储器,其可以用于存储神经网络运行过程中的相关数据,如网络输入数据、网络输出数据、网络权值及指令等等。第二存储器130可以是外部存储器等非易失性存储器,第二存储器可以用于存储神经网络对应的离线模型。因而,当计算机系统需要再次对同一原始网络进行编译以运行该原始网络时,可以直接从第二存储器中获取该原始网络对应的离线模型,从而提高处理器的处理速度及效率。
[0053] 当然,在其他实施例中,该计算机系统还可以包含处理器和一个存储器,如图2所示,该计算机系统可以包含处理器210与该处理器210连接的存储器220。该处理器210可以包含获取模块211、控制模块212和运算模块213,其具体结构可参见上文中关于处理器110的描述。该存储器220可以包括第一存储单元221、第二存储单元222和第三存储单元223,其中,该第一存储单元221可以用于存储计算机程序,该计算机程序用于实现本申请实施例中提供的神经网络处理方法。该第二存储单元222可以用于存储原始网络运行过程中相关数据,该第三存储单元223用于存储原始网络对应的离线模型。进一步地,该存储器包含的存储单元的数量还可以大于三个,此处不做具体限定。
[0054] 应当清楚的是,本实施例中的运行原始网络是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。本实施例中,直接运行该原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0055] 如图3所示,本发明一实施例的神经网络的处理方法,用于根据获取的原始网络的相关数据生成并存储该原始网络的离线模型,从而在处理器再次运行该原始网络时,可以直接运行该原始网络对应的离线模型,无需再次对同一原始网络进行编译等操作,从而缩短处理器运行该网络时的运行时间,进而提高处理器的处理速度及效率。具体地,上述方法包括如下步骤:
[0056] S100、获取原始网络的模型数据集及模型结构参数,具体地,可以通过处理器的获取模块获取原始网络的模型数据集及模型结构参数,通过该原始网络的模型数据集及模型结构参数可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个计算节点对应的网络权值等数据,图7所示的神经网络中的W1~W6即用于表示计算节点的网络权值。模型结构参数包括原始网络中多个计算节点的连接关系及各个计算节点的计算属性,其中,计算节点之间的连接关系用于表示计算节点之间是否有数据传递,例如,当多个计算节点之间具有数据流的传递时,则可以说明多个计算节点之间具有连接关系。进一步地,计算节点的连接关系可以包括输入关系和输出关系等等。如图7所示,计算节点F1输出作为计算节点F4和F5的输入,则可以说明计算节点F1和计算节点F4之间具有连接关系,计算节点F1和计算节点F4之间具有连接关系。再如,计算节点F1和计算节点F2之间没有数据传递,则可以说明计算节点F1和计算节点F2之间不存在连接关系。
[0057] 各个计算节点的计算属性可以包括相应计算节点的计算类型及计算参数,其中计算节点的计算类型是指该计算节点用于完成何种计算,如计算节点的计算类型可以包括加法运算、减法运算及卷积运算等等,相应的,该计算节点可以是用于实现加法运算的计算节点、用于实现减法运算的计算节点或用于实现卷积运算的计算节点等等。计算节点的计算参数可以是完成该计算节点对应的计算类型所需的必要参数。例如,计算节点的计算类型可以是用于实现加法运算的计算节点,相应的,该计算节点的计算参数可以为加法运算中的加数,该加法运算中的被加数可以作为输入数据通过获取模块获取,或者,该加法运算中的被加数可以是该计算节点的上一计算节点的输出数据等等。
[0058] 可选地,该原始网络可以为基于TensorFlow、MXNet、Caffe和PyTorch等深度学习系统,针对CPU、GPU或DSP等通用处理器建立的人工神经网络。该原始网络还可以是针对IPU等智能处理器建立的人工神经网络。例如,当该原始网络为基于Caffe建立的神经网络时,则可以获取该Caffe网络的模型数据集(caffemodel)及模型结构参数(prototxt)。其中,模型数据集(caffemodel)中包含该Caffe网络的网络权值等数据,模型结构参数(prototxt)中包含该Caffe网络的各个计算节点的计算属性以及多个计算节点之间的连接关系等。
[0059] S200、根据原始网络的模型数据集和模型结构参数运行原始网络,获得原始网络中各个计算节点对应的指令。具体地,处理器的运算模块可以根据原始网络的模型数据集和模型结构参数运行该原始网络,并获得原始网络中各个计算节点对应的指令。进一步地,处理器的获取模块还可以获取该原始网络的输入数据,处理器的运算模块可以根据原始网络的输入数据、网络模型数据集和模型结构参数运行原始网络,获得该原始网络中各个计算节点对应的指令。更进一步地,上述运行该原始网络获得各个计算节点的指令的过程实质上是编译的过程,该编译过程可以通过计算机系统的处理器或虚拟设备实现。即计算机系统的处理器或虚拟设备根据原始网络的模型数据集和模型结构参数运行原始网络。其中,虚拟设备指的是在存储器的内存空间中虚拟出一段处理器运行空间。
[0060] 应当清楚的是,本实施例中的运行原始网络是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0061] S300、根据原始网络的各个计算节点对应的网络权值及指令,生成原始网络对应的离线模型,并将所述原始网络对应的离线模型存储至非易失性存储器(如数据库)中。具体地,该处理器的控制模块可以根据原始网络的各个计算节点对应的网络权值和指令,生成该原始网络对应的离线模型,例如,该处理器的控制模块可以将原始网络的各个计算节点对应的网络权值和指令存储至非易失性的第二存储器中,以实现离线模型的生成及存储。其中,针对原始网络的每个计算节点,该计算节点的网络权值及指令一一对应进行存储。这样,当再次运行该原始网络时,可以直接从非易失性存储器中获取该原始网络对应的离线模型,并根据与其对应的离线模型运行原始网络,无需在线对该原始网络的各个计算节点进行编译获得指令,提高了系统的运行速度及效率。
[0062] 应当清楚的是,本实施例中,直接运行该原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0063] 可选地,如图4所示,上述步骤S200可以包括:
[0064] S210、根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序。具体地,处理器的运算模块可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,进一步地,处理器的运算模块可以根据原始网络中各个计算节点的连接关系,获得原始网络中各个计算节点的执行顺序。例如,如图7所示,计算节点F4的输入数据为计算节点F1的输出数据以及计算节点F2的输出数据,计算节点F6的输入数据为计算节点F4的输出数据以及计算节点F5的输出数据。因此,图7所示的神经网络中各个计算节点的执行顺序可以为F1-F2-F3-F4-F5-F6或F1-F3-F2-F5-F4-F6等等。当然,计算节点F1、F2和F3可以并行执行,计算节点F4和F5也可以并行执行,此处仅举例说明,并不具体限定其执行顺序。
[0065] S220、按照原始网络中各个计算节点的执行顺序运行原始网络,分别获得原始网络中各个计算节点对应的指令。具体地,处理器的运算模块可以根据原始网络中各个计算节点的执行顺序运行该原始网络,以获得原始网络中各个计算节点对应的指令,即处理器可以将原始网络的模型数据集等数据进行编译获得各个计算节点对应的指令,通过各个计算节点对应的指令可以获知该计算节点用于实现何种计算功能,即可以获得该计算节点的计算类型及计算参数等计算属性。
[0066] 进一步地,如图4所示,上述步骤S300还包括:
[0067] S310、根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式。具体地,处理器的运算模块可以根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式。进一步地,处理器可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,并根据原始网络中各个计算节点的执行顺序确定当前网络的内存分配方式。例如,按各个计算节点的执行顺序将各个计算节点在运行过程中的相关数据保存至一个栈内。其中,内存分配方式是指确定原始网络中各个计算节点相关的数据(包括输入数据、输出数据、网络权值数据及中间结果数据等等)在内存空间(如第一存储器)上的存储位置。例如,可以采用数据表存储各个计算节点相关的数据(输入数据、输出数据、网络权值数据及中间结果数据等等)和内存空间的映射关系。
[0068] S320、根据原始网络的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器中,其中,原始网络运行过程中的相关数据包括原始网络的各个计算节点对应的网络权值、指令、输入数据、中间计算结果及输出数据等等。例如,如图7所示,X1和X2表示该神经网络的输入数据,Y表示该神经网络的输出数据,处理器可以将该神经网络的输出数据转换为控制机器人或不同数字接口的控制命令。W1~W6用于表示计算节点F1、F2和F3对应的网络权值,计算节点F1~F5的输出数据可以作为中间计算结果。处理器可以根据已确定的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器,如内存储器或缓存等易失性存储器,其具体的存储方式可参见图8中左半部分存储空间。
[0069] S330、从第一存储器中获取原始网络的各个计算节点对应的网络权值及指令,并将原始网络的各个计算节点对应的网络权值及指令存储于第二存储器中,生成离线模型。其中,第二存储器可以为外部存储器等非易失性存储器。该离线模型的生成过程具体可参见图8所示,图8中右半部分的存储空间内存储的即为原始网络的对应的离线模型。
[0070] 如图7和图8所示,下面结合附图说明上述的离线模型生成过程:
[0071] 首先,处理器可以获得该原始网络的模型数据集、模型结构参数以及输入数据,从而根据该原始网络的模型数据集和模型结构参数可以获得该原始网络的网络结构图,如图7所示。
[0072] 其次,处理器可以根据原始网络的模型结构参数,获得原始网络各个计算节点的连接关系,并根据各个计算节点的连接关系获得原始网络中各个计算节点的执行顺序,以及原始网络在运行过程中的内存分配方式,从而可以获得原始网络在运行过程中相关数据的存储位置。如图8中左半部分存储空间所示,原始网络在运行过程中的相关数据可以按照各个计算节点执行顺序存储在一个栈中。
[0073] 最后,处理器可以将原始网络的各个计算节点对应的网络权值及指令存储于非易失性的第二存储器中,生成离线模型,该离线模型的存储方式可参见图8中右半部分存储空间所示。并且,该离线模型仅仅包含运行该原始网络所必需的网络权值及指令等数据,而不需对原始网络运行过程中的输入数据、输出数据或中间计算结果等进行存储,从而可以减小第二存储器中的存储空间的消耗。
[0074] 作为进一步地改进,离线模型中还包括节点接口数据,节点接口数据用于表示原始网络的各个计算节点的连接关系。具体地,节点接口数据可以包括各个计算节点的输入数据来源和输出数据来源。例如,如图7所示,节点接口数据可以包括计算节点F1、F2和F3为起始计算节点,其输入分别为预设的输入数据,计算节点F1的输出数据作为计算节点F4和计算节点F5的输入数据等等。这样,在再次运行该原始网络时,只需获得原始网络的起始计算节点和输入数据,之后,便可以根据该原始网络对应的离线模型执行该原始网络。
[0075] 在一个实施例中,生成离线模型后可以立刻使用离线模型执行运算,也可以保存离线模型,等待需要计算的时候再使用离线模型。如图5所示,上述方法还包括如下步骤:
[0076] S400、获取新的原始网络的模型数据集和模型结构参数;具体地,通过处理器的获取模块获取新的原始网络的模型数据集和模型结构参数,通过该新的原始网络的模型数据集和模型结构参数可以获得该新的原始网络的网络结构图。
[0077] S500、判断新的原始网络是否存在对应的离线模型;具体地,可以通过判断新的原始网络的模型数据集与原始网络的模型数据集是否相同,新的原始网络的模型结构参数是否与原始网络的模型结构参数是否相同,若两者均相同,则可以认为该新的原始网络与原始网络为同一网络,此时可以判定该新的原始网络存在对应的离线模型。
[0078] 若新的原始网络不存在离线模型,则根据新的原始网络的模型数据集和模型结构参数运行新的原始网络,生成新的原始网络对应的离线模型,并将新的原始网络对应的离线模型存储至非易失性存储器中。具体地,当新的原始网络的模型数据集与原始网络的模型数据集不同,和/或新的原始网络的模型结构参数与原始网络的模型结构参数不同,则可以认为该原始网络与新的原始网络属于不同的网络,该新的原始网络不存在离线模型。当该新的原始网络不存在离线模型时,则可以执行上述步骤S100~步骤S300,其具体执行过程可参见上文中的描述,此处不再赘述。
[0079] 进一步地,还可以通过多个遍历包含有多个离线模型的数据集或遍历多个包含多个离线模型记录的数据集,以判断该新的原始网络是否存在与其相应的离线模型。
[0080] 若新的原始网络存在离线模型时,则可以从非易失性存储器中获取新的原始网络对应的离线模型,并根据新的原始网络对应的离线模型运行新的原始网络。具体地,若新的原始网络存在离线模型,则可以执行如下步骤:
[0081] S510、获取新的原始网络对应的离线模型;具体地,处理器的获取模块可以从第二存储器读取该新的原始网络对应的离线模型,即处理器的获取模块可以从第二存储器中读取该新的原始网络中各个计算节点对应的网络权值及指令。
[0082] S520、根据新的原始网络的模型结构参数,获得新的原始网络中各个计算节点的执行顺序;具体地,处理器的运算模块可以根据新的原始网络中各个计算节点的连接关系,获得该新的原始网络中各个计算节点的执行顺序。其具体执行过程可参照上述步骤S210。
[0083] S530、根据新的原始网络中各个计算节点的执行顺序,依次从离线模型中获得新的原始网络的各个计算节点对应的网络权值及指令。具体地,处理器的获取模块可以根据新的原始网络中各个计算节点的执行顺序,依次从离线模型中获得新的原始网络的各个计算节点对应的网络权值及指令。
[0084] S540、根据新的原始网络的各个计算节点对应的网络权值及指令,运行新的原始网络。具体地,处理器的运算模块可以根据新的原始网络的各个计算节点对应的网络权值及指令,直接运行该新的原始网络,无需重复对各个计算节点进行编译。
[0085] 例如,图7所示的神经网络中各个计算节点的执行顺序可以为F1-F2-F3-F4-F5-F6,则当该神经网络存在离线模型时,可以首先从离线模型中获得计算节点F1对应的网络权值及指令,然后依次获得计算指令F2~F6的网络权值及指令,从而可以根据依次运行该新的原始网络的各个计算节点,无需对该新的原始网络中各个节点进行重新编译,提高了处理器的运行速度及效率。
[0086] 在一个实施例中,离线模型中还包括节点接口数据,该节点接口数据用于表示原始网络的各个计算节点的连接关系,例如,该节点接口数据可以包括各个计算节点的输入数据来源和输出数据来源。此时,根据原始网络对应的离线模型运行新的原始网络的步骤,包括:
[0087] 获取新的原始网络对应的离线模型;具体地,处理器的获取模块可以从第二存储器读取该新的原始网络对应的离线模型,离线模型包含节点接口数据。
[0088] 根据新的原始网络的模型结构参数获得新的原始网络的起始计算节点;具体地,处理器的运算模块可以根据新的原始网络的模型结构参数获得新的原始网络的起始计算节点。其中,该起始计算节点的输入数据为网络输入数据,如计算节点F1、F2和F3,起始计算节点之前不存在其他计算节点。
[0089] 根据新的原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得新的原始网络的各个计算节点对应的网络权值及指令。具体地,处理器的获取模块可以根据新的原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得新的原始网络的各个计算节点对应的网络权值及指令。
[0090] 根据新的原始网络的各个计算节点对应的网络权值及指令,运行新的原始网络。具体地,处理器的运算模块可以根据新的原始网络的各个计算节点对应的网络权值及指令,运行新的原始网络。
[0091] 例如,图7所示的神经网络中的起始计算节点为计算节点F1、F2和F3,则当该神经网络存在离线模型时,可以首先从离线模型中获得各个起始计算节点F1、F2和F3的指令和网络权值,然后根据离线模型中的节点接口数据获得与该起始计算节点F1、F2和F3连接的计算节点F4和F5,从而可以获得计算节点F4和F5的指令和网络权值。之后,可以根据离线模型中的节点接口数据获得计算节点F4和F5连接的计算节点F6,获得计算节点F6的指令和网络权值。这样可以根据依次运行该新的原始网络的各个计算节点,无需对该新的原始网络中各个节点进行重新编译,提高了处理器的运行速度及效率。
[0092] 进一步地,当离线模型中包括节点接口数据,该接口数据中不仅包含原始网络中各个计算节点之间的连接关系,还包括该原始网络的起始计算节点等信息。此时,根据原始网络对应的离线模型运行新的原始网络的步骤,包括:
[0093] 获取新的原始网络对应的离线模型;具体地,处理器的获取模块可以从第二存储器读取该新的原始网络对应的离线模型,离线模型包含节点接口数据,通过该节点接口数据可以获得该新的原始网络的起始计算节点,以及其他各个计算节点之间的连接关系等信息。
[0094] 根据新的原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得新的原始网络的各个计算节点对应的网络权值及指令。具体地,处理器的获取模块可以根据新的原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得新的原始网络的各个计算节点对应的网络权值及指令。
[0095] 根据新的原始网络的各个计算节点对应的网络权值及指令,运行新的原始网络。具体地,处理器的运算模块可以根据新的原始网络的各个计算节点对应的网络权值及指令,运行新的原始网络。
[0096] 在一个实施例中,如图6所示,本发明一实施例还提供了一种神经网络的处理方法,上述方法包括如下步骤:
[0097] S610、获取原始网络的模型结构参数,其中,模型结构参数包括原始网络中多个计算节点的连接关系。具体地,计算节点之间的连接关系用于表示计算节点之间是否有数据传递,例如,当多个计算节点之间具有数据流的传递时,则可以说明多个计算节点之间具有连接关系。进一步地,计算节点的连接关系可以包括输入关系和输出关系等等。
[0098] S620、从非易失性存储器中获取原始网络对应的离线模型,其中,原始网络对应的离线模型中包含原始网络的各个计算节点对应的网络权值及指令,针对原始网络的每个计算节点,该计算节点的网络权值及指令一一对应进行存储。处理器通过各个计算节点对应的指令可以获知该计算节点用于实现何种计算功能,即可以获得该计算节点的计算类型及计算参数等计算属性。
[0099] S630、根据原始网络对应的离线模型以及原始网络的模型结构参数运行原始网络。具体地,本实施例中,直接运行该原始网络对应的离线模型是指,使用离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0100] 在一个实施例中,上述步骤S630具体可以通过图5中的步骤S510~步骤S540实现。具体地,上述步骤S630可以包括如下步骤:
[0101] 根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序;具体地,处理器的运算模块可以根据原始网络中各个计算节点的连接关系,获得该原始网络中各个计算节点的执行顺序。其具体执行过程可参照上述步骤S210。
[0102] 根据原始网络中各个计算节点的执行顺序,依次从离线模型中获得该原始网络的各个计算节点对应的网络权值及指令。具体地,处理器的获取模块可以根据原始网络中各个计算节点的执行顺序,依次从离线模型中获得该原始网络的各个计算节点对应的网络权值及指令。
[0103] 根据原始网络的各个计算节点对应的网络权值及指令,运行原始网络。具体地,处理器的运算模块可以根据原始网络的各个计算节点对应的网络权值及指令,直接运行该原始网络,无需重复对各个计算节点进行编译。
[0104] 在一个实施例中,离线模型中还包括节点接口数据,该节点接口数据用于表示原始网络的各个计算节点的连接关系,例如,该节点接口数据可以包括各个计算节点的输入数据来源和输出数据来源。此时,根据原始网络对应的离线模型以及原始网络的模型结构参数运行原始网络的步骤,包括:
[0105] 根据原始网络的模型结构参数获得原始网络的起始计算节点;具体地,处理器的运算模块可以根据原始网络的模型结构参数获得该原始网络的起始计算节点。其中,该起始计算节点的输入数据为网络输入数据,如计算节点F1、F2和F3,起始计算节点之前不存在其他计算节点。
[0106] 根据该原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得该原始网络的各个计算节点对应的网络权值及指令。具体地,处理器的获取模块可以根据该原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得该原始网络的各个计算节点对应的网络权值及指令。
[0107] 根据该原始网络的各个计算节点对应的网络权值及指令,运行该原始网络。
[0108] 进一步地,当离线模型中包括节点接口数据时,此时,根据原始网络对应的离线模型以及原始网络的模型结构参数运行原始网络的步骤,可以包括:
[0109] 根据该原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得该原始网络的各个计算节点对应的网络权值及指令。具体地,处理器的获取模块可以根据该原始网络的起始计算节点和离线模型中的节点接口数据,依次从离线模型中获得该原始网络的各个计算节点对应的网络权值及指令。
[0110] 根据该原始网络的各个计算节点对应的网络权值及指令,运行该原始网络。
[0111] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0112] 同时,本发明一实施例还提供了一种计算机系统,包括处理器、第一存储器及第二存储器,第一存储器或所述第二存储器中存储有计算机程序,处理器在执行计算机程序时,执行如上述任一实施例的方法。具体地,当处理器执行上述计算机程序时,具体执行如下步骤:
[0113] 获取原始网络的模型数据集及模型结构参数,具体地,可以通过处理器的获取模块获取原始网络的模型数据集及模型结构参数,通过该原始网络的模型数据集及模型结构参数可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个计算节点对应的网络权值等数据,模型结构参数包括原始网络中多个计算节点的连接关系及各个计算节点的计算属性,其中,计算节点之间的连接关系用于表示计算节点之间是否有数据传递,各个计算节点的计算属性可以包括相应计算节点的计算类型及计算参数,其中计算节点的计算类型是指该计算节点用于完成何种计算,如计算节点的计算类型可以包括加法运算、减法运算及卷积运算等等,相应的,该计算节点可以是用于实现加法运算的计算节点、用于实现减法运算的计算节点或用于实现卷积运算的计算节点等等。计算节点的计算参数可以是完成该计算节点对应的计算类型所需的必要参数。
[0114] 根据原始网络的模型数据集和模型结构参数运行原始网络,获得原始网络中各个计算节点对应的指令。具体地,处理器的运算模块可以根据原始网络的模型数据集和模型结构参数运行该原始网络,并获得原始网络中各个计算节点对应的指令。进一步地,处理器的获取模块还可以获取该原始网络的输入数据,处理器的运算模块可以根据原始网络的输入数据、网络模型数据集和模型结构参数运行原始网络,获得该原始网络中各个计算节点对应的指令。更进一步地,上述运行该原始网络获得各个计算节点的指令的过程实质上是编译的过程,该编译过程可以通过虚拟设备或计算机系统的处理器实现。即虚拟设备或计算机系统的处理器根据原始网络的模型数据集和模型结构参数运行原始网络。其中,虚拟设备指的是在存储器的内存空间中虚拟出一段处理器运行空间。
[0115] 根据原始网络的各个计算节点对应的网络权值及指令,生成原始网络对应的离线模型,并将原始网络对应的离线模型存储至非易失性存储器中。具体地,该处理器的控制模块可以根据原始网络的各个计算节点对应的网络权值和指令,生成该原始网络对应的离线模型,例如,该处理器的控制模块可以将原始网络的各个计算节点对应的网络权值和指令存储至第二存储器等非易失性存储器中,以实现离线模型的生成及存储。这样,当再次运行该原始网络时,可以直接根据与其对应的离线模型运行原始网络,无需在线对该原始网络的各个计算节点进行编译获得指令,提高了系统的运行速度及效率。
[0116] 进一步地,上述计算机系统可以是图1或图2所示的计算机系统,该计算机系统的处理器可以为中央处理器、图像处理器、数字信号处理器、现场可编辑门阵列或智能处理器中一种或多种的组合。应当清楚的是,本实施例中的计算机系统的工作原理与上述方法中各个步骤的执行过程基本一致,具体可参见上文中的描述,此处不再赘述。
[0117] 此外,本发明一实施例还提供了一种计算机存储介质,该计算机存储介质中存储有计算机程序,当计算机程序被一个或多个处理器执行时,执行上述任一实施例的方法。其中,该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0118] 上述的神经网络处理方法、计算机系统及存储介质,通过将原始网络运行过程中生成的各个计算节点对应的指令,以及原始网络的各个计算节点对应的网络权值进行存储,获得原始网络对应的离线模型,这样当再次运行该原始网络时,可以直接运行该原始网络对应的离线模型,无需重新对该原始网络的模型数据集及模型结构参数等相关数据进行编译,从而缩短处理器运行同一网络的运行时间,进而提高处理器的处理速度及效率。
[0119] 在本申请的其他实施例中,计算机系统可以是由多个处理器形成的多联机系统,其中,处理器可以包括主处理器及一个或多个协处理器,每个处理器可以对应设置有一个存储器。具体地,如图9所示,该计算机系统300可以包括第一处理器310、与该第一处理器310连接的第一存储器320及第二存储器330,与该第一处理器310连接的一个或多个第二处理器340,以及与各个第二处理器340对应设置的第三存储器350。其中,其中,该第一处理器
310用于提供计算和控制能力,其可以包括第一获取模块311、第一运算模块313及第一控制模块312等等,其中,该第一获取模块311可以是IO(Input输入/Output输出)接口等硬件模块,第一运算模块313及第一控制模块312均为硬件模块。例如,第一运算模块313及第一控制模块312可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。
[0120] 可选地,第一处理器310可以作为主处理器,该第一处理器310可以为通用处理器,如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或DSP(Digital Signal Processing,数字信号处理)等等。一个或多个第二处理器可以作为协处理器,该第二处理器340可以为IPU(Intelligence Processing Unit,智能处理器)等专用神经网络处理器,该第二处理器340也可以是通用处理器。进一步地,该第二处理器340可以包括第二获取模块、第二运算模块及第二控制模块等等,其中,该第二获取模块可以是IO(Input输入/Output输出)接口等硬件模块,第二运算模块及第二控制模块均为硬件模块,例如,第二运算模块及第二控制模块可以为数字电路或模拟电路等等。上述硬件电路的物理实现包括但不限于物理器件,物理器件包括但不限于晶体管及忆阻器等等。第二获取模块、第二运算模块及第二控制模块之间的连接关系与第一处理器中各个模块的连接关系类似,可参见第一处理器中各个模块的连接关系。
[0121] 该第一存储器320或第二存储器330还可以存储有计算机程序,该计算机程序用于实现本申请实施例中提供的神经网络处理方法。具体地,该神经网络处理方法用于生成与该第一处理器接收的原始网络相对应的离线模型,该离线模型可以包括第一离线模型,第一离线模型中包含原始网络中具有第一操作属性的所有计算节点对应的网络权值及指令,从而在处理器再次运行该原始网络时,可以直接从该第一离线模型获得所有具有第一操作属性的所有计算节点对应的网络权值及指令,无需再次对同一原始网络中的具有第一操作属性的计算节点进行编译等操作,从而缩短处理器运行该网络时的运行时间,进而提高处理器的处理速度及效率。进一步地,该原始网络对应的离线模型还可以包括第二离线模型,第二离线模型中包含原始网络中具有第二操作属性的所有计算节点对应的网络权值及指令。
[0122] 进一步地,第一存储器320可以是内存储器,如缓存等易失性存储器,其可以用于存储神经网络运行过程中的相关数据,如网络输入数据、网络输出数据、网络权值及指令等等。第二存储器330和第三存储器350可以是外部存储器等非易失性存储器。因而,当计算机系统需要再次对同一原始网络进行编译以运行该原始网络时,可以直接第一离线模型和第二离线模型中获得该原始网络中各个计算节点对应的网络权值及指令,从而提高处理器的处理速度及效率。
[0123] 在一个实施例中,本发明一实施例的神经网络的处理方法,用于图9所示的计算机系统中,用于生成与该第一处理器接收的原始网络相对应的离线模型,以提高该计算机系统的处理效率及速度。具体地,如图10所示,上述方法包括如下步骤:
[0124] S700、获取原始网络的模型数据集和模型结构参数,其中,模型数据集包括原始网络中各个计算节点对应的网络权值,模型结构参数包括原始网络中多个计算节点的连接关系。具体地,可以通过第一处理器的第一获取模块获取原始网络的模型数据集及模型结构参数,通过该原始网络的模型数据集及模型结构参数可以获得该原始网络的网络结构图。其中,模型数据集包括原始网络中各个计算节点对应的网络权值等数据,图14所示的神经网络中的W1~W6即用于表示计算节点的网络权值。模型结构参数包括原始网络中多个计算节点的连接关系及各个计算节点的计算属性,其中,计算节点之间的连接关系用于表示计算节点之间是否有数据传递,例如,当多个计算节点之间具有数据流的传递时,则可以说明多个计算节点之间具有连接关系。进一步地,计算节点的连接关系可以包括输入关系和输出关系等等。如图14所示,计算节点C1输出作为计算节点I1和I2的输入,则可以说明计算节点C1和计算节点I1之间具有连接关系,计算节点C1和计算节点I2之间具有连接关系。再如,计算节点C1和计算节点C2之间没有数据传递,则可以说明计算节点C1和计算节点C2之间不存在连接关系。
[0125] 各个计算节点的计算属性可以包括相应计算节点的计算类型及计算参数,其中计算节点的计算类型是指该计算节点用于完成何种计算,如计算节点的计算类型可以包括加法运算、减法运算及卷积运算等等,相应的,该计算节点可以是用于实现加法运算的计算节点、用于实现减法运算的计算节点或用于实现卷积运算的计算节点等等。计算节点的计算参数可以是完成该计算节点对应的计算类型所需的必要参数。例如,计算节点的计算类型可以是用于实现加法运算的计算节点,相应的,该计算节点的计算参数可以为加法运算中的加数,该加法运算中的被加数可以作为输入数据通过获取模块获取,或者,该加法运算中的被加数可以是该计算节点的上一计算节点的输出数据等等。
[0126] S710、获取原始网络中各个计算节点的操作属性,计算节点的操作属性包括第一操作属性和第二操作属性。具体地,第一处理器的第一获取模块或第一运算模块可以获得该原始网络中各个计算节点的操作属性。其中,计算节点的操作属性用于标识该计算节点对应的计算指令能够在哪个处理器上执行。本实施例中,第一操作属性可以用于表示该计算节点对应的计算指令能够在IPU等专用神经网络处理器上执行,第二操作属性用于表示该计算节点对应的计算指令能够在CPU、GPU、DSP等通用处理器上执行。
[0127] 进一步地,可以通过枚举方法来表示和保存各个计算节点的操作属性。例如,可以定义一个枚举变量device,该枚举变量可以包括两个以上的枚举值。若当前计算节点的操作属性为第一操作属性,则该枚举变量的枚举值可以为1;若当前计算节点的操作属性为第二操作属性,则该枚举变量的枚举值可以为0。
[0128] S720、根据原始网络的模型数据集、模型结构参数及各个计算节点的操作属性运行原始网络,获得原始网络中各个计算节点对应的指令。具体地,第一处理器的第一运算模块可以根据原始网络的模型数据集、模型结构参数及各个计算节点的操作属性运行该原始网络,以获得原始网络中各个计算节点对应的指令。进一步地,第一处理器的第一获取模块还可以获取该原始网络的输入数据,第一处理器的第一运算模块可以根据原始网络的输入数据、网络模型数据集、模型结构参数及各个计算节点的操作属性运行原始网络,获得该原始网络中各个计算节点对应的指令。更进一步地,上述运行该原始网络获得各个计算节点的指令的过程实质上是编译的过程,该编译过程可以通过计算机系统的处理器或虚拟设备实现。即计算机系统的处理器或虚拟设备根据原始网络的模型数据集和模型结构参数运行原始网络。其中,虚拟设备指的是在存储器的内存空间中虚拟出一段处理器运行空间。
[0129] 应当清楚的是,本实施例中的运行原始网络是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0130] S730、若当前计算节点的操作属性为第一操作属性时,则将当前计算节点对应的网络权值及指令存储至第一非易失性存储器中,以获得原始网络对应的第一离线模型。具体地,若当前计算节点的操作属性为第一操作属性时,则该第一处理器的第一控制模块可以将当前计算节点对应的网络权值及指令存储至第一非易失性存储器中,以获得原始网络对应的第一离线模型。其中,该第一非易失性存储器可以为IPU等专用神经网络处理器对应的第三存储器。进一步地,针对原始网络的每个计算节点,该计算节点的网络权值及指令一一对应进行存储。这样,当再次运行该原始网络时,可以直接从第一非易失性存储器中获取该原始网络对应的第一离线模型,并根据与该第一离线模型运行原始网络中所有具有第一操作属性的计算节点,无需在线对该原始网络中具有第一操作属性的计算节点进行编译获得指令,提高了系统的运行速度及效率。
[0131] 应当清楚的是,本实施例中,直接运行该原始网络对应的第一离线模型是指,使用第一离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0132] 可选地,各个计算节点的操作属性可以预先存储于该原始网络的网络结构参数或模型数据集中,此时,在读取该原始网络的过程中,即可直接获得该原始网络中各个计算节点的操作属性。即上述步骤S710具体可以包括如下步骤:
[0133] 从原始网络的模型数据集或模型结构参数中,获得原始网络中各个计算节点的操作属性。具体地,各个计算节点的操作属性可以预先存储于该原始网络的网络结构参数或模型数据集中。第一处理器的第一获取模块在获得原始网络的模型数据集或模型结构参数的过程中,即可获得该原始网络中各个计算节点的操作属性。
[0134] 可选地,该原始网络中各个计算节点的操作属性可以在第一处理器的第一获取模块获得原始网络的过程中实时获得。上述步骤S710具体包括如下步骤:
[0135] 分别判断各个计算节点是否能够在专用神经网络处理器上执行,具体地,第一处理器的第一运算模块可以分别判断各个计算节点是否能够在专用神经网络处理器上执行。
[0136] 若当前计算节点能够在专用神经网络处理器上执行,则将当前计算节点标记为第一操作属性;若当前计算节点只能在通用处理器上执行,则将当前计算节点标记为第二操作属性。从而,在第一处理器读取原始网络的过程中,可以实时判断原始网络中各个计算节点的操作属性。例如,若当前计算节点的操作属性为第一操作属性,则将当前计算节点对应的枚举变量标记为1,否则,则将当前计算节点对应的枚举变量标记为0。
[0137] 进一步地,第一处理器的第一运算模块可以通过预设函数表查询当前计算节点是否存在具有第一操作属性的等效计算节点,若当前计算节点具有第一操作属性的等效计算节点,则可以将当前计算节点的操作属性标记为第一操作属性。若通过预设函数表未查找到与当前计算节点匹配的具有第一操作属性的等效计算节点时,则认为该当前计算节点的操作属性为第二操作属性。如图12所示,上述步骤S710还包括如下步骤:
[0138] S711、通过预设函数表查询当前计算节点是否存在等效计算节点,其中,等效计算节点为能够在专用神经网络处理器上执行的计算节点。
[0139] 若当前计算节点存在等效计算节点,则执行步骤S712,判定当前计算节点能够在专用神经网络处理器上执行。此时,可以执行步骤S713,将当前计算节点的操作属性标记为第一操作属性。具体地,若当前计算节点对应的计算指令能够转化为专用神经网络处理器对应的计算指令,则认为当前计算节点存在具有第一操作属性的等效计算节点,可以将该计算节点的操作属性标记为第一操作属性。
[0140] 若当前计算节点不存在等效计算节点,则可以执行步骤S714,判定当前计算节点只能在CPU等通用处理器上执行。此时,可以执行步骤S715,将当前计算节点的操作属性标记为第二操作属性。具体地,若当前计算节点对应的计算指令不能转化为专用神经网络处理器对应的计算指令,则认为当前计算节点不存在具有第一操作属性的等效计算节点,可以将当前计算节点的操作属性标记为第二操作属性。
[0141] 在一个实施例中,如图11所示,上述步骤S720进一步包括:
[0142] S721、根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序;具体地,第一处理器的第一运算模块可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,进一步地,第一处理器的第一运算模块可以根据原始网络中各个计算节点的连接关系,获得原始网络中各个计算节点的执行顺序。例如,如图14所示,计算节点I1的输入数据为计算节点C1的输出数据以及计算节点C2的输出数据,计算节点I3的输入数据为计算节点I1的输出数据以及计算节点I2的输出数据。因此,图14所示的神经网络中各个计算节点的执行顺序可以为C1-C2-C3-I1-I2-I3-C4-C5-I4等等。当然,计算节点C1、C2和C3可以并行执行,计算节点I1和I2也可以并行执行,此处仅举例说明,并不具体限定其执行顺序。
[0143] S722、根据各个计算节点的操作属性,分别获得各个计算节点对应的目标处理器;具体地,第一处理器的第一运算模块可以根据原始网络中各个计算节点的操作属性,获得各个计算节点对应的目标处理器。例如,计算节点C1~C5的操作属性为第二操作属性(如CPU操作属性)时,则计算节点C1~C5对应的目标处理器为CPU,其可以为第一处理器,也可以是作为协处理器的第二处理器。计算节点I1~I4的操作属性为第一操作属性时,则计算节点I1~I4对应的操作目标处理器为IPU等神经网络专用处理器。
[0144] S723、按照原始网络中各个计算节点的执行顺序,分别通过各个计算节点对应的目标处理器执行各个计算节点,获得原始网络中各个计算节点对应的指令。具体地,第一处理器的第一控制模块可以按照原始网络中各个计算节点的执行顺序,若当前计算节点对应的目标处理器为IPU等神经网络专用处理器时,则可以控制作为协处理器的神经网络专用处理器执行当前计算节点,以获得当前计算节点对应的指令。若当前计算节点对应的目标处理器为CPU时,则可以控制CPU执行当前计算节点,以获得当前计算节点对应的指令。若当前计算节点对应目标处理器为GPU时,则可以控制GPU执行当前计算节点,或控制CPU等通用处理器执行当前计算节点。
[0145] 进一步地,如图11所示,上述步骤S730还包括如下步骤:
[0146] S731、根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式;具体地,第一处理器的第一运算模块可以根据原始网络的模型数据集和模型结构参数,获得原始网络的内存分配方式。进一步地,第一处理器可以根据原始网络的模型结构参数,获得原始网络中各个计算节点的执行顺序,并根据原始网络中各个计算节点的执行顺序确定当前网络的内存分配方式。例如,按各个计算节点的执行顺序将各个计算节点在运行过程中的相关数据保存至一个栈内。其中,内存分配方式是指确定原始网络中各个计算节点相关的数据(包括输入数据、输出数据、网络权值数据及中间结果数据等等)在内存空间(如第一存储器)上的存储位置。例如,可以采用数据表存储各个计算节点相关的数据(输入数据、输出数据、网络权值数据及中间结果数据等等)和内存空间的映射关系。
[0147] S732、根据原始网络的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器中,其中,原始网络运行过程中的相关数据包括原始网络的各个计算节点对应的网络权值、指令、输入数据及输出数据。例如,如图14所示,X1和X2表示该神经网络的输入数据,W1~W6用于表示计算节点C1、C2和C3对应的网络权值,计算节点I1~I3的输出数据以及计算节点C4和C5的输出数据可以作为中间计算结果。第一处理器可以根据已确定的内存分配方式,将原始网络运行过程中的相关数据存储至第一存储器,如内存储器或缓存等易失性存储器,其具体的存储方式可参见图15中左边的存储空间。
[0148] S733、从第一存储器中获取原始网络中各个具有第一操作属性的计算节点对应的网络权值及指令,并将原始网络中各个具有第一操作属性的计算节点对应的网络权值及指令存储于第一非易失性存储器中,生成第一离线模型。其中,第一非易失性存储器可以是专用神经网络处理器对应的第三存储器。该第一离线模型的生成过程具体可参见图15所示,图15中右边的存储空间内存储的即为原始网络的对应的第一离线模型。
[0149] 如图14和图15所示,下面结合附图说明上述的离线模型生成过程:
[0150] 首先,第一处理器可以获得该原始网络的模型数据集、模型结构参数以及输入数据。并且,该第一处理器还可以获得原始网络中各个计算节点的操作属性。
[0151] 其次,第一处理器可以根据原始网络的模型结构参数,获得原始网络各个计算节点的连接关系,并根据各个计算节点的连接关系获得原始网络中各个计算节点的执行顺序,以及原始网络在运行过程中的内存分配方式,从而可以获得原始网络在运行过程中相关数据的存储位置。如图15中左边的存储空间所示,原始网络在运行过程中的相关数据可以按照各个计算节点执行顺序存储在一个栈中。
[0152] 最后,第一处理器可以将原始网络中具有第一操作属性的计算节点对应的网络权值及指令存储于第一非易失性存储器中,生成第一离线模型,该第一离线模型的存储方式可参见图15中右边的存储空间所示。并且,该第一离线模型仅仅包含运行该原始网络中具有第一操作属性的计算节点所必需的网络权值及指令等数据,而不需对原始网络运行过程中的输入数据、输出数据或中间计算结果等进行存储,从而可以减小了存储空间的消耗。
[0153] 可选地,上述方法还包括如下步骤:
[0154] 根据原始网络中多个计算节点的连接关系,将两个以上顺序执行的第二计算节点之间的所有第一计算节点等效为一个第一离线节点(First Offline1),从而可以获得该原始网络对应的等效网络结构,如图14所示。其中,第一计算节点为具有第一操作属性的计算节点,第二计算节点为具有第二操作属性的计算节点;第一离线模型中还包括第一离线节点(First Offline1)与第二计算节点之间的接口数据,接口数据用于表示该原始网络的等效网络结构中第一离线节点(First Offline1)与其他第二计算节点之间的连接关系,其中,接口数据可以包括各个第一离线节点的输入数据来源和输出数据来源。
[0155] 更具体地,如图14所示,根据原始网络的各个计算节点之间连接关系,将相邻两个CPU操作属性的计算节点之间的所有第一操作属性的计算节点等效为一个第一离线节点(First Offline1),从而获得该原始网络的等效网络。可选地,由于该第一离线节点为多个具有第一操作属性的计算节点的等效节点,因此该第一离线节点(First Offline1)的操作属性为第一操作属性。进一步地,该第一离线节点(First Offline1)和原始网络中的具有第二操作属性的第二计算节点之间的具体连接关系可以根据输入或输出数据进行确定。举例说明,如图14所示,该第一离线节点(First Offline1)与第二计算节点C1、C2及C3之间的具体连接关系及网络权值可以根据离线节点(First Offline1)的输入数据进行确定,该第一离线节点(First Offline1)与第二离线节点(Second Offline1)之间的具体连接关系及网络权值可以根据第一离线节点(First Offline1)的输出数据进行确定。进一步地,接口数据可以包括该第一离线节点(First Offline1)的输入数据为第二计算节点C1、C2及C3的输出数据,第一离线节点的输出数据作为第二计算节点C4和C5的输入数据。
[0156] 作为进一步地改进,该原始网络的离线模型还可以包括原始网络中其他具有第二操作属性的计算节点对应的网络权值及指令。如图11所示,上述方法还包括如下步骤:
[0157] 若当前计算节点的操作属性为第二操作属性时,则将当前计算节点对应的网络权值及指令存储至第二非易失性存储器中,以获得原始网络对应的第二离线模型。即在运行该原始网络的过程中,将各个具有第二操作属性的计算节点的网络权值及指令存储于第二非易失性存储器(如第二存储器)中。该多个具有第二操作属性的计算节点的网络权值及指令形成该原始网络的第二离线模型单元。这样当需要再次运行该原始网络时,可以直接从第二非易失性存储器获取该原始网络中各个具有第二操作属性的计算节点的计算属性等指令及对应的网络权值。具体地,上述步骤S730还可以包括如下步骤:
[0158] S734、从第一存储器中获取原始网络中各个具有第二操作属性的计算节点对应的网络权值及指令,并将原始网络中各个具有第二操作属性的计算节点对应的网络权值存储于第二非易失性存储器中,生成第二离线模型。该第二离线模型的生成过程可参见图16所示,图16中左边的存储空间内存储的即为第二离线模型。
[0159] 上述存储于第一非易失性存储器中的第一离线模型与上述存储于第二非易失性存储器中的第二离线模型,形成该原始网络的离线模型。这样,当需要再次执行该离线模型时,可以直接从第一非易失性存储器中获取具有第一操作属性的计算节点的网络权值及指令,直接从第二非易失性存储器中获取具有第二操作属性的计算节点的网络权值及指令,从而可以无需再次对该原始网络进行编译,即可直接执行该原始网络。
[0160] 进一步地,第一处理器还可以根据原始网络中多个计算节点的连接关系,将两个以上顺序执行的第一计算节点之间的所有第二计算节点等效为一个第二离线节点;其中,第一计算节点为具有第一操作属性的计算节点,第二计算节点为具有第二操作属性的计算节点;第二离线模型中还包括所述第二离线节点与所述第一计算节点之间的接口数据。
[0161] 如图14和图16所示,下面结合附图说明上述的离线模型生成过程:
[0162] 首先,第一处理器可以获得该原始网络的模型数据集、模型结构参数以及输入数据,从而根据该原始网络的模型数据集和模型结构参数可以获得该原始网络的网络结构图,如图14所示。并且,该第一处理器还可以获得原始网络中各个计算节点的操作属性。
[0163] 其次,第一处理器可以根据原始网络的模型结构参数,获得原始网络各个计算节点的连接关系,并根据各个计算节点的连接关系获得原始网络中各个计算节点的执行顺序,以及原始网络在运行过程中的内存分配方式,从而可以获得原始网络在运行过程中相关数据的存储位置。图16的中间部分存储空间所示,原始网络在运行过程中的相关数据可以按照各个计算节点执行顺序存储在一个栈中。
[0164] 最后,第一处理器可以将原始网络中具有第一操作属性的计算节点对应的网络权值及指令存储于第一非易失性存储器中,生成第一离线模型,该第一离线模型的存储方式可参见图16中右半部分存储空间所示。同时,第一处理器可以将原始网络中具有第二操作属性的计算节点对应的网络权值及指令存储于第二非易失性存储器中,生成第二离线模型,该第二离线模型的存储方式可参见图16的左半部分存储空间所示。并且,该第一离线模型和第二离线模型仅仅包含运行该原始网络中各个计算节点所必需的网络权值及指令等数据,而不需对原始网络运行过程中的输入数据、输出数据或中间计算结果等进行存储,从而可以减小了存储空间的消耗。
[0165] 进一步地,通用处理器包括中央处理器、图像处理器、数字信号处理器及现场可编辑门阵列中的一种或多种。相应地,第二操作属性可以包括CPU操作属性、GPU操作属性、DSP操作属性及FPGA操作属性的一种或多种。例如,当该计算机系统包括第一处理器(如CPU)和一个第二处理器(如IPU)时,则该计算节点的操作属性可以是CPU操作属性、第一操作属性或两者的组合。当该计算节点的操作属性为CPU操作属性时,则表明该计算节点对应的计算指令需在第一处理器(如CPU)上执行。当该计算节点的操作属性为第一操作属性时,则表明该计算节点对应的计算指令需在第二处理器上执行。当该计算节点的操作属性为CPU操作属性和第一操作属性的结合时,则表明该计算节点对应的操作属性既可以在第一处理器上执行,也可以在第二处理器上执行,此时可将该计算节点的操作属性标记为第一操作属性。进一步地,可以通过枚举方法标识和保存各个计算节点的操作属性。例如,该枚举变量可以包括两个以上的枚举值。若当前计算节点的操作属性为第一操作属性时,则该枚举变量的枚举值可以为1;若当前计算节点的操作属性为CPU操作属性时,则该枚举变量的枚举值可以为0。
[0166] 再如,当该计算机系统包括第一处理器(如CPU)、第二处理器(如GPU)以及第二处理器(如IPU)时,则计算节点的操作属性可以是CPU操作属性、GPU操作属性或第一操作属性中的一种或多种的组合。当该计算节点的操作属性为CPU操作属性时,则表明该计算节点对应的计算指令需在第一处理器(如CPU)上执行。当该计算节点的操作属性为GPU操作属性时,则表明该计算节点对应的计算指令需在第二处理器(如GPU)上执行。当该计算节点的操作属性为第一操作属性时,则表明该计算节点对应的计算指令需在第二处理器(如IPU)上执行。当该计算节点的操作属性为CPU操作属性和第一操作属性的组合时,则表明该计算节点对应的计算指令既可在第一处理器上执行,也可以在第二处理器(如IPU)上执行,此时,可以将计算节点的操作属性标记为第一操作属性。进一步地,该枚举变量的枚举值也可以是三个,例如,若当前计算节点的操作属性为第一操作属性,则该枚举变量的枚举值可以为1;若当前计算节点的操作属性为CPU操作属性,则该枚举变量的枚举值可以为0;若当前计算节点的操作属性为GPU操作属性,则该枚举变量的枚举值可以为2。从而通过该枚举变量的数值可以获知当前计算节点的操作属性。
[0167] 进一步地,该第二离线模型可以包括多个第二离线子模型,如其中一个第二离线子模型可以包括所有CPU操作属性的计算节点对应的指令和网络权值,其中一个第二离线子模型可以包括所有GPU操作属性的计算节点对应的指令和网络权值,其中一个第二离线子模型可以包括所有DSP操作属性的计算节点对应的指令和网络权值等等。
[0168] 在一个实施例中,生成离线模型后可以立刻使用离线模型执行运算,也可以保存离线模型,等待需要计算的时候再使用离线模型。如图13所示,本发明一实施例还提供了一种神经网络处理方法,上述方法包括如下步骤:
[0169] S800、获取原始网络的模型数据集和模型结构参数,其中,模型数据集包括原始网络中各个计算节点对应的网络权值,模型结构参数包括原始网络中多个计算节点的连接关系。其具体执行过程可参见上述步骤S700,此处不再赘述。
[0170] S810、根据原始网络中多个计算节点的连接关系,将两个以上顺序执行的第二计算节点之间的所有第一计算节点等效为一个第一离线节点,获得原始网络对应的等效网络;其中,第一计算节点为具有第一操作属性的计算节点,第二计算节点为具有第二操作属性的计算节点。进一步地,可以获得该原始网络的等效网络结构中各个计算节点的执行顺序。
[0171] 例如,如图14所示,根据原始网络的各个计算节点之间连接关系,将相邻两个CPU操作属性的计算节点之间的所有第一操作属性的计算节点等效为一个第一离线节点(First Offline1),从而获得该原始网络的等效网络。可选地,由于该第一离线节点为多个具有第一操作属性的计算节点的等效节点,因此该第一离线节点(First Offline1)的操作属性为第一操作属性。进一步地,该第一离线节点(First Offline1)和原始网络中的具有第二操作属性的第二计算节点之间的具体连接关系可以根据输入或输出数据进行确定。该原始网络对应的等效网络中各个计算节点的执行顺序可以为C1-C2-C3-First Offline1-C4-C5-First Offline2,其中第二计算节点C1、C2和C3可以同时执行,计算节点C4和C5也可以同时执行,以提高计算机系统的处理效率。
[0172] S820、若等效网络结构中的当前计算节点为第一离线节点时,则从第一非易失性存储器中获得第一离线模型,并根据第一离线模型执行第一离线节点,其中,第一离线模型中包含原始网络中具有第一操作属性的所有第一计算节点对应的网络权值及指令。具体地,第一处理器的第一获取模块可以根据原始网络的等效网络中各个计算节点的执行顺序,若当前计算节点为第一离线节点时,则可以从第一离线模型中获得具有第一操作属性的计算节点对应的网络权值及指令。
[0173] 如图14所示,当再次运行该原始网络时,根据原始网络的等效网络,若当前计算节点为第一离线节点First Offline1时,则可以从第一非易失性存储器中获得该第一离线节点First Offline1中各个第一计算节点对应的网络权值及指令,从而无需对第一离线节点First Offline1中的各个第一计算节点进行指令编译,提高第一处理器的处理效率。当完成该第一离线节点的运行操作时,第一处理器可以根据原始网络对应的等效网络结构,继续执行第二计算节点C4和C5。之后,该第一处理器可以根据原始网络对应的等效网络结构,从第一非易失性存储器中获得该第一离线节点First Offline2中各个第一计算节点对应的网络权值及指令,从而无需对第一离线节点First Offline2中的各个第一计算节点进行指令编译。
[0174] 进一步地,第一离线模型中还包括第一离线节点与第二计算节点之间的接口数据。具体地,该第一离线模型中还包括各个第一离线节点与其连接的第二计算节点之间的接口数据,如该接口数据可以包括第一离线节点First Offline1的输入数据为第二计算节点C1~C3的输出数据,第一离线节点First Offline1的输出数据可作为第二计算节点C4和C5。
[0175] 此时,当再次运行该原始网络时,根据原始网络的等效网络,若当前计算节点为第一离线节点First Offline1时,则可以从第一非易失性存储器中获得该第一离线节点First Offline1中各个第一计算节点对应的网络权值及指令,从而无需对第一离线节点First Offline1中的各个第一计算节点进行指令编译,提高第一处理器的处理效率。同时,第一处理器可以根据第一离线模型中第一离线节点First Offline1与其连接的第二计算节点的接口数据,获得第一离线节点FirstOffline1执行完成后应当继续执行第二计算节点C4和C5。在完成第二计算节点C4和C5的运行操作之后,该第一处理器可以根据原始网络对应的等效网络结构,从第一非易失性存储器中获得该第一离线节点First Offline2中各个第一计算节点对应的网络权值及指令,从而无需对第一离线节点First Offline2中的各个第一计算节点进行指令编译。
[0176] 可以理解的是,第一离线模型中可以包括多个第一离线节点对应的指令及权值,可以根据原始网络对应的等效网络确定多个第一离线节点的执行顺序,并按照其执行顺序对各个第一离线节点进行标号。当需要从第一离线模型中获取某个第一离线节点对应的网络权值及指令时,只需要根据该第一离线节点的标号进行查找即可。当然,还可以直接根据各个第一离线节点的存储地址,以直接读取该第一离线节点对应的网络权值及指令,以实现精准查找。
[0177] 更进一步地,该原始网络的离线模型还可以包括原始网络中其他具有第二操作属性的计算节点对应的网络权值及指令。上述方法还包括如下步骤:
[0178] 若等效网络结构中的当前计算节点不是第一离线节点时,则从第二非易失性存储器中获得第二离线模型,并根据第二离线模型执行等效网络中的当前计算节点。具体地,第一处理器还可以根据原始网络中多个计算节点的连接关系,将两个以上顺序执行的第一计算节点之间的所有第二计算节点等效为一个第二离线节点;其中,第一计算节点为具有第一操作属性的计算节点,第二计算节点为具有第二操作属性的计算节点;第二离线模型中还包括所述第二离线节点与所述第一计算节点之间的接口数据。
[0179] 此时,当再次运行该原始网络时,根据原始网络的等效网络,若当前计算节点为第一离线节点First Offline1时,则可以从第一非易失性存储器中获得该第一离线节点First Offline1中各个第一计算节点对应的网络权值及指令,从而无需对第一离线节点First Offline1中的各个第一计算节点进行指令编译,提高第一处理器的处理效率。同时,第一处理器可以根据第一离线模型中第一离线节点First Offline1与其连接的第二计算节点的接口数据,获得第一离线节点First Offline1执行完成后应当继续执行第二计算节点C4和C5。之后,第一处理器可以从第二离线模型中分别获得第二计算节点C4对应的网络权值及指令,以及第二计算节点C5对应的网络权值及指令,并根据上述第二离线节点Second Offline1对应的第二离线模型执行上述计算节点C4和C5。同时,第一处理器可以根据第二离线模型中第二离线节点Second Offline1与其连接的第一计算节点的接口数据,获得第二离线节点Second Offline1执行完成后应当继续执行第一离线节点First Offline2。在完成第二离线节点Second Offline1的运行操作之后,该第一处理器可以从第一非易失性存储器中获得该第一离线节点First Offline2中各个第一计算节点对应的网络权值及指令,从而无需对第一离线节点First Offline2中的各个第一计算节点进行指令编译。
[0180] 可以理解的是,第二离线模型中可以包括多个第二离线节点对应的指令及权值,可以根据原始网络对应的等效网络确定多个第二离线节点的执行顺序,并按照其执行顺序对各个第二离线节点进行标号。当需要从第恶离线模型中获取某个第二离线节点对应的网络权值及指令时,只需要根据该第二离线节点的标号进行查找即可。当然,还可以直接根据各个第二离线节点的存储地址,以直接读取该第二离线节点对应的网络权值及指令,以实现精准查找。
[0181] 作为进一步地改进,该第二离线模型可以包括多个第二离线子模型,如其中一个第二离线子模型可以包括所有CPU操作属性的计算节点对应的指令和网络权值,其中一个第二离线子模型可以包括所有GPU操作属性的计算节点对应的指令和网络权值,其中一个第二离线子模型可以包括所有DSP操作属性的计算节点对应的指令和网络权值等等。此时,当需要再次运行该原始网络时,可以根据该原始网络对应的等效网络结构,若当前计算节点为具有第一操作属性的第一离线节点时,则第一处理器可以从第一非易失性存储器中获得该第一离线节点中各个第一计算节点对应的网络权值及指令,并直接执行该第一离线节点。若当前计算节点为具有CPU操作属性的计算节点时,则可以从该当前计算节点对应的第二离线子模型中,获得当前计算节点的网络权值及指令,并直接执行当前计算节点。若当前计算节点为具有GPU操作属性的计算节点时,则可以从该当前计算节点对应的第二离线子模型中,获得当前计算节点的网络权值及指令,并直接执行当前计算节点。若当前计算节点为具有DSP操作属性的计算节点时,则可以从该当前计算节点对应的第二离线子模型中,获得当前计算节点的网络权值及指令,并直接执行当前计算节点。
[0182] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0183] 同时,本发明还提供了一种计算机系统300包括第一处理器310及与第一处理器310对应设置的第一存储器320及第二存储器330;一个或多个第二处理器340及与第二处理器340对应设置的一个或多个第三存储器350,各个第二处理器340均连接至第一处理器
310;第一存储器320或第二存储器330中存储有计算机程序,第一处理器310在执行计算机程序时,执行如上述任一实施例的方法。具体地,第一处理器310在执行上述计算机程序时,具体执行如下步骤:
[0184] 获取原始网络的模型数据集和模型结构参数,其中,模型数据集包括原始网络中各个计算节点对应的网络权值,模型结构参数包括原始网络中多个计算节点的连接关系。
[0185] 获取原始网络中各个计算节点的操作属性,计算节点的操作属性包括第一操作属性和第二操作属性。具体地,第一处理器的第一获取模块或第一运算模块可以获得该原始网络中各个计算节点的操作属性。其中,计算节点的操作属性用于标识该计算节点对应的计算指令能够在哪个处理器上执行。本实施例中,第一操作属性可以用于表示该计算节点对应的计算指令能够在IPU等专用神经网络处理器上执行,第二操作属性用于表示该计算节点对应的计算指令能够在CPU、GPU、DSP等通用处理器上执行。
[0186] 进一步地,可以通过枚举方法来表示和保存各个计算节点的操作属性。例如,可以定义一个枚举变量device,该枚举变量可以包括两个以上的枚举值。若当前计算节点的操作属性为第一操作属性,则该枚举变量的枚举值可以为1;若当前计算节点的操作属性为第二操作属性,则该枚举变量的枚举值可以为0。
[0187] 根据原始网络的模型数据集、模型结构参数及各个计算节点的操作属性运行原始网络,获得原始网络中各个计算节点对应的指令。进一步地,第一处理器的第一获取模块还可以获取该原始网络的输入数据,第一处理器的第一运算模块可以根据原始网络的输入数据、网络模型数据集、模型结构参数及各个计算节点的操作属性运行原始网络,获得该原始网络中各个计算节点对应的指令。更进一步地,上述运行该原始网络获得各个计算节点的指令的过程实质上是编译的过程,该编译过程可以通过计算机系统的处理器或虚拟设备实现。即计算机系统的处理器或虚拟设备根据原始网络的模型数据集和模型结构参数运行原始网络。其中,虚拟设备指的是在存储器的内存空间中虚拟出一段处理器运行空间。
[0188] 应当清楚的是,本实施例中的运行原始网络是指,处理器使用人工神经网络模型数据运行某种机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0189] 若当前计算节点的操作属性为第一操作属性时,则将当前计算节点对应的网络权值及指令存储至第一非易失性存储器中,以获得原始网络对应的第一离线模型。其中,该第一非易失性存储器可以为IPU等专用神经网络处理器对应的第三存储器。进一步地,针对原始网络的每个计算节点,该计算节点的网络权值及指令一一对应进行存储。这样,当再次运行该原始网络时,可以直接从第一非易失性存储器中获取该原始网络对应的第一离线模型,并根据与该第一离线模型运行原始网络中所有具有第一操作属性的计算节点,无需在线对该原始网络中具有第一操作属性的计算节点进行编译获得指令,提高了系统的运行速度及效率。
[0190] 应当清楚的是,本实施例中,直接运行该原始网络对应的第一离线模型是指,使用第一离线模型运行该原始网络对应的机器学习算法(如神经网络算法),通过执行前向运算实现算法的目标应用(如语音识别等人工智能应用)。
[0191] 进一步地,上述计算机系统可以是图9所示的计算机系统,该计算机系统的第一处理器可以为中央处理器、图像处理器、数字信号处理器或现场可编辑门阵列等,第二处理器可以为专用神经网络处理器、中央处理器、图像处理器、数字信号处理器或现场可编程门阵列等等。可以理解的是,本实施例中计算机系统的工作原理与图10~图13中所示的神经网络的处理方法中各个步骤的执行过程一致,具体可参见上文中的描述,此处不再赘述。
[0192] 此外,本发明一实施例还提供了一种计算机存储介质,计算机存储介质中存储有计算机程序,当计算机程序被一个或多个第一处理器执行时,执行上述任一实施例的方法。其中,该计算机存储介质可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0193] 本发明的神经网络处理方法、计算机系统及存储介质,通过将原始网络运行过程中具有第一操作属性的计算节点对应的指令及网络权值进行存储,获得原始网络对应的第一离线模型,这样当再次运行该原始网络时,可以从该原始网络对应的第一离线模型中获得具有第一操作属性的计算节点对应的指令及网络权值,无需重新对该原始网络中具有第一操作属性的计算节点对应的模型数据集及模型结构参数等相关数据进行编译,从而缩短处理器运行同一网络的运行时间,进而提高处理器的处理速度及效率。
[0194] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0195] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈