基于众核系统的神经网络训练方法及装置、电子设备与流程

文档序号:31774815发布日期:2022-10-12 08:06阅读:52来源:国知局
基于众核系统的神经网络训练方法及装置、电子设备与流程

1.本公开涉及计算机技术领域,特别涉及一种基于众核系统的神经网络训练方法及装置、电子设备、计算机可读存储介质。


背景技术:

2.众核架构是提高程序运行并行度,加速神经网络执行的常见芯片架构。神经网络算法在众核芯片上的执行,往往是将网络的计算任务拆分成不同的子任务,这些子任务分配到芯片中多个不同的功能核组中并行执行。这些功能核组之间按照流水的方式来连续的处理输入数据,从而使得众核神经网络芯片具有很高的执行吞吐率。
3.相较于神经网络推理而言(inference),在众核架构上实现神经网络的训练过程(training)则更加具有挑战性。神经网络的训练过程一般需要结合神经网络的前向推理过程与反向梯度计算与传播过程,简称为前向过程与反向过程。在一般的众核执行过程中前向过程与反向过程共用一套权重等可学习的参数。在训练时,众核系统中的处理核需要进行大量和外部存储的数据交换,从而导致众核系统功耗大且计算资源利用率低,众核架构的优势难以发挥。


技术实现要素:

4.本公开提供一种基于众核系统的神经网络训练方法及装置、处理核、电子设备、计算机可读存储介质。
5.第一方面,本公开提供了一种神经网络训练方法,所述神经网络包括多层网络层,至少一层所述网络层包括至少一个前向结点和与前向结点对应的至少一个反向结点,该神经网络训练方法包括:
6.将至少一个所述前向结点和至少一个所述反向结点分别加载到众核系统的一个或多个处理核中;
7.在前向传播过程中,控制所述前向结点基于对应的第一可学习数据执行任务处理;
8.在反向传播过程中,控制所述反向结点基于对应的第二可学习数据执行误差反向传递,其中,所述前向传播过程与所述反向传播过程并行执行;
9.在满足预设更新条件的情况下,更新所述第一可学习数据和所述第二可学习数据,以得到训练后的神经网络。
10.在一些实施例中,至少一层所述网络层还包括至少一个更新结点,所述方法还包括:
11.将至少一个所述更新结点分别加载到众核系统的一个或多个处理核中;
12.所述在满足预设更新条件的情况下,更新所述第一可学习数据和所述第二可学习数据,包括:
13.在所述反向传播过程中,控制所述更新结点基于接收的反传误差执行对目标可学
习参数的更新处理,所述目标可学习参数包括所述更新结点对应的网络层所包括的前向结点对应的第一可学习数据以及反向结点对应的第二可学习数据。
14.在一些实施例中,至少一层所述网络层还包括误差计算结点,所述方法还包括:
15.将所述误差计算结点加载到众核系统的一个或多个处理核中;
16.在所述反向传播过程中,控制所述误差计算结点基于预期结果与输出结果计算所述神经网络的输出误差,并将计算所述神经网络的输出误差的误差函数进行梯度求导的结果作为反传误差,发送至作为输出层的所述网络层所包括的所述更新结点和所述反向结点,所述输出结果是作为输出层的所述网络层包括的所述前向结点执行任务处理获得的结果。
17.在一些实施例中,所述控制所述反向结点基于对应的第二可学习数据执行误差反向传递,包括:
18.控制所述反向结点基于对应的第二可学习数据和接收的反传误差获取前一层网络层对应的误差,并将所述前一层网络层的对应误差作为新的所述反传误差发送至前一层网络层的所述反向结点和所述更新结点。
19.在一些实施例中,所述控制所述更新结点基于接收的反传误差执行对目标可学习参数的更新处理,包括:
20.控制所述更新结点基于接收的反传误差获取所述更新结点所在网络层的梯度更新值,并将所述梯度更新值与累积更新值之和作为更新后累积更新值;
21.在所述更新后累积更新值的绝对值大于预设阈值的情况下,控制所述更新结点基于所述更新后累积更新值更新所述目标可学习参数。
22.在一些实施例中,所述方法还包括:
23.将至少一层所述网络层中的所述前向结点对应的第一可学习数据复制为相应网络层中的所述反向结点对应的第二可学习数据。
24.在一些实施例中,所述将至少一个所述前向结点和至少一个所述反向结点分别加载到众核系统的一个或多个处理核中,包括:
25.将至少一个所述前向结点和至少一个所述反向结点分别加载到不同处理核中。
26.在一些实施例中,所述第一可学习数据存储于该前向结点所在的处理核中,所述第二可学习数据存储于该反向结点所在的处理核中。
27.在一些实施例中,所述将至少一个所述更新结点分别加载到众核系统的一个或多个处理核中,包括:
28.将所述更新结点加载至不同于前向结点和后向结点的处理核中,或者,将所述更新结点加载至与反向结点相同的处理核中。
29.在一些实施例中,所述第一可学习数据包括所述神经网络的权重数据、偏置数据中的至少一种。
30.第二方面,本公开提供了一种基于众核系统的神经网络训练装置,所述神经网络包括多层网络层,至少一层所述网络层包括至少一个前向结点和与前向结点对应的至少一个反向结点,该神经网络训练装置包括:
31.加载模块,被配置为将至少一个所述前向结点和至少一个所述反向结点分别加载到众核系统的一个或多个处理核中;
32.第一控制模块,被配置为在前向传播过程中,控制所述前向结点基于对应的第一可学习数据执行任务处理;
33.第二控制模块,被配置为在反向传播过程中,控制所述反向结点基于对应的第二可学习数据执行误差反向传递,其中,所述前向传播过程与所述反向传播过程并行执行;
34.决策模块,被配置为在满足预设更新条件的情况下,更新所述第一可学习数据和所述第二可学习数据,以得到训练后的神经网络。
35.第三方面,本公开提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的神经网络训练方法。
36.第四方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器/处理核执行时实现上述的神经网络训练方法。
37.本公开所提供的实施例,能够使神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦,每个结点均可以与其依赖的数据相邻并实现简单访问,提高神经网络在众核芯片上的运行性能。
38.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
39.附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
40.图1为本公开实施例提供的一种神经网络训练过程的示意图;
41.图2为本公开实施例提供的一种神经网络训练过程在众核架构上的执行方式示意图;
42.图3为本公开实施例提供的一种基于众核系统的神经网络训练方法的流程图;
43.图4为本公开实施例提供的一种基于众核系统的神经网络训练方法的流程图;
44.图5为本公开实施例提供的一种基于众核系统的神经网络训练方法的流程图;
45.图6为本公开实施例提供的一种控制更新结点基于接收的反传误差执行对目标可学习参数的更新处理的流程图;
46.图7为本公开实施例提供的一种神经网络训练过程的示意图;
47.图8为本公开实施例提供的一种神经网络训练过程的等效示意图;
48.图9为本公开实施例提供的一种神经网络训练过程在众核芯片上的部署示意图;
49.图10为本公开实施例提供的一种神经网络训练过程在众核芯片上的流水执行示意图;
50.图11为本公开实施例提供的一种基于众核系统的神经网络训练装置的结构示意图;
51.图12为本公开实施例提供的一种基于众核系统的神经网络训练装置的结构示意图;
52.图13为本公开实施例提供的一种电子设备的框图。
具体实施方式
53.为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
54.在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
55.如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
56.本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由
……
制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
57.除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
58.图1为本公开实施例提供的一种神经网络训练过程的示意图。如图1所示,该神经网络训练过程包括由前向结点a、b、c构成的前向传播过程(也可以称为前向推理过程),由反向结点c’,b’,a’构成的误差反向传播过程,误差计算结点d构成的输出误差计算过程,以及更新结点c”、b”、a”构成的梯度更新过程,神经网络的训练过程中用到的可学习参数包括图1中的a、b、c。在前向传播过程中,神经网络的训练过程按照a-》b-》c的顺序执行,然后误差计算结点d将获得的网络推理结果与预期结果进行比较,进行误差的反向传播和权重梯度的更新。误差反向传播和梯度更新按照c’(c”)-》b’(b”)-》a’(a”)的顺序进行。因此,在神经网络训练过程中,每个可学习参数,例如图1中的a,在进行一轮参数更新的过程中,需要依次被对应的前向结点a,反向结点a’,以及梯度更新结点a”访问,这对于神经网络在众核芯片上的部署和资源分配带来了极大的挑战。而且每个可学习参数的访问并不紧凑,不同的可学习参数的访问周期也不相同,在前向传播过程中越先使用的可学习的参数,在反向传播中的调用和梯度更新时间也越靠后,这给神经网络在众核芯片上的同步对齐和流水执行也带来的很大的挑战。
59.图2为本公开实施例提供的一种神经网络训练过程在众核架构上的执行方式示意图。如图2所示,相关技术中神经网络训练过程在众核架构上的执行方式,主要是依次将每个结点的计算全局地部署在所有众核架构的所有处理核上执行,网络灵活性差。每个处理核需要进行全部结点的计算,例如,每个处理核需要进行:由前向结点a构成的第一前向计算过程,该第一前向计算过程中需要读取可学习参数a;由前向结点b构成的第二前向计算过程,该第二前向计算过程中需要读取可学习参数b;由前向结点c构成的第三前向计算过
程,该第三前向计算过程中需要读取可学习参数c;误差计算过程;由反向结点c’构成的第一反向传播过程,该第一反向传播过程中需要读取可学习参数c;由更新结点c”构成的第一梯度更新过程,该第一梯度更新过程需要更新可学习参数c;由反向结点b’构成的第二反向传播过程,该第二反向传播过程中需要读取可学习参数b;由更新结点b”构成的第二梯度更新过程,该第二梯度更新过程需要更新可学习参数b;由更新结点a”构成的第三梯度更新过程,该第三梯度更新过程需要更新可学习参数a。且计算过程中由于所处理的数据块一直在不断地变化,需要大量的和外部存储的数据交换,容易造成计算资源利用率的降低以及功耗的增加。
60.为了解决上述难题,本公开实施例提供一种基于众核系统的神经网络训练方法。根据本公开实施例的基于众核系统的神经网络训练方法,能够使神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦,每个结点均可以与其依赖的数据相邻并实现简单访问,提高神经网络在众核芯片上的运行性能。
61.本公开实施例提供的基于众核系统的神经网络训练方法的执行主体是神经网络训练装置,该神经网络训练装置可以是编译器、众核系统、处理核,也可以是终端设备或服务器等电子设备,终端设备可以为车载设备、用户设备(user equipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(personal digital assistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等,所述方法可以通过处理器调用存储器中存储的计算机可读程序指令的方式来实现。或者,可通过服务器执行所述方法。
62.图3为本公开实施例提供的一种基于众核系统的神经网络训练方法的流程图。该神经网络包括多层网络层,至少一层网络层包括至少一个前向结点和与前向结点对应的至少一个反向结点。如图3所示,该基于众核系统的神经网络训练方法包括:步骤s31-步骤s34。
63.步骤s31、将至少一个前向结点和至少一个反向结点分别加载到众核系统的一个或多个处理核中。
64.其中,神经网络的网络层是包括至少一种结点的网络结构,该结点是神经网络中配置有不同功能的神经元。换言之,神经网络中的结点为神经网络中的基本运算或操作,例如,可以为卷积计算、池化计算、全连接计算、神经元激活函数操作等。本实施例中,神经网络的结点包括前向结点、反向结点、更新结点以及误差计算结点。该前向结点是被配置为处理任务的结点,反向结点是被配置为执行误差反向传递的结点。
65.在一个实施方式中,神经网络用于执行图像处理任务、语音处理任务、文本处理任务、视频处理任务中的任意一种。
66.在一个实施方式中,为了提高神经网络在众核芯片上的运行性能,加快神经网络训练的执行效率,上述将至少一个前向结点和至少一个反向结点分别加载到众核系统的一个或多个处理核中(步骤s31),包括:将至少一个前向结点和至少一个反向结点分别加载到不同处理核中。即在本实施方式中,众核系统的一个处理核中加载且仅加载一个结点,例如,众核系统的一个处理核中仅加载一个前向结点或者仅加载一个后向结点。
67.步骤s32、在前向传播过程中,控制前向结点基于对应的第一可学习数据执行任务处理。
68.其中,前向传播过程是指给神经网络第一层网络层(输入层)一个输入后,从第二
层网络层开始,将上一层网络层的输出作为下一层网络层的输入,并计算下一层网络层的输出,一直到运算到作为输出层的网络层,获得输出结果的过程。
69.可学习数据是神经网络的结点执行计算时用到的神经网络配置参数,该可学习数据例如待映射神经网络的权重、偏置等数据等至少一种。
70.该第一可学习数据是前向结点执行任务处理时使用的神经网络配置参数,该可学习数据例如待映射神经网络的权重、偏置等数据等至少一种。
71.在一个实施方式中,第一可学习数据存储于该前向结点所在的处理核中,由此,前向结点基于对应的第一可学习数据执行任务处理时,可以直接从自身所在处理核中获取该第一可学习数据,减小神经网络训练过程中和外部存储的数据交换,提高神经网络的训练效率,降低功耗。
72.在另一些实施方式中,第一可学习数据也可以存储在片上公共存储中或者片外存储中,以节约处理核内部存储空间。
73.步骤s33、在反向传播过程中,控制反向结点基于对应的第二可学习数据执行误差反向传递。
74.其中,反向传播过程是指在获得神经网络的输出误差后,沿着从神经网络作为输出层的网络层到第一层网络层(输入层)的顺序,依次计算调整权重并计算梯度的过程。
75.反向结点是被配置为执行误差反向传递的结点,第二可学习数据是反向结点执行误差反向传递时使用的神经网络配置参数。该第二可学习数据例如待映射神经网络的权重、偏置等数据等至少一种。
76.在一个实施方式中,第二可学习数据存储于该反向结点所在的处理核中,由此,反向结点基于对应的第二可学习数据执行误差反向传递时,可以直接从自身所在处理核中获取该第二可学习数据,减小神经网络训练过程中和外部存储的数据交换,提高神经网络的训练效率,降低功耗。
77.在另一些实施方式中,第二可学习数据也可以存储在片上公共存储中或者片外存储中,以节约处理核内部存储空间。
78.在本实施中,前向传播过程与反向传播过程并行执行,以加快神经网络训练的执行效率。需要说明的是,在开始训练时,第二可学习数据是由第一可学习数据复制得到的;在训练开始后的迭代训练过程中,第二可学习数据与第一可学习数可根据一定规则或机制实现数据同步,因此,即使是同一网络层的前向结点和反向结点,都会使用位于各自所在的处理核的可学习数据,而不会共用同一份可学习数据,能够实现前向传播过程和反向传播过程的数据访问依赖解耦,使每个结点均可以与其依赖的数据相邻并实现简单访问,为前向传播过程与反向传播过程并行执行的实现提供基础,进而提高神经网络在众核芯片上的运行性能,加快神经网络训练的执行效率。
79.步骤s34、在满足预设更新条件的情况下,更新第一可学习数据和第二可学习数据,以得到训练后的神经网络。
80.其中,预设更新条件是预先设置的更新第一可学习数据和第二可学习数据需要满足的条件,该预设更新条件与神经网络的网络层的梯度更新值相关。
81.在一个实施方式中,在不满足预设更新条件的情况下,不对第一可学习数据和第二可学习数据进行更新,而是返回前向传播过程中(前述步骤s32),以进行下一轮训练。
82.本公开实施例提供的基于众核系统的神经网络训练方法,能够使神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦,每个结点均可以与其依赖的数据相邻并实现简单访问,实现前向传播过程与反向传播过程并行执行,进而提高神经网络在众核芯片上的运行性能,提高神经网络的训练效率,加快获得训练后的神经网络。
83.图4为本公开实施例提供的一种基于众核系统的神经网络训练方法的流程图。该神经网络的至少一层网络层还包括至少一个更新结点。在一些实施例中,部分网络层包括前向结点、反向结点和更新结点,部分网络层仅包括前向结点和反向结点;在另一些实施例中,全部网络层均包括前向结点、反向结点和更新结点。如图4所示,该方法还包括:步骤s41-步骤s42。
84.步骤s41、将至少一个更新结点分别加载到众核系统的一个或多个处理核中。
85.其中,更新结点是配置为对可学习参数进行更新处理的结点。
86.在一个实施方式中,将至少一个更新结点分别加载到众核系统的一个或多个处理核中,包括:将更新结点加载至不同于前向结点和后向结点的处理核中,或者,将更新结点加载至与反向结点相同的处理核中。
87.其中,将更新结点加载至不同于前向结点和后向结点的处理核中,可以使众核芯片上的每个处理核负责一种(或一个)结点,提高神经网络在众核芯片上的运行性能,加快神经网络训练的执行效率。将更新结点加载至与反向结点相同的处理核中,可以减少核间数据传递,进而加快神经网络训练的执行效率。
88.步骤s42、在反向传播过程中,控制更新结点基于接收的反传误差执行对目标可学习参数的更新处理。
89.其中,目标可学习参数包括更新结点对应的网络层所包括的前向结点对应的第一可学习数据以及反向结点对应的第二可学习数据。该反传误差是用于指导更新结点对目标可学习参数执行更新处理的误差。
90.本公开实施例中,更新结点在反向传播过程中进行可学习数据更新时,对第一可学习数据和第二可学习数据均进行更新,可以保持反向结点在反向传播过程中与同一网络层的前向结点在前向传播过程中所使用的数据的一致性,进一步协助神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦。
91.图5为本公开实施例提供的一种基于众核系统的神经网络训练方法的流程图。该神经网络的至少一层网络层还包括误差计算结点。在一个实施方式中,如图5所示,该方法还包括:步骤s51-步骤s53。
92.步骤s51、将误差计算结点加载到众核系统的一个或多个处理核中。
93.其中,误差计算结点是配置为计算神经网络的输出误差的结点。该将误差计算结点加载到众核系统的一个或多个处理核中,包括:将误差计算结点加载至不同于前向结点、后向结点和更新结点的处理核中,使众核芯片上的每个处理核负责一种(或一个)结点,提高神经网络在众核芯片上的运行性能,加快神经网络训练的执行效率。
94.步骤s52、在反向传播过程中,控制误差计算结点基于预期结果与输出结果计算神经网络的输出误差。
95.其中,预期结果是前向传播过程中控制前向结点基于对应的第一可学习数据执行任务处理后预计获得的结果。输出结果是作为输出层的网络层所包括的前向结点执行任务
处理获得的结果。
96.步骤s53、将计算所述神经网络的输出误差的误差函数进行梯度求导的结果作为反传误差发送至作为输出层的网络层所包括的更新结点和反向结点。
97.其中,作为输出层的网络层所包括的更新结点接收到该反传误差后,可以基于接收的反传误差执行对目标可学习参数的更新处理;反向结点接收到该反传误差后,可以基于对应的第二可学习数据执行误差反向传递。
98.本公开实施例中,误差计算结点可以获得神经网络的输出误差,并将计算所述神经网络的输出误差的误差函数进行梯度求导的结果作为反传误差,发送至神经网络中作为输出层的网络层所包括的更新结点和反向结点,加速神经网络训练过程的实现。其中,误差函数为在反向传播过程中基于预期结果与输出结果计算得到输出误差的函数。在这里,可以对误差函数进行梯度求导并将梯度求导的结果作为返传误差。可以理解的是,反传误差是反向传播过程中的误差表示,该返传误差并不仅局限于当前的表示形式,能实现反向传播进行学习即可。
99.在一个实施方式中,控制反向结点基于对应的第二可学习数据执行误差反向传递(步骤s33),包括:控制反向结点基于对应的第二可学习数据和接收的反传误差获取前一层网络层对应的误差,并将前一层网络层的对应误差作为新的反传误差发送至前一层网络层的反向结点和更新结点。
100.其中,在反向结点位于作为输出层的网络层时,该反向结点接收的反传误差是误差计算结点发送的反传误差(即输出误差);在反向结点位于不是作为输出层的其他网络层时,该反向结点接收的反传误差是下一反向结点发送的反传误差。本实施例中,“前一层”的描述是以前向传播的方向为基准进行描述。
101.图6为本公开实施例提供的一种控制更新结点基于接收的反传误差执行对目标可学习参数的更新处理的流程图。如图6所示,控制更新结点基于接收的反传误差执行对目标可学习参数的更新处理(步骤s42),包括:步骤s421-步骤s423。
102.步骤s421、控制更新结点基于接收的反传误差获取更新结点所在网络层的梯度更新值。
103.其中,更新结点基于接收的反传误差获取更新结点所在网络层的梯度更新值的步骤可参见相关技术中根据反传误差获取梯度更新值的过程,本实施例中不进行具体限定。
104.步骤s422、将梯度更新值与累积更新值之和作为更新后累积更新值。
105.其中,累积更新值是更新结点未更新目标可学习参数的情况下累积的梯度更新值。该预设阈值可根据实际应用场景进行设置,本实施例中不进行具体限定,该累积更新值的初始值为0。
106.在一个实施方式中,确定更新后累积更新值的绝对值是否大于预设阈值。在更新后累积更新值的绝对值小于或等于预设阈值的情况下,更新结点不更新目标可学习参数。
107.步骤s423、在更新后累积更新值的绝对值大于预设阈值的情况下,控制更新结点基于更新后累积更新值更新目标可学习参数。
108.其中,在梯度更新值与累积更新值之和的绝对值大于预设阈值的情况下,控制更新结点基于梯度更新值更新目标可学习参数,能够保证神经网络训练效果,减小神经网络的输出误差。
109.在一个实施方式中,神经网络中的可学习数据可以是标量、向量、矩阵、张量(即多个数据)等,上述步骤s421中更新结点计算出的梯度更新值以及更新后累积更新值也相应为矩阵或张量(即多个数据)。
110.在该实施方式中,预设阈值包括多个数据中每个更新后累积更新值对应的预设阈值。上述确定更新后累积更新值的绝对值是否大于预设阈值,包括:分别将多个数据中(例如矩阵中)每个更新后累积更新值的绝对值与各自对应的预设阈值进行比较,以确定多个数据中(例如矩阵中)每个更新后累积更新值的绝对值是否大于各自对应的预设阈值。
111.在该实施方式中,上述在更新后累积更新值的绝对值大于预设阈值的情况下,控制更新结点基于更新后累积更新值更新目标可学习参数(步骤s423),包括单独更新的方式或整体更新的方式。
112.其中,单独更新的方式是指控制更新结点分别基于多个数据中大于各自对应的预设阈值的更新后累积更新值,更新对应的目标可学习参数;而不大于各自对应的预设阈值的更新后累积更新值所对应的目标可学习参数不进行更新。
113.整体更新的方式是指多个数据中(例如矩阵中),每个更新后累积更新值的绝对值均大于各自对应的预设阈值的情况下,控制更新结点更新全部数据对应的目标可学习参数,否则不更新目标可学习参数。
114.在本实施方式中,单独更新的方式能够加速神经网络的收敛,提高神经网络的训练的精确性;整体更新的方式能够减少数据传输,降低功耗,提高神经网络的训练效率。单独更新的方式和整体更新的方式可以根据实际应用情况进行选择,本实施例中不进行具体限定。
115.在一个实施方式中,控制更新结点基于更新后累积更新值梯度更新值更新目标可学习参数之后,将累积更新值清零,以便于进行下一次更新处理。
116.需要说明的是,上述步骤s34中预设更新条件与更新后累积更新值相关,其中,在更新后累积更新值大于预设阈值的情况下,满足预设更新条件;在更新后累积更新值小于或等于预设阈值的情况下,不满足预设更新条件。
117.本公开实施例中,在更新结点更新目标可学习参数的过程中引入可学习参数的数据更新机制,只有在梯度更新值与累积更新值之和的绝对值大于预设阈值的情况下,才满足可学习参数的数据更新机制,此时控制更新结点基于梯度更新值更新目标可学习参数。而在梯度更新值与累积更新值之和的绝对值小于或等于预设阈值的情况下,不满足可学习参数的数据更新机制,不进行目标可学习参数的更新,能够在保证神经网络训练效果的同时减少神经网络训练过程中的数据传递,进而提高神经网络的训练效率。
118.在一些实施例中,可以使反向结点和更新结点加载于不同的处理核。需要说明的是,由于反向结点和更新结点加载于不同的处理核,因此,更新结点基于接收的反传误差获取该更新结点所在网络层的梯度更新值,以及确定更新后累积更新值的绝对值是否大于预设阈值的步骤,可以在同层网络层的反向结点基于对应的第二可学习数据和接收的反传误差获取前一层网络层对应的误差的步骤之前或同时执行,提高神经网络的训练效率。更新结点基于更新后累积更新值更新目标可学习参数的步骤,需要在同层网络层的反向结点基于对应的第二可学习数据和接收的反传误差获取前一层网络层对应的误差,并将前一层网络层的对应误差作为新的反传误差发送至前一层网络层的反向结点和更新结点的步骤之
后执行,以保证误差反向传播过程的顺利执行。
119.在一个实施方式中,在执行反向传播过程之前,该方法还包括:将至少一层网络层中的前向结点对应的第一可学习数据复制为相应网络层中的反向结点对应的第二可学习数据,以实现前向传播过程和反向传播过程中至少部分数据访问依赖解耦。
120.在一些实施例中,可以将部分网络层中的前向结点对应的第一可学习数据复制为相应网络层中的反向结点对应的第二可学习数据,可以实现前向传播过程和反向传播过程中至少部分数据访问依赖解耦,使部分结点均可以与其依赖的数据相邻并实现简单访问,提高神经网络在众核芯片上的运行性能。
121.在另一些实施例中,可以将全部网络层中的前向结点对应的第一可学习数据复制为相应网络层中的反向结点对应的第二可学习数据,实现前向传播过程和反向传播过程中全部数据访问依赖解耦,使每个结点均可以与其依赖的数据相邻并实现简单访问,进一步提高神经网络在众核芯片上的运行性能。
122.本公开实施例中,可以根据众核芯片的实际运行情况选择部分或全部网络层中的前向结点对应的第一可学习数据复制为相应网络层中的反向结点对应的第二可学习数据,以提高神经网络在众核芯片上的运行性能。
123.在一个实施方式中,在将全部网络层中的前向结点对应的第一可学习数据复制为相应网络层中的反向结点对应的第二可学习数据的情况下,神经网络的训练过程在众核芯片上可以实现流水线执行。
124.图7为本公开实施例提供的一种神经网络训练过程的示意图。如图7所示,该神经网络训练过程包括由前向结点a、b、c构成的前向传播过程(也可以称为前向推理过程),由反向结点c’,b’,a’构成的误差反向传播过程,以及更新结点c”、b”、a”构成的梯度更新过程。可学习数据a、b、c分别被复制为了完全相同的可学习数据a’、b’、c’。其中,可学习数据a、b、c在前向传播过程中分别被前向结点a、b、c使用,即该可学习数据a、b、c为第一可学习数据,复制后的可学习数据a’、b’、c’在反向传播过程中分别被反向结点a’,b’,c’使用,即该可学习数据a’、b’、c’为第二可学习数据。
125.在前向传播过程中,神经网络的训练过程按照a-》b-》c的顺序执行,控制前向结点基于对应的第一可学习数据执行任务处理,其中,第一可学习数据存储于该前向结点所在的处理核中,例如,控制前向结点a基于对应的第一可学习数据a执行任务处理,获得第一中间结果。前向结点a将第一中间结果发送至前向结点b,前向结点b基于对应的第一可学习数据b和接收的第一中间结果执行任务处理,获得第二中间结果。前向结点b将第二中间结果发送至前向结点c,前向结点c基于对应的第一可学习数据c和接收的第二中间结果执行任务处理,获得输出结果。
126.在反向传播过程中,控制误差计算结点d基于预期结果与输出结果计算神经网络的输出误差,并将计算所述神经网络的输出误差的误差函数进行梯度求导的结果作为反传误差,发送至作为输出层的网络层所包括的更新结点c”和反向结点c’。
127.在反向传播过程中,控制反向结点(a’,b’,c’)基于对应的第二可学习数据和接收的反传误差获取前一层网络层对应的误差,并将前一层网络层的对应误差作为新的反传误差发送至前一层网络层的反向结点和更新结点。
128.例如,反向结点c’基于对应的第二可学习数据c’和接收的反传误差获取前一层网
络层(前向结点b、反向结点b’、更新结点b”所在的网络层)对应的误差,并将前一层网络层的对应误差作为新的反传误差发送至前一层网络层的反向结点b’和更新结点b”。
129.反向结点b’基于对应的第二可学习数据b’和接收的反传误差获取前一层网络层(前向结点a、反向结点a’、更新结点a”所在的网络层)对应的误差,并将前一层网络层的对应误差作为新的反传误差发送至前一层网络层的反向结点a’和更新结点a”。
130.图7中反向结点a’位于第一层网络层(输入层),因此,反向结点a’不执行误差反向传递。
131.在反向传播过程中,控制更新结点(c”、b”、a”)基于接收的反传误差执行对目标可学习参数的更新处理。并且,在更新结点更新目标可学习参数的过程中引入可学习参数的数据更新机制,只有在梯度更新值与累积更新值之和的绝对值大于预设阈值的情况下,才满足可学习参数的数据更新机制,此时控制更新结点基于梯度更新值更新目标可学习参数。而在梯度更新值与累积更新值之和的绝对值小于或等于预设阈值的情况下,不满足可学习参数的数据更新机制,不进行目标可学习参数的更新。其中,针对梯度更新值与累积更新值之和的绝对值大于预设阈值的情况可参见前述实施例中的详细描述,此处不再赘述。
132.例如,更新结点c”基于接收的反传误差获取更新结点c”所在网络层的梯度更新值,并确定梯度更新值与累积更新值之和的绝对值是否大于预设阈值,在梯度更新值与累积更新值之和的绝对值大于预设阈值的情况下,控制更新结点基于梯度更新值更新目标可学习参数,该目标可学习参数包括更新结点c”对应的网络层所包括的前向结点c对应的第一可学习数据c以及反向结点c’对应的第二可学习数据c’。
133.更新结点b”基于接收的反传误差获取更新结点b”所在网络层的梯度更新值,并确定梯度更新值与累积更新值之和的绝对值是否大于预设阈值,在梯度更新值与累积更新值之和的绝对值大于预设阈值的情况下,控制更新结点基于梯度更新值更新目标可学习参数,该目标可学习参数包括更新结点b”对应的网络层所包括的前向结点b对应的第一可学习数据b以及反向结点b’对应的第二可学习数据b’。
134.更新结点a”基于接收的反传误差获取更新结点a”所在网络层的梯度更新值,并确定梯度更新值与累积更新值之和的绝对值是否大于预设阈值,在梯度更新值与累积更新值之和的绝对值大于预设阈值的情况下,控制更新结点基于梯度更新值更新目标可学习参数,该目标可学习参数包括更新结点a”对应的网络层所包括的前向结点a对应的第一可学习数据a以及反向结点a’对应的第二可学习数据a’。
135.通过图7所示的神经网络训练过程可知,本公开实施例提供的基于众核系统的神经网络训练方法,能够使神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦,进而提高神经网络在众核芯片上的运行性能,提高神经网络的训练效率,加快获得训练后的神经网络。
136.图8为本公开实施例提供的一种神经网络训练过程的等效示意图。如图8所示,将图7中的神经网络训练过程等效展开后可知,本公开实施例提供的基于众核系统的神经网络训练方法,能够使神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦,可学习数据的复杂访问情况被避免,每个结点均可以与其依赖的数据相邻并实现简单访问,从而有利于神经网络在众核架构上的部署实现。
137.图9为本公开实施例提供的一种神经网络训练过程在众核芯片上的部署示意图。
在一个实施方式中,将至少一个前向结点和至少一个反向结点分别加载到众核系统的一个或多个处理核中、将至少一个更新结点分别加载到众核系统的一个或多个处理核中、将至少一个误差计算结点分别加载到众核系统的一个或多个处理核中之后,神经网络训练过程中的各结点可以如图9所示被分布式地部署到众核芯片上。其中,处理核0和处理核1中分别部署有前向结点a和前向结点a对应的第一可学习数据a;处理核2中部署有前向结点b和前向结点b对应的第一可学习数据b;处理核3中部署有误差计算结点d;处理核5和处理核6中分别部署有反向结点c’和反向结点c’对应的第二可学习数据c’;处理核7和处理核8中分别部署有更新结点c”;处理核9中部署有反向结点b’和反向结点b’对应的第二可学习数据b’;处理核10和处理核11中分别部署有更新结点b”;处理核12、处理核13和处理核14中分别部署有反向结点a’和反向结点a’对应的第二可学习数据a’;处理核15中部署有更新结点a”。如图9所示,每个计算结点中的计算任务,可以被部署到一个或多个处理核中执行,从而更好的实现负载均衡,提高计算资源的利用率。同时,每个处理核计算所依赖的数据可以被存储在本地,从而有效减少大量数据传输所带来的传输延时和传输功耗。
138.图10为本公开实施例提供的一种神经网络训练过程在众核芯片上的流水执行示意图。如图10所示,如图9中部署在众核芯片上的神经网络训练过程可以按照流水的方式执行。其中,对应于相同可学习参数的反向结点和更新结点可以同时开始执行,例如图10中的反向结点c’和更新结点c”等。在反向结点计算完成后,更新结点将满足数据更新机制判断的梯度更新值通过众核芯片的路由网络传递,更新该更新结点对应的网络层所包括的前向结点和反向结点所在处理核中的可学习数据(参见图10中黑色图案部分)。在数据更新机制的作用下(例如整个矩阵中或者整个权重更新张量中只有部分数据需要更新),该更新过程所传递的数据量可显著减小。在神经网络训练过程中,对应不同计算任务的功能核可以按照流水的方式同时并行执行,从而可以显著提高网络执行的吞吐率,提高神经网络的训练效率。
139.可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
140.此外,本公开还提供了神经网络训练装置、电子设备、计算机可读存储介质,上述均可用来实现本公开提供的任一种神经网络训练方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
141.图11为本公开实施例提供的一种基于众核系统的神经网络训练装置的结构示意图。该神经网络包括多层网络层,至少一层网络层包括至少一个前向结点和与前向结点对应的至少一个反向结点。如图11所示,该装置包括:加载模块111、第一控制模块112、第二控制模块113和决策模块114。
142.加载模块111,被配置为将至少一个所述前向结点和至少一个所述反向结点分别加载到众核系统的一个或多个处理核中。
143.第一控制模块112,被配置为在前向传播过程中,控制所述前向结点基于对应的第一可学习数据执行任务处理。
144.第二控制模块113,被配置为在反向传播过程中,控制所述反向结点基于对应的第
二可学习数据执行误差反向传递,其中,前向传播过程与反向传播过程并行执行。
145.决策模块114,被配置为在满足预设更新条件的情况下,更新第一可学习数据和第二可学习数据,以得到训练后的神经网络。
146.本公开实施例提供的基于众核系统的神经网络训练装置,能够使神经网络训练过程中前向传播过程和反向传播过程的数据访问依赖解耦,每个结点均可以与其依赖的数据相邻并实现简单访问,进而提高神经网络在众核芯片上的运行性能,提高神经网络的训练效率,加快获得训练后的神经网络。
147.图12为本公开实施例提供的一种基于众核系统的神经网络训练装置的结构示意图。如图12所示,决策模块114还被配置为在不满足预设更新条件的情况下,控制返回第一控制模块112,在前向传播过程中,控制前向结点基于对应的第一可学习数据执行任务处理。
148.图13为本公开实施例提供的一种电子设备的框图。
149.参照图13,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器121;至少一个存储器122,以及一个或多个i/o接口123,连接在处理器121与存储器122之间;其中,存储器122存储有可被至少一个处理器121执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器121执行,以使至少一个处理器121能够执行上述的基于众核系统的神经网络训练方法。
150.在一些实施例中,该电子设备可以是类脑芯片,由于类脑芯片可以采用向量化计算方式,且需要通过外部内存例如双倍速率(double data rate,ddr)同步动态随机存储器调入神经网络模型的权重信息等参数。因此,本公开实施例采用批处理的运算效率较高。
151.本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器/处理核执行时实现上述的基于众核系统的神经网络训练方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
152.本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述基于众核系统的神经网络训练方法。
153.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
154.如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom)、静态随机存取存储器(sram)、闪存或其他存储器技术、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)或其他光
盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
155.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
156.用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
157.这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
158.这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
159.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
160.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的
指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
161.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
162.本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1