CN117474067A - 一种神经网络的训练方法以及相关设备 - Google Patents
一种神经网络的训练方法以及相关设备 Download PDFInfo
- Publication number
- CN117474067A CN117474067A CN202211391730.XA CN202211391730A CN117474067A CN 117474067 A CN117474067 A CN 117474067A CN 202211391730 A CN202211391730 A CN 202211391730A CN 117474067 A CN117474067 A CN 117474067A
- Authority
- CN
- China
- Prior art keywords
- neural network
- training
- calculation
- graph
- compiled code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012549 training Methods 0.000 title claims abstract description 357
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 337
- 238000000034 method Methods 0.000 title claims abstract description 136
- 238000004364 calculation method Methods 0.000 claims description 315
- 238000004891 communication Methods 0.000 claims description 182
- 238000013507 mapping Methods 0.000 claims description 104
- 230000015654 memory Effects 0.000 claims description 90
- 238000003860 storage Methods 0.000 claims description 64
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013473 artificial intelligence Methods 0.000 abstract description 18
- 230000008569 process Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 37
- 238000012545 processing Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 20
- 238000010801 machine learning Methods 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000002349 favourable effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000011022 operating instruction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000221377 Auricularia Species 0.000 description 1
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例公开一种神经网络的训练方法以及相关设备,该方法可用于人工智能领域中对神经网络进行训练的场景中,方法包括:在执行神经网络的第N轮训练时,可以获取第一计算图,其中,第一计算图是与神经网络的第N轮训练对应一个或多个计算图中的一个;在确定***中已经存储有与第一计算图对应的第一已编译代码后,可以直接执行第一已编译代码,第一已编译代码是在执行神经网络的第M轮训练中生成的,M小于N;由于不再需要执行将第一计算图转换为中间计算表示,以及基于中间计算表示得到编译代码的操作,节省了对计算机资源的开销。
Description
本申请要求于2022年07月22日提交中国专利局、申请号为202210871003.7、发明名称为“一种数据处理方法及相关装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络的训练方法以及相关设备。
背景技术
第一计算图(computational graph)是一种通用的计算过程表示方法,用于描述函数的有向无环图,普遍应用在各类数据处理平台上。在人工智能(ArtificialIntelligence,AI)领域中,需要对神经网络进行迭代训练,则可以将对神经网络的每轮训练操作转换为第一计算图,获取与该第一计算图对应的编译后的代码,并执行该编译后的代码,以实现神经网络的每轮训练操作。
具体的,在神经网络的每轮训练操作中,在获取到与神经网络的一轮训练操作对应的第一计算图之后,可以对整个第一计算图进行表达转换(trace),得到与该第一计算图对应的中间计算表示(intermediate representation,IR),前述中间计算表示也可以称为第一计算图的逻辑描述,对该中间计算表示执行编译操作,得到与该第一计算图对应的编译后的代码。
但是,由于神经网络的每轮训练操作中,都需要先将第一计算图转换为中间计算表示,再基于中间计算表示得到编译后的代码,带来了计算机资源的开销。
发明内容
本申请实施例提供了一种神经网络的训练方法以及相关设备,在执行第一神经网络的第N轮训练时,由于在执行第一神经网络的第M轮训练时已经生成了与第一计算图对应的第一已编译代码,则可以确定***中已经存储有与第一计算图对应的第一已编译代码,并直接执行第一已编译代码,不再需要执行将第一计算图转换为中间计算表示,以及基于中间计算表示得到第一已编译代码的操作,节省了对计算机资源的开销。
为解决上述技术问题,本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种神经网络的训练方法,可用于人工智能领域中对神经网络进行训练的场景中,方法包括:在执行第一神经网络的第N轮训练时,第一通信设备在获取第一计算图之后,可以确定***中已存储与第一计算图对应的第一已编译代码(First compiled code),并执行第一已编译代码,第一已编译代码是在执行第一神经网络的第M轮训练中生成的,N和M均为正整数,M小于N。其中,与第一神经网络的第N轮训练对应一个或多个计算图;进一步地,计算图是将计算过程通过图形化的方式表示出来,与第一神经网络的第N轮训练对应一个或多个计算图是将神经网络的第N轮训练中的运算过程通过图形化的方式表示出来,执行前述与第一神经网络的第N轮训练对应一个或多个计算图的过程可以理解为执行第一神经网络的第N轮训练的过程。第一计算图是与神经网络的第N轮训练对应的一个或多个计算图中的一个,则第一计算图指的是将第一神经网络的第N轮训练操作中的至少一个第一步骤的计算过程通过图形化的方式表示出来;示例性地,与第一计算图对应的一个或多个第一步骤可以包括:计算损失函数值、反向传播以生成梯度值或者对第一神经网络中的权重参数进行参数更新等。第一通信设备可以为云端设备,也可以为终端设备。
本实现方式中,在执行第一神经网络的第N轮训练时,在获取到第一计算图之后,由于在执行第一神经网络的第M轮训练时已经生成了与第一计算图对应的第一已编译代码,则可以确定***中已经存储有与第一计算图对应的第一已编译代码,并直接执行第一已编译代码,也即在第一神经网络的第N轮训练操作中,不再需要执行将第一计算图转换为中间计算表示,以及基于中间计算表示得到第一已编译代码的操作,节省了对计算机资源的开销。
在第一方面的一种可能实现方式中,第一通信设备执行第一已编译代码,包括:第一通信设备可以从***中获取第一映射关系,第一映射关系用于指示第一计算图的输入参数的取值的获取位置;可选地,第一计算图中的输入参数可以包括第一计算图中的权重参数和第一计算图中的非训练参数,则第一映射关系可以用于指示第一计算图中的权重参数的取值的获取位置以及非训练参数的取值的获取位置。第一通信设备根据第一映射关系,确定第N轮训练中的第一计算图中的输入参数的取值,并根据第一计算图中的输入参数的取值,执行第一已编译代码。需要说明的是,“第一计算图中的输入参数的取值”的确定操作和“第一已编译代码”的执行操作可以交叉执行,例如,在执行第一已编译代码的过程中,可以确定第一计算图中至少一个输入参数的取值,并继续执行第一已编译代码。
本实现方式中,***中还可以存储有第一映射关系,该第一映射关系指示第一计算图中的输入参数的获取位置,从而在执行第一已编译代码的过程中,可以直接根据第一映射关系确定第一计算图中的输入参数的取值,有利于提高第一计算图中的输入参数的取值的获取速度,进而有利于加快第一神经网络的训练操作的执行速度。
在第一方面的一种可能实现方式中,在第一通信设备获取第一映射关系之前,还可以包括:若***中不存在第一映射关系,第一通信设备还可以建立第一映射关系,并在***中存储第一映射关系。其中,第一通信设备所在的***包括第一通信设备能够访问的存储设备,第一通信设备能够访问的存储设备包括第一通信设备能够访问的内存,还可以包括第一通信设备能够访问的外存。本实现方式中,当***中不存在第一映射关系,也即在***中无法直接获取到第一映射关系时,还可以建立第一映射关系,从而保证了本方案在各种情况中的可行性,提高了本方案的完整性。
在第一方面的一种可能实现方式中,第一计算图为可复用的计算图。本实现方式中,若第一计算图不会再重复使用,则与第一计算图对应的第一已编译代码不会被重复使用,将第一已编译代码存储至***中还会造成***的存储资源的浪费,因此,将第一计算图限定为可复用的计算图,则只会在***中存储能够复用的计算图所对应的已编译代码,有利于提高***的存储资源的利用率。
在第一方面的一种可能实现方式中,第一通信设备确定***中已存储与第一计算图对应的第一已编译代码,可以包括:第一通信设备对第一计算图进行表达转换,得到与第一计算图对应的中间计算表达IR,并根据与第一计算图对应的IR,确定***中已存储第一已编译代码;可选地,第一通信设备可以根据与第一计算图对应的IR,确定***包括的内存中已经存储有第一已编译代码。本实现方式中,根据与第一计算图对应的IR,来确定***中是否存储有第一已编译代码,能够准确的确定出***中是否存在第一已编译代码,进而有利于顺利的从***中获取第一已编译代码,从而提高了第一计算图执行过程的流畅度。
在第一方面的一种可能实现方式中,在执行第一神经网络的第M轮训练时,第一通信设备获取到的也可以是第一计算图,则方法还可以包括:第一通信设备在获取到第一计算图之后,根据第一计算图生成第一已编译代码;并在***中存储第一已编译代码。本实现方式中,在执行第一神经网络的第M轮训练时,在生成了第一已编译代码之后,会在***中存储第一已编译代码,从而在执行第一神经网的第N轮训练时,就能直接从***中获取到第一已编译代码,提高了本方案实现过程的流畅性。
在第一方面的一种可能实现方式中,第一通信设备确定***中已存储与第一计算图对应的第一已编译代码,包括:若第一通信设备确定***中已存储第一映射关系,则可以确定***中已经存储有与第一计算图对应的第一已编译代码(First compiled code),第一映射关系用于指示第一计算图的输入参数的获取位置。本实现方式中,由于第一通信设备在确定了第一计算图能够复用后执行的第一轮训练操作中,就会生成第一已编译代码,而第一映射关系能够在确定第一计算图能够复用后执行的第二轮以及后续轮次中建立完毕,所以若***中已经存储有第一映射关系,则大概率代表已经执行过“通过编译器生成与第一计算图对应的第一已编译代码”的步骤,从而可以直接从***中获取与第一计算图对应的第一已编译代码;也即通过判断第一映射关系是否建立完毕的方式来确定***中是否已经存在与第一计算图对应的第一已编译代码,不再需要生成与第一计算图对应的中间计算表达,并根据第一计算图表达查询是否存在与第一计算图对应的第一已编译代码,通过前述方案,降低了“判断***中是否存在与第一计算图对应的第一已编译代码”这一步骤的难度,减少了前述判断步骤带来的计算机资源的开销,且提高了前述判断步骤的速度,有利于加快第一神经网络的训练操作的执行速度。
在第一方面的一种可能实现方式中,第一计算图与第一神经网络的第N轮训练中的第一步骤对应;第一通信设备在执行第一已编译代码之后,方法还包括:第一通信设备生成第一输出数据,其中,第一输出数据采用第一数据结构,第一输出数据包括第一神经网络的训练操作中的第二步骤的至少一个输入数据,“第一神经网络的训练操作中的第二步骤”也可以称为“第一神经网络的训练操作中的第一步骤”的下游任务,第一数据结构为执行第一神经网络的训练操作中的第二步骤时采用的数据结构,前述第一神经网络的训练操作包括第一神经网络的第N轮训练。例如,第一输出数据可以表现为张量数据,第一通信设备可以根据张量的第一数据结构来生成下游任务能够理解的第一输出数据,张量的第一数据结构可以用来描述在执行第一神经网络的第N轮训练操作中的第二步骤时采用的张量形式的数据成员的定义、第一输出数据在内存中的排布形式,或者在内存中存储第一输出数据时采用的内存对齐方式等,此处不做穷举。示例性地,“采用的张量形式的数据成员的定义”可以包括每个数据成员的数据类型,例如,32位的浮点数(float32)和16位的整型(int16)为不同的数据类型;还可以包括前述每个数据成员所对应的张量的尺寸等,还可以定义每个数据成员的其他信息,此处不做穷举。数据在内存中的排布形式可以包括张量形式的输出数据在内存中采用什么形式的存储结构,前述存储结构可以包括队列、栈、链表或其他存储结构等等,此处举例均仅为方便理解张量的数据结构这一概念,不用于限定本方案。
本实现方式中,还可以获取神经网络的训练操作中的第一步骤的下游任务所采用的第一数据结构,在执行与第一计算图对应的第一已编译代码时,生成第一数据结构的输出数据,则下游任务在访问第一输出数据时不再需要转换第一输出数据的数据结构,从而避免了同样的数据在不同数据结构之间转换时所带来的计算机资源的开销。
在第一方面的一种可能实现方式中,第一计算图与第一神经网络的第N轮训练中的第一步骤对应;第一通信设备执行第一已编译代码可以包括:第一通信设备根据第二数据结构的格式获取第一计算图的至少一个输入数据,第一神经网络的训练操作中的第三步骤的第二输出数据中存在第一计算图的至少一个输入数据,第二数据结构为执行第一神经网络的训练操作中的第三步骤时采用的数据结构。例如,前述第一计算图中的至少一个输入数据可以表现为张量,第一通信设备可以根据张量的第二数据结构来理解内存中存储的第二输出数据,例如,张量的第二数据结构可以用来描述在执行第一神经网络的第N轮训练操作中的第三步骤时采用的张量形式的数据成员的定义、第二输出数据在内存中的排布形式,或者在内存中存储第二输出数据时采用的内存对齐方式等,此处不对张量的第二数据结构所携带的信息的类型进行穷举。
本实现方式中,还可以获取神经网络的训练操作中的第一步骤的上游任务所采用的第二数据结构,并根据第二数据结构的格式从上游任务的输出数据中获取第一计算图的至少一个输入数据,从而避免了同样的数据在不同数据结构之间转换时所带来的计算机资源的开销。
在第一方面的一种可能实现方式中,第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致;可选地,可以利用共享指针技术实现“第一计算图的至少一个输入数据在内存中的读取位置和第二输出数据在内存中的存储位置一致”。需要说明的是,第一通信设备在读取到第一计算图的至少一个输入数据之后,在执行与第一计算图对应的第一已编译代码的过程中,不会对第二输出数据进行修改。本实现方式中,第一计算图的至少一个输入数据的读取位置和第二输出数据的存储位置一致,从而避免了同样的数据在不同存储位置之间的拷贝,以进一步减少计算机资源的开销。
在第一方面的一种可能实现方式中,第一计算图的至少一个输入数据的读取位置和第二输出数据的存储位置一致。可选地,可以利用共享指针技术实现“第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致”。需要说明的是,第一通信设备在执行完第一输出数据的写入操作之后,第一输出数据的所有权将转移至下游任务。本实现方式中,第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致,从而避免了同样的数据在不同存储位置之间的拷贝,以进一步减少计算机资源的开销。
在第一方面的一种可能实现方式中,方法还包括:第一通信设备通过调用预设接口的方式,发送第一输出数据,其中,第一神经网络的训练操作中的第二步骤包括发送第一输出数据,第一数据结构为执行第一输出数据的发送操作时采用的数据结构,预设接口可以为第三方提供的梯度通信库的接口。
本实现方式中,提供了神经网络的训练操作中的第一步骤的下游任务的具体例子,通过调用预设接口的形式实现第一输出数据的通信,方便快捷;且生成第一数据结构的第一输出数据,避免了第一输出数据在不同数据结构之间的转换,提高了第一输出数据的发送过程的效率。
第二方面,本申请实施例提供一种神经网络的训练装置,可用于人工智能领域中对神经网络进行训练的场景中,神经网络的训练装置包括:获取模块、确定模块和执行模块。其中,获取模块,用于获取第一计算图,其中,第一计算图是与神经网络的第N轮训练对应的一个或多个计算图中的一个,N为正整数;确定模块,用于确定***中已存储与第一计算图对应的第一已编译代码,其中,第一已编译代码是在执行神经网络的第M轮训练中生成的,M为正整数,M小于N;执行模块,用于执行第一已编译代码。
本申请第二方面中,神经网络的训练装置还可以用于执行第一方面以及第一方面的各个可能实现方式中第一通信设备执行的步骤,第二方面的各个可能实现方式中的步骤的具体实现方式、名词的含义以及所带来的有益效果,均可以参阅第一方面,此处不再赘述。
第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面所述的神经网络的训练方法。
第四方面,本申请实施例提供了一种通信设备,包括处理器和存储器,处理器与存储器耦合,存储器,用于存储程序;处理器,用于执行存储器中的程序,使得通信设备执行上述第一方面的神经网络的训练方法。
第五方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括程序,当该程序在计算机上运行时,使得计算机执行上述第一方面所述的神经网络的训练方法。
第六方面,本申请提供了一种芯片***,该芯片***包括处理器,用于支持终端设备或通信设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存终端设备或通信设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1为本申请实施例提供的人工智能主体框架的一种结构示意图;
图2a为本申请实施例提供的神经网络的训练***的一种***架构图;
图2b为本申请实施例提供的神经网络的训练***的另一种***架构图;
图2c为本申请实施例提供的神经网络的训练方法的一种流程示意图;
图3为本申请实施例提供的神经网络的训练方法的另一种流程示意图;
图4为本申请实施例提供的第一计算图的一种示意图;
图5为本申请实施例提供的第一计算图的另一种示意图;
图6为本申请实施例提供的第一计算图的又一种示意图;
图7为本申请实施例提供的第一计算图的又一种示意图;
图8为本申请实施例提供的第一计算图的又一种示意图;
图9为本申请实施例提供的第一计算图中的输入参数的一种示意图;
图10为本申请实施例提供的发送第一输出数据的一种流程示意图;
图11为本申请实施例提供的神经网络的训练方法的又一种流程示意图;
图12为本申请实施例提供的神经网络的训练装置的一种结构示意图;
图13为本申请实施例提供的神经网络的训练装置的另一种结构示意图;
图14为本申请实施例提供的通信设备的一种结构示意图;
图15为本申请实施例提供的通信设备的又一种结构示意图;
图16为本申请实施例提供的芯片的一种结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、***、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
首先对人工智能***总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到***的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能***提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片提供,该智能芯片具体可以采用中央处理器(central processing unit,CPU)、嵌入式神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphics processing unit,GPU)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程门阵列(fieldprogrammable gate array,FPGA)等硬件加速芯片;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算***中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有***的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能***中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用***,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能***在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶、智慧城市等。
本申请可以应用于对神经网络进行训练的过程中,前述神经网络可以为人工智能***中的任意一个应用领域中的神经网络。在对本申请实施例提供的神经网络的训练方法进行描述之前,请先参阅图2a和图2b,图2a和图2b为本申请实施例提供的神经网络的训练***的两种***架构图。
在一种应用场景中,先参阅图2a,神经网络的训练***200可以包括云端设备210、数据库220、终端设备230和数据存储***240,终端设备230中包括计算模块231,图2a中以由云端设备210执行对第一机器学习模型/规则201的训练操作为例。
其中,云端设备210可以由一个或多个服务器实现,数据库220中存储有训练样本,云端设备210生成第一机器学习模型/规则201,并利用训练样本对第一机器学习模型/规则201进行迭代训练,得到训练后的第一机器学习模型/规则201。第一机器学习模型/规则201可以具体表现为神经网络,也可以表现为非神经网络的模型,本申请实施例中仅以第一机器学习模型/规则201表现为第一神经网络为例进行说明。
云端设备210将训练后的第一机器学***板、笔记本电脑、VR设备、监控***或、雷达的数据处理***等等。其中,终端设备230可以调用数据存储***240中的数据、代码等,也可以将数据、指令等存入数据存储***240中。数据存储***240可以置于终端设备230中,也可以为数据存储***240相对终端设备230是外部存储器。终端设备230中的第一机器学习模型/规则201用于输入数据进行处理,得到与输入数据对应的预测信息。
在另一种应用场景中,参阅图2b,神经网络的训练***200可以包括云端设备210、数据库220、终端设备230和数据存储***240,终端设备230中包括计算模块231,图2b中以由云端设备210和多个终端设备230联合执行对第一机器学习模型/规则201的训练操作为例。
其中,数据存储***240中可以存储有训练数据集合,每个终端设备230可以根据数据存储***240中的训练样本,对第一机器学习模型/规则201进行迭代训练,得到与第一机器学习模型/规则201中的权重参数对应的第一梯度值。在一种实现方式中,每个终端设备230可以将前述第一梯度值发送给云端设备210,由云端设备210对多个终端设备230上传的第一梯度值进行聚合,得到与第一机器学习模型/规则201中的权重参数对应的第二梯度值,将前述第二梯度值发送给各个终端设备230,由每个第二终端设备230根据第二梯度值对第一机器学习模型/规则201中的权重参数进行更新,以实现对第一机器学习模型/规则201的迭代训练。需要说明的是,还可以采用其他方式实现对第一机器学习模型/规则201的训练,上述图2a和图2b仅为方便理解本方案的两种示例,不用于限定本方案。
基于上述描述,本申请提供了一种神经网络的训练方法,前述神经网络的训练方法可以应用于云端设备210利用训练数据集合对第一机器学习模型/规则201进行训练的过程中,也可以应用于终端设备240利用训练数据集合对第一机器学习模型/规则201进行训练的过程中。具体的,请参阅图2c,图2c为本申请实施例提供的神经网络的训练方法的一种流程示意图。其中,A1、在执行对神经网络(为方便描述,后续均称为“第一神经网络”)的第N轮训练时,第一通信设备可以获取第一计算图,其中,第一计算图是与第一神经网络的第N轮训练对应的一个或多个计算图中的一个,N为正整数;进一步地,计算图是将计算过程通过图形化的方式表示出来,与第一神经网络的第N轮训练对应一个或多个计算图是将神经网络的第N轮训练中的运算过程通过图形化的方式表示出来,执行前述与第一神经网络的第N轮训练对应一个或多个计算图的过程可以理解为执行第一神经网络的第N轮训练的过程;第一计算图为前述与第一神经网络的第N轮训练对应的一个或多个计算图中的一个,“第一计算图”的含义可以参阅前述对“与第一神经网络的第N轮训练对应的一个或多个计算图”的含义的解释。A2、第一通信设备在获取到第一计算图之后,可以确定***中已存储与第一计算图对应的第一已编译代码(First compiled code),第一已编译代码是在执行神经网络的第M轮训练中生成的,M为正整数,M小于N。A3、第一通信设备执行第一已编译代码。
本申请实施例中,在执行第一神经网络的第N轮训练时,不再需要执行将第一计算图转换为中间计算表示,以及基于中间计算表示得到编译后的代码的操作,节省了对计算机资源的开销。
结合上述描述,下面开始对本申请实施例提供的神经网络的训练方法的具体实现流程进行描述,由于“根据训练数据对第一神经网络进行训练”这一步骤可以由云端设备210执行,也可以由终端设备230执行,以下对前述两种情况分别进行描述。
一、由云端设备执行对第一神经网络的训练操作
本申请实施例中,具体的,请参阅图3,图3为本申请实施例提供的神经网络的训练方法的另一种流程示意图,本申请实施例提供的神经网络的训练方法可以包括:
301、获取第一计算图,第一计算图是与神经网络的第N轮训练对应的一个或多个计算图中的一个。
本申请实施例中,在执行第一神经网络的第N轮训练时,第一通信设备可以获取到第一计算图,与第一神经网络的第N轮训练对应一个或多个计算图,前述一个或多个计算图中包括第一计算图,也即第一计算图是与神经网络的第N轮训练对应的一个或多个计算图中的一个,N为正整数;例如,第一计算图与第一神经网络的第N轮训练操作中的至少一个第一步骤对应。其中,第一通信设备可以为云端设备中的一个处理器,例如,第一通信设备可以为云端设备中的神经网络处理器;又例如,第一通信设备可以为云端设备中的图形处理器;又例如,第一通信设备可以为云端设备中的中央处理器等等,具体可以结合实际应用场景灵活确定,此处不做限定。
对第一神经网络的一轮训练操作可以包括对第一神经网络的1次或多次训练操作,前述多次训练操作可以包括利用一批(batch)或多批(batch)训练样本对第一神经网络执行的多次训练操作,每批(batch)训练样本包括多个训练样本。
其中,计算图是将计算过程通过图形化的方式表示出来,可选地,与第一神经网络的第N轮训练对应一个或多个计算图是将神经网络的第N轮训练中的运算过程通过图形化的方式表示出来,执行前述与第一神经网络的第N轮训练对应一个或多个计算图的过程可以理解为执行第一神经网络的第N轮训练的过程;第一计算图为通过图形化的方式来表示第一神经网络的第N轮训练操作中的一个或多个第一步骤,执行第一计算图的过程可以理解为实现第一神经网络的第N轮训练操作中的一个或多个第一步骤。
进一步地,在一种情况中,第一计算图为通过图形化的方式来表示第一神经网络的第N轮训练操作中的所有步骤。为了更直观地理解本方案,请参阅图4,图4为本申请实施例提供的第一计算图的一种示意图。如图4所示,第一神经网络的训练***包括1个CPU和1个NPU,由该NPU执行第一神经网络的每轮训练操作中的所有步骤,与该NPU执行的第一计算图对应的一个或多个第一步骤可以包括:计算损失函数值、反向传播以生成梯度值、对第一神经网络中的权重参数进行参数更新,第一神经网络中的权重参数也可以称为第一神经网络中的训练参数。图4中对第一神经网络的每轮训练操作可以包括对第一神经网络执行一次训练操作,或者,也可以包括利用一批训练样本对第一神经网络执行的多次训练操作。应理解,图4中的示例仅为方便理解本方案,不用于限定本方案。
在另一种情况中,与第一神经网络的第N轮训练对应多个计算图,第一计算图为多个计算图中的一个,也即第一计算图为通过图形化的方式来表示第一神经网络的第N轮训练操作中的部分步骤。具体的,第一通信设备或第一通信设备之外的其他通信设备在获取到与第一神经网络的第N轮训练对应的第二计算图之后,可以获取与第一神经网络的第N轮训练对应多个计算图;其中,与第一神经网络的训练操作对应第二计算图为通过图形化的方式来表示第一神经网络的第N轮训练操作中的所有步骤,与第一神经网络的第N轮训练对应多个计算图中的每个计算图为第二计算图的子图,则第一计算图也是第二计算图的子图,也即第一计算图为图形化的方式来表示第一神经网络的第N轮训练操作中的部分步骤。
为更直观地理解本方案,请参阅图5至图8,图5至图8为本申请实施例提供的第一计算图的多种示意图。先参阅图5,图5中以第一神经网络的训练***包括1个CPU和1个NPU为例,图5的示例中可以包括三个计算图,第一计算图可以为前述三个计算图中的任意一个,该NPU执行第一个计算图时用于生成第一神经网络的损失函数的函数值,并根据损失函数的函数值,计算得到与第一神经网络的权重参数对应的梯度值;该CPU判断第一神经网络的权重参数的梯度值是否溢出;若判断结果为是,则触发该NPU执行第二个计算图,第二个计算图指示对第一神经网络的权重参数的梯度值进行缩放;若判断结果为否,则触发该NPU执行第三个计算图,第三个计算图指示对第一神经网络中的权重参数进行参数更新。需要说明的是,图5中以第一个计算图、第二个计算图和第三个计算图均由同一个NPU执行为例,在其他应用场景中,第一个计算图、第二个计算图和第三个计算图也可以分别由不同的NPU执行,图5中的示例仅为方便理解本方案,不用于限定本方案。
再参阅图6,图6中以第一神经网络的训练***包括1个CPU和多个NPU(也即图6中的NPU1、NPU2…NPU6)为例,在第一神经网络的每轮训练操作中,多个NPU可以采用相同的计算图,具体的,每个NPU根据一批(batch)训练样本生成第一神经网络的损失函数的函数值,并根据损失函数的函数值,计算得到与第一神经网络的权重参数对应的梯度值,多个NPU之间可以通过全部减少(AllReduce)的方式实现对第一神经网络的权重参数的同步,也即,每个NPU将生成的前述梯度值发送出去,在对多个NPU生成的第一神经网络的权重参数的梯度值完成聚合操作之后,每个NPU接收聚合后的梯度值,并根据聚合后的梯度值对第一神经网络的权重参数进行参数更新,应理解,图6中的示例仅为方便理解本方案,不用于限定本方案。
再参阅图7和图8,图7和图8中均因为第一神经网络过大,从而单个处理器的内存资源或算力等资源无法完成整个第一神经网络的正向操作的计算,则可以将第一神经网络的第N轮训练操作拆分为多个第一计算图。先参阅图7,图7中将第一神经网络拆分为串行的神经网络模块B1、神经网络模块B2和神经网络模块B3,每个神经网络模块中包括多个神经网络层。通过第一计算图1至第一计算图3实现第一神经网络的第N轮训练操作中的正向传播操作,得到第一神经网络输出的预测信息。再通过第一计算图4至第一计算图6实现第一神经网络的第N轮训练操作中的反向传播操作,分别生成与神经网络模块B1、神经网络模块B2以及神经网络模块B3中的权重参数对应的梯度值;通过第一计算图8对第一神经网络中的权重参数进行参数更新。
再参阅图8,图8中将第一神经网络拆分成神经网络模块C1至神经网络模块C5,神经网络模块C2至神经网络模块C4为并行的三个神经网络模块。通过第一计算图1至第一计算图5实现第一神经网络的第N轮训练操作中的正向传播操作,得到第一神经网络输出的预测信息。再通过第一计算图6至第一计算图10实现第一神经网络的第N轮训练操作中的反向传播操作,分别生成与神经网络模块C1至神经网络模块C5中的权重参数对应的梯度值;通过第一计算图8对第一神经网络中的权重参数进行参数更新,应理解,图7和图8中的示例仅为方便理解“第一计算图”的概念,不用于限定本方案。
可选地,第一通信设备可以通过多种方式确定“与第一神经网络的第N轮训练对应的一个或多个计算图”,需要说明的是,“与第一神经网络的第N轮训练对应的一个或多个计算图”的确定过程可以由第一通信设备执行,也可以由第一通信设备之外的其他通信设备执行,第一通信设备接收其他通信设备发送的第一计算图,本申请中不过限定。具体的,在一种实现方式中,第一通信设备上可以配置有预设策略,在获取到第二计算图之后,可以根据预设策略对第二计算图执行拆分操作得到与第一神经网络的第N轮训练对应的一个或多个计算图。
其中,预设策略可以包括如下任一种或多种策略:计算密集型的步骤优先采用编译执行的策略、提高神经网络的训练速度的策略、减少计算机资源的开销策略或其他策略等等,此处不做穷举。可选地,在执行步骤301之前,第一通信设备还可以接收用户配置的预设策略,进一步可选地,第一通信设备上配置的预设策略能够更新。需要说明的是,此处的用户指的可以为第一通信设备的用户,例如用于训练第一神经网络的技术人员等。
示例性地,由于第一计算图中示出的步骤大多需要通过NPU、GPU或其他类型的人工智能加速器(artificial intelligence accelerator)来执行,可能会需要CPU将第一计算图中的输入参数的取值发送给人工智能加速器,在前述步骤中,由人工智能加速器执行第一计算图所对应的步骤能够加速神经网络的训练速度,但将第一计算图中的输入参数的取值发送给人工智能加速器的过程会降低神经网络的训练速度,且增加了计算机资源的开销,因此,由用户向第一通信设备中配置预设策略,能够由用户指导第一计算图的确定过程,有利于提高确定后的第一计算图的合理性。
在另一种实现方式中,第一通信设备在获取到与第一神经网络的第N轮训练对应的第二计算图之后,可以向用户展示第二计算图;第一通信设备接收用户输入的第一信息,第一信息指示将第二计算图拆分成一个或多个计算图。例如,第一信息可以包括与第一神经网络的第N轮训练对应的一个或多个计算图;又例如,第一信息可以包括至少一个拆分节点在第二计算图中的位置,则第一通信设备可以根据第一信息中的至少一个拆分节点将第二计算图拆分成多个计算图等,需要说明的是,第一信息中具体携带哪些信息可以结合实际应用场景灵活设定,此处不做限定。本申请实施例中,将第二计算图展示给用户,由用户直接根据第二计算图确定第一计算图,有利于进一步提高确定的第一计算图的合理性。
在另一种实现方式中,第一通信设备在获取到第二计算图之后,也可以启发式的从第二计算图中确定一个或多个第一计算图。
302、判断第一计算图是否能够复用,若判断结果为否,则进入步骤303;若判断结果为是,则进入步骤304。
本申请的一些实施例中,第一通信设备在获取到第一计算图之后,可以判断第一计算图是否能够复用,若判断结果为否,则可以进入步骤303;若判断结果为是,则进入步骤304。需要说明的是,步骤302为可选步骤,在一些场景中,第一神经网络的每轮训练操作所采用的计算图均相同,则在一种实现方式中,第一通信设备可以默认每次获取到的第一计算图均为能够复用的,从而不需要不执行步骤302,直接进入步骤304。本申请实施例中,若第一计算图不会再重复使用,则与第一计算图对应的第一已编译代码不会被重复使用,将第一已编译代码存储至***中还会造成***的存储资源的浪费,因此,将第一计算图限定为可复用的计算图,则只会在***中存储能够复用的计算图所对应的已编译代码,有利于提高***的存储资源的利用率。
第一通信设备可以通过多种方式判断第一计算图是否能够复用。具体的,在一种实现方式中,第一通信设备可以根据N的取值来判断第一计算图是否能够复用。例如,在一种应用场景中,第一神经网络的第一轮训练操作所采用的计算图和第二轮训练操作所采用的计算图不同,第二轮训练操作以及后续的每轮训练操作所采用的计算图均相同,则步骤303可以包括:在N的取值为1的情况下,第一通信设备可以确定第一计算图不能够复用;在N的取值大于1的情况下,在一种实现方式中,第一通信设备可以直接确定第一计算图能够复用;在另一种实现方式中,第一通信设备可以根据第一计算图的计算量和第一计算图所需要的参数量,继续判断采用编译执行的方式是否能够带来增益,若判断结果为是,则可以确定第一计算图能够复用;若判断结果为否,则可以确定第一计算图不能够复用。其中,“是否能够带来增益”的确定因素可以包括:是否能够加快神经网络的训练速度、是否能够减少对计算机资源的消耗或其他因素等,具体采用哪些因素可以结合实际应用场景灵活设定,此处不做限定。
又例如,在另一种应用场景中,第一神经网络的多轮训练操作可以对应至少两个不同的第二计算图。结合上述图4和图5进行举例,在根据图4示出的第二计算图对第一神经网络进行训练的过程中,为了提高第一神经网络的训练速度,可能会从高精度的训练方式转变为混合精度的训练方式,但转换为混合精度的训练方式后可能会造成生成的第一神经网络的权重参数的梯度值溢出的问题,从而需要增加“判断第一神经网络的权重参数的梯度值是否溢出”的步骤,也即第一神经网络的每轮训练操作所对应的第二计算图可以转变为图5示出的第一计算图,需要说明的是,还有可能因为其他因素导致第二计算图发生变化,此处举例仅为方便理解本方案,不用于限定本方案。
具体的,第一通信设备中可以存储第二信息,第二信息用于指示与N对应的预设数值集合,当N的取值包含于该预设数值集合中时,代表第一神经网络的第N轮训练操作所对应的第一计算图能够复用,则步骤302可以包括:判断N的取值是否包含于预设数值集合中,若N的取值位于预设数值集合之外,则可以确定与第一神经网络的第N轮训练操作中的至少一个第一步骤对应的第一计算图不能够复用。若N的取值位于预设数值集合之内,在一种实现方式中,第一通信设备可以直接确定前述第一计算图能够复用,在另一种实现方式中,第一通信设备可以根据第一计算图的计算量和第一计算图所需要的参数量,继续判断采用编译执行的方式是否能够带来增益,若判断结果为是,则可以确定第一计算图能够复用;若判断结果为否,则可以确定第一计算图不能够复用。
在另一种实现中,第一通信设备还可以根据第一神经网络中非训练参数的取值,来判断第一计算图是否能够复用。例如,由于当第一神经网络的非训练参数中的学习率发生变化时,会导致每次对第一神经网络的权重参数进行更新的梯度值发生变化,进而可能会导致第一神经网络执行训练操作时所采用的计算图发生变化,则第一通信设备可以判断执行第一神经网络的第N轮训练操作时采用的学习率与第一神经网络的第N-1轮训练操作时采用的学习率是否相同,若判断结果为否,第一通信设备可以确定与第一神经网络的第N轮训练操作中的至少一个第一步骤对应的第一计算图不能够复用。若判断结果为是,第一通信设备可以确定前述第一计算图能够复用等,此处示例仅为方便理解本方案,不用于限定本方案。在另一种实现方式中,第一通信设备还可以结合N的取值和第一神经网络中非训练参数的取值,来判断第一计算图是否能够复用等等。需要说明的是,第一通信设备还可以基于其他策略来执行“第一计算图是否能够复用”的判断操作,具体可以结合实际应用场景灵活确定,此处不做限定。
303、通过解释执行的方式执行第一神经网络的第N轮训练操作中的至少一个第一步骤。
本申请的一些实施例中,第一通信设备在确定第一计算图不能够复用的情况下,可以通过解释执行的方式执行第一计算图所对应的第一神经网络的第N轮训练操作中的至少一个第一步骤。
其中,“编译执行”的方式指的是根据第一计算图所对应的第一中间计算表达(IR),利用编译器一次性的生成与整个第一计算图对应的编译后的代码(也即编译成了机器码),并且保存与第一计算图对应的编译后的代码,在执行的时候,可以直接执行整个第一计算图对应的编译后的代码。“解释执行”的方式是在执行的过程中,将第一计算图所对应的第一中间计算表达(IR),逐行解释成机器码并运行,再解释下一行并执行,也即执行过程中为边解释边执行。
需要说明的是,步骤303为可选步骤,第一通信设备在确定第一计算图不能够复用的情况下,也可以通过编译执行的方式执行第一计算图所对应的第一神经网络的第N轮训练操作中的至少一个第一步骤。
304、判断第一映射关系是否建立完毕,若判断结果为否,则进入步骤305;若判断结果为是,则进入步骤309。
本申请的一些实施例中,第一通信设备可以判断第一映射关系是否建立完毕,也即判断第一通信设备所在的***中是否存在已经建立好的第一映射关系;若判断结果为否,则进入步骤305;若判断结果为是,则进入步骤309,第一映射关系用于指示第一计算图中的输入参数的取值的获取位置。其中,第一通信设备所在的***包括第一通信设备能够访问的存储设备,第一通信设备能够访问的存储设备包括第一通信设备能够访问的内存,还可以包括第一通信设备能够访问的外存。
可选地,第一计算图中的输入参数可以包括第一计算图中的权重参数和第一计算图中的非训练参数,则第一映射关系可以用于指示第一计算图中的权重参数的取值的获取位置以及非训练参数的取值的获取位置。
可选地,第一映射关系可以包括第一计算图中的多个非训练参数和第三计算图中的多个非训练参数之间的一一映射关系,前述映射关系用于指示第一计算图中的非训练参数的取值的获取位置;针对第一计算图中的任意一个非训练参数(为方便描述,后续可以称为“目标参数”),示例性地,第一映射关系可以表现为目标参数与目标参数的取值的来源在第三计算图中的位置之间的映射关系。可选地,第一映射关系还可以包括第一计算图中的多个权重参数和第三计算图中的多个权重参数之间的一一映射关系,前述映射关系用于指示第一计算图中的权重参数的取值的获取位置。
其中,第三计算图与第一神经网络的第N-1轮训练操作中的至少一个第一步骤对应,第三计算图和第一计算图相似,区别在于第三计算图是第一神经网络的第N-1轮训练操作中采用的,第一计算图是第一神经网络的第N轮训练操作中采用的。在执行完第一神经网络的第N-1轮训练操作之后,可以确定第一神经网络中的每个训练参数的取值,以及第一神经网络中每个权重参数的更新后的取值。
“第一计算图中的非训练参数”用于控制第一神经网络的训练过程,例如,“第一计算图中的非训练参数”可以包括在第一神经网络的训练过程中采用的正则化层(batchnorm)中的参数,前述正则化层用于放置训练后的第一神经网络过拟合;又例如“第一计算图中的非训练参数”可以包括损失函数中的学习率,前述学习率用于控制第一神经网络的权重参数的更新步长等,“第一计算图中的非训练参数”的取值在每轮训练操作的正向传播的过程中会更新,第一计算图中的非训练参数的更新后的取值也会在下一轮训练操作中使用,应理解,此处对“第一计算图中的非训练参数”的举例仅为方便理解本方案,不用于限定本方案。“第一计算图中的权重参数”也可以称为第一计算图中的训练参数,在对第一神经网络进行训练的过程中通过反向传播的方式得到的梯度值用于更新第一计算图中的权重参数的值,“第一计算图中的权重参数”的更新后的取值会在下一轮训练操作中使用。
需要说明的是,“第一映射关系可以不包括第一计算图中的多个权重参数和第三计算图中的多个权重参数之间的一一映射关系,也可以是第一计算图中的多个权重参数和其他计算图中的参数之间的映射关系;结合上述对图5的描述进行举例,图5中示出了三个计算图,第一个计算图中的权重参数的取值来源于第三个计算图,则第一映射关系可以包括图5中第一个计算图中的权重参数与第三个计算图中的多个权重参数之间的一一映射关系,以指示第一个计算图中的权重参数的取值的获取位置等,此处举例均仅为方便理解本方案,不用于限定本方案。
305、对第一计算图进行表达转换,得到与第一计算图对应的第一中间计算表达。
本申请实施例中,步骤304为可选步骤,若执行步骤304,则第一通信设备在确定第一映射关系尚未建立完毕的情况下,可以对第一计算图进行表达转换(trace),得到与第一计算图对应的第一中间计算表达。若不执行步骤304,第一通信设备在确定第一计算图能够复用的情况下,可以直接对第一计算图进行表达转换,得到与第一计算图对应的第一中间计算表达。例如,步骤301获取到的第一计算图可以理解为高层语言形式的第一计算图,“与第一计算图对应的第一中间计算表达”也可以理解为逻辑描述形式的第一计算图。
306、根据第一中间计算表达,判断***中是否存储有与第一计算图对应的第一已编译代码,若判断结果为否,则进入步骤307;若判断结果为是,则进入步骤308。
本申请实施例中,第一通信设备在获取到与第一计算图对应的第一中间计算表达之后,可以根据第一中间计算表达,判断***中是否已经存储有与第一计算图对应的第一已编译代码;可选地,第一通信设备可以根据第一中间计算表达,判断***的内存中是否已经存储有第一已编译代码。本实现方式中,根据与第一计算图对应的IR,来确定***中是否存储有第一已编译代码,能够准确的确定出***中是否存在第一已编译代码,进而有利于顺利的从***中获取第一已编译代码,从而提高了第一计算图执行过程的流畅度。
具体的,步骤306可以包括:第一通信设备根据第一中间计算表达生成索引值,基于前述索引值判断第一通信设备的内存的预设位置中是否存在与第一计算图对应的第一已编译代码。若判断结果为否,也即确定***中不存在与第一计算图对应的第一已编译代码,则进入步骤307;若判断结果为是,也即确定***中已经存储有与第一计算图对应的第一已编译代码,则进入步骤308。
307、根据第一中间计算表达,利用编译器生成与第一计算图对应的第一已编译代码,在***中存储第一已编译代码。
本申请实施例中,第一通信设备在根据第一中间计算表达,确定***中不存在与第一计算图对应的第一已编译代码的情况下,可以根据第一中间计算表达,利用编译器生成与第一计算图对应的第一已编译代码,并在***中存储第一已编译代码,例如,将与第一计算图对应的第一已编译代码写入第一通信设备的内存的预设位置中。本实现方式中,在***中不存在第一已编译代码的情况下,在生成了第一已编译代码之后,会在***中存储第一已编译代码,从而在下一次获取到第一计算图之后,就能直接从***中获取到第一已编译代码,提高了本方案实现过程的流畅性。
可选地,第一通信设备还可以触发开始建立第一映射关系。进一步可选地,第一通信设备可以触发建立第一计算图中的多个权重参数和其他计算图中的多个权重参数之间的一一映射关系。具体的,在第一计算图能够复用,且第一通信设备确定内存的预设位置中不存在与第一计算图对应的第一已编译代码的情况下,代表当前轮次为确定第一计算图能够复用之后的第一轮训练操作,第一通信设备可以通过编译器生成与第一计算图对应的第一已编译代码,将与第一计算图对应的第一已编译代码存储至内存的预设位置;并建立第一计算图中的多个权重参数和其他计算图中的多个权重参数之间的映射关系,其中,其他计算图可以为第三计算图(也即在第一神经网络的N-1轮训练中采用的第一计算图),也可以为除了第三计算图之外的其他计算图,具体可以参阅步骤304中的描述。
为更直观地理解本方案,请参阅图9,图9为本申请实施例提供的第一计算图中的输入参数的一种示意图,第一计算图中的输入参数包括第一计算图中的权重参数以及第一计算图中的非训练参数,图9中示出了根据第一计算图执行的第一轮、第二轮和第三轮训练操作中,第一计算图中的权重参数以及第一计算图中的非训练参数的输入关系,图9中以第二轮以及后续轮次的训练操作所对应的第一计算图能够复用为例。其中,D0代表在第一轮训练操作中的第一神经网络,a0、d0和e0代表在第一轮训练操作中第一神经网络(也即D0)中的权重参数的取值。D1代表在第二轮训练操作中的第一神经网络,a1、d1和e1代表在第二轮训练操作中第一神经网络(也即D1)中的权重参数的取值,从D0指向D1的箭头代表:在第一轮训练操作的正向传播中得到的D0中的非训练参数的取值,被确定为在开始第二轮训练操作之前的D1中的非训练参数的值。D2代表在第三轮训练操作中的第一神经网络,a2、d2和e2代表在第三轮训练操作中的第一神经网络D2中的权重参数的取值,从D1指向D2的箭头代表:在第二轮训练操作的正向传播中得到的D1中的非训练参数的取值,被确定为在开始第三轮训练操作之前的D2中的非训练参数的值。
如图9中所示,第一轮训练操作以及后续轮次的训练操作中权重参数的获取方式相同;第一轮训练操作与第二轮训练操作中第一神经网络中非训练参数的获取方式不同,第二轮以及后续轮次的训练操作中第一神经网络中非训练参数的获取方式相同,则第一通信设备可以在确定第一计算图能够复用之后的第一轮训练操作(也即图9中的第二轮训练操作)中,可以触发开始建立第一映射关系,但在确定第一计算图能够复用的第二轮以及后续轮次的训练操作中,才能将第一映射关系建立完毕,应理解,图9中的示例仅为方便理解本方案,不用于限定本方案。
308、建立第一映射关系。
本申请实施例中,若第一计算图能够复用、第一通信设备确定本地内存的预设位置中存在与第一计算图对应的第一已编译代码,且***中不存在建立完毕的第一映射关系的情况下,可以建立第一映射关系,并在***中存储第一映射关系。
具体的,在一种实现方式中,第一通信设备可以直接建立第一计算图中的多个权重参数和其他计算图中的多个权重参数之间的一一映射关系,其他计算图可以为第三计算图(也即在第一神经网络的N-1轮训练中采用的第一计算图),也可以为除了第三计算图之外的其他计算图,具体可以参阅步骤304中的描述;以及,第一计算图中的多个非训练参数和第三计算图中的多个非训练参数之间的一一映射关系,以完成对第一映射关系的构建。
在另一种实现方式中,若在确定第一计算图能够复用之后的第一轮训练操作中已经建立了第一计算图中的多个权重参数和其他计算图中的多个权重参数之间的一一映射关系,则在步骤308中,第一通信设备可以建立第一计算图中的多个非训练参数和第三计算图中的多个非训练参数之间的一一映射关系,以完成对第一映射关系的构建。
可选地,若第一神经网络的多轮训练操作可以对应至少两个不同的第二计算图,也即第一神经网络的多轮训练操作中第一计算图可能会发生改变,则需要重新构建第一映射关系。或者,若第一通信设备执行的第一计算图没有发生改变,但第一计算图中的输入参数的获取位置发生改变,也需要重新构建第一映射关系。
309、从***中获取与第一计算图对应的第一已编译代码,第一已编译代码是在执行所述神经网络的第M轮训练中生成的,M为正整数,M小于N。
本申请实施例中,步骤304为可选步骤,若执行步骤304,且通过步骤304确定第一映射关系建立完毕的情况下入步骤309,第一通信设备可以从内存的预设位置中直接获取与第一计算图对应的第一已编译代码,第一已编译代码是在执行所述神经网络的第M轮训练中生成的,M为大于1的整数,M小于N。
参阅上述步骤307和308中的描述可知,由于第一通信设备在确定了第一计算图能够复用后执行的第一轮训练操作中,就会生成第一已编译代码,而第一映射关系能够在确定第一计算图能够复用后执行的第二轮以及后续轮次中建立完毕,所以若***中已经存储有第一映射关系,则大概率代表已经执行过“通过编译器生成与第一计算图对应的第一已编译代码”的步骤,从而可以直接从***中获取与第一计算图对应的第一已编译代码;也即通过判断第一映射关系是否建立完毕的方式来确定***中是否已经存在与第一计算图对应的第一已编译代码,不再需要生成与第一计算图对应的中间计算表达,并根据第一计算图表达查询是否存在与第一计算图对应的第一已编译代码,通过前述方案,降低了“判断***中是否存在与第一计算图对应的第一已编译代码”这一步骤的难度,减少了前述判断步骤带来的计算机资源的开销,且提高了前述判断步骤的速度,有利于加快第一神经网络的训练操作的执行速度。
若执行步骤304,且通过步骤304确定第一映射关系尚未建立完毕的情况下,可以通过步骤306进入步骤308进而进入步骤309;也即在确定第一映射关系尚未建立成功,且***中已经存储有第一已编译代码的情况下,通过步骤308执行了第一映射关系的构建操作,并从***各种获取第一已编译代码。
或者,若不执行步骤304,也可以通过步骤306进入308进而进入步骤309。也即在根据第一中间第一计算图表达,确定内存中的预设位置中存在与第一计算图对应的第一已编译代码的情况下,通过步骤308执行了第一映射关系的构建操作,并从***各种获取第一已编译代码。
本申请实施例中,在第一计算图能够复用,且第一映射关系尚未建立完毕的情况下,还会对第一计算图进行表达转换,得到与第一计算图对应的中间计算表达,并在根据第一计算表达确定已存储数据中存在与第一计算图对应的第一已编译代码的情况下,可以建立第一映射关系,并从已存储数据中直接获取前述第一已编译代码;而不是在第一映射关系尚未建立完毕的情况下,直接生成与第一计算图对应的中间计算表达,并利用编译器生成与第一计算图对应的第一已编译代码,节省了“根据与第一计算图对应的中间计算表达,生成与第一算图对应的第一已编译代码”这一步骤,不仅有利于减少计算机资源的开销,也加快了“获取与第一计算图对应的第一已编译代码”这一步骤的速度,有利于提高第一神经网络的训练操作的执行速度。
310、获取第一计算图的输入数据。
本申请实施例中,第一通信设备需要获取第一计算图的输入数据。其中,第一计算图的输入数据可以包括第一计算图第一计算图的输入参数的取值。具体的,第一通信设备可以从***中获取第一映射关系,第一映射关系用于指示第一计算图的输入参数的获取位置;根据第一映射关系,确定第一神经网络的第N轮训练中的第一计算图中的输入参数的取值。本实现方式中,***中还可以存储有第一映射关系,该第一映射关系指示第一计算图中的输入参数的获取位置,从而在执行第一已编译代码的过程中,可以直接根据第一映射关系确定第一计算图中的输入参数的取值,有利于提高第一计算图中的输入参数的取值的获取速度,进而有利于加快第一神经网络的训练操作的执行速度。
可选地,第一计算图的输入数据还可以包括输入第一神经网络中的训练样本,例如,若与第一计算图对应的一个或多个第一步骤能够实现训练样本在整个第一神经网络的正向传播过程,则第一计算图的输入数据中可以包括前述训练样本;又例如,若与第一计算图对应的一个或多个第一步骤中能够实现训练样本在第一神经网络的前n个神经网络层的正向传播的过程,则第一计算图的输入数据中也可以包括前述训练样本。
或者,第一计算图的输入数据还可以包括第一神经网络中的神经网络层生成的数据,例如,参阅图7和图8,由于整个第一神经网络的正向传播过程消耗的计算机资源过大,则与第一计算图对应的一个或多个第一步骤能够实现第一神经网络中间的多个神经网络层的运算,则第一计算图的输入数据可以包括第一神经网络某个神经网络层生成的数据。
或者,第一计算图的输入数据还可以包括与第一神经网络中的权重参数对应的梯度值等等,第一计算图的输入数据具体包括哪些类型的数据可以根据实际应用场景确定,此处举例仅为方便理解本方案,不用于限定本方案。
在执行神经网络的训练操作中的第三步骤之后得到的第二输出数据中存在第一计算图中至少一个输入数据的值,若执行第一神经网络的训练操作中的第三步骤时不是采用编译执行的方式,可选地,第一通信设备还可以获取执行第一神经网络的训练操作中的第三步骤时采用的第二数据结构,并根据第二数据结构的格式,获取第一计算图中至少一个输入数据的值,“神经网络的训练操作中的第三步骤”也可以称为“神经网络的训练操作中第一步骤”的上游任务。
进一步可选地,第一通信设备在从***中获取到第一映射关系之后,若根据第一映射关系,确定执行第一神经网络的训练操作中的第三步骤时生成的第二输出数据中存储第一计算图中至少一个输入参数的值;也即根据第一映射关系,确定第一计算图的输入参数的获取位置包括第二输出数据,则步骤310中,第一通信设备可以根据第二数据结构的格式,从第二输出数据中获取第一计算图中至少一个输入参数的值。
示例性地,上述第一计算图中的至少一个输入数据可以表现为张量,第一通信设备可以根据张量的第二数据结构来理解内存中存储的第二输出数据;示例性地,张量的第二数据结构可以用来描述在执行第一神经网络的第N轮训练操作中的第三步骤时采用的张量形式的数据成员的定义、第二输出数据在内存中的排布形式,或者在内存中存储第二输出数据时采用的内存对齐方式等,此处不对张量的第二数据结构所携带的信息的类型进行穷举。
例如,“在执行第一神经网络的第N轮训练操作中的第三步骤时采用的张量形式的数据成员的定义”可以包括在执行第一神经网络的第N轮训练操作中的第三步骤时采用的每个数据成员的数据类型,又例如,32位的浮点数(float32)和16位的整型(int16)为不同的数据类型;还可以包括前述每个数据成员所对应的张量的尺寸等,还可以定义每个数据成员的其他信息,此处不做穷举。示例性地,第二输出数据在内存中的排布形式可以包括张量形式的第二输出数据在内存中采用什么形式的存储结构,前述存储结构可以包括队列、栈、链表或其他存储结构等等,此处举例均仅为方便理解张量的数据结构这一概念,不用于限定本方案。
本申请实施例中,还可以获取神经网络的训练操作中的第一步骤的上游任务所采用的第二数据结构,并根据第二数据结构的格式从上游任务的输出数据中获取第一计算图的至少一个输入数据,从而避免了同样的数据在不同数据结构之间转换时所带来的计算机资源的开销。
进一步可选地,第一计算图的至少一个输入数据的读取位置和第二输出数据的存储位置一致。可选地,可以利用共享指针技术实现“第一计算图的至少一个输入数据在内存中的读取位置和第二输出数据在内存中的存储位置一致”。需要说明的是,第一通信设备在读取到第一计算图的至少一个输入数据之后,在执行第一已编译代码的过程中,不会对第二输出数据进行修改。本申请实施例中,第一计算图的至少一个输入数据的读取位置和第二输出数据的存储位置一致,从而避免了同样的数据在不同存储位置之间的拷贝,以进一步减少计算机资源的开销。
需要说明的是,本申请实施例不限定步骤310和步骤302至309中任意一个步骤之间的执行顺序,步骤310可以在步骤302至309中任意一个步骤之前或之后执行。
311、执行与第一计算图对应的第一已编译代码。
本申请实施例中,第一通信设备在根据第一计算图中的输入参数的取值,执行完成与第一计算图对应的第一已编译代码之后,能够生成第三输出数据,例如,前述第三输出数据可以为张量数据。需要说明的是,本申请实施例不限定步骤310和311的执行顺序,在执行第一已编译代码的过程中,还可以通过步骤310获取第一计算图中的至少一个输入参数的取值,并继续执行第一已编译代码,也即步骤310和311能够交叉执行。
可选地,若执行第一神经网络的第N轮训练操作中的第二步骤时不是采用编译执行的方式,在一种实现方式中,在执行步骤310之前,第一通信设备还可以获取执行神经网络的训练操作中的第二步骤时采用的第一数据结构,步骤311可以包括:第一通信设备生成第一数据结构的第一输出数据,第一输出数据可以和第三输出数据相同,或者,第一输出数据可以包括第三输出数据中的部分数据。其中,第一输出数据包括神经网络的训练操作的第二步骤的至少一个输入数据,“神经网络的训练操作的第二步骤”也可以称为“神经网络的训练操作中的第一步骤”的下游任务。
第一通信设备可以根据张量的第一数据结构来生成下游任务能够理解的第一输出数据,张量的第一数据结构可以用来描述在执行第一神经网络的第N轮训练操作中的第二步骤时采用的张量形式的数据成员的定义、第一输出数据在内存中的排布形式,或者在内存中存储第一输出数据时采用的内存对齐方式等,此处不做穷举。“第一数据结构”的含义与上述“第二数据结构”的含义类似,可以参阅上述描述理解,此处不做赘述。
本申请实施例中,还可以获取神经网络的训练操作中的第一步骤的下游任务所采用的第一数据结构,在执行与第一计算图对应的第一已编译代码时,生成第一数据结构的输出数据,则下游任务在访问第一输出数据时不再需要转换第一输出数据的数据结构,从而避免了同样的数据在不同数据结构之间转换时所带来的计算机资源的开销。
进一步可选地,第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致。可选地,可以利用共享指针技术实现“第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致”。需要说明的是,第一通信设备在执行完第一输出数据的写入操作之后,第一输出数据的所有权将转移至下游任务。
本申请实施例中,第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致,从而避免了同样的数据在不同存储位置之间的拷贝,以进一步减少计算机资源的开销。
在另一种实现方式中,第一通信设备生成目标数据结构的第一输出数据,将目标数据结构的第一输出数据转换为第一数据结构的输出数据,其中,第一输出数据包括神经网络的训练操作的第二步骤的至少一个输入数据,第一数据结构为神经网络的训练操作中的第二步骤时采用的数据结构,木耳边数据结构为神经网络的训练操作中的第一步骤时采用的数据结构。
可选地,第一通信设备在生成第三输出数据之后,需要执行第三输出数据的发送操作。例如,第一通信设备为NPU,第一计算图所对应的多个第一步骤包括在第一神经网络的第N轮训练操作中生成第一神经网络的权重参数的梯度值(也即第三输出数据的一个示例),NPU需要将生成的梯度值发送给CPU,也即需要执行第三输出数据的发送操作。
具体的,在一种实现方式中,与第一计算图对应的多个第一步骤不仅包括在第一神经网络的第N轮训练操作中生成第一神经网络的权重参数的梯度值,还包括执行第三输出数据的发送操作,则步骤311可以包括:第一通信设备执行与第一计算图对应的第一已编译代码,以生成第三输出数据,并发送第三输出数据。
在另一种实现方式中,步骤311可以包括:第一通信设备可以执行与第一计算图对应的第一已编译代码,以生成第三输出数据,并通过调用预设接口的方式执行第三输出数据的发送操作,预设接口可以为第三方提供的梯度通信库的接口。
则本应用场景中,“第三输出数据的发送操作”被作为“神经网络的训练操作中的第一步骤”的下游任务,也即“第三输出数据的发送操作”被作为“神经网络的训练操作的第二步骤”。在一种实现方式中,第一通信设备可以执行与第一计算图对应的第一已编译代码,以生成第一数据结构的第三输出数据,并通过调用预设接口的方式,发送第一数据结构的第一输出数据。可选地,可以通过共享指针技术,实现第一数据结构的第一输出数据的存储位置和预设接口读取第一输出数据的位置的一致。
为了更直观地理解本方案,请参阅图10,图10为本申请实施例提供的发送第一输出数据的一种流程示意图。图10中以执行步骤304为例,其中,通信设备1在获取到能够复用的计算图1之后,判断是否存在与计算图1中的参数对应的第一映射关系,若判断结果为是,则从已存储数据中获取与计算图1对应的第一已编译代码,并执行与计算图1对应的第一已编译代码。若判断结果为否,则Trace计算图1,得到计算图1所对应的中间计算表达,根据计算图1所对应的中间计算表达,判断内存的预设位置中是否存在与计算图1对应的编译后代码;若判断结果为否,通信设备1可以生成与计算图1对应的编译后代码,将与计算图1对应的编译后代码保存至内存的预设位置上,并建立第一映射关系,执行与计算图1对应的编译后代码;若判断结果为是,通信设备1可以建立第一映射关系,执行与计算图1对应的编译后代码。
图10中以通过调用第三方提供的预设接口的方式执行第一输出数据的发送操作,则通信设备1可以获取第三方执行第一输出数据的发送操作时采用的第一数据结构,在执行与计算图1对应的编译后代码之后,生成第一数据结构的第一输出数据,并调用接口以发送第一数据结构的第一输出数据。
通信设备2在接收到第一数据结构的第一输出数据之后,可以对第一输出数据的数据结构进行转换,并开始执行计算图2所对应的至少一个步骤。具体的,通信设备2在获取到能够复用的计算图2之后,判断是否存在与计算图2中的参数对应的第一映射关系,若判断结果为是,则从已存储数据中获取与计算图2对应的第一已编译代码,并执行与计算图2对应的第一已编译代码。若判断结果为否,则Trace计算图2,得到计算图2所对应的中间计算表达,根据计算图2所对应的中间计算表达,判断内存的预设位置中是否存在与计算图2对应的编译后代码;若判断结果为否,通信设备2可以生成与计算图2对应的编译后代码,将与计算图2对应的编译后代码保存至内存的预设位置上,并建立第一映射关系,执行与计算图2对应的编译后代码;若判断结果为是,通信设备2可以建立第一映射关系,执行与计算图2对应的编译后代码。需要说明的是,图10中示出了分别在通信设备1和通信设备2上执行第一计算图的过程,以及通信设备1和通信设备2之间的数据交互过程,图10中的示例仅为方便理解本方案,不用于限定本方案。
本申请实施例中,提供了神经网络的训练操作中的第一步骤的下游任务的具体例子,通过调用预设接口的形式实现第一输出数据的通信,方便快捷;且生成第一数据结构的第一输出数据,避免了第一输出数据在不同数据结构之间的转换,提高了第一输出数据的发送过程的效率。
在另一种实现方式中,第一通信设备可以执行与第一计算图对应的第一已编译代码,以生成目标数据结构的第三输出数据,根据目标数据结构的第三输出数据生成第一数据结构的第一输出数据,并通过调用预设接口的方式,发送第一数据结构的第一输出数据。
需要说明的是,在图3对应的实施例中,仅以步骤301至311的执行主体均为第一通信设备为例,在实际应用场景中,步骤301至311也可以由至少两个通信设备共同实现。例如,步骤301至302与步骤303至311可以由不同的通信设备执行,结合图5示出的架构图进行举例,可以由CPU执行步骤301至302,若CPU确定第一计算图能够复用,则可以通过编译器生成与第一计算图对应的第一已编译代码,向每个NPU发送第一信息、第一计算图以及第一计算图所对应的第一已编译代码,第一信息用于指示NPU采用编译执行的方式来实现与第一计算图对应的一个或多个第一步骤。若CPU确定第一计算图不能够复用,则可以向每个NPU发送第三信息以及第一计算图,第三信息用于指示NPU采用解释执行的方式来实现与第一计算图对应的一个或多个第一步骤。在其他应用场景中,步骤301至311的执行主体还可以存在其他分配形式,此处不再一一进行列举,步骤301至311中每个步骤的执行主体可以结合实际应用场景灵活确定,本申请实施例中不进行限定。
二、由云端设备和终端设备联合执行对第一神经网络的训练操作
本申请实施例中,在由云端设备和终端设备联合执行对第一神经网络的训练操作的场景中,在一种实现方式中,由终端设备执行“通过编译器生成与第一计算图对应的第一已编译代码”的步骤,则终端设备执行神经网络的训练方法的具体实现方式可以参阅图3对应的实施例中的描述,此处不做赘述。
在另一种实现方式中,“与第一计算图对应的第一已编译代码”由云端设备发送给终端设备,具体的,请参阅图11,图11为本申请实施例提供的神经网络的训练方法的又一种流程示意图,本申请实施例提供的神经网络的训练方法可以包括:
1101、获取第一计算图,第一计算图是与神经网络的第N轮训练对应的一个或多个计算图中的一个。
本申请实施例中,终端设备获取第一计算图,与第一神经网络的第N轮训练对应一个或多个计算图,前述一个或多个计算图中包括第一计算图,也即第一计算图是与神经网络的第N轮训练对应的一个或多个计算图中的一个。具体的,步骤1101可以包括:终端设备接收云端设备发送的第一计算图,云端设备生成第一计算图的方式以及第一计算图的概念可以参阅图3对应实施例中步骤301中的描述,此处不做赘述。或者,终端设备生成第一计算图,终端设备生成第一计算图的方式可以参阅图3对应实施例中步骤301中的描述,此处不做赘述。
1102、判断第一计算图是否能够复用,若判断结果为否,则进入步骤1103;若判断结果为是,则进入步骤1104。
本申请实施例中,步骤1102为可选步骤,若执行步骤1102,则在一种实现方式中,终端设备执行步骤1102的具体实现方式,可以参阅图2对应实施例中步骤202中的描述,此处不做赘述。在另一种实现方式中,终端设备接收云端设备发送的第一计算图和第四信息,第四信息指示该第一计算图是否能够复用,则终端设备可以根据接收到的第四信息,判断第一计算图是否能够复用。
1103、通过解释执行的方式执行第一神经网络的第N轮训练操作中的至少一个第一步骤。
本申请的一些实施例中,终端设备在确定第一计算图不能够复用后,可以通过解释执行的方式执行第一神经网络的第N轮训练操作中的至少一个第一步骤,执行步骤1103的具体实现方式,可以参阅图3对应实施例中步骤303中的描述,此处不做赘述。
需要说明的是,步骤1103为可选步骤,终端设备接收云端设备发送的第一计算图和第四信息时,还可以接收云端设备发送的与第一计算图对应的编译后代码,终端设备在确定第一计算图不能够复用后,可以执行云端设备发送的前述与第一计算图对应的编译后代码,并在执行结束后,删除前述与第一计算图对应的编译后代码。
1104、获取第一计算图的输入数据。
本申请实施例中,终端设备可以获取第一计算图的输入数据,其中,前述输入数据可以包括训练样本以及第一计算图中参数的取值,前述输入数据包括的训练样本可以由终端设备从已存储数据中获取。
针对“第一计算图中参数的取值”的具体获取方式,在一种实现方式中,第一计算图中的输入参数的取值可以由云端设备发送给终端设备。在另一种实现方式中,第一计算图中的输入参数的取值可以由终端设备在执行第一神经网络的第N-1轮训练操作时生成;具体的,终端设备可以根据第一映射关系,确定第一计算图中参数的取值。其中,第一映射关系可以由云端设备生成后发送给终端设备,也可以由终端设备生成,“第一映射关系”的概念以及“第一映射关系”的具体生成方式可以参阅上述图3对应实施例中的描述,此处不做赘述。
1105、从***中获取与第一计算图对应的第一已编译代码,并执行与第一计算图对应的第一已编译代码,在执行第一神经网络的第M***作时执行过前述第一已编译代码。
本申请的一些实施例中,云端设备可以在确定第一计算图能够复用的第一轮训练操作中,向终端设备发送与第一计算图对应的第一已编译代码;对应的,终端设备在确定第一计算图能够复用的情况下,将与该第一计算图所对应的第一已编译代码存储至***中。
终端设备在获取到第一计算图的输入数据之后,可以从***中获取与第一计算图对应的第一已编译代码,并执行与第一计算图对应的第一已编译代码,步骤1105的具体实现方式可以参阅图3对应实施例中步骤311中的描述,此处不做赘述。需要说明的是,本申请实施例不限定步骤1104和步骤1105的执行顺序,可以交叉执行步骤1104和1105,也即在执行第一已编译代码的过程中,可以再获取第一计算图的输入数据,并继续执行第一已编译代码。
本实现方式中,在执行第一神经网络的第N轮训练时,在获取到第一计算图之后,由于在执行第一神经网络的第M轮训练时已经生成了与第一计算图对应的第一已编译代码,则可以确定***中已经存储有与第一计算图对应的第一已编译代码,并直接执行第一已编译代码,也即在第一神经网络的第N轮训练操作中,不再需要执行将第一计算图转换为中间计算表示,以及基于中间计算表示得到第一已编译代码的操作,节省了对计算机资源的开销。
在图1至图11所对应的实施例的基础上,为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体参阅图12,图12为本申请实施例提供的神经网络的训练装置的一种结构示意图,神经网络的训练装置1200包括获取模块1201、确定模块1202和执行模块1203,其中,获取模块1201,用于获取第一计算图,其中,与神经网络的第N轮训练对应一个或多个计算图,一个或多个计算图中包括第一计算图,也即第一计算图是与神经网络的第N轮训练对应一个或多个计算图中的一个,N为正整数;确定模块1202,用于确定***中已存储与第一计算图对应的第一已编译代码,其中,第一已编译代码是在执行神经网络的第M轮训练中生成的,M为正整数,M小于N;执行模块1203,用于执行第一已编译代码。
在一种可能的设计中,执行模块1203,具体用于:从***中获取第一映射关系,第一映射关系用于指示第一计算图的输入参数的获取位置;根据第一映射关系,确定第N轮中的第一计算图中的输入参数的取值;根据输入参数的取值,执行第一已编译代码。
在一种可能的设计中,请参阅图13,图13为本申请实施例提供的神经网络的训练装置的另一种结构示意图,神经网络的训练装置1200还包括:建立模块1204,用于若***中不存在第一映射关系,建立第一映射关系。
在一种可能的设计中,第一计算图为可复用的计算图。
在一种可能的设计中,确定模块1202,具体用于:对第一计算图进行表达转换,得到与第一计算图对应的中间计算表达IR;根据IR,确定***中已存储第一已编译代码。
在一种可能的设计中,请参阅图13,在执行神经网络的第M轮训练时,获取模块1201,还用于获取第一计算图,根据第一计算图生成第一已编译代码;神经网络的训练装置1200还包括:存储模块1205,用于在***中存储第一已编译代码。
在一种可能的设计中,确定模块1202,具体用于若***中已存储第一映射关系,则确定***中已存储第一已编译代码,第一映射关系用于指示第一计算图的输入参数的获取位置。
在一种可能的设计中,请参阅图13,第一计算图与神经网络的第N轮训练中的第一步骤对应;神经网络的训练装置1200还包括:生成模块1206,用于生成第一输出数据,其中,第一输出数据采用第一数据结构,第一输出数据包括神经网络的训练操作中的第二步骤的至少一个输入数据,第一数据结构为执行神经网络的训练操作中的第二步骤时采用的数据结构,神经网络的训练操作包括神经网络的第N轮训练;
和/或,
执行模块1203,具体用于:根据第二数据结构的格式获取第一计算图的至少一个输入数据,其中,神经网络的训练操作中的第三步骤的第二输出数据中存在第一计算图的至少一个输入数据,第二数据结构为执行神经网络的训练操作中的第三步骤时采用的数据结构。
在一种可能的设计中,第一输出数据的存储位置和第二步骤的至少一个输入数据的读取位置一致;和/或,第一计算图的至少一个输入数据的读取位置和第二输出数据的存储位置一致。
在一种可能的设计中,请参阅图13,神经网络的训练装置1200还包括:发送模块1207,用于通过调用预设接口的方式,发送第一输出数据,神经网络的训练操作中的第二步骤包括发送第一输出数据,第一数据结构为执行第一输出数据的发送操作时采用的数据结构。
在一种可能的设计中,请参阅图13,神经网络的训练装置1200还包括:拆分模块1208,用于根据用户输入的预设策略,对第二计算图执行拆分操作得到与神经网络的第N轮训练对应的一个或多个计算图;或者,神经网络的训练装置1200还包括:接收模块1209,用于接收用户输入的与神经网络的第N轮训练对应的一个或多个计算图。
需要说明的是,神经网络的训练装置1200中各模块/单元之间的信息交互、执行过程等内容,与本申请中图3至图11对应的各个方法实施例基于同一构思,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
接下来介绍本申请实施例提供的一种通信设备,前述通信设备用于执行本申请提供的神经网络的训练方法,在一种应用场景中,该通信设备可以表现为服务器,具体的,请参阅图14,图14是本申请实施例提供的通信设备一种结构示意图,具体的,通信设备由一个或多个服务器实现,通信设备1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)1422(例如,一个或一个以上处理器)和存储器1432,一个或一个以上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储设备)。其中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对通信设备中的一系列指令操作。更进一步地,中央处理器1422可以设置为与存储介质1430通信,在通信设备1400上执行存储介质1430中的一系列指令操作。
通信设备1400还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458,和/或,一个或一个以上操作***1441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
本申请实施例中,中央处理器1422,用于执行图3至图10对应实施例中的通信设备执行的神经网络的训练方法。需要说明的是,中央处理器1422执行前述各个步骤的具体方式,与本申请中图3至图10对应的各个方法实施例基于同一构思,其带来的技术效果与本申请中图3至图10对应的各个方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
在另一种应用场景中,该通信设备可以表现为终端设备,请参阅图15,图15为本申请实施例提供的通信设备的一种结构示意图,通信设备具体可以表现为虚拟现实VR设备、手机、平板、笔记本电脑、智能穿戴设备、监控数据处理设备或者雷达数据处理设备等,此处不做限定。具体的,通信设备包括:接收器1501、发射器1502、处理器1503和存储器1504(其中通信设备中的处理器1503的数量可以一个或多个,图15中以一个处理器为例),其中,处理器1503可以包括应用处理器15031和通信处理器15032。在本申请的一些实施例中,接收器1501、发射器1502、处理器1503和存储器1504可通过总线或其它方式连接。
存储器1504可以包括只读存储器和随机存取存储器,并向处理器1503提供指令和数据。存储器1504的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccess memory,NVRAM)。存储器1504存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
处理器1503控制通信设备的操作。具体的应用中,通信设备的各个组件通过总线***耦合在一起,其中总线***除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线***。
上述本申请实施例揭示的方法可以应用于处理器1503中,或者由处理器1503实现。处理器1503可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1503中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1503可以是通用处理器、数字信号处理器(digital signal processing,DSP)、微处理器或微控制器,还可进一步包括专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器1503可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1504,处理器1503读取存储器1504中的信息,结合其硬件完成上述方法的步骤。
接收器1501可用于接收输入的数字或字符信息,以及产生与通信设备的相关设置以及功能控制有关的信号输入。发射器1502可用于通过第一接口输出数字或字符信息;发射器1502还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器1502还可以包括显示屏等显示设备。
本申请实施例中,在一种情况下,处理器1503,用于执行图11对应实施例中的终端设备执行的神经网络的训练方法。需要说明的是,处理器1503中的应用处理器15031执行前述各个步骤的具体方式,与本申请中图11对应的各个方法实施例基于同一构思,其带来的技术效果与本申请中图11对应的各个方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述图3至图10所示实施例描述的方法中通信设备所执行的步骤,或者,使得计算机执行如前述图11所示实施例描述的方法中终端设备所执行的步骤。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图3至图10所示实施例描述的方法中通信设备所执行的步骤,或者,使得计算机执行如前述图11所示实施例描述的方法中终端设备所执行的步骤。
本申请实施例提供的第一通信设备或终端设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使芯片执行上述图3至图11所示实施例描述的神经网络的训练方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体的,请参阅图16,图16为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 160,NPU 160作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路160,通过控制器1604控制运算电路1603提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1603内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路1603是二维脉动阵列。运算电路1603还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1603是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1602中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1601中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1608中。
统一存储器1606用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(Direct Memory Access Controller,DMAC)1605,DMAC被搬运到权重存储器1602中。输入数据也通过DMAC被搬运到统一存储器1606中。
BIU为Bus Interface Unit即,总线接口单元1610,用于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer,IFB)1609的交互。
总线接口单元1610(Bus Interface Unit,简称BIU),用于取指存储器1609从外部存储器获取指令,还用于存储单元访问控制器1605从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1606或将权重数据搬运到权重存储器1602中或将输入数据数据搬运到输入存储器1601中。
向量计算单元1607包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如Batch Normalization(批归一化),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1607能将经处理的输出的向量存储到统一存储器1606。例如,向量计算单元1607可以将线性函数和/或非线性函数应用到运算电路1603的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1607生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1603的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1604连接的取指存储器(instruction fetch buffer)1609,用于存储控制器1604使用的指令;
统一存储器1606,输入存储器1601,权重存储器1602以及取指存储器1609均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,与上述第一计算图对应的运算可以由运算电路1603或向量计算单元1607执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述第一方面方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,通信设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、通信设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、通信设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的通信设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (25)
1.一种神经网络的训练方法,其特征在于,在执行所述神经网络的第N轮训练时,所述方法包括:
获取第一计算图,所述第一计算图是与所述神经网络的第N轮训练对应的一个或多个计算图中的一个,所述N为正整数;
确定***中已存储与所述第一计算图对应的第一已编译代码,其中,所述第一已编译代码是在执行所述神经网络的第M轮训练中生成的,所述M为正整数,所述M小于所述N;
执行所述第一已编译代码。
2.根据权利要求1所述的方法,其特征在于,所述执行所述第一已编译代码,包括:
从所述***中获取第一映射关系,所述第一映射关系用于指示所述第一计算图的输入参数的获取位置;
根据所述第一映射关系,确定所述第N轮中的第一计算图中的输入参数的取值;
根据所述输入参数的取值,执行所述第一已编译代码。
3.根据权利要求2所述的方法,其特征在于,在所述获取第一映射关系之前,包括:
若所述***中不存在所述第一映射关系,建立所述第一映射关系。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一计算图为可复用的计算图。
5.根据权利要求1-4所述的方法,其特征在于,所述确定***中已存储与所述第一计算图对应的第一已编译代码,包括:
对所述第一计算图进行表达转换,得到与所述第一计算图对应的中间计算表达IR;
根据所述IR,确定所述***中已存储所述第一已编译代码。
6.根据权利要求1-5任一项所述的方法,其特征在于,在执行所述神经网络的第M轮训练时,所述方法还包括:
获取所述第一计算图,根据所述第一计算图生成第一已编译代码;
在所述***中存储所述第一已编译代码。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述确定***中已存储与所述第一计算图对应的第一已编译代码,包括:
若所述***中已存储第一映射关系,则确定所述***中已存储所述第一已编译代码,所述第一映射关系用于指示所述第一计算图的输入参数的获取位置。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一计算图与所述神经网络的第N轮训练中的第一步骤对应;
所述执行所述第一已编译代码之后,所述方法还包括:生成第一输出数据,其中,所述第一输出数据采用第一数据结构,所述第一输出数据包括所述神经网络的训练操作中的第二步骤的至少一个输入数据,所述第一数据结构为执行所述神经网络的训练操作中的第二步骤时采用的数据结构,所述神经网络的训练操作包括所述神经网络的第N轮训练;
和/或,
所述执行所述第一已编译代码,包括:根据第二数据结构的格式获取所述第一计算图的至少一个输入数据,其中,所述神经网络的训练操作中的第三步骤的第二输出数据中存在所述第一计算图的所述至少一个输入数据,所述第二数据结构为所述执行所述神经网络的训练操作中的第三步骤时采用的数据结构。
9.根据权利要求8所述的方法,其特征在于,
所述第一输出数据的存储位置和所述第二步骤的所述至少一个输入数据的读取位置一致;和/或,
所述第一计算图的至少一个输入数据的读取位置和所述第二输出数据的存储位置一致。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
通过调用预设接口的方式,发送所述第一输出数据,所述神经网络的训练操作中的所述第二步骤包括发送所述第一输出数据,所述第一数据结构为执行所述第一输出数据的发送操作时采用的数据结构。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述获取第一计算图之前,所述方法还包括:
根据用户输入的预设策略,对第二计算图执行拆分操作得到所述与所述神经网络的第N轮训练对应的所述一个或多个计算图;或者,
接收用户输入的所述与所述神经网络的第N轮训练对应的所述一个或多个计算图。
12.一种神经网络的训练装置,其特征在于,在执行所述神经网络的第N轮训练时,所述装置包括:
获取模块,用于获取第一计算图,所述第一计算图是与所述神经网络的第N轮训练对应的一个或多个计算图中的一个,所述N为正整数;
确定模块,用于确定***中已存储与所述第一计算图对应的第一已编译代码,其中,所述第一已编译代码是在执行所述神经网络的第M轮训练中生成的,所述M为正整数,所述M小于所述N;
执行模块,用于执行所述第一已编译代码。
13.根据权利要求12所述的装置,其特征在于,所述执行模块,具体用于:
从所述***中获取第一映射关系,所述第一映射关系用于指示所述第一计算图的输入参数的获取位置;
根据所述第一映射关系,确定所述第N轮中的第一计算图中的输入参数的取值;
根据所述输入参数的取值,执行所述第一已编译代码。
14.根据权利要求13所述的装置,其特征在于,
所述装置还包括:建立模块,用于若所述***中不存在所述第一映射关系,建立所述第一映射关系。
15.根据权利要求12-14任一项所述的装置,其特征在于,所述第一计算图为可复用的计算图。
16.根据权利要求12-15所述的装置,其特征在于,所述确定模块,具体用于:
对所述第一计算图进行表达转换,得到与所述第一计算图对应的中间计算表达IR;
根据所述IR,确定所述***中已存储所述第一已编译代码。
17.根据权利要求12-16任一项所述的装置,其特征在于,在执行所述神经网络的第M轮训练时,所述获取模块,还用于获取所述第一计算图,根据所述第一计算图生成第一已编译代码;
所述装置还包括:存储模块,用于在所述***中存储所述第一已编译代码。
18.根据权利要求12-15任一项所述的装置,其特征在于,
所述确定模块,具体用于若所述***中已存储第一映射关系,则确定所述***中已存储所述第一已编译代码,所述第一映射关系用于指示所述第一计算图的输入参数的获取位置。
19.根据权利要求12-18任一项所述的装置,其特征在于,所述第一计算图与所述神经网络的第N轮训练中的第一步骤对应;
所述装置还包括:生成模块,用于生成第一输出数据,其中,所述第一输出数据采用第一数据结构,所述第一输出数据包括所述神经网络的训练操作中的第二步骤的至少一个输入数据,所述第一数据结构为执行所述神经网络的训练操作中的第二步骤时采用的数据结构,所述神经网络的训练操作包括所述神经网络的第N轮训练;
和/或,
所述执行模块,具体用于:根据第二数据结构的格式获取所述第一计算图的至少一个输入数据,其中,所述神经网络的训练操作中的第三步骤的第二输出数据中存在所述第一计算图的所述至少一个输入数据,所述第二数据结构为所述执行所述神经网络的训练操作中的第三步骤时采用的数据结构。
20.根据权利要求19所述的装置,其特征在于,
所述第一输出数据的存储位置和所述第二步骤的所述至少一个输入数据的读取位置一致;和/或,
所述第一计算图的至少一个输入数据的读取位置和所述第二输出数据的存储位置一致。
21.根据权利要求19所述的装置,其特征在于,所述装置还包括:
发送模块,用于通过调用预设接口的方式,发送所述第一输出数据,所述神经网络的训练操作中的所述第二步骤包括发送所述第一输出数据,所述第一数据结构为执行所述第一输出数据的发送操作时采用的数据结构。
22.根据权利要求12-21任一项所述的装置,其特征在于,
所述装置还包括:拆分模块,用于根据用户输入的预设策略,对第二计算图执行拆分操作得到所述与所述神经网络的第N轮训练对应的所述一个或多个计算图;或者,
所述装置还包括:接收模块,用于接收用户输入的所述与所述神经网络的第N轮训练对应的所述一个或多个计算图。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序,当所述程序在计算机上运行时,使得计算机执行如权利要求1至11中任一项所述的方法。
24.一种通信设备,其特征在于,包括处理器和存储器,所述处理器与所述存储器耦合,
所述存储器,用于存储程序;
所述处理器,用于执行所述存储器中的程序,使得所述通信设备执行如权利要求1至11中任一项所述的方法。
25.一种计算机程序产品,其特征在于,所述计算机程序产品包括程序,当所述程序在计算机上运行时,使得计算机执行如权利要求1至11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2023/099689 WO2024016894A1 (zh) | 2022-07-22 | 2023-06-12 | 一种神经网络的训练方法以及相关设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022108710037 | 2022-07-22 | ||
CN202210871003 | 2022-07-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117474067A true CN117474067A (zh) | 2024-01-30 |
Family
ID=89624387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211391730.XA Pending CN117474067A (zh) | 2022-07-22 | 2022-11-08 | 一种神经网络的训练方法以及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117474067A (zh) |
-
2022
- 2022-11-08 CN CN202211391730.XA patent/CN117474067A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284823B (zh) | 一种运算装置及相关产品 | |
CN107545303B (zh) | 用于稀疏人工神经网络的计算装置和运算方法 | |
WO2022022274A1 (zh) | 一种模型训练方法及装置 | |
CN111401406B (zh) | 一种神经网络训练方法、视频帧处理方法以及相关设备 | |
CN112699991A (zh) | 用于加速神经网络训练的信息处理的方法、电子设备和计算机可读介质 | |
EP4303767A1 (en) | Model training method and apparatus | |
CN108171328B (zh) | 一种神经网络处理器和采用其执行的卷积运算方法 | |
CN111414915B (zh) | 一种文字识别方法以及相关设备 | |
CN113065997B (zh) | 一种图像处理方法、神经网络的训练方法以及相关设备 | |
US11443173B2 (en) | Hardware-software co-design for accelerating deep learning inference | |
EP3561732A1 (en) | Operation apparatus and method for artificial neural network | |
EP4401007A1 (en) | Neural network acquisition method, data processing method and related device | |
CN114359289A (zh) | 一种图像处理方法及相关装置 | |
CN115238909A (zh) | 一种基于联邦学习的数据价值评估方法及其相关设备 | |
CN114169393A (zh) | 一种图像分类方法及其相关设备 | |
CN114490116A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116739154A (zh) | 一种故障预测方法及其相关设备 | |
CN115907041A (zh) | 一种模型训练方法及装置 | |
CN115795025A (zh) | 一种摘要生成方法及其相关设备 | |
CN114707643A (zh) | 一种模型切分方法及其相关设备 | |
CN117474067A (zh) | 一种神经网络的训练方法以及相关设备 | |
CN115623242A (zh) | 一种视频处理方法及其相关设备 | |
CN112766475B (zh) | 处理部件及人工智能处理器 | |
CN115879524A (zh) | 一种模型训练方法及其相关设备 | |
WO2024016894A1 (zh) | 一种神经网络的训练方法以及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |