CN115146757A - 一种神经网络模型的训练方法及装置 - Google Patents

一种神经网络模型的训练方法及装置 Download PDF

Info

Publication number
CN115146757A
CN115146757A CN202110346062.8A CN202110346062A CN115146757A CN 115146757 A CN115146757 A CN 115146757A CN 202110346062 A CN202110346062 A CN 202110346062A CN 115146757 A CN115146757 A CN 115146757A
Authority
CN
China
Prior art keywords
neural network
training
accelerator
network layer
ith
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
Application number
CN202110346062.8A
Other languages
English (en)
Inventor
陈仙萍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110346062.8A priority Critical patent/CN115146757A/zh
Publication of CN115146757A publication Critical patent/CN115146757A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

本申请提供了一种神经网络模型的训练方法及装置,该神经网络模型的训练方法包括:部分或全部的神经网络层中的每个神经网络层被划分为S个部分,训练***包括的S个加速器分别训练对应的神经网络层的一部分,每个加速器在本地只保存每一个神经网络层的训练输出结果的一部分。本申请通过将训练输出结果进行分布式存储,有效优化了训练输出结果占用的显存,提高了神经网络模型的算力,进而提高了集群训练性能。

Description

一种神经网络模型的训练方法及装置
技术领域
本申请涉及人工智能领域,并且更具体地,涉及一种神经网络模型的训练方法及装置。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
在人工智能领域,通过对神经网络模型进行训练能够得到性能较优的目标神经网络模型以执行各种数据处理工作。在单个加速器的计算能力和内存大小无法满足神经网络模型训练的情况下,可以采用分布式并行训练的方式训练神经网络模型。其中,分布式并行训练包括数据并行的训练方式,即集群中的每个加速器分别基于不同的训练样本计算相同的神经网络模型的参数梯度,对各个加速器得到的参数梯度进行参数梯度同步,并根据同步后的参数梯度更新该神经网络模型的参数。若一个服务器中的加速器的数量无法满足神经网络模型的训练,可以利用多个服务器中的加速器共同完成该神经网络模型的训练。然而,目前神经网络模型训练并行方案不能有效优化特征值占用的显存,计算通信串行,导致大量的算力损失,集群线性度低,影响集群训练性能。
因此,如何有效优化特征值占用的显存,提高神经网络模型的算力,进而提高集群训练性能成为一个亟需解决的技术问题。
发明内容
本申请提供一种神经网络模型的训练方法及装置,能够有效优化特征值占用的显存,提高神经网络模型的算力,进而提高集群训练性能。
第一方面,提供了一种神经网络模型的训练方法,该方法可以适用于第一神经网络模型的训练***,包括S个加速器,第一神经网络模型包括L个神经网络层,S为大于1的正整数,L为正整数,其特征在于,其中,第一神经网络层被划分为S个部分,第一神经网络层为所述L个神经网络层中的的至少两个神经网络层,S个部分与所述S个加速器一一对应,每个加速器用于训练所对应的部分,该方法可以包括:
S个加速器中的第i个加速器对L个神经网络层中的第1个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果,i∈[1,S];
当第j个神经网络层属于第一神经网络层时,第i个加速器与S个加速器中除所述第i个加速器以外的加速器进行传输处理,以获取第一训练输出结果,所述第一训练输出结果为第j-1个神经网络层的训练输出结果中除所述第i个加速器保存的部分训练输出结果以外的的训练输出结果,j∈[2,L];
第i个加速器根据第一训练输出结果和第i个加速器保存的第二训练输出结果,对第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果,所述第二训练输出结果为所述第i个加速器保存的第j-1个神经网络层的部分训练输出结果。
应理解,上述方法可以适用于神经网络模型训练中的前向训练和反向训练。
应理解,第一神经网络层可以包括至少两个神经网络层,每层都被划分为S个部分,可以是按照行方向进行切分,即可以按照N维度切分。也即,神经网络模型中,可以是每个神经网络层都被切分,也可以是只有一部分被切分,也可以是一部分按照N维度切分,一部分按照K维度(列方向)切分,本申请对此不作限定。
应理解,某加速器训练完成某神经网络层后,可以保存训练的输出结果,也可以保存该神经网络层的训练输出结果的一部分。
应理解,加速器与训练部分的对应关系可以是,某加速器,比如第一个加速器,训练第一个神经网络层时,可以训练第一个神经网络层的第一部分,也可以训练第一个神经网络层的其他部分,在训练第二个神经网络层时,可以是训练第二个神经网络层的第一部分,也可以是训练第二个神经网络层的其他部分,以此类推,该对应关系可以是预定义的,本申请对此不作限定。
还应理解,训练输出结果可以是特征值,也可以是权重等参数。
该方法通过将每层的训练输出结果分布式存储在每个加速器上,能够有效优化训练结果占用的显存,从而提高神经网络模型的算力,进而提高集群训练性能。
结合第一方面,在第一方面的某些实现方式中,当第j个神经网络层属于所述L个神经网络层中除第一神经网络层以外的神经网络层时,第i个加速器根据第二训练输出结果对第j个神经网络层中对应于第i个加速器的部分进行训练,并保存训练输出结果。
也即,当某个神经网络层不是按照N维度切分时,可以将该加速器计算的前一个神经网络层的部分训练输出结果作为入参,计算该加速器对应的本神经网络层的部分。
结合第一方面,在第一方面的某些实现方式中,S个加速器中的第i个加速器根据训练样本对L个神经网络层的第1个神经网络层中对应于第i个加速器的部分进行训练,并保存训练的输出结果。
也即,首个神经网络层的训练的入参是训练样本。
结合第一方面,在第一方面的某些实现方式中,所述传输处理包括全局收集。
应理解,在前向训练时,加速器可以通过全局收集处理,或者全局规约处理,获取其他加速器保存的该个神经网络层其他部分的训练输出结果。在反向训练时,加速器可以通过全局收集处理获取。
结合第一方面,在第一方面的某些实现方式中,所述第一加速器属于第一模型并行组,所述第一模型并行组中的多个加速器以模型并行的方式训练所述神经网络模型。
第二方面,提供了一种神经网络模型的训练装置,用于训练第一神经网络层模型,第一神经网络层模型的训练***包括S个加速器,第一神经网络层模型包括L个神经网络层,S为大于1的正整数,L为正整数,其特征在于,其中,第一神经网络层被划分为S个部分,第一神经网络层包括L个神经网络层中的的至少两个神经网络层,S个部分与S个加速器一一对应,每个加速器用于训练所对应的部分,训练装置包括处理单元,用于对L个神经网络层的第1个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果,i∈[1,S];
当第j个神经网络层属于第一神经网络层时,处理单元进行传输处理,以获取第一训练输出结果,所述第一训练输出结果为第j-1个神经网络层的训练输出结果中除所述第i个加速器保存的部分训练输出结果以外的的训练输出结果,j∈[2,L];
处理单元根据第一训练输出结果和第i个加速器保存的第二训练输出结果,对第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果,所述第二训练输出结果为所述第i个加速器保存的第j-1个神经网络层的部分训练输出结果。
结合第二方面,在第二方面的某些实现方式中,当第j个神经网络层属于L个神经网络层中除第一神经网络层以外的神经网络层时,处理单元根据第二训练输出结果对第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果。
结合第二方面,在第二方面的某些实现方式中处理单元具体用于对L个神经网络层的第1个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果。
结合第二方面,在第二方面的某些实现方式中,传输处理包括全局收集。
结合第二方面,在第二方面的某些实现方式中,训练装置属于第一模型并行组,第一模型并行组中的多个加速器以模型并行的方式训练神经网络模型。
应理解,在上述第一方面中对相关内容的扩展、限定、解释和说明也适用于第二方面中相同的内容。
第三方面,提供了一种神经网络模型的训练装置,该训练装置可以包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令来执行第一方面中任一可能的实现方式或所有可能的实现方式中所述的方法。
上述第三方面中的处理器既可以是中央处理器(central processing unit,CPU),也可以是CPU与神经网络运算处理器的组合,这里的神经网络运算处理器可以包括图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-networkprocessing unit,NPU)和张量处理器(tensor processing unit,TPU)等等。其中,TPU是谷歌(***)为机器学习全定制的人工智能加速器专用集成电路,也可以是华为的神经网络处理器,本申请对此不做限定。
第四方面,提供了一种计算机可读存储介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行第一方面中任一可能的实现方式或所有可能的实现方式中所述的方法。
第五方面,提供了一种芯片,该芯片可以包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行第一方面中任一可能的实现方式或所有可能的实现方式中所述的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第二方面中的任意一种实现方式中的第一加速器所执行的方法。
上述芯片具体可以是现场可编程门阵列(field-programmable gate array,FPGA)或者专用集成电路(application-specific integrated circuit,ASIC)。
第六方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面中任一可能的实现方式或所有可能的实现方式中所述的方法。
附图说明
图1是本申请实施例提供的一种人工智能主体框架示意图;
图2为本申请实施例提供的一种集合通信的示意图;
图3为数据并行的训练方式的示意图;
图4为模型并行的训练方式的示意图;
图5为混合并行的训练方式的示意图;
图6为本申请实施例提供的一种***架构的示意图;
图7为本申请实施例提供的一种芯片的硬件结构示意图;
图8为本申请实施例提供的一种服务器的结构示意图;
图9为本申请实施例提供的一种***架构的示意图;
图10为本申请实施例提供的一种训练***的示意图;
图11为本申请实施例提供的一种神经网络模型的训练方法的示意性流程图;
图12为本申请实施例提供的一种神经网络模型的示意图;
图13为本申请实施例提供的一种神经网络模型的前向计算的示意图;
图14为本申请实施例提供的一种神经网络模型的反向计算的示意图;
图15为本申请实施例提供的另一种神经网络模型的示意图;
图16为本申请实施例提供的另一种神经网络模型的前向计算和反向计算的示意图;
图17是本申请实施例提供的神经网络模型的一种训练装置的示意性框图;
图18是本申请实施例提供的神经网络模型的另一种训练装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能***总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“信息技术(information technology,IT)价值链”(垂直轴)两个维度对上述人工智能主题框架进行详细的阐述。
“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到***的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施:
基础设施为人工智能***提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。
基础设施可以通过传感器与外部沟通,基础设施的计算能力可以由智能芯片提供。
这里的智能芯片可以是中央处理器(central processing unit,CPU)、神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphics processingunit,GPU)、专门应用的集成电路(application specific integrated circuit,ASIC)以及现场可编程门阵列(field programmable gate array,FPGA)等硬件加速芯片。
基础设施的基础平台可以包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。
例如,对于基础设施来说,可以通过传感器和外部沟通获取数据,然后将这些数据提供给基础平台提供的分布式计算***中的智能芯片进行计算。
(2)数据:
基础设施的上一层的数据用于表示人工智能领域的数据来源。该数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有***的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理:
上述数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等处理方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能***中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力:
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用***,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用:
智能产品及行业应用指人工智能***在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
本申请实施例可以应用在人工智能中的很多领域,例如,智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市等领域。
具体地,本申请实施例可以具体应用在自动驾驶、图像分类、图像检索、图像语义分割、图像质量增强、图像超分辨率和自然语言处理等需要使用(深度)神经网络的领域。
下面对相册图片分类和平安城市这两种应用场景进行简单的介绍。
相册图片分类:
当用户在终端设备(例如,手机)或者云盘上存储了大量的图片时,通过对相册中图像进行识别可以方便用户或者***对相册进行分类管理,提升用户体验。
利用本申请实施例的神经网络模型的训练方法,能够获得或者优化适用于相册分类的神经网络。接下来就可以利用该神经网络模型对图片进行分类,从而为不同的类别的图片打上标签,便于用户查看和查找。另外,这些图片的分类标签也可以提供给相册管理***进行分类管理,节省用户的管理时间,提高相册管理的效率,提升用户体验。
平安城市场景下的属性识别:
平安城市场景下,需要进行多种属性识别,例如行人属性识别和骑行属性识别,深度神经网络凭借着其强大的能力在多种属性识别中发挥着重要的作用。通过采用本申请实施例的神经网络模型的训练方法,能够获得或优化适用于平安城市场景下进行属性识别的神经网络模型。接下来就可以利用该神经网络模型对输入的道路画面进行处理,从而识别出道路画面中的不同的属性信息。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:
Figure BDA0003000844010000061
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:
Figure BDA0003000844010000062
其中,
Figure BDA0003000844010000063
是输入向量,
Figure BDA0003000844010000064
是输出向量,
Figure BDA0003000844010000065
是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量
Figure BDA0003000844010000066
经过如此简单的操作得到输出向量
Figure BDA0003000844010000067
由于DNN层数多,系数W和偏移向量
Figure BDA0003000844010000068
的数量也比较多。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为
Figure BDA0003000844010000069
上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为
Figure BDA00030008440100000610
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(5)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新神经网络模型中的参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
(6)集合通信逻辑
集合通信逻辑包括全局收集(all-gather)、全局规约(all-reduce)和分散规约(reduce-scatter)等多种通信方式。
all-gather指的是当数据分布在多个进程中,将多个进程的数据聚合至每个进程中。多个进程也可以理解为多个设备。
图2中的进程0(rank 0)、进程1(rank 1)、进程2(rank2)和进程3(rank3)表示4个不同的进程,即4个不同的设备;A0、A1、A2和A3表示rank0上存储的数据,B0、B1、B2和B3表示rank1上存储的数据,C0、C1、C2和C3表示rank2上存储的数据,D0、D1、D2和D3表示rank3上存储的数据。
例如,如图2的(a)所示,每个设备中均存储有完整数据的一部分,通过all-gather从其他设备获取本地没有存储的数据,从而在本地保存完整数据。
all-reduce指的是将多个进程中的数据按照指定的映射函数进行运算,将得到的结果保存在该多个进程中,即每个进程均保存相同的结果。示例性地,映射函数可以为求和函数、最大值函数、最小值函数或平均值函数等。
例如,如图2的(b)图所示,指定的映射函数为求和函数,将4个进程中的数据进行求和,并将求和结果保存在每个进程中。
reduce-scatter指的是将多个进程中的数据按照指定的映射函数进行运算,将得到的结果中的不同部分分别保存至不同的进程中,即每个进程保存该运算结果的一部分。若进程数为N,即集合通信的设备数量为N,则每个进程中保存的数据量为运算结果对应的数据量的1/N。示例性地,映射函数可以为求和函数、最大值函数、最小值函数或平均值函数等。
例如,如图2所示的(c)图所示,指定的映射函数为求和函数,将4个进程中的数据进行求和,并将求和结果按照4个进程各自负责的数据分为4个部分,将该4部分分别保存至对应的进程中。
(7)分布式机器学习
分布式机器学习是利用计算机集群,使机器学习算法更好地从大数据中训练出性能优良的大模型。
分布式机器学习包括数据并行、模型并行和混合并行。
数据并行(data parallel,DP)指的是多个加速器均训练完整的神经网络模型,但多个加速器中的每个加速器只训练数据集中的一部分训练数据。
在数据并行的方案中,每个设备中保存一份模型参数,训练数据被划分后分配至各个设备中。各个设备根据各自分配的训练数据,对模型进行训练,即各个设备基于相同的模型参数完成前向计算和反向计算得到参数梯度,各个设备得到的参数梯度同步后更新模型的参数。各自被分配的训练数据通常是一个批量大小(batchsize)。
示例性地,图3示出了一种数据并行的训练方式的示意图。如图3所示的4个加速器分别为加速器810、加速器820、加速器830和加速器840,4个加速器上均加载神经网络模型的完整的模型参数,将训练数据分为4个批次,4个加速器分别基于不同的批次计算得到该神经网络模型的参数梯度,将各个加速器计算得到的参数梯度进行同步后,基于同步后的参数梯度更新神经网络模型的模型参数。
模型并行(model parallel,MP)指的是多个加速器上分别使用全部训练数据训练神经网络模型中的一部分。
在模型并行的方案中,每个设备中保存模型的一部分参数,各个设备负责同一模型的不同部分的计算,共同协作完成模型的训练。即各个加速器可以使用相同的训练数据基于不同的模型参数进行前向计算和反向计算,得到参数梯度,然后基于该参数梯度更新神经网络模型的模型参数。
示例性地,图4示出了一种模型并行的训练方法的示意图。如图4所示的四个加速器分别为加速器910、加速器920、加速器930和加速器940。将完整的神经网络模型划分为4个部分,4个加速器分别负责不同的部分。例如,神经网络模型的不同层被分配到不同的加速器,或者神经网络模型的同一层内的不同参数被分配到不同的加速器。图4中的4个加速器上分别加载该神经网络模型的不同部分的模型参数,并分别基于相同的训练数据计算不同部分的模型参数对应的参数梯度,进而根据不同部分的模型参数对应的参数梯度分别更新对应的模型参数。
混合并行指的是在集群中,既包括数据并行,也包括模型并行。这样能解决大规模训练的问题,又不会引入过多的通信开销,从而提高集群训练效率。
具体地,对集群中的多个加速器进行分组,得到多个模型并行组,组内的加速器进行模型并行,组间对应位置的加速器进行数据并行。也就是说,一个模型并行组内的多个加速器分别负责一个完整的神经网络模型的一部分,该多个加速器共同完成一个完整的神经网络模型的训练,例如,图4中所示的4个加速器即可视为一个模型并行组。
示例性地,图5示出了一种混合并行的训练方法的示意图。图5中的16个加速器Q0、Q1…Q15分为4组,即图5中的MP组1、MP组2、MP组3和MP组4,每组中的4个加速器采用模型并行的方式,4组之间采用数据并行的方式,即同一组中的加速器使用相同的训练数据,不同组的加速器使用不同的训练数据。MP组1和MP组2属于服务器1010,MP组3和MP组4属于服务器1020,即图5中的每个服务器中包括8个加速器。
4组之间采用数据并行的方式可以理解为,4组中对应位置的加速器采用数据并行。不同组中对应位置的加速器指的是不同组中负责训练神经网络模型的相同部分参数的加速器。
例如,Q0、Q4、Q8和Q12在4个模型并行组中均用于训练神经网络模型的第一部分参数,Q0、Q4、Q8和Q12即为4个组中对应位置的加速器。Q0、Q4、Q8和Q12之间采用数据并行的方式,即Q0、Q4、Q8和Q12分别使用不同的训练数据基于神经网络模型的第一部分参数执行前向计算和反向计算,得到参数梯度。将Q0、Q4、Q8和Q12上分别得到的参数梯度进行同步后,基于同步后的参数梯度更新Q0、Q4、Q8和Q12上的第一部分参数。
如图6所示,本申请实施例提供了一种***架构100。在图6中,数据采集设备160用于采集训练数据。针对本申请实施例的图像处理方法来说,训练数据可以包括训练图像以及训练图像对应的分类结果,其中,训练图像的结果可以是人工预先标注的结果。
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的原始图像进行处理,将输出的图像与原始图像进行对比,直到训练设备120输出的图像与原始图像的差值小于一定的阈值,从而完成目标模型/规则101的训练。
上述目标模型/规则101能够用于实现本申请实施例的图像处理方法。本申请实施例中的目标模型/规则101具体可以为神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则101可以应用于不同的***或设备中,如应用于图6所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)AR/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端等。在图6中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理图像。
预处理模块113和预处理模块114用于根据I/O接口112接收到的输入数据(如待处理图像)进行预处理,在本申请实施例中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储***150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储***150中。计算模块111使用目标模型/规则101对输入的数据进行处理,例如,在本申请实施例中,对输入的待处理图像进行处理,得到图像处理结果(例如,图像分类结果)。
最后,I/O接口112将处理结果,如上述得到的图像的分类结果返回给客户设备140,从而提供给用户。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图6中所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的输出结果,作为新的样本数据存入数据库130。
值得注意的是,图6仅是本申请实施例提供的一种***架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图6中,数据存储***150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储***150置于执行设备110中。
如图6所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本申请实施例中可以是本申请中的神经网络,具体的,本申请实施例构建的神经网络可以为CNN,深度卷积神经网络(deep convolutional neural networks,DCNN),循环神经网络(recurrent neural network,RNNS)等等。
图7为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器50。
该芯片可以被设置在如图6所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图6所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。神经网络中各层的算法均可在如图7所示的芯片中得以实现。
神经网络处理器NPU 50作为协处理器挂载到主中央处理器(central processingunit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路503内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)508中。
向量计算单元507可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现中,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器506用于存放输入数据以及输出数据。
存储单元访问控制器505(direct memory access controller,DMAC)将外部存储器中的输入数据存入输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)510,用于通过总线实现主CPU、DMAC和取指存储器509之间进行交互。
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令。
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random accessmemory,DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
其中,本申请实施例中的神经网络中各层的运算可以由运算电路503或向量计算单元507执行。
本申请实施例中的神经网络模型的训练方法可以是由多个加速器共同配合完成的。能够执行神经网络模型中各层的运算的设备均可以称为加速器。示例性地,加速器可以为图7所示的NPU 50,或者,加速器也可以为CPU,或者,加速器也可以包括CPU和NPU。
如图8所示,本申请实施例提供了一种服务器400。该服务器400可以作为如图6所示的执行设备110,用以完成计算模块111的计算工作。该服务器400也可以作为如图6所示的训练设备120,用以完成训练设备120的训练工作并输出目标模型/规则101。
服务器400包括网卡401、CPU 402和多个GPU。如图8所示,加速器可以包括GPU403、GPU404、GPU405等。图8所示的服务器中,GPU用于执行神经网络模型中各层的运算。在图8中,GPU也可以理解为加速器。应理解,图8中仅以GPU作为加速器作为示例,在实际应用中,加速器还可以为CPU、NPU或TPU等其他能够执行神经网络模型的各层运算的设备。例如,加速器可以为图7所示的NPU 50。本申请实施例对此不做限定。
应理解,图8中的设备的数量仅为示意,服务器400可以包括比图8所示的数量更多或更少数量的CPU、网卡以及GPU。还应理解,图8的架构只作为一种示例,比如,华为自研加速器与网卡可以集成在一个芯片上。图8不作为一种限定。
具体地,由CPU确定需要GPU进行计算的计算图以及训练样本,并下发至GPU中,由GPU按照计算图和对应的训练样本进行计算,并将计算结果反馈至CPU。
示例性地,可以通过软件优化目前CPU和GPU所执行的神经网络模型的训练方法以及通信流程,以实现本申请实施例中的神经网络模型的训练方法。例如,在CPU上部署神经网络模型分布式训练软件,由该软件生成并下发需要GPU计算的计算图和训练样本,加速器按照计算图和训练样本进行计算并反馈结果至CPU中。也就是说,本申请实施例的可以在现有的硬件的基础上通过软件的方式实现,具体地,在服务器中的CPU上运行,由CPU控制服务器中的GPU执行本申请实施例中的神经网络模型的训练方法。
如图9所示,本申请实施例提供了一种***架构300。该***架构包括本地设备301、本地设备302以及执行设备310和数据存储***350,其中,本地设备301和本地设备302通过通信网络与执行设备310连接。
执行设备310可以由一个或多个服务器实现。可选的,执行设备310可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备310可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备310可以使用数据存储***350中的数据,或者调用数据存储***350中的程序代码来实现本申请实施例的神经网络模型的训练方法。
具体地,在一种实现方式中,执行设备110中包括至少一个第一加速器,第一加速器可以执行以下过程:
第一加速器计算第一神经网络层的第一子特征值;
所述第一加速器在本地保存所述第一子特征值,且不保存第二子特征值,所述第一子特征值为第一特征值的一部分,所述第一特征值包括所述第一神经网络层的特征值,所述第二子特征值包括所述第一特征值中除所述第一子特征值以外的部分。
通过上述过程执行设备110能够获取一个训练好的神经网络,即目标神经网络,该目标神经网络可以用于图像分类或者进行图像处理等等。
用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备310进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备310进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
在一种实现方式中,本地设备301、本地设备302从执行设备310获取到目标神经网络的相关参数,将目标神经网络部署在本地设备301、本地设备302上,利用该目标神经网络进行图像分类或者图像处理等等。
在另一种实现中,执行设备310上可以直接部署目标神经网络,执行设备310通过从本地设备301和本地设备302获取待处理图像,并采用目标神经网络模型对待处理图像进行分类或者其他类型的图像处理。
需要注意的,执行设备310的所有功能也可以由本地设备实现。例如,本地设备301实现执行设备310的功能并为自己的用户提供服务,或者为本地设备302的用户提供服务。
上述执行设备310也可以为云端设备,此时,执行设备310可以部署在云端;或者,上述执行设备310也可以为终端设备,此时,执行设备310可以部署在用户终端侧,本申请实施例对此并不限定。
如图10所示,本申请实施例提供一种训练***700的结构示意图,该训练***700可以作为图9中的执行设备310,用以完成执行设备的训练工作得到目标神经网络模型,也可以作为图6中的训练设备120,用以完成训练设备120的训练工作并输出目标模型/规则101。
训练***700包括服务器710、服务器720和服务器730,服务器之间通过通信网络互连。
示例性地,通信网络可以由交换机(switch)构成。如图10所示,通信网络由交换机741、交换机742和交换机743构成。
服务器中可以包括一个或多个CPU和一个或多个加速器。例如,如图10所示,加速器可以为GPU。服务器710可以包括CPU 711、GPU 712、GPU 713和GPU 714。服务器720可以包括CPU 721、GPU 722、GPU 723和GPU 724。服务器730可以包括CPU 731、GPU 732、GPU 733和GPU 734。
应理解,图10中的设备的数量仅为示意,训练***700可以包括比图10所示的数量更多或更少数量的服务器、CPU、网卡以及GPU。还应理解,图10作为一种示例而非限定,加速器不局限于GPU,也可以是其他加速器,比如华为自研的加速器。
在单个设备的计算能力和内存大小无法满足神经网络训练的情况下,可以采用多个加速器构成的集群进行分布式并行训练。分布式并行训练包括数据并行训练,即集群中的每个加速器分别基于不同的训练样本对相同的神经网络模型进行梯度计算,基于各个加速器得到参数梯度进行参数梯度同步,并基于同步后的参数梯度更新该神经网络模型的参数。然而,该多个加速器可能位于多个服务器中,服务器之间的带宽较低,影响参数梯度同步过程中的数据传输速度,导致神经网络模型的训练效率降低。
在数据并行的训练方式下,模型越大,模型参数和模型参数梯度等信息占用的内存越大,每个加速器只能基于少量的训练样本训练神经网络模型,导致训练集群的线性度变差,集群有效性能降低。当模型过大,尤其是在单个加速器无法存储一个完整的模型参数时,可以采用模型并行的方式进行训练。但模型并行会给训练集群引入高昂的通信成本,降低集群有效性能。
混合并行的方案能够解决实现大模型的训练,同时不会引入过多的通信开销,一定程度上提高集群的训练效率。
混合并行模型中可以有两种切分方式,按照第一维度切分,单个加速器的入参可以是前一层的全部特征值,计算后输出对应的子特征值;按照第二维度切分,单个加速器的入参可以是前一层的部分特征值,经过计算输出本层神经网络对应的特征值。第一维度也可以被称为N维度,或者行方向;第二维度可以被称为K维度,或者列方向,本申请对此不作限定。
然而,混合并行的性能取决于模型并行的性能和数据并行的性能。在混合并行的训练方案中,模型并行组的规模越大,模型并行带来的通信开销越大。若模型并行组的规模过大,会导致通信开销过大,影响模型并行的性能,进而影响混合并行的总体性能。若模型并行组的规模较小,则能够减小模型并行带来的通信开销,保证混合并行中的模型并行的性能。或者说,可以控制模型并行组的规模保证混合并行中的模型并行的性能。然而,现有的模型并行算法只能减少参数的内存占用量,而特征值(feature)的内存占用量没有得到很好的优化,导致一次迭代只能训练少量的样本。对于算力很大的训练集群***来说一方面会导致大量的算力损失,另一方面会使模型的计算通信比降低,从而降低集群线性度和集群训练性能,对于大规模集群***这个问题尤为明显。
针对上述问题,本申请的一个实施例提出一种神经网络模型的训练方法1100,如图11所示,
1110:第i个加速器对所述L个神经网络层中的第1个神经网络层中对应于所述第i个加速器的部分进行训练,并保存训练输出结果;
1120:当第j个神经网络层属于第一神经网络层时,所述第i个加速器与所述S个加速器中除所述第i个加速器以外的加速器进行传输处理,以获取第一训练输出结果,所述第一训练输出结果为第j-1个神经网络层的S个部分中除所述第i个加速器对应的部分以外的部分的训练输出结果。
1130:所述第i个加速器根据所述第一训练输出结果和所述第i个加速器保存的第二训练输出结果,对所述第j个神经网络层中对应于第i个加速器的部分进行训练,并保存训练输出结果,所述第二训练输出结果为所述第i个加速器训练的第j-1个神经网络层的所述第i个加速器对应的部分的训练输出结果。
值得注意的是,本申请实施例中的神经网络模型并行算法包括切分算法,可以有两个切分维度,切分维度N(即第一维度)代表参数矩阵的行方向,切分维度K(即第二维度)代表参数矩阵的列方向。
应理解,第一加速器并未限定在某个加速器,可以是***中的任一加速器,第一神经网络层并未限定在某个神经网络层,可以是神经网络中的任一层。
应理解,本申请实施例可以应用于模型并行的神经网络模型,也可以应用于数据并行的神经网络模型,也可以应该于模型数据并行的混合并行神经网络模型,本申请对此不作限定。
还应理解,神经网络模型的训练流程基本包括前向计算和反向计算。
为了便于本申请技术方案的陈述,现以2个GPU构成MP group,如图12所示,整个神经网络模型在2个GPU之间做N维度模型并行为例,Device表示用于计算各类参数的设备,比如GPU。
为了便于描述,提前对相关定义做以下解释:N代表参数矩阵的行方向,K代表参数矩阵的列方向;
WL1 D1:N(1,2)K(1,4)是指存储在Device1上的L1层参数矩阵的子矩阵,子矩阵行下标从1到2,子矩阵列下标从1到4,这里下标从1开始标识;
FL1 D1:N(1,2)是指经过L1神经网络前向计算之后Device1上得到的输出向量F的子向量,该子向量的组成元素为f1~f2,根据矩阵乘法的原理可知,参数矩阵的N方向即行方向做了切分,计算得到F子向量,feature是样本经过神经网络处理提取的特征值。
以每一层神经网络都做N维度切分的神经网络模型为例,前向计算的流程可以如图13所示:
S1:GPU1计算得到L1层输出feature的一部分FL1 D1:N(1,2),并保存在GPU1本地,GPU2计算得到L1层输出feature的另一部分FL1 D2:N(3,4),并保存在GPU2本地;
S2:为了计算L2层输出feature,GPU1和GPU2之间做all gather操作,GPU1从GPU2获取FL1 D2:N(3,4),GPU2从GPU1获取FL1 D1:N(1,2),因此,GPU1和GPU2均获取了L1层输出的全部feature;
S3:基于L1层输出的全部feature FL1 D1:N(1,2)和FL1 D2:N(3,4),GPU1计算L2层输出feature的一部分FL2 D1:N(1,2),并保存在GPU1本地,GPU2计算得到L2层输出feature的另一部分FL2 D2:N(3,4),并保存在GPU2本地;
S4:GPU1只保存L1层输出feature的一部分FL1 D1:N(1,2)和L2层输出feature的一部分FL2 D1:N(1,2),释放从其他GPU(本实施例中为GPU2)获取的FL1 D2:N(3,4),GPU2只保存L1层输出feature的一部分FL1 D2:N(3,4)和L2层输出feature的一部分FL2 D2:N(3,4),释放从其他GPU(本实施例中为GPU1)获取的FL1 D1:N(1,2)
以此类推:
为了计算L3层输出feature,GPU1和GPU2之间做all gather操作,GPU1从GPU2获取FL2 D2:N(3,4),GPU2从GPU1获取FL2 D1:N(1,2),因此,GPU1和GPU2均获取了L2层输出的全部featureFL2 D1:N(1,2)和FL2 D2:N(3,4)
S5:基于L2层输出的全部feature(FL2 D1:N(1,2)和FL2 D2:N(3,4)),GPU1计算L3层输出feature的一部分FL3 D1:N(1,2),并保存在GPU1本地,GPU2计算得到L3层输出feature的另一部分FL3 D2:N(3,4),并保存在GPU2本地;
S6:GPU1保存L3层输出feature的一部分FL3 D1:N(1,2),释放从GPU2获取的FL2 D2:N(3,4),GPU2保存L3层输出feature的一部分FL3 D2:N(3,4),释放从GPU1获取的FL2 D1:N(1,2)
以此类推,直到前向所有层计算完成,此时,GPU1存储了每层输出feature的一部分:FL1 D1:N(1,2)、FL2 D1:N(1,2)、FL3 D1:N(1,2)…,GPU2存储了每层输出feature的另一部分:FL1 D2:N(3,4)、FL2 D2:N(3,4)、FL3 D2:N(3,4)…。
以每一层神经网络都做N维度切分的神经网络模型为例,对于做N维度切分的神经网络层,该层反向计算之前需要进行all-gather操作得到该层的完整输入feature(前一层的输出feature)。
另外,更优化的做法是每一层输入feature的all-gather传输可以和该层其后一层的反向计算同步(overlap),减少额外传输对于***性能的影响。
本实施例以反向计算优化数据流的方法来说明,可以如图14所述:
S1:为了反向计算L4层,GPU1和GPU2均需要获取L3层输出的全部featureFL3 D1:N(1,2)和FL3 D2:N(3,4),GPU1和GPU2之间做all gather操作,GPU1从GPU2获取L3层输出的部分feature FL3 D2:N(3,4),GPU2从GPU1获取L3层输出的部分feature FL3 D1:N(1,2)
S2:GPU1和GPU2进行L4层反向计算,同时,GPU1和GPU2之间做all gather操作,GPU1从GPU2获取L2层输出的部分feature FL2 D2:N(3,4),GPU2从GPU1获取L2层输出的部分feature FL2 D1:N(1,2)
S3:GPU1和GPU2完成L4层反向计算后,释放L3层全部feature FL3 D1:N(1,2)和FL3 D2:N(3,4)
以此类推:
S4:GPU1和GPU2进行L3层反向计算,同时,GPU1和GPU2之间做all gather操作,GPU1从GPU2获取L1层输出的部分feature FL1 D2:N(3,4),GPU2从GPU1获取L1层输出的部分feature FL1 D1:N(1,2)
S5:GPU1和GPU2完成L3层反向计算后,释放L2层全部feature FL2 D1:N(1,2)和featureFL2 D2:N(3,4)
以此类推,直至所有层完成反向计算。
本申请实施例将feature做了分布式存储(范围为模型并行组内),减少了每个Device的内存占用量,增大了单次迭代训练的样本数,可以显著改善AI集群训练性能。
本申请的另一实施例,以神经网络模型为NVIDIA模型为例,提供一种神经网络模型的训练方法:
如图15所示,以2个GPU构成MP group,整个神经网络模型在2个GPU之间做NVIDIA模型并行为例,L1层做N维度切分、L2做K维度切分,L3层做N维度切分、L4做K维度切分,……以此类推。
具体地,前向计算具体方法流程描述如图16中的(a)所示:
S1:GPU1计算得到L1层输出feature的一部分FL1 D1:N(1,2),并保存在GPU1本地,GPU2计算得到L1层输出feature的另一部分FL1 D2:N(3,4),并保存在GPU2本地;GPU1基于本地保存的FL1 D1:N(1,2)计算L2层输出feature FL2 D2:N(3,4),GPU2基于本地保存的FL1 D2:N(3,4)计算L2层输出feature。
S2:为了计算L3层输出feature,GPU1和GPU2之间对L2层输出feature FL2 D1:N(1,2)和FL2 D2:N(3,4)做all reduce计算,all reduce计算结果作为L2层输出的全部feature;
S3:基于步骤S2中的L2层输出的全部feature,GPU1计算L3层输出feature的一部分FL3 D1:N(1,2),并保存在GPU1本地,GPU2计算L3层输出feature的另一部分FL3 D1:N(1,2),并保存在GPU2本地;GPU1保存L2层输出的全部feature的一部分FL2 D1:N(1,2),释放其他部分,GPU2保存L2层输出feature的另一部分FL2 D2:N(3,4),释放其他部分;
S4:GPU1基于本地保存的feature FL3 D1:N(1,2)计算L4层输出,GPU2基于本地保存的FL3 D2:N(3,4)计算L4层输出feature。
以此类推,直到前向所有层计算完成,此时,GPU1存储了每层输出feature的一部分FL1 D1:N(1,2)、FL2 D1:N(1,2)、FL3 D1:N(1,2)…,GPU2存储了每层输出feature的另一部分:FL1 D2:N(3,4)、FL2 D2:N(3,4)、FL3 D2:N(3,4)…。
对于做N维度切分的神经网络层,该层反向计算之前需要进行all-gather操作得到该层的完整输入feature(前一层的输出feature)。
另外,更优化的做法是每一层输入feature的all-gather传输可以和该层其后一层的反向计算同步(overlap)起来,减少额外传输对于***性能的影响。
本实施例以反向计算优化数据流的方法来说明,可以如图16中的(b)所示:
S1:GPU1基于本地保存的L5层输出feature FL5 D1:N(1,2)进行L6层反向计算,GPU2基于本地保存的L5层输出feature FL5 D2:N(3,4)进行L6层反向计算;同时,GPU1和GPU2之间做allgather操作,GPU1从GPU2获取L4层输出的部分feature FL4 D1:N(1,2),GPU2从GPU1获取L4层输出的部分feature FL4 D2:N(3,4)
S2:GPU1和GPU2完成L6层反向计算后,释放L5层全部feature FL5 D1:N(1,2)和FL5 D2:N(3,4)
S3:GPU1和GPU2进行L5层反向计算,计算完成后,释放L4层全部feature FL4 D1:N(1,2)和FL4 D2:N(3,4)
以此类推:
S4:GPU1基于本地保存的L3层输出feature FL3 D1:N(1,2)进行L4层反向计算,GPU2基于本地保存的L3层输出feature FL3 D2:N(3,4)进行L4层反向计算;同时,GPU1和GPU2之间做allgather操作,GPU1从GPU2获取L2层输出的部分feature FL2 D2:N(3,4),GPU2从GPU1获取L2层输出的部分feature FL2 D1:N(1,2)
S5:GPU1和GPU2完成L4层反向计算后,释放L3层全部feature FL3 D1:N(1,2)和FL3 D2:N(3,4)
S6:GPU1和GPU2进行L3层反向计算,计算完成后,释放L2层全部feature FL2 D1:N(1,2)和FL2 D2:N(3,4)
以此类推,直至所有层完成反向计算。
应理解,反向训练中获取前一层特征值可以是在本次训练前获取,也可以是在对前一层反向训练的同时获取,如图16中的(c)所示,本申请对此不作限定。
本申请将feature做了分布式存储(范围为模型并行组内),减少了每个Device的内存占用量,增大了单次迭代训练的样本数,可以显著改善AI集群训练性能。
本文中描述的各个实施例可以为独立的方案,也可以根据内在逻辑进行组合,这些方案都落入本申请的保护范围中。
上述本申请提供的实施例中,分别从各个设备之间交互的角度对本申请实施例提供的方法进行了介绍。为了实现上述本申请实施例提供的方法中的各功能,网络设备或终端设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
下面结合图17至图18对本申请实施例的装置进行说明。应理解,下面描述的装置能够执行前述本申请实施例的方法,为了避免不必要的重复,下面在介绍本申请实施例的装置时适当省略重复的描述。
图17是本申请实施例的神经网络模型的训练装置的示意性框图。图17所示训练装置3000包括获取单元3010和处理单元3020。
获取单元3010和处理单元3020可以用于执行本申请实施例的神经网络模型的训练方法,具体地,可以用于执行方法1100。
处理单元3020用于计算第一神经网络层的第一子特征值,在本地保存所述第一子特征值,且不保存第二子特征值,所述第一子特征值为第一特征值的一部分,所述第一特征值包括所述第一神经网络层的特征值,所述第二子特征值包括所述第一特征值中除所述第一子特征值以外的部分。
可选地,作为一个实施例,训练装置属于第一模型并行组,第一模型并行组中的多个加速器以模型并行的方式训练神经网络模型。
以上只是示例,处理单元3020还可以执行其他功能,更详细的描述可以参考图11至16所示的方法实施例或其他方法实施例中的相关描述,这里不加赘述。
需要说明的是,上述训练装置3000以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。
例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
因此,在本申请的实施例中描述的各示例的单元,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图18是本申请实施例提供的神经网络模型的训练装置的硬件结构示意图。图18所示的训练装置5000(该装置5000具体可以是一种计算机设备)包括存储器5001、处理器5002、通信接口5003以及总线5004。其中,存储器5001、处理器5002、通信接口5003通过总线5004实现彼此之间的通信连接。
存储器5001可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器5001可以存储程序,当存储器5001中存储的程序被处理器5002执行时,处理器5002用于执行本申请实施例的神经网络模型的训练方法的各个步骤。具体地,处理器5002可以执行上文中图11所示的方法中的步骤S1120。
处理器5002可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请方法实施例的神经网络模型的训练方法。
处理器5002还可以是一种集成电路芯片,具有信号的处理能力,例如,可以是图7所示的芯片。在实现过程中,本申请的神经网络模型的训练方法的各个步骤可以通过处理器5002中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器5002还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器5001,处理器5002读取存储器5001中的信息,结合其硬件完成图17所示的训练装置中包括的单元所需执行的功能,或者,执行本申请方法实施例的图11所示的神经网络模型的训练方法。
通信接口5003使用例如但不限于收发器一类的收发装置,来实现装置5000与其他设备或通信网络之间的通信。例如,可以通过通信接口5003获取训练样本或参数梯度等。
总线5004可包括在装置5000各个部件(例如,存储器5001、处理器5002、通信接口5003)之间传送信息的通路。
应理解,本申请实施例中的处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
当上述通信装置为应用于神经网络的芯片时,该芯片实现上述方法实施例中神经网络的功能。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种神经网络模型的训练方法,所述第一神经网络模型的训练***包括S个加速器,所述第一神经网络模型包括L个神经网络层,S为大于1的正整数,L为正整数,其特征在于,其中,第一神经网络层中的每个神经网络层被划分为S个部分,所述第一神经网络层包括所述L个神经网络层中的至少两个神经网络层,所述S个部分与所述S个加速器一一对应,每个加速器用于训练所对应的部分,包括:
所述S个加速器中的第i个加速器对所述L个神经网络层中的第1个神经网络层中对应于所述第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果,i∈[1,S];
当第j个神经网络层属于第一神经网络层时,所述第i个加速器与所述S个加速器中除所述第i个加速器以外的加速器进行传输处理,以获取第一训练输出结果,所述第一训练输出结果为第j-1个神经网络层的训练输出结果中除所述第i个加速器保存的部分训练输出结果以外的训练输出结果,j∈[2,L];
所述第i个加速器根据所述第一训练输出结果和所述第i个加速器保存的第二训练输出结果,对所述第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果,所述第二训练输出结果为所述第i个加速器保存的第j-1个神经网络层的部分训练输出结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当第j个神经网络层属于所述L个神经网络层中除第一神经网络层以外的神经网络层时,所述第i个加速器根据所述第二训练输出结果对所述第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果。
3.根据权利要求1或2所述的方法,其特征在于,所述所述S个加速器中的第i个加速器对所述L个神经网络层的第1个神经网络层中的对应于所述第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果,i∈[1,S],包括:
所述S个加速器中的第i个加速器根据训练样本对所述L个神经网络层的第1个神经网络层中对应于所述第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述传输处理包括全局收集。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述训练为反向训练时,所述传输处理还包括全局规约。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述第i加速器属于第一模型并行组,所述第一模型并行组中的多个加速器以模型并行的方式训练所述神经网络模型。
7.一种神经网络模型的训练装置,用于训练第一神经网络模型,所述第一神经网络模型的训练***包括S个加速器,所述第一神经网络模型包括L个神经网络层,S为大于1的正整数,L为正整数,其特征在于,其中,第一神经网络层被划分为S个部分,所述第一神经网络层为所述L个神经网络层中的至少两个神经网络层,所述S个部分与所述S个加速器一一对应,每个加速器用于训练所对应的部分,所述训练装置包括:
处理单元,用于对所述L个神经网络层的第1个神经网络层中对应于所述第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果,i∈[1,S];
当第j个神经网络层属于第一神经网络层时,所述处理单元进行传输处理,以获取第一训练输出结果,所述第一训练输出结果为第j-1个神经网络层的训练输出结果中除所述第i个加速器保存的部分训练输出结果以外的训练输出结果,j∈[2,L];
所述处理单元根据所述第一训练输出结果和所述第i个加速器保存的第二训练输出结果,对所述第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果,所述第二训练输出结果为所述第i个加速器保存的第j-1个神经网络层的部分训练输出结果。
8.根据权利要求7所述的训练装置,其特征在于,当第j个神经网络层属于所述L个神经网络层中除第一神经网络层以外的神经网络层时,所述处理单元根据所述第二训练输出结果对所述第j个神经网络层中对应于第i个加速器的部分进行训练,并保存所述第j个神经网络层的部分训练输出结果。
9.根据权利要求7或8所述的训练装置,其特征在于,所述处理单元具体用于对所述L个神经网络层的第1个神经网络层中对应于所述第i个加速器的部分进行训练,并保存所述第1个神经网络层的部分训练输出结果。
10.根据权利要求7至9中任一项所述的训练装置,其特征在于,所述传输处理包括全局收集。
11.根据权利要求7至10中任一项所述的训练装置,其特征在于,所述训练为反向训练时,所述传输处理还包括全局规约。
12.根据权利要求7至11中任一项所述的训练装置,其特征在于,所述训练装置属于第一模型并行组,所述第一模型并行组中的多个加速器以模型并行的方式训练所述神经网络模型。
13.一种神经网络模型的训练装置,其特征在于,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令来执行权利要求1至6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如权利要求1至6中任一项所述的方法。
15.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求1至6中任一项所述的方法。
CN202110346062.8A 2021-03-31 2021-03-31 一种神经网络模型的训练方法及装置 Pending CN115146757A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110346062.8A CN115146757A (zh) 2021-03-31 2021-03-31 一种神经网络模型的训练方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110346062.8A CN115146757A (zh) 2021-03-31 2021-03-31 一种神经网络模型的训练方法及装置

