CN113505883A - 一种神经网络训练方法以及装置 - Google Patents

一种神经网络训练方法以及装置 Download PDF

Info

Publication number
CN113505883A
CN113505883A CN202110603464.1A CN202110603464A CN113505883A CN 113505883 A CN113505883 A CN 113505883A CN 202110603464 A CN202110603464 A CN 202110603464A CN 113505883 A CN113505883 A CN 113505883A
Authority
CN
China
Prior art keywords
model
training
hyper
sub
super
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
CN202110603464.1A
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 CN202110603464.1A priority Critical patent/CN113505883A/zh
Publication of CN113505883A publication Critical patent/CN113505883A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • 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)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Machine Translation (AREA)

Abstract

本申请公开了人工智能领域的一种神经网络训练方法以及装置,用于通过在资源约束条件的约束下进行同质搜索,减少搜索空间的大小,高效地搜索得到符合需求的模型。该方法包括:获取超预训练语言模型;获取资源约束条件以及超参数搜索空间,资源约束条件指示针对模型占用的资源的约束,超参数搜索空间指示模型的超参数的范围;在资源约束条件的约束下从超参数搜索空间中搜索出目标模型的结构,目标模型的至少两层网络层的超参数相同;对目标模型进行训练,得到训练后的目标模型。

Description

一种神经网络训练方法以及装置
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络训练方法以及装置。
背景技术
目前大规模预训练语言模型成为了神经网络训练领域的主导模型,在几乎所有的自然语言理解任务上大大超越了之前的模型。这类模型基于先进的转化器Transformer的结构,在大规模语料(如10G到100G)中通过自监督预训练任务训练得到。但由于这些模型需要庞大的计算资源且推断时间慢,如何将它部署到实际生产环境成为目前的技术挑战。
通常,可以通过模型搜索的方法去构建预训练语言模型或者神经翻译模型,这些方式将改变Transformer的结构,引入结构不同的组件,因此搜索空间和训练代价都巨大,得到最终模型的效率低。
发明内容
本申请提供一种神经网络训练方法以及装置,用于通过在资源约束条件的约束下进行同质搜索,减少搜索空间的大小,高效地搜索得到符合需求的模型。
有鉴于此,第一方面,本申请提供一种神经网络训练方法,包括:获取超预训练语言模型;获取资源约束条件以及超参数搜索空间,资源约束条件指示针对模型占用的资源的约束,超参数搜索空间指示模型的超参数的范围;在资源约束条件的约束下从超参数搜索空间中搜索出目标模型的结构,目标模型的至少两层网络层的超参数相同;对目标模型进行训练,得到训练后的目标模型。
因此,本申请实施方式中,搜索得到的子模型的至少两层网络层的超参数相同,从而需要构建的超参数搜索空间更小,搜索子模型的效率也更高,从而可以高效地搜索得到符合需求的目标模型。且搜索得到的目标模型为同质结构,即至少两层网络层的超参数相同,结构简单,可以在更多的场景中部署该模型,即本申请提供的方法可以应用于多种场景中,泛化能力强。
在一种可能的实施方式中,目标模型的每一层网络层的超参数相同。因此,本申请实施方式中,最终得到的目标模型的各个网络层具有相同的超参数,得到了同质的模型,进而所需的超参数搜索空间的范围也就更小,可以高效地搜索得到满足资源约束条件的模型。
在一种可能的实施方式中,前述的获取超预训练语言模型,可以包括:首先构建神经网络,得到未训练的初始模型;将训练集分为多个子集;从初始模型中采集子模型,得到多个第一子模型;使用多个子集并行对多个第一子模型进行训练,得到超预训练语言模型。
因此,在本申请实施方式中,可以使用训练集并行对初始模型中的子模型进行训练,从而可以提高初始模型的训练效率,更高效地得到超预训练语言模型。
在一种可能的实施方式中,前述的使用多个子集并行对多个第一子模型进行训练,得到超预训练语言模型,可以包括:将多个子集和多个第一子模型分发至多个计算节点,以在多个计算节点中计算多个第一子模型的梯度;根据多个第一子模型的梯度更新初始模型的参数,得到超预训练语言模型。
因此,本申请实施方式中,可以将多个子集和对应的子模型分发至多个计算节点,从而使多个计算节点可以并行计算各个子模型的梯度,从而提高对初始模型的训练效率,高效地得到训练后的模型。
可选地,前述的计算节点可以包括服务器、个人电脑、处理器、进程或者线程等具有处理能力的节点。
在一种可能的实施方式中,前述的根据多个子模型的梯度更新初始模型的参数,得到超预训练语言模型,可以包括:融合多个第一子模型的梯度,得到融合梯度;根据融合梯度更新初始模型的参数,得到超预训练语言模型。
本申请实施方式中,在分别计算得到多个子模型的梯度之后,可以融合该多个子模型的梯度,并根据融合梯度对初始模型进行更新。因此,可以通过并行的方式高效地计算出各个子模型的梯度,然后基于融合梯度对完整的初始模型进行更新,从而可以高效地完成对初始模型的训练,并得到输出效果更好的模型。
可选地,融合多个第一子模型的梯的方式具体可以包括加权融合、求和或者求平均等方式。
在一种可能的实施方式中,前述的在资源约束条件的约束下从超参数搜索空间中搜索出目标模型的结构,可以包括:在资源约束条件的约束下,从超参数搜索空间中搜索得到至少一个模型结构,至少一个模型结构中每个模型结构对应的模型的至少两层网络层的超参数相同;从超预训练语言模型中采集与至少一个模型结构对应的至少一个第二子模型;根据至少一个第二子模型从至少一个模型结构中筛选出输出结果符合预设条件的模型结构,得到目标模型的结构。可以理解为,首先从超参数搜索空间中搜索得到满足资源约束条件的至少一个模型结构,而不同模型结构的结构参数可能不相同,如深度或者宽度等不同,不同模型结构对应的模型的输出效果也可能不相同,因此可以进一步地从该至少一个模型中筛选出输出效果更好的模型结构来作为目标模型的模型结构。
本申请实施方式中,可以在资源约束条件的约束下搜索得到多个子模型,并从该多个子模型中筛选出输出效果更好的子模型作为目标模型,从而可以得到满足资源约束条件且输出效果更好的目标模型。
在一种可能的实施方式中,前述的从超预训练语言模型中采集与至少一个模型结构对应的至少一个第二子模型可以包括:从初始模型中采集子模型,得到至少一个第三子模型;从至少一个第三子模型中的每个第三子模型的每层网络层中采集至少一个模块,得到至少一个第二子模型。
本申请实施方式中,为进一步降低模型的复杂度,在从初始模型中采集到子模型之后,可以从子模型的网络层中采集一个或者多个模块,从而得到模型结构更小的子模型,进一步提高训练效率。通常,当超参数搜索空间中设置的超参数范围在预先设定的范围内时,子模型中每层网络层的结构类似,因此,从子模型的每层网络层中抽取一个或多个模块,在减小模型结构的同时,也可以实现和原始模型接近的输出效果,从而使模型可以部署于更多设备中,提高模型的泛化能力。
在一种可能的实施方式中,前述的在资源约束条件的约束下,从超参数搜索空间中搜索出至少一个模型结构,可以包括:从超参数搜索空间中搜索得到多个模型结构;获取多个模型结构对应的模型在硬件中运行的多个运行结果;从多个模型结构中筛选出运行结果符合资源约束条件的模型结构,得到至少一个模型结构。
本申请实施方式中,可以通过在硬件中运行子模型的方式来测试模型是否符合资源约束条件,从而得到满足资源约束条件的模型。
在一种可能的实施方式中,前述的根据至少一个第二子模型从至少一个模型结构中筛选出输出结果符合预设条件的模型结构,得到目标模型的结构,可以包括:使用测试集对至少一个第二子模型的输出结果进行评估,得到每个第二子模型的评估结果;根据每个第二子模型的评估结果从至少一个模型结构中筛选出符合预设条件的模型的结构;将符合预设条件的模型的结构,作为目标模型的结构。
本申请实施方式中,可以对搜索得到的子模型的输出效果进行评估,从而得到输出效果更好的目标模型。
在一种可能的实施方式中,前述的根据符合预设条件的模型的结构,得到目标模型,可以包括:根据符合预设条件的模型的结构,构建得到目标模型;或者,从超预训练语言模型中采集对应的子模型,得到目标模型。
本申请实施方式中,在确定目标模型的结构之后,可以构建目标模型,也可以从超预训练语言模型中采集输出效果更好的目标模型,可以适应多种场景,更灵活地得到目标模型。
在一种可能的实施方式中,超预训练语言模型的每一层网络层包括多头注意力网络,多头注意力网络包括多个注意力模块,每个注意力模块具有多个维度的参数,多头注意力网络用于计算多个输入向量之间的关联度,并根据关联度得到包括上下文语义的输出向量;
前述的从超预训练语言模型中采集与至少一个模型结构对应的至少一个第二子模型,具体可以包括:从超预训练语言模型的每一层网络层的多头注意力网络中的多个注意力模块中采集至少一个注意力模块,以及从多个维度的参数中采集至少一个维度的参数,得到多个第二子模型;或者,从超预训练语言模型的每一层网络层的多头注意力网络中的每个注意力模块中的每个维度采集至少一种参数,得到多个第二子模型。
因此,本申请实施方式中,在从采集子模型时,可以从多头注意力网络中的每个头中采集部分参数,也可以是采集部分头的全部参数,从而可以使各个头的参数之间互相独立,得到更独立的子模型。
在一种可能的实施方式中,前述的获取资源约束条件,可以包括:接收用户输入数据;从用户输入数据中获取资源约束条件,资源约束条件包括与模型的时延或者占用内存相关的约束条件。
因此,本申请实施方式中,资源约束条件可以根据用户输入数据确定,从而使后续可以得到满足用于的资源需求且输出效果更好的模型,提高用户体验。
在一种可能的实施方式中,前述的在资源约束条件的约束下从所述超参数搜索空间中搜索出至少一个模型结构,可以包括:在资源约束条件的约束下按照所述超参数搜索空间包括的结构范围采样子模型的结构,得到所述至少一个模型结构,所述结构范围包括深度范围或者宽度范围中的至少一种,所述深度范围包括采集的子模型的深度的范围,所述宽度范围包括采集到的子模型的宽度的范围。
因此,本申请实施方式中,超参数搜索空间中可以包括深度范围或者宽度范围,从而可以基于从该超参数搜索空间中包括的超参数确定模型的深度或者宽度等结构。
第二方面,本申请实施例提供一种神经网络训练装置,该神经网络训练装置具有实现上述第一方面神经网络训练方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请实施例提供一种神经网络训练装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的神经网络训练方法中与处理相关的功能。可选地,该神经网络训练装置可以是芯片。
第四方面,本申请实施例提供了一种神经网络训练装置,该神经网络训练装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。
第五方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
第六方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
附图说明
图1为本申请应用的一种人工智能主体框架示意图;
图2为本申请提供的神经网络的网络层的结构示意图;
图3为本申请提供的一种系统架构示意图;
图4为本申请提供的另一种系统架构示意图;
图5为本申请提供的一种神经网络训练方法的流程示意图;
图6为本申请提供的另一种神经网络训练方法的流程示意图;
图7为本申请提供的一种采集子模型的方式示意图;
图8为本申请提供的另一种采集子模型的方式示意图;
图9为本申请提供的另一种神经网络训练方法的流程示意图;
图10为本申请提供的一种预训练阶段的流程示意图;
图11为本申请提供的一种搜索阶段的流程示意图;
图12为本申请提供的一种神经网络训练装置的结构示意图;
图13为本申请提供的另一种神经网络训练装置的结构示意图;
图14为本申请提供的一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片,如中央处理器(centralprocessing unit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(英语:graphics processing unit,GPU)、专用集成电路(application specificintegrated circuit,ASIC)或现场可编程逻辑门阵列(field programmable gate array,FPGA)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、智慧城市等。
本申请实施例涉及了神经网络和神经网络训练(natural language processing,NLP)的相关应用,为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
语料(Corpus):也称为自由文本,其可以是字、词语、句子、片段、文章及其任意组合。例如,“今天天气真好”即为一段语料。
损失函数(loss function):也可以称为代价函数(cost function),一种比较机器学习模型对样本的预测输出和样本的真实值(也可以称为监督值)区别的度量,即用于衡量机器学习模型对样本的预测输出和样本的真实值之间的区别。在训练神经网络的过程中,因为希望神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(lossfunction)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。该损失函数通常可以包括误差平方均方、交叉熵、对数、指数等损失函数。例如,可以使用误差均方作为损失函数,定义为
Figure BDA0003093362180000051
具体可以根据实际应用场景选择具体的损失函数。
梯度:损失函数关于参数的导数向量。
随机梯度:机器学习中样本数量很大,所以每次计算的损失函数都由随机采样得到的数据计算,相应的梯度称作随机梯度。
反向传播(back propagation,BP):一种计算根据损失函数计算模型参数梯度、更新模型参数的算法。神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
神经机器翻译(neural machine translation):神经机器翻译是神经网络训练的一个典型任务。该任务是给定一个源语言的句子,输出其对应的目标语言句子的技术。在常用的神经机器翻译模型中,源语言和目标语言的句子中的词均会编码成为向量表示,在向量空间进行计算词与词以及句子与句子之间的关联,从而进行翻译任务。
预训练语言模型(pre-trained language model,PLM):是一种自然语言序列编码器,将自然语言序列中的每个词进行编码为一个向量表示,从而进行预测任务。预训练语言模型指的是基于多层Transformer结构,在大规模无标注语料上进行预训练任务得到。预训练语言模型具有强大的语义理解能力,在下游任务上远超大量模型。PLM的训练包含两个阶段,即预训练(pre-training)阶段和微调(finetuning)阶段。在预训练阶段,该模型在大规模无监督文本上进行语言模型任务的训练,从而学习到词表示方式。在微调阶段,该模型利用预训练阶段学到的参数做初始化,在文本分类(text classification)或序列标注(sequence labeling)等下游任务(Downstream Task)上进行较少步骤的训练,就可以成功把预训练得到的语义信息成功迁移到下游任务上来。
超预训练语言模型(SuperPLM):相较于PLM,SuperPLM的模型结构更大,通过一次训练即可得到,从中抽取任意结构的子模型,其子模型的输出效果能够接近独立训练得到的PLM的输出效果,大大节省了训练成本。
转换器(Transformer)结构:通常,PLM可以基于Transformer结构来构建的,如PLM可以通过多个Transformer结构堆叠得到,一个Transformer结构也可以称为Transformer层。相比其他神经网络,如循环神经网络或者卷积神经网络等,Transformer层依靠其注意力机制捕捉词与词之间的长依赖关系。示例性地,Transformer层的结构可以如图2所示,Transformer层包括多头注意力网络和前向网络模块,其中多头注意力网络通过计算词与词之间的相关性获得相应的权重值,得到上下文相关的词表征,是Transformer结构中核心的部分;前向网络对得到的表征做进一步的变换得到Transformer层最终的输出。除了两个重要组件外,残差层(residual layer,ADD)和线性归一化(linear normalization,Norm)也分别堆叠在这两个组件上,用于优化Transformer层的输出。
知识蒸馏:知识蒸馏是让深度学习模型小型化、达到终端设备部署要求的关键技术。相较与量化、稀疏化等压缩技术,其不需要特定的硬件支持就能达到压缩模型的目的。知识蒸馏技术采用老师-学生模型学习的策略,其中老师模型语义表征能力强、模型参数大,一般不能满足部署需求;而学生模型参数量少,能够直接部署。通过设计有效的知识蒸馏算法,让学生模型学习模仿老师模型的行为,进行有效的知识迁移的,学生最终能够表现得与老师模型一样强大。
epoch:定义了学习算法在整个训练集上的工作次数,一个epoch可以认为代表整个数据集,即使用整个训练集对神经网络进行训练的次数。
batch:与epoch的定义紧密相关,一个epoch包含使用整个数据集对神经网络进行训练,而一个batch代表一个epoch中的其中一个批次的数据,具体表现为batch_size*batchs=epoch,可以理解为每个epoch分为了一个或者多个batch,每个batch可以使用训练集中的部分数据对神经网络进行训练。
本申请实施例提供的神经网络训练方法可以在服务器上被执行,还可以在终端设备上被执行。其中该终端设备可以是具有图像处理功能的移动电话、平板个人电脑(tabletpersonal computer,TPC)、媒体播放器、智能电视、笔记本电脑(laptop computer,LC)、个人数字助理(personal digital assistant,PDA)、个人计算机(personal computer,PC)、照相机、摄像机、智能手表、可穿戴式设备(wearable device,WD)或者自动驾驶的车辆等,本申请实施例对此不作限定。
参见附图3,本申请实施例提供了一种系统架构200。该系统架构中包括数据库230、客户设备240。数据采集设备260用于采集数据并存入数据库230,训练模块202基于数据库230中维护的数据生成目标模型/规则201。下面将更详细地描述训练模块202如何基于数据得到目标模型/规则201,目标模型/规则201即本申请以下实施方式中所提及的目标模型,具体参阅以下实施例中的相关描述。
计算模块可以包括训练模块202,训练模块202得到的目标模型/规则可以应用不同的系统或设备中。在附图3中,执行设备210配置收发器212,该收发器212可以是无线收发器、光收发器或有线接口(如I/O接口)等,与外部设备进行数据交互,“用户”可以通过客户设备240向收发器212输入数据,例如,客户设备240可以向执行设备210发送目标任务,请求执行设备训练神经网络,并向执行设备210发送用于训练的数据库。
执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。
计算模块211使用目标模型/规则201对输入的数据进行处理。具体地,计算模块211用于:
最后,收发器212将构建或者训练得到的神经网络返回给客户设备240,以在客户设备240或者其他设备中部署该神经网络。
更深层地,训练模块202可以针对不同的任务,基于不同的数据得到相应的目标模型/规则201,以给用户提供更佳的结果。
在附图3中所示情况下,可以根据用户的输入数据确定输入执行设备210中的数据,例如,用户可以在收发器212提供的界面中操作。另一种情况下,客户设备240可以自动地向收发器212输入数据并获得结果,若客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到与目标任务关联的数据存入数据库230。
在本申请所提及的训练或者更新过程可以由训练模块202来执行。可以理解的是,神经网络的训练过程即学习控制空间变换的方式,更具体即学习权重矩阵。训练神经网络的目的是使神经网络的输出尽可能接近期望值,因此可以通过比较当前网络的预测值和期望值,再根据两者之间的差异情况来更新神经网络中的每一层神经网络的权重向量(当然,在第一次更新之前通常可以先对权重向量进行初始化,即为深度神经网络中的各层预先配置参数)。例如,如果网络的预测值过高,则调整权重矩阵中的权重的值从而降低预测值,经过不断的调整,直到神经网络输出的值接近期望值或者等于期望值。具体地,可以通过损失函数(loss function)或目标函数(objective function)来衡量神经网络的预测值和期望值之间的差异。以损失函数举例,损失函数的输出值(loss)越高表示差异越大,神经网络的训练可以理解为尽可能缩小loss的过程。本申请以下实施方式中更新起点网络的权重以及对串行网络进行训练的过程可以参阅此过程,以下不再赘述。
如图3所示,根据训练模块202训练得到目标模型/规则201,该目标模型/规则201在本申请实施例中可以是本申请中的目标模型。
其中,在训练阶段,数据库230可以用于存储有用于训练的样本集。执行设备210生成用于处理样本的目标模型/规则201,并利用数据库中的样本集合对目标模型/规则201进行迭代训练,得到成熟的目标模型/规则201,该目标模型/规则201具体表现为神经网络。执行设备210得到的神经网络可以应用不同的系统或设备中。
在推理阶段,执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。数据存储系统250可以置于执行设备210中,也可以为数据存储系统250相对执行设备210是外部存储器。计算模块211可以通过神经网络对执行设备210获取到的样本进行处理,得到预测结果,预测结果的具体表现形式与神经网络的功能相关。
需要说明的是,附图3仅是本申请实施例提供的一种系统架构的示例性的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制。例如,在附图3中,数据存储系统250相对执行设备210是外部存储器,在其它场景中,也可以将数据存储系统250置于执行设备210中。
根据训练模块202训练得到的目标模型/规则201可以应用于不同的系统或设备中,如应用于手机,平板电脑,笔记本电脑,增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端设备等。
该目标模型/规则201在本申请实施例中可以包括本申请中的超预训练语言模型或者目标模型,具体的,本申请实施例提供的模型可以包括CNN,深度卷积神经网络(deepconvolutional neural networks,DCNN),循环神经网络(recurrent neural network,RNN)等等神经网络。
参见附图4,本申请实施例还提供了一种系统架构300。执行设备210由一个或多个服务器实现,可选的,与其它计算设备配合,例如:数据存储、路由器、负载均衡器等设备;执行设备210可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备210可以使用数据存储系统250中的数据,或者调用数据存储系统250中的程序代码实现本申请以下提及的神经训练方法的步骤。
用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备210进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备210进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。具体地,该通信网络可以包括无线网络、有线网络或者无线网络与有线网络的组合等。该无线网络包括但不限于:第五代移动通信技术(5th-Generation,5G)系统,长期演进(long termevolution,LTE)系统、全球移动通信系统(global system for mobile communication,GSM)或码分多址(code division multiple access,CDMA)网络、宽带码分多址(widebandcode division multiple access,WCDMA)网络、无线保真(wireless fidelity,WiFi)、蓝牙(bluetooth)、紫蜂协议(Zigbee)、射频识别技术(radio frequency identification,RFID)、远程(Long Range,Lora)无线通信、近距离无线通信(near field communication,NFC)中的任意一种或多种的组合。该有线网络可以包括光纤通信网络或同轴电缆组成的网络等。
在另一种实现中,执行设备210的一个方面或多个方面可以由每个本地设备实现,例如,本地设备301可以为执行设备210提供本地数据或反馈计算结果。该本地设备也可以称为计算设备。
需要注意的,执行设备210的所有功能也可以由本地设备实现。例如,本地设备301实现执行设备210的功能并为自己的用户提供服务,或者为本地设备302的用户提供服务。
一些常用的面向PLM的预训练过程中,可以使用教师模型对学生模型进行知识蒸馏,得到结构更小的学生模型。而在预训练过程中,通常采用传统的Transformer模型结构超参数的设置,预训练的效率较低。或者,也可以使用结构搜索的方式构建PLM。在构建过程中,通常会改变模型的Transformer的结构,引入异质的模块或者组件,每层网络层的结构可能不相同。因此,搜索空间和训练代价都讲较大,且搜索得到的模型可能没有规律可循,导致模型的部署困难,泛化能力较弱。
因此,本申请提供一种神经网络训练方法,通过同质搜索的方式,高效地搜索得到符合需求的模型,下面对本申请提供的方法进行详细介绍。
参阅图5,本申请提供的一种神经网络训练方法的流程示意图,如下所述。
501、获取超预训练语言模型。
其中,超预训练语言模型(简称SuperPLM)可以是对初始模型进行预训练得到,该SuperPLM可以理解为结构较大的模型,其中可以包括已训练好的多个子模型。
在一种可能的实施方式中,获取SuperPLM的方式可以是对初始模型进行预训练,得到SuperPLM。预训练的过程可以包括:构建初始模型,具体的构建方式可以包括随机构建或者从预先设定的结构参数范围中搜索结构参数来进行构建;将训练集分为多个子集,并从初始模型中采集得到多个子模型,为便于区分此处称为多个第一子模型。然后使用该多个子集分别并行对该多个第一子模型进行训练,即可得到SuperPLM。
可选地,在使用该多个子集分别并行对该多个第一子模型进行训练时,可以将该多个子集以及对应的第一子模型分发给多个计算节点,从而在多个计算节点中计算每个第一子模型的梯度,并根据每个第一子模型的梯度来更新待训练的初始模型的参数,从而得到SuperPLM。
具体地,一个计算节点可以是一个服务器、一台个人电脑(personal computer,PC)、一个处理器、一个进程或者一个线程等具有处理能力的节点,具体可以根据实际应用场景调整,本申请对此并不作限定。
需要说明的是,本申请以下实施方式中,以计算节点为线程为例进行示例性说明,以下所提及的线程也可以替换为服务器、PC、处理器或者进程等,以下不再赘述。
例如,在得到多个子集和多个子模型之后,可调用操作系统的API来实现子集和子模型的分配,例如,通过操作系统的进程调度功能来分配处理资源。可以将多个子集和对应的子模型随机地分配给多个线程,也可以平均分配给多个线程,或者根据数据块与线程的数量关系、线程的繁忙程度等信息,决定如何分配多个子集和对应的子模型给多个线程,并通过调用API将各个子集和对应的子模型分配给多个线程。
更详细地,在该多个线程计算出多个第一子模型分别对应的梯度之后,可以融合该多个第一子模型的梯度,得到融合梯度,然后使用该融合梯度来更新初始模型,得到SuperPLM。其中,融合多个第一子模型的梯度的方式可以包括求平均或者加权求和等,具体可以根据实际应用场景选择合适的融合方式,本申请对此并不作限定。
可选地,从初始模型中采集第一子模型的具体方式可以包括:可以预先设置深度范围或者宽度范围等,可以从深度范围或者宽度范围中随机采样深度值或者宽度值等结构参数,然后基于该结构参数从初始模型中采集对应的子模型。例如,若采集到深度值为5、宽度值为6的结构参数,则可以从初始模型中采集深度为5、宽度为6的子模型。
在一种可能的实施方式中,为了降低采集到的子模型的复杂度,当初始模型的参数符合一定范围时,可以从子模型中的每个网络层中采集少量的模块,从而得到结构更简单的子模型。具体地,可以从初始模型中采集子模型,然后从采集到的每个子模型中的每层网络层中采集部分模块,得到前述的多个第一子模型。
在一种可能的实施方式中,从初始模型中采集子模型的方式还可以包括:初始模型的每一层网络层可以包括多头注意力网络,该多头注意力网络包括多个注意力模块,每个注意力模块具有多个维度的参数,该多头注意力网络用于计算多个输入向量之间的关联度,并根据所述关联度得到包括上下文语义的输出向量;可以从初始模型的每一层网络层的多头注意力网络中的多个注意力模块中采集至少一个注意力模块,以及从采集到的每个注意力模块中的多个维度的参数中采集至少一个维度的参数,得到多个第一子模型,从而采集到每个注意力模块的结构以及每个注意力模块的部分参数,从而使子模型的注意力头的维度和初始模型的注意力头的维度保持一致;或者,从初始模型的每一层网络层的多头注意力网络中的每个注意力模块中的每个维度采集至少一种参数,得到多个第一子模型,从而使子模型的头的数量和初始模型中网络层的头的数量保持一致。
当然,在一种可能的实施方式中,也可以是从其他设备或者从存储器中提取到训练好的SuperPLM。例如,本申请提供的方法可以由前述图2中所提及的执行设备210来执行,执行设备210可以从数据库230中直接提取到训练好的SuperPLM,或者接收其他设备发送的SuperPLM,也可以使用训练模块202对初始模型进行训练得到SuperPLM。
502、获取资源约束条件以及超参数搜索空间。
其中,资源约束条件包括针对最终得到的模型占用的资源的约束条件,即目标模型所占用的资源的范围。
超参数搜索空间包括最终得到的模型的超参数的范围。通常,该超参数搜索空间中可以包括深度范围或者宽度范围等超参数范围,该深度范围即搜索得到的模型结构的深度的范围,宽度范围即搜索得到的模型的宽度的范围。通常,深度范围可以理解为模型的网络层的数量范围,宽度范围可以理解为每层网络层的模块数量或者输入输出通道数量等。
可选地,获取资源约束条件的方式可以是通过用户输入的数据得到。具体地,可以接收用户输入数据,然后从用户输入数据中获取该资源约束条件,该资源约束条件具体可以包括与模型的时延或者占用内存相关的约束条件。例如,该资源约束条件中可以包括需要构建的模型在运行时从输入到输出的正向推理过程所需的最大时延,或者需要构建的模型在运行时的最大占用内存,从而以便于后续的结构搜索中可以搜索得到符合用户需求的模型,提高用户体验。
通常,SuperPLM结构可以覆盖超参数搜索空间中包括的结构参数对应的模型结构。例如,若SuperPLM的网络层数量为100,则超参数搜索空间中包括的深度范围也不超过100,若SuperPLM的网络层的宽度不超过20,则超参数搜索空间包括的宽度范围的最大值也不超过20。因此,本申请实施方式中,可以通过较小的超参数搜索空间来实现结构搜索,提高搜索效率。
503、在资源约束条件的约束下从超参数搜索空间中搜索出目标模型的结构。
在得到资源约束条件和超参数搜索空间之后,即可在资源约束条件的约束下,从超参数搜索空间中搜索出符合需求的目标模型的结构,该目标模型的至少两层网络层的超参数相同,如至少两层网络层的宽度相同、各个组件的类型相同等。
具体地,可以在资源约束条件的约束下,从超参数搜索空间中搜索出至少一个模型结构,且每个模型结构对应的模型的至少两层网络层的超参数都相同,如第一层网络层的宽度和第二层网络层的宽度相同,或者每一层网络层的超参数都相同。随后从SuperPLM中采集与该至少一个模型结构对应的子模型,此处为便于区分称为第二子模型,然后根据采集得到的至少一个第二子模型的输出结果筛选出符合预设条件的模型结构,得到目标模型的结构。
该预设条件具体可以包括模型的输出精度大于预设精度、模型的平均精度大于预设平均精度等用于衡量模型的输出效果的指标,具体可以根据实际应用场景设定,本申请对此并不作限定。
此外,当从超参数搜索空间搜索出来的参数在预先设定的范围内时,采集第二子模型的方式可以包括:从SuperPLM中采集子模型,为便于区分将采集到的模型称为第三子模型,从采集得到的多个第三子模型中每个第三子模型的每层网络层中采集至少一个模块,得到一个或多个第二子模型。因此,可以通过从每层网络层中采集部分模块的方式,使得到的子模型的结构更简单,提高搜索效率。
在一种可能的实施方式中,前述的在资源约束条件的约束下,从超参数搜索空间中搜索出至少一个模型结构,具体可以包括:从超参数搜索空间中搜索得到多个模型结构,根据该多个模型结构构建对应的多个模型,然后获取该多个模型在预先选定的硬件中运行的多个运行结果,基于从该多个模型结构中筛选出运行结果符合资源约束条件的模型结果,即可得到至少一个模型结构。因此,本申请实施方式中,可以通过从子模型的每层网络层中取部分模块的方式,来使最终采集到的子模型的结构更简单,提高筛选以及训练的效率,从而提高得到最终模型的效率。
在一种可能的实施方式中,SuperPLM中的每层网络层可以包括多头注意力网络,该多头注意力网络包括多个注意力模块,每个注意力模块具有多个维度的参数,该多头注意力网络用于计算多个输入向量之间的关联度,并根据所述关联度得到包括上下文语义的输出向量。在从SuperPLM中采集子模型时,如采集第二子模型或者第三子模型时,可以从SuperPLM的每一层网络层的多头注意力网络中的多个注意力模块中采集至少一个注意力模块,以及从采集到的每个注意力模块中的多个维度的参数中采集至少一个维度的参数,得到多个子模型,从而采集到每个注意力模块的结构以及每个注意力模块的部分参数,从而使子模型的注意力头的维度和初始模型的注意力头的维度保持一致;或者,从初始模型的每一层网络层的多头注意力网络中的每个注意力模块中的每个维度采集至少一种参数,得到多个子模型,从而使子模型的头的数量和初始模型中网络层的头的数量保持一致。
504、对目标模型进行训练,得到训练后的目标模型。
其中,在得到目标模型的结构之后,可以基于该目标模型的结构来构建得到目标模型,也可以是基于该结构从SuperPLM中采集得到目标模型,然后对该目标模型进行训练,得到训练后的目标模型。
因此,在本申请实施方式中,在得到对模型占用资源内的约束条件之后,即可在资源约束条件的约束下超参数搜索空间中搜索模型结构,从而可以高效快速地得到符合需求的目标模型,并对目标模型进行训练,优化模型的输出效果。相当于给定了特定的资源约束条件,基于该资源约束条件高效搜索得到最终的目标模型。可以理解为,因目标模型的至少两层网络层的超参数相同,相当于同质搜索得到最终的目标模型,相对异质搜索,本申请提供的搜索方式中所需的超参数搜索空间更小,搜索效率更高,从而高效地搜索得到最终的目标模型。并且,最终得到的目标模型符合资源约束条件,从而使目标模型可以适应性地部署于硬件中,满足不同硬件的部署需求,泛化能力强。
前述对本申请提供的神经网络训练方法的流程进行了介绍,为便于理解,下面对本申请提供的神经网络训练方法的流程进行进一步地示例性介绍。
本申请提供的神经网络训练方法可以应用于多种场景,如搜索场景、语音助手、新闻推荐或者机器翻译等场景。为便于理解,下面示例性地对本申请提供的神经网络训练方法可能应用的场景进行介绍。
场景一、新闻推荐业务的搜索引擎
目前预训练语言模型在搜索引擎召回阶段显示出了显著的优势,召回阶段即通过采集到的用户感兴趣的信息来查找用户可能感兴趣的关联信息。但由于巨大的网页数量(如超过千亿级)以及模型频繁更新的需求,大模型和特定任务的蒸馏方式显然部署效率低,本申请提供的方法可以构建高效的通用预训练语言模型,可以高效地得到模型结构更简单,且效果接近结构较大的原始模型的目标模型。
场景二、翻译场景
通过本申请提供的方法可以得到结构更简单的语言模型中的全部或者部分模型,并将训练后的模型部署于算力较低的终端中。如可以通过应用程序的方式部署于终端中,用户可以在终端的显示界面中输入待翻译的语料,通过部署的模型输出语料中各个部分的上下文语义,从而转换为与该语料的语种不同的输出语料。
其中,本申请提供的神经网络训练方法中,SuperPLM的训练过程和目标模型的训练可以由同一个设备来执行,本申请实施例示例性地将本申请提供的方法分为两部分,包括预训练阶段和搜索阶段,下面分别进行介绍。
示例性地,本申请提供的另一种神经网络训练方法的更详细流程可以如图6所示,下面分别
一、预训练阶段
在预训练阶段,使用训练集对初始模型进行训练,从而得到训练后的SuperPLM。示例性地,预训练阶段可以包括如下步骤601-步骤604。
601、将训练集分为多个子集,以及从初始模型中采集子模型,得到多个第一子模型。
其中,训练集中可以包括多个样本,每个样本可以包括一段语料,或者语料的表征向量等。
初始模型可以是预先构建的结构较大的模型,如该初始模型可以包括多层Transformer层,如前述图2所示,可以通过堆叠多层Transformer层得到初始模型。可以随机采集或者通过预先设定的方式从初始模型中采集得到多个第一子模型。例如,可以随机采样深度或者宽度,然后根据该深度或者宽度从初始模型中采集相应的子模型,得到第一子模型。
具体地,Transformer层可以包括至少两种子结构,即多头注意力网络和前向网络,多头注意力网络可以看成一个可拆分的结构,其包含h(h为正整数)个独立并行的自注意力模块,或者称作为头(head),通过对h个自注意力模块输出进行求和得到整个多头注意力网络的输出。
示例性地,每个注意力头可以用四个矩阵参数进行描述
Figure BDA0003093362180000131
Figure BDA0003093362180000132
Figure BDA0003093362180000133
多头注意力网络的输入是上一个Transformer层的输出
Figure BDA0003093362180000134
示例性地,多头注意力网络的输出可以定义为:
Figure BDA0003093362180000135
Figure BDA0003093362180000136
Figure BDA0003093362180000137
Figure BDA0003093362180000138
其中,
Figure BDA0003093362180000139
分别为是查询矩阵(Queries)|关键矩阵(keys)|值矩阵(values),
Figure BDA00030933621800001310
为模型参数,H为当前层的输入表征,ATTN(.)表示点积注意力操作,每个注意头输出为
Figure BDA00030933621800001311
最终每个头的输出求和得到输出MHA(H)。
除此之外,自注意力模块中还可以包括残差连接(residual connection)和规范层(layer normalization),可以表示为:
HMHA=LayerNorm(H+MHA(H))
由于残差链接存在,维度上需要满足{dq=dk,do=dm}。HMHA表示整个自多头注意力网络的输出。
Transformer层同时包含前向网络模块,其可以表示为:
HFFH=max(0,HMHAW1+b1)W2+b2
其中,
Figure BDA00030933621800001312
是模型参数,同时FFN里面也包含残差连接和规范层。HFFH表示整个前向网络模块的输出。
在从初始模型中采集子模型时,可以首先定一个接收超参数集合α={l,dm,dq,dk,dv,df,do},在深度和宽度的维度上,从初始模型中抽取子模型。具体地,可以在深度上抽取下l个Transformer层,以及在宽度上进行抽取,从初始模型的参数矩阵中进行抽取。每一层Transformer层中的多头注意力网络可以包括多个头,每个头上具有相应的参数矩阵,在抽取子模型时,可以采用多种方式。
下面对从初始模型中采集子模型的方式进行详细介绍。
示例性地,超参数搜索空间可以设置为结构超参数集合α={l,dm,dq,dk,dv,df,do},在深度和宽度维度上,从初始模型抽取出来子模型。通常,初始的每层Transformer层中的多头注意力网络可以包括多个注意力模块,每个注意力模块可以理解为一个头,每个注意力模块中具有多个维度的参数,在抽取子模块时,可以包括多种抽取方式,下面示例性地介绍一些可能的抽取方式。
1、抽取头数,头的维度不变
例如,如图7所示,从多头注意力网络中抽取部分头,然后抽取该部分头中每个头的矩阵参数,从而得到头的数量减少而头的维度不变的子模型。
2、抽取头的维度
例如,如图8所示,可以从多头注意力网络中抽取所有头,而从每个头中抽取部分参数,从而得到头的数量保持不变而头的维度减少的子模型。
因此,本申请实施方式中,抽取到的子网络中各个头的参数之间互相独立的,不存在重叠的部分,从而避免了因头参数重叠而导致的不同训练批次优化得到的针对头的梯度不一致的情况,有效地实现模型优化。
602、将多个子集和多个第一子模型分配至多个线程,以在多个线程中计算多个第一子模型的梯度。
在得到多个子集和多个第一子模型之后,将该多个子集和多个第一子模型分别分配给多个计算节点,如分配给多个线程或者多个进程来进行处理,从而通过多个计算节点分别计算得到每个第一子模型的梯度。
其中,对初始模型的训练可以分为多个epoch,在每个epoch可以将训练集分为多个batch,在每个batch中将训练集分为多个子集,并且从初始模型中采集多个子模型,分别计算各个子模型的梯度,然后使用各个模型的梯度来更新初始模型。
需要说明的是,本申请实施例仅以对初始模型进行更新为例进行示例性说明,本申请实施例所提及的初始模型可以替换为上一个epoch输出的模型。
因此,本申请实施例中,可以通过多个线程并行处理的方式,来提高模型的预训练效率,高效地训练得到SuperPLM。
603、融合多个第一子模型的梯度,得到融合梯度,并使用融合梯度更新初始模型。
在各个线程分别计算出各个子模型的梯度之后,可以由其中一个线程或者由其他线程或者进程来对各个子模型的梯度来进行融合,从而得到融合后的梯度。融合的方式包括但不限于加权融合、求和或者求平均等方式。然后将融合梯度作为初始模型的梯度,对该初始模型进行更新,得到更新后的初始模型。
604、判断是否终止迭代,若是,则执行步骤605,若否,则执行步骤602。
其中,在对初始模型进行更新之后,判断是否终止迭代,若否,则可以将本轮迭代输出的模型作为新的初始模型进行更新,若终止迭代,则可以继续进行搜索阶段。
具体地,判断终止迭代具体可以包括判断是否满足终止条件,若满足终止条件,则可以继续进入搜索阶段。该终止条件具体可以包括但不限于以下一项或者多项:迭代次数达到预先设定的迭代次数,模型的输出精度达到预先设定的输出精度,或者模型的平均精度达到预先设定的平均精度等。
可以理解为,在预训练阶段,可以将训练数据分为多个epoch,每个epoch分为多个batch,每个batch分为多个子批次,然后将每个子批次分配给对应的线程,在每个线程中进行多次结构采样并进行前向和后向计算,得到每个子模型的梯度,然后把各个线程计算得到的梯度进行合并,并更新初始模型的参数,得到每个batch输出的更新后的模型。在终止迭代之后,即可输出训练后的SuperPLM。
因此,本申请实施方式中,在预训练阶段,可以使用并行计算子模型的梯度的方式,阿里提高预训练的效率,从而高效地得到输出效果更好的SuperPLM。并且,在从初始模型中采集子模型时,各个子模型的头不重叠,从而避免因各个子模型的参数对应的梯度因重叠而导致的每个批次的梯度冲突,进而提高对初始模型的训练效率和更精准的优化,得到输出效果更好的SuperPLM。
二、搜索阶段
在搜索阶段即可通过从超参数搜索空间中进行搜索,得到最优的模型结构作为目标模型的模型结构。示例性地,搜索阶段可以参考以下步骤605-步骤609。
605、获取资源约束条件以及超参数搜索空间。
其中,资源约束条件可以是自身生成的条件,也可以是基于接收到的用户输入的数据中所携带的信息得到。例如,该资源约束条件可以是基于需要部署目标模型的设备的算力计算得到的范围,包括运行目标模型时占用资源的范围,如时延或者占用内存等范围。又例如,可以由用户通过客户端输入用户需求,本申请提供的方法可以由服务器来执行,服务器接收到来自客户端的信息之后,即可提取到用户需求,生成资源约束条件。
超参数搜索空间中可以包括构建模型所需的超参数,如模型的深度范围或者宽度范围等。深度范围即模型的网络层的数量的范围,宽度范围即网络层的输入输出通道数量的范围。通常,超参数搜索空间中包括的结构参数的范围不超过SuperPLM的结构参数覆盖的范围。例如,若SuperPLM的网络层的数量为100,则结构搜索空间中包括的深度范围也不超过100,从而避免后续采集不到完成的子模型。
示例性地,可以预先设定超参数搜索空间包括的结构参数集合α={l,dm,dq,dk,dv,df,do},超参数变量的限制为{dq=dk,do=dm},可以用于从深度和宽度的维度来从SuperPLM中采集子模型。通常,一些常用的结构搜索方式中,超参数可以设置为{dq|k|v|o=dm,df=4dm},每个变量的取值范围为
Figure BDA0003093362180000151
因此整体的超参数搜索空间可以表示为:
Figure BDA0003093362180000152
显然,通过本申请提供的方式,所需的超参数搜索空间的大小明显小于常用的结构搜索方式,搜索效率更高,可以高效地的最终的目标模型。
606、在资源约束条件的约束下,从超参数搜索空间中搜索出至少一个模型结构。
其中,资源约束条件可以作为对采集到的子模型占用的资源的约束,从而从超参数搜索空间中搜索得到占用资源在需求范围内的模型结构。
具体地,可以从超参数搜索空间中所述得到多个模型结构,然后在资源约束条件的约束下对该多个模型结构进行筛选,筛选出符合资源约束条件的至少一个模型结构,或者称为模型结构的候选集
Figure BDA0003093362180000153
在一种可能的实施方式中,可以基于搜索得到的多个模型结构来构建子模型,然后在预先设定的硬件中来运行该多个子模型,从而筛选出占用资源在资源约束条件范围内的模型对应的至少一个模型结构。
在一种可能的实施方式中,可以基于搜索得到的多个模型结构从SuperPLM中采集对应的子模型,然后在预先设定的硬件中来运行该多个子模型,从而筛选出占用资源在资源约束条件范围内的模型对应的至少一个模型结构,进而得到符合用户需求的模型。
需要说明的是,从SuperPLM中采集子模型的方式可以参阅前述步骤601中从初始模型中采集子模型的方式,将其中的初始模型替换为SuperPLM即可,此处不再赘述。
在一种可能的实施方式中,在资源约束条件的约束下得到至少一种模型结构之后,为进一步降低模型复杂度,可以从对应的子模型中的每层网络层中采集其中的一个或者多个模块,得到新的网络层,从而得到结构更简单的至少一个模型结构。例如,当搜索得到的结构参数在一定范围内时,如1.6*dm≤df≤1.9*dm;0.7*dm≤dq|k|v≤1.0*dm,具有相同层数的模型通常具有相似的结构,如dm|f|q|k|v值接近。因此这些模型的输出效果接近,可以从每层网络层中抽取模块组成新的网络层,其输出效果与抽取模块前的子模型的输出效果接近。具体例如,若模型结构对应的子模型中的深度为4,宽度为5,则可以从4层网络层中的每一层网络中抽取其中一个模块作为新的网络层,从而得到结构更简单的子模型,且输出效果与结构复杂的子模型接近,即相当于得到结构更简单且输出效果不降低的模型,更利于模型的部署,提高模型的泛化能力。
607、从超预训练语言模型中采集与至少一个模型结构对应的至少一个第二子模型。
其中,在资源约束条件的约束下筛选得到模型结构的候选集
Figure BDA0003093362180000161
后,可以从该SuperPLM中采集候选集
Figure BDA0003093362180000162
中每个模型结构对应的子模型,得到
Figure BDA0003093362180000163
对应的代理子模型
Figure BDA0003093362180000164
其中,若在步骤607中,已从SuperPLM采集了相应的子模型,则无需再次从SuperPLM中采集第二子模型,即可从步骤607中采集得到的多个子模型中筛选出符合资源约束条件至少一个第二子模型,步骤607为可选步骤。
608、根据至少一个第二子模型得到目标模型。
在得到至少一个第二子模型之后,可以从该至少一个第二子模型中筛选出其中一个模型作为目标模型,也可以是基于该至少一个第二子模型从
Figure BDA0003093362180000165
中筛选出其中一个模型结构作为目标模型的结构。
可选地,当从
Figure BDA0003093362180000166
中筛选出其中一个模型结构作为目标模型的结构之后,可以基于该结构来构建模型,得到目标模型,也可以是基于该结构从SuperPLM中采集相应的子模型得到目标模型。
具体地,筛选目标模型或者目标模型的方式可以包括:将测试集中的样本作为每个第二子模型的输入,然后可以根据每个第二子模型的输出来对至少一个第二子模型进行排序,然后结合每个第二子模型占用资源的情况来从该至少一个第二子模型中筛选出目标模型。例如,可以基于每个第二子模型的输出效果和占用资源的情况来计算帕累托前沿,然后选择兼顾输出效果和资源占用的第二子模型作为目标模型,得到在输出效果和资源占用都表现更优的模型。
609、对目标模型进行训练,得到训练后的目标模型。
在筛选出目标模型之后,为提高目标模型的输出准确度,即可对目标模型进行训练,得到训练后的目标模型。
因此,在本申请实施方式中,在预训练阶段,可以使用并行计算子模型的梯度的方式,阿里提高预训练的效率,从而高效地得到输出效果更好的SuperPLM。并且,在从初始模型中采集子模型时,各个子模型的头不重叠,从而避免因各个子模型的参数对应的梯度因重叠而导致的每个批次的梯度冲突,进而提高对初始模型的训练效率和更精准的优化,得到输出效果更好的SuperPLM。在搜索阶段,构建了更小的参数搜索空间,从而可以在资源约束条件的约束下高效地进行搜索得到符合需求且输出效果更优的目标模型。
更进一步地,参阅图9,对本申请提供的神经网络训练方法的流程进行示例性说明。
以初始模型中的其中一个Transformer层为例,与前述图2类似地,该Transformer层中包括多头注意力网络和前向网络。多头注意力网络中可以包括多个头,如图9中所示出的Wv、Wk、Wk,在预训练阶段,对初始模型进行训练得到SuperPLM。在搜索阶段,可以从SuperPLM中搜索得到代理模型,然后使用评估器对代理模型的占用资源或者输出效果进行评估,并基于评估结果进行搜索,搜索的方式可以包括进化搜索、随机搜索或者其他搜索方式等。若未搜索到符合需求的模型,则可以继续从SuperPLM中采集新的代理模型,并再次进行评估,直到搜索得到最优模型αopt,然后对进一步对搜索得到的模型进行训练,得到输出效果更优的目标模型。
此外,在预训练阶段和搜索阶段中,在采集子模型时,都可以从多头注意力网络中的每个头中采集部分参数,即部分维度的参数,如图9中右下角所示的采集到的其中一个头的部分参数,从而使各个头参数之间相互独立,减少重叠,可以提高预训练阶段计算得到的各个子模型的梯度的准确性,进而提高模型的训练效果。
示例性地,预训练阶段的更详细的流程可以参阅图10,如下所述。
在进入预训练阶段后,首先进行数据初始化1001。
在初始化过程中需要初始化的数据可以包括但不限于:设置候选集A,线程(或者GPU)数量N,无标注数据集D(即训练集),训练批次batch数量,迭代训练次数E,每个训练批次采样个数M,每个批次采样次数m,初始模型的初始参数theta,以及当前迭代轮次t等。
然后判断当前迭代论述t是否大于E,即步骤1002。
若t>E,则结束预训练,即步骤1008。
若t≤E,则可可以判断针对数据集D的采样是否结束,即步骤1003。通常,每个batch从数据集D中采样得到的样本不相同,因此,步骤1003即判断是否已使用数据集D中的所有样本来进行训练。
若是,则可以继续下一轮迭代,即继续执行步骤1002,且设置t=t+1。
若否,则可以从数据集D中采样出一个批次batch,并将该batch划分为多个子批次sub-batch,即执行步骤1004。
判断从数据集D中进行采样的采样次数m是否超过M,即执行步骤1005。
若是,则可以从初始模型中采样出N个子模型,并分发至N个线程中,在N个线程中分别对子模型进行独立训练,得到N个子模型的梯度,且同时设置迭代次数加1,即m=m+1。即执行步骤1006。
并且,从初始模型中采集子模型的方式可以参阅前述图8或者图9所示的方式,从而使各个子模型的参数之间互相独立,更有利于模型优化。
随后继续从数据集D中采集一个批次batch,并将该batch划分为多个子批次sub-batch,直到m>M,然后使用各个子线程的平均梯度来更新初始模型的模型参数,即执行步骤1007。
随后可以继续执行步骤1003,即判断本轮迭代中针对数据集D的采样是否已结束。
因此,本申请实施方式中,在预训练阶段,可以通过多个线程并行独立训练的方式来对初始模型进行训练,从而通过并行的方式提高预训练的效率。
示例性地,可以通过进化算法来搜索得到最终的目标模型。例如,如图11所示,在训练得到SuperPLM并获取到用户输入的具体时延或者占用内存需求后,设置超参数搜索空间,采样得到模型结构,并在预先设定的硬件上进行模型性能测试,得到符合用户需求的模型结构参数集合
Figure BDA0003093362180000171
然后基于SuperPLM,使用计划算法在
Figure BDA0003093362180000172
中搜索最优结构αopt
具体地,进化算法的详细流程可以包括:首先随机初代的超参数集合,从SuperPLM中抽取对应的子模型在硬件中进行测试,其中测试效果较好的超参数组合作为父代,然后父代参数进行进化操作(如调整部分参数),得到新的一代候选结构。随着不断进行前述测试和进化过程,最终得到最优的模型结构αopt。然后基于最优结构αopt从SuperPLM抽取出对应的子模型或者直接构建模型,即可得到目标模型。
因此,本申请实施方式中,在搜索阶段,可以在资源约束条件的约束下,通过进化算法来搜索更优模型,从而高效地得到符合用户需求且输出效果更优的目标模型。可以理解为,本申请提供的搜索阶段,仅考虑同质的Transformer结构,相对于允许异质Transformer结构的方式,本申请的超参数搜索空间相当于从指数级别
Figure BDA0003093362180000173
降到线性级别
Figure BDA0003093362180000174
大大降低了搜索难度,从而可以高效地搜索得到符合用户需求且输出效果更优的目标模型。并且,同质搜索得到的模型结构对硬件和软件平台更友好,更易于部署,在不改变设备的原始程序的情况下即可以在设备中部署,泛化能力强。
并且,相对于常用的SuperPLM训练方式,对比从零训练得到的模型,HAT基准方法存在比较大的效果差异,尤其是在小模型这块。同质搜索的搜索空间空间和多头注意力抽取(SME)都能提升中型和大型模型的结果。当结合高效的批次训练之后,SuperPLM在小模型上基本达到了与从零训练模型的效果。
前述对本申请提供的神经网络训练方法的流程进行了详细介绍,下面对执行本申请提供的神经网络训练方法的装置进行介绍。
参阅图12,本申请提供的一种神经网络训练装置的结构示意图,该神经网络训练装置可以包括:
预训练模块1201,用于获取超预训练语言模型;
获取模块1202,用于获取资源约束条件以及超参数搜索空间,资源约束条件指示针对模型占用的资源的约束,超参数搜索空间指示模型的超参数的范围;
搜索模块1203,用于在资源约束条件的约束下从超参数搜索空间中搜索出目标模型的结构,目标模型的至少两层网络层的超参数相同;
训练模块1204,用于对目标模型进行训练,得到训练后的目标模型。
在一种可能的实施方式中,目标模型中的每一层网络层的超参数都相同。
在一种可能的实施方式中,预训练模块1201,具体用于:构建神经网络,得到初始模型;将训练集分为多个子集;从初始模型中采集子模型,得到多个第一子模型;使用多个子集并行对多个第一子模型进行训练,得到超预训练语言模型。
在一种可能的实施方式中,预训练模块1201,具体用于:将多个子集和多个第一子模型分配至多个计算节点,以在多个计算节点中计算多个第一子模型的梯度;根据多个第一子模型的梯度更新初始模型的参数,得到超预训练语言模型。
在一种可能的实施方式中,预训练模块1201,具体用于:融合多个第一子模型的梯度,得到融合梯度;根据融合梯度更新初始模型的参数,得到超预训练语言模型。
在一种可能的实施方式中,搜索模块1203,具体用于:在资源约束条件的约束下,从超参数搜索空间中搜索得到至少一个模型结构,至少一个模型结构对应的模型的至少两层网络层的超参数相同;从超预训练语言模型中采集与至少一个模型结构对应的至少一个第二子模型;根据至少一个第二子模型从至少一个模型结构中筛选出输出结果符合预设条件的模型结构,得到目标模型的结构。
在一种可能的实施方式中,搜索模块1203,具体用于:从初始模型中采集子模型,得到至少一个第三子模型;从至少一个第三子模型中的每个第三子模型的每层网络层中采集至少一个模块,得到至少一个第二子模型。
在一种可能的实施方式中,搜索模块1203,具体用于:从超参数搜索空间中搜索得到多个模型结构;获取多个模型结构对应的模型在硬件中运行的多个运行结果;从多个模型结构中筛选出运行结果符合资源约束条件的模型结构,得到至少一个模型结构。
在一种可能的实施方式中,搜索模块1203,具体用于:使用测试集对至少一个第二子模型的输出结果进行评估,得到每个第二子模型的评估结果;根据每个第二子模型的评估结果从至少一个模型结构中筛选出符合预设条件的模型的结构;将符合预设条件的模型的结构,作为目标模型的结构。
在一种可能的实施方式中,搜索模块1203,还用于:根据符合预设条件的模型的结构,构建得到目标模型;或者,从超预训练语言模型中采集对应的子模型,得到目标模型。
在一种可能的实施方式中,超预训练语言模型的每一层网络层包括多头注意力网络,多头注意力网络包括多个注意力模块,每个注意力模块具有多个维度的参数,多头注意力网络用于计算多个输入向量之间的关联度,并根据关联度得到包括上下文语义的输出向量;
搜索模块1203,具体用于:从超预训练语言模型的每一层网络层的多头注意力网络中的多个注意力模块中采集至少一个注意力模块,以及从多个维度的参数中采集至少一个维度的参数,得到多个第二子模型;或者,从超预训练语言模型的每一层网络层的多头注意力网络中的每个注意力模块中的每个维度采集至少一种参数,得到多个第二子模型。
在一种可能的实施方式中,获取模块1202,具体用于:接收用户输入数据;从用户输入数据中获取资源约束条件,资源约束条件包括与模型的时延或者占用内存相关的约束条件。
请参阅图13,本申请提供的另一种神经网络训练装置的结构示意图,如下所述。
该神经网络训练装置可以包括处理器1301和存储器1302。该处理器1301和存储器1302通过线路互联。其中,存储器1302中存储有程序指令和数据。
存储器1302中存储了前述图5-图11中的步骤对应的程序指令以及数据。
处理器1301用于执行前述图5-图11中任一实施例所示的神经网络训练装置执行的方法步骤。
可选地,该神经网络训练装置还可以包括收发器1303,用于接收或者发送数据。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上行驶时,使得计算机执行如前述图5-图11所示实施例描述的方法中的步骤。
可选地,前述的图14中所示的神经网络训练装置为芯片。
本申请实施例还提供了一种神经网络训练装置,该神经网络训练装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图5-图11中任一实施例所示的神经网络训练装置执行的方法步骤。
本申请实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1301,或者处理器1301的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中神经网络训练装置执行的动作。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上行驶时,使得计算机执行如前述图5-图11所示实施例描述的方法中神经网络训练装置所执行的步骤。
本申请实施例提供的神经网络训练装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图5-图11所示实施例描述的神经网络训练方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体地,前述的处理单元或者处理器可以是中央处理器(central processingunit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
示例性地,请参阅图14,图14为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 140,NPU 140作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路1403,通过控制器1404控制运算电路1403提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1403内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路1403是二维脉动阵列。运算电路1403还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1403是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1402中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1401中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1408中。
统一存储器1406用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)1405,DMAC被搬运到权重存储器1402中。输入数据也通过DMAC被搬运到统一存储器1406中。
总线接口单元(bus interface unit,BIU)1410,用于AXI总线与DMAC和取指存储器(instruction fetch buffer,IFB)1409的交互。
总线接口单元1410(bus interface unit,BIU),用于取指存储器1409从外部存储器获取指令,还用于存储单元访问控制器1405从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1406或将权重数据搬运到权重存储器1402中或将输入数据数据搬运到输入存储器1401中。
向量计算单元1407包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如批归一化(batch normalization),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1407能将经处理的输出的向量存储到统一存储器1406。例如,向量计算单元1407可以将线性函数和/或非线性函数应用到运算电路1403的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1407生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1403的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1404连接的取指存储器(instruction fetch buffer)1409,用于存储控制器1404使用的指令;
统一存储器1406,输入存储器1401,权重存储器1402以及取指存储器1409均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,循环神经网络中各层的运算可以由运算电路1403或向量计算单元1407执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述图5-图11的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
最后应说明的是:以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (26)

1.一种神经网络训练方法,其特征在于,包括:
获取超预训练语言模型;
获取资源约束条件以及超参数搜索空间,所述资源约束条件指示针对模型占用的资源的约束,所述超参数搜索空间指示模型的超参数的范围;
在资源约束条件的约束下从所述超参数搜索空间中搜索出目标模型的结构,所述目标模型的至少两层网络层的超参数相同;
对所述目标模型进行训练,得到训练后的目标模型。
2.根据要求1所述的方法,其特征在于,所述获取超预训练语言模型,包括:
构建神经网络,得到初始模型;
将训练集分为多个子集;
从所述初始模型中采集子模型,得到多个第一子模型;
使用所述多个子集并行对所述多个第一子模型进行训练,得到所述超预训练语言模型。
3.根据权利要求2所述的方法,其特征在于,所述使用所述多个子集并行对所述多个第一子模型进行训练,得到所述超预训练语言模型,包括:
将所述多个子集和所述多个第一子模型分配至多个计算节点,以在所述多个计算节点中计算所述多个第一子模型的梯度;
根据所述多个第一子模型的梯度更新所述初始模型的参数,得到所述超预训练语言模型。
4.根据权利要求3所述的方法,其特征在于,所述根据所述多个子模型的梯度更新所述初始模型的参数,得到所述超预训练语言模型,包括:
融合所述多个第一子模型的梯度,得到融合梯度;
根据所述融合梯度更新所述初始模型的参数,得到所述超预训练语言模型。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述在资源约束条件的约束下从所述超参数搜索空间中搜索出目标模型的结构,包括:
在资源约束条件的约束下,从所述超参数搜索空间中搜索得到至少一个模型结构,所述至少一个模型结构中每个模型结构对应的模型的至少两层网络层的超参数相同;
从所述超预训练语言模型中采集与所述至少一个模型结构对应的至少一个第二子模型;
根据所述至少一个第二子模型从所述至少一个模型结构中筛选出输出结果符合预设条件的模型结构,得到所述目标模型的结构。
6.根据权利要求5所述的方法,其特征在于,所述从所述超预训练语言模型中采集与所述至少一个模型结构对应的至少一个第二子模型包括:
从所述初始模型中采集子模型,得到至少一个第三子模型;
从所述至少一个第三子模型中的每个第三子模型的每层网络层中采集至少一个模块,得到所述至少一个第二子模型。
7.根据权利要求5所述的方法,其特征在于,所述在资源约束条件的约束下,从所述超参数搜索空间中搜索出至少一个模型结构,包括:
获取多个模型结构对应的模型在硬件中运行的多个运行结果,所述多个模型是从所述超参数搜索空间搜索得到的模型结构;
从所述多个模型结构中筛选出运行结果符合所述资源约束条件的模型结构,得到所述至少一个模型结构。
8.根据权利要求5-7中任一项所述的方法,其特征在于,所述根据所述至少一个第二子模型从所述至少一个模型结构中筛选出输出结果符合预设条件的模型结构,得到所述目标模型的结构,包括:
使用测试集对所述至少一个第二子模型的输出结果进行评估,得到每个第二子模型的评估结果;
根据所述每个第二子模型的评估结果从所述至少一个模型结构中筛选出符合所述预设条件的模型的结构;
将所述符合所述预设条件的模型的结构,作为所述目标模型的结构。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
根据所述符合所述预设条件的模型的结构,构建得到所述目标模型;
或者,从所述超预训练语言模型中采集对应的子模型,得到所述目标模型。
10.根据权利要求5-9中任一项所述的方法,其特征在于,所述超预训练语言模型的每一层网络层包括多头注意力网络,所述多头注意力网络包括多个注意力模块,每个注意力模块具有多个维度的参数,所述多头注意力网络用于计算多个输入向量之间的关联度,并根据所述关联度得到包括上下文语义的输出向量;
所述从所述超预训练语言模型中采集与所述至少一个模型结构对应的至少一个第二子模型,包括:
从所述超预训练语言模型的每一层网络层的所述多头注意力网络中的所述多个注意力模块中采集至少一个注意力模块,以及从所述多个维度的参数中采集至少一个维度的参数,得到所述多个第二子模型;
或者,从所述超预训练语言模型的每一层网络层的所述多头注意力网络中的每个注意力模块中的每个维度采集至少一种参数,得到所述多个第二子模型。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述获取资源约束条件,包括:
接收用户输入数据;
从所述用户输入数据中获取所述资源约束条件,所述资源约束条件包括与模型的时延或者占用内存相关的约束条件。
12.一种神经网络训练装置,其特征在于,包括:
预训练模块,用于获取超预训练语言模型;
获取模块,用于获取资源约束条件以及超参数搜索空间,所述资源约束条件指示针对模型占用的资源的约束,所述超参数搜索空间指示模型的超参数的范围;
搜索模块,用于在资源约束条件的约束下从所述超参数搜索空间中搜索出目标模型的结构,所述目标模型的至少两层网络层的超参数相同;
训练模块,用于对所述目标模型进行训练,得到训练后的目标模型。
13.根据要求12所述的装置,其特征在于,所述预训练模块,具体用于:
构建神经网络,得到初始模型;
将训练集分为多个子集;
从所述初始模型中采集子模型,得到多个第一子模型;
使用所述多个子集并行对所述多个第一子模型进行训练,得到所述超预训练语言模型。
14.根据权利要求13所述的装置,其特征在于,所述预训练模块,具体用于:
将所述多个子集和所述多个第一子模型分配至多个计算节点,以在所述多个计算节点中计算所述多个第一子模型的梯度;
根据所述多个第一子模型的梯度更新所述初始模型的参数,得到所述超预训练语言模型。
15.根据权利要求14所述的装置,其特征在于,所述预训练模块,具体用于:
融合所述多个第一子模型的梯度,得到融合梯度;
根据所述融合梯度更新所述初始模型的参数,得到所述超预训练语言模型。
16.根据权利要求12-15中任一项所述的装置,其特征在于,所述搜索模块,具体用于:
在资源约束条件的约束下,从所述超参数搜索空间中搜索得到至少一个模型结构,所述至少一个模型结构对应的模型的至少两层网络层的超参数相同;
从所述超预训练语言模型中采集与所述至少一个模型结构对应的至少一个第二子模型;
根据所述至少一个第二子模型从所述至少一个模型结构中筛选出输出结果符合预设条件的模型结构,得到所述目标模型的结构。
17.根据权利要求16所述的装置,其特征在于,所述搜索模块,具体用于:
从所述初始模型中采集子模型,得到至少一个第三子模型;
从所述至少一个第三子模型中的每个第三子模型的每层网络层中采集至少一个模块,得到所述至少一个第二子模型。
18.根据权利要求16所述的装置,其特征在于,所述搜索模块,具体用于:
获取多个模型结构对应的模型在硬件中运行的多个运行结果,所述多个模型是从所述超参数搜索空间搜索得到的模型结构;
从所述多个模型结构中筛选出运行结果符合所述资源约束条件的模型结构,得到所述至少一个模型结构。
19.根据权利要求16-18中任一项所述的装置,其特征在于所述搜索模块,具体用于:
使用测试集对所述至少一个第二子模型的输出结果进行评估,得到每个第二子模型的评估结果;
根据所述每个第二子模型的评估结果从所述至少一个模型结构中筛选出符合所述预设条件的模型的结构;
将所述符合所述预设条件的模型的结构,作为所述目标模型的结构。
20.根据权利要求19所述的装置,其特征在于,所述搜索模块,还用于:
根据所述符合所述预设条件的模型的结构,构建得到所述目标模型;
或者,从所述超预训练语言模型中采集对应的子模型,得到所述目标模型。
21.根据权利要求16-20中任一项所述的装置,其特征在于,所述超预训练语言模型的每一层网络层包括多头注意力网络,所述多头注意力网络包括多个注意力模块,每个注意力模块具有多个维度的参数,所述多头注意力网络用于计算多个输入向量之间的关联度,并根据所述关联度得到包括上下文语义的输出向量;
所述搜索模块,具体用于:
从所述超预训练语言模型的每一层网络层的所述多头注意力网络中的所述多个注意力模块中采集至少一个注意力模块,以及从所述多个维度的参数中采集至少一个维度的参数,得到所述多个第二子模型;
或者,从所述超预训练语言模型的每一层网络层的所述多头注意力网络中的每个注意力模块中的每个维度采集至少一种参数,得到所述多个第二子模型。
22.根据权利要求12-21中任一项所述的装置,其特征在于,所述获取模块,具体用于:
接收用户输入数据;
从所述用户输入数据中获取所述资源约束条件,所述资源约束条件包括与模型的时延或者占用内存相关的约束条件。
23.一种神经网络训练装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至11中任一项所述的方法。
24.一种计算机可读存储介质,包括程序,当其被处理单元所执行时,执行如权利要求1至11中任一项所述的方法。
25.一种神经网络训练装置,其特征在于,包括处理单元和通信接口,所述处理单元通过所述通信接口获取程序指令,当所述程序指令被所述处理单元执行时实现权利要求1至11中任一项所述的方法。
26.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至11中任一项所述方法的步骤。
CN202110603464.1A 2021-05-31 2021-05-31 一种神经网络训练方法以及装置 Pending CN113505883A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110603464.1A CN113505883A (zh) 2021-05-31 2021-05-31 一种神经网络训练方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110603464.1A CN113505883A (zh) 2021-05-31 2021-05-31 一种神经网络训练方法以及装置

Publications (1)

Publication Number Publication Date
CN113505883A true CN113505883A (zh) 2021-10-15

Family

ID=78008706

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110603464.1A Pending CN113505883A (zh) 2021-05-31 2021-05-31 一种神经网络训练方法以及装置

Country Status (1)

Country Link
CN (1) CN113505883A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114444523A (zh) * 2022-02-10 2022-05-06 北京间微科技有限责任公司 一种便携式的离线机器翻译智能盒子
CN115034368A (zh) * 2022-06-10 2022-09-09 小米汽车科技有限公司 车载模型训练方法、装置、电子设备、存储介质及芯片
CN115457042A (zh) * 2022-11-14 2022-12-09 四川路桥华东建设有限责任公司 一种基于蒸馏学习的螺纹套丝表面缺陷检测的方法及系统
CN116306796A (zh) * 2023-05-17 2023-06-23 北京智源人工智能研究院 模型自生长训练加速方法、装置、电子设备和存储介质
CN117521759A (zh) * 2024-01-04 2024-02-06 支付宝(杭州)信息技术有限公司 大模型的训练方法和装置
WO2024040941A1 (zh) * 2022-08-25 2024-02-29 华为云计算技术有限公司 神经网络结构搜索方法、装置及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114444523A (zh) * 2022-02-10 2022-05-06 北京间微科技有限责任公司 一种便携式的离线机器翻译智能盒子
CN115034368A (zh) * 2022-06-10 2022-09-09 小米汽车科技有限公司 车载模型训练方法、装置、电子设备、存储介质及芯片
CN115034368B (zh) * 2022-06-10 2023-09-29 小米汽车科技有限公司 车载模型训练方法、装置、电子设备、存储介质及芯片
WO2024040941A1 (zh) * 2022-08-25 2024-02-29 华为云计算技术有限公司 神经网络结构搜索方法、装置及存储介质
CN115457042A (zh) * 2022-11-14 2022-12-09 四川路桥华东建设有限责任公司 一种基于蒸馏学习的螺纹套丝表面缺陷检测的方法及系统
CN116306796A (zh) * 2023-05-17 2023-06-23 北京智源人工智能研究院 模型自生长训练加速方法、装置、电子设备和存储介质
CN116306796B (zh) * 2023-05-17 2023-09-15 北京智源人工智能研究院 模型自生长训练加速方法、装置、电子设备和存储介质
CN117521759A (zh) * 2024-01-04 2024-02-06 支付宝(杭州)信息技术有限公司 大模型的训练方法和装置
CN117521759B (zh) * 2024-01-04 2024-04-05 支付宝(杭州)信息技术有限公司 大模型的训练方法和装置

Similar Documents

Publication Publication Date Title
WO2022083536A1 (zh) 一种神经网络构建方法以及装置
CN113505883A (zh) 一种神经网络训练方法以及装置
CN111401406B (zh) 一种神经网络训练方法、视频帧处理方法以及相关设备
EP4145351A1 (en) Neural network construction method and system
CN111368993B (zh) 一种数据处理方法及相关设备
WO2022156561A1 (zh) 一种自然语言处理方法以及装置
WO2022068623A1 (zh) 一种模型训练方法及相关设备
CN112183718A (zh) 一种用于计算设备的深度学习训练方法和装置
CN112651511A (zh) 一种训练模型的方法、数据处理的方法以及装置
CN113570029A (zh) 获取神经网络模型的方法、图像处理方法及装置
CN114330699A (zh) 神经网络结构搜索方法及装置
CN114997412A (zh) 一种推荐方法、训练方法以及装置
CN111428854A (zh) 一种结构搜索方法及结构搜索装置
CN111797992A (zh) 一种机器学习优化方法以及装置
CN113449859A (zh) 一种数据处理方法及其装置
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
CN114492723A (zh) 神经网络模型的训练方法、图像处理方法及装置
CN115081588A (zh) 一种神经网络参数量化方法和装置
CN114091554A (zh) 一种训练集处理方法和装置
CN113869496A (zh) 一种神经网络的获取方法、数据处理方法以及相关设备
CN112529149A (zh) 一种数据处理方法及相关装置
CN111652349A (zh) 一种神经网络的处理方法及相关设备
CN115238909A (zh) 一种基于联邦学习的数据价值评估方法及其相关设备
CN112446462A (zh) 目标神经网络模型的生成方法和装置
CN115983362A (zh) 一种量化方法、推荐方法以及装置

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