Publications (1)

Publication Number Publication Date
CN115146757A true CN115146757A (zh) 2022-10-04

Family

ID=83404460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110346062.8A Pending CN115146757A (zh) 2021-03-31 2021-03-31 一种神经网络模型的训练方法及装置

Country Status (1)

Country Link
CN (1) CN115146757A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117892769A (zh) * 2024-03-15 2024-04-16 之江实验室 神经网络训练方法、显存调度方法、***、设备和产品

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117892769A (zh) * 2024-03-15 2024-04-16 之江实验室 神经网络训练方法、显存调度方法、***、设备和产品
CN117892769B (zh) * 2024-03-15 2024-06-11 之江实验室 神经网络训练方法、显存调度方法、***、设备和产品

Similar Documents

Publication Publication Date Title
CN110175671B (zh) 神经网络的构建方法、图像处理方法及装置
CN112418392A (zh) 一种神经网络构建方法以及装置
WO2022042713A1 (zh) 一种用于计算设备的深度学习训练方法和装置
CN112215332B (zh) 神经网络结构的搜索方法、图像处理方法和装置
WO2022052601A1 (zh) 神经网络模型的训练方法、图像处理方法及装置
CN113011575A (zh) 神经网络模型更新方法、图像处理方法及装置
WO2022001805A1 (zh) 一种神经网络蒸馏方法及装置
CN113570029A (zh) 获取神经网络模型的方法、图像处理方法及装置
CN110222718B (zh) 图像处理的方法及装置
CN114492723A (zh) 神经网络模型的训练方法、图像处理方法及装置
CN111797881B (zh) 图像分类方法及装置
CN111612215A (zh) 训练时间序列预测模型的方法、时间序列预测方法及装置
CN111368972A (zh) 一种卷积层量化方法及其装置
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
CN111340190A (zh) 构建网络结构的方法与装置、及图像生成方法与装置
WO2023280113A1 (zh) 数据处理方法、神经网络模型的训练方法及装置
CN111797882A (zh) 图像分类方法及装置
CN115081588A (zh) 一种神经网络参数量化方法和装置
CN113128285A (zh) 一种处理视频的方法及装置
CN113065575A (zh) 一种图像处理方法及相关装置
CN111652349A (zh) 一种神经网络的处理方法及相关设备
WO2022227024A1 (zh) 神经网络模型的运算方法、训练方法及装置
CN114298289A (zh) 一种数据处理的方法、数据处理设备及存储介质
CN115146757A (zh) 一种神经网络模型的训练方法及装置
WO2023071658A1 (zh) Ai模型的处理方法、运算方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination