CN117709435B - 大语言模型的训练方法、代码生成方法、设备及存储介质 - Google Patents
大语言模型的训练方法、代码生成方法、设备及存储介质 Download PDFInfo
- Publication number
- CN117709435B CN117709435B CN202410162402.5A CN202410162402A CN117709435B CN 117709435 B CN117709435 B CN 117709435B CN 202410162402 A CN202410162402 A CN 202410162402A CN 117709435 B CN117709435 B CN 117709435B
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- training
- language model
- training sample
- 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.)
- Active
Links
- 238000012549 training Methods 0.000 title claims abstract description 293
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000012360 testing method Methods 0.000 claims description 19
- 238000010276 construction Methods 0.000 claims description 6
- 238000004140 cleaning Methods 0.000 claims description 4
- 230000002123 temporal effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 10
- 241000282414 Homo sapiens Species 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010429 evolutionary process Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/041—Abduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Electrically Operated Instructional Devices (AREA)
Abstract
本申请公开了一种大语言模型的训练方法、代码生成方法、设备及存储介质,方法包括基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集;基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。本申请先采用第一训练样本集对预设语言模型进行训练,然后基于第一训练样本集中的指令数据生成携带有更多信息量的第二训练样本集,并通过第二训练样本集对初始大语言模型进行微调,这样可以使得大语言模型更好地理解人类意图,从而可以提高大语言模型的生成效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种大语言模型的训练方法、代码生成方法、设备及存储介质。
背景技术
大语言模型(Large Language Model,LLM)是一种基于深度学习技术的自然语言处理模型,已经被应用于各个领域。目前,大语言模型通常是在通用语料上预训练的,以使得大语言模型具有较强的普适性。然而,在将大语言模型应用到软件工程领域时,采用在通用语料上预训练的大语言模型无法对齐人类意图,从而无法正确响应用户指令,进而导致生成的代码正确性低。
因而现有技术还有待改进和提高。
发明内容
本申请要解决的技术问题在于,针对现有技术的不足,提供一种大语言模型的训练方法、代码生成方法、设备及存储介质。
为了解决上述技术问题,本申请第一方面提供了一种大语言模型的训练方法,其中,所述的大语言模型的训练方法具体包括:
基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;
在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集,其中,所述第二训练数据集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;
基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。
所述的大语言模型的训练方法,其中,所述基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型具体包括:
收集代码指令数据集;
将所述代码指令数据集按照下游代码任务划分为若干指令数据类,并分别对各指令数据类所包括的指令数据进行清洗,得到第一训练数据集;
将所述第一训练数据集输入预设语言模型进行训练,以得到初始大语言模型。
所述的大语言模型的训练方法,其中,所述第一训练样本集包括代码到文本类的指令数据、代码到代码类的指令数据、文本到代码类的指令数据和文本到文本类的指令数据中一种或者多种指令数据。
所述的大语言模型的训练方法,其中,所述第一训练样本集至少包括文本到代码类的指令数据;所述在所述第一训练样本集中选取种子数据集具体包括:
在所述第一训练样本集中随机选取若干候选指令数据,其中,若干候选指令数据中的每个候选指令数据均为文本到代码类的指令数据;
在选取到的候选指令数据中选取包括预设语种的目标指令数据;
提取各目标指令数据中的指令问题,并将提取到的所有指令问题构成的集合作为种子数据集。
所述的大语言模型的训练方法,其中,所述基于所述种子数据集构建第二训练数据集具体包括:
对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题;
将进化得到的所有进化指令问题合并入所述种子数据集以更新所述种子数据集,并重新执行对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题的步骤,以得到指令问题集;
为所述指令问题集中的各指令问题配置指令回复,得到第二训练数据集。
所述的大语言模型的训练方法,其中,所述预设进化策略集包括增加时间或空间复杂度策略、增加约束策略、需求替换策略以及增加推理复杂度策略中的一种或者多少种。
所述的大语言模型的训练方法,其中,所述为所述指令问题集中的各指令问题配置指令回复,以得到第二训练数据集具体包括:
将所述指令问题集中的各指令问题输入初始大语言模型,通过所述初始大语言模型为指令问题生成预测指令回复;
将预测指令回复作为所述指令问题对应的指令回复,以得到第二训练数据集。
所述的大语言模型的训练方法,其中,所述第二训练数据集中的每个训练数据均为文本到代码类的指令数据,包括指令问题和指令回复;所述在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集之后,所述方法还包括:
对于第二训练数据集中的各训练数据中的指令回复进行测试,以选取指令回复符合预设正确要求的目标训练数据;
第二训练数据集中除目标训练数据外的训练数据删除,以更新所述第二训练数据集。
本申请第二方面提供了一种代码生成方法,使用如上所述的大语言模型的训练方法所得到的大语言模型生成代码,所述的代码生成方法包括:
获取目标指令问题;
将所述目标指令问题输入所述大语言模型,通过所述大语言模型生成所述目标指令问题对应的程序代码。
本申请第三方面提供了一种大语言模型的训练装置,其中,所述的大语言模型的训练装置具体包括微调模块和构建模块:
所述微调模块,用于基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;
所述构建模块,用于在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集,其中,所述第二训练数据集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;
所述微调模块,还用于基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的大语言模型的训练方法中的步骤,和/或以实现如上所述的代码生成方法中的步骤。
本申请第五方面提供了一种终端设备,其包括:处理器和存储器;
所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述处理器执行所述计算机可读程序时实现如上任一所述的大语言模型的训练方法中的步骤,和/或实现如上所述的代码生成方法中的步骤。
有益效果:与现有技术相比,本申请提供了一种大语言模型的训练方法、代码生成方法、设备及存储介质,所述方法包括基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集,其中,所述第二训练数据集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。本申请先采用第一训练样本集对预设语言模型进行训练,然后基于第一训练样本集中的指令数据生成携带有更多信息量的第二训练样本集,并通过第二训练样本集对初始大语言模型进行微调,这样可以使得大语言模型更好地理解人类意图,从而可以提高大语言模型的生成效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的大语言模型的训练方法的流程图。
图2为本申请实施例提供的大语言模型的训练方法的流程示例图。
图3为第一训练样本集的确定过程的流程示意图。
图4为初始大语言模型的训练过程的流程示意图。
图5为第二训练数据集的构建过程的流程示意图。
图6为第二训练数据集的筛选过程的流程示意图。
图7为基于第二训练数据的微调过程的流程示意图。
图8为本申请实施例提供的大语言模型的训练装置的结构原理图。
图9为本申请实施例提供的代码生成方法的流程图。
图10为本申请实施例提供的终端设备的结构原理图。
具体实施方式
本申请实施例提供一种大语言模型的训练方法、代码生成方法、设备及存储介质,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
经过研究发现,大语言模型(Large Language Model,LLM)是一种基于深度学习技术的自然语言处理模型,其已经被应用于各个领域。目前,大语言模型通常是在通用语料上预训练的,以使得大语言模型具有较强的普适性。然而,在将大语言模型应用到软件工程领域时,采用在通用语料上预训练的大语言模型无法对齐人类意图,从而无法正确响应用户指令,进而导致生成的代码正确性低。
为了解决上述问题,在本申请实施例中,基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集,其中,所述第二训练数据集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。本申请先采用第一训练样本集对预设语言模型进行训练,然后基于第一训练样本集中的指令数据生成携带有更多信息量的第二训练样本集,并通过第二训练样本集对初始大语言模型进行微调,这样可以使得大语言模型更好地理解人类意图,从而可以提高大语言模型的生成效果。
下面结合附图,通过对实施例的描述,对申请内容做进一步说明。
本实施例提供了一种大语言模型的训练方法,所述方法可以应用于服务端或者终端,也可以在终端和服务端协同执行。下面以该方法应用于电子设备为例进行说明,该电子设备可以为具有显卡的终端或者服务端,其中,终端可以但不限于各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备、便携式可穿戴设备或者沉浸式图像显示设备等中的一种或多种。物联网设备可为智能音箱、智能电视、智能空调、或者智能车载设备等中的一种或多种。便携式可穿戴设备可为智能手表、智能手环、或者头戴设备等中的一种或多种。沉浸式图像显示设备包括但不限于增强现实(AugmentedReality,AR)设备、虚拟现实(VirtualReality,VR)设备等。服务端可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
如图1和图2所示,本申请实施例提供的大语言模型的训练方法具体包括:
S10、基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型。
具体地,预设语言模型可以被称为基座模型或者大模型等,可以为任何可商用的开源模型,例如,CodeLlama-34B大模型等。第一训练样本集用于对预设语言模型进行训练,第一训练样本集包括若干指令数据,若干指令数据中的每个指令数据均属于同一目标领域,例如,医疗领域、法律领域、金融领域、教育领域或软件工程领域等。在本申请实施例中,以目标领域为软件工程领域。相应地,若干指令数据中的每个指令数据均包括指令问题和指令回复,指令问题用于作为预设语言模型的输入项,指令回复用于作为指令问题的真值标签。
在一些实现方式中,如图3所示的,所述基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型具体包括步骤:
S11、收集代码指令数据集;
S12、将所述代码指令数据集按照下游代码任务划分为若干指令数据类,并对各指令数据类所包括的指令数据进行清洗,得到第一训练数据集;
S13、将所述第一训练数据集输入预设语言模型进行训练,以得到初始大语言模型。
具体地,在步骤S11中,指令数据集可以为自建的代码指令数据集,也可以通过开源途径收集到的代码指令数据构成的。在本申请实施例中,代码指令数据集通过互联网收集到的,也就是说,通过收集互联网数据来形成代码指令数据集,其中,代码指令数据集至少包括指令问题,此外还可以包括指令回复。也就是说,在收集指令数据时,可以收集仅包含有指令问题的互联网数据,也可以收集同时包含有指令问题和指令回复的互联网数据,其中,指令回复为指令问题对应的问题回复,也可以说指令回复为指令问题的下游代码任务,即根据指令问题确定需要执行的下游代码任务。
在步骤S12中,在搜集指令数据集后,可以按照下游代码任务将指令数据划分为若干指令数据类,其中,若干指令数据类中的每个指令数据类均包括指令问题和指令回复,指令问题的指令数据类型可以为文本类型或者代码类型,指令回复的指令数据类型可以为文本类型或者代码类型,例如,若指令问题为文本类型,指令回复为代码类型,那么指令数据类为文本到代码类,或者是,若指令问题为文本类型,指令回复为文本类型,那么指令数据类为文本到文本类。
由此可知,若干指令数据类可以包括代码到文本类的指令数据、代码到代码类的指令数据、文本到代码类的指令数据和文本到文本类的指令数据中一种或者多种指令数据。例如,若干指令数据类包括代码到文本类的指令数据和文本到代码类的指令数据,或者是,包括文本到代码类的指令数据,或者是,包括代码到文本类的指令数据、文本到代码类的指令数据和文本到文本类的指令数据等。
在本申请实施例中,若干指令数据类可以包括代码到文本类的指令数据、代码到代码类的指令数据、文本到代码类的指令数据和文本到文本类的指令数据,以使得第一训练样本集中的指令数据包括代码到文本类的指令数据、代码到代码类的指令数据、文本到代码类的指令数据和文本到文本类的指令数据,这样第一训练样本集可以涵盖多种下游任务的指令数据,从而可以提高基于第一训练样本集训练得到的初始大语言模型具有解决多种下游任务的能力。
需要说明的是,下游代码任务可以但不限于包括代码竞赛题、文本到SQL、代码翻译、代码纠错、代码补全、代码注释、代码解释以及代码相关问题回答等,其中,对于代码竞赛题和文本到SQL,指令问题采用文本形式,指令回复采用代码形式,即代码竞赛题和文本到SQL作为一个下游代码任务,该下游代码任务对应文本到代码类;对于代码翻译、代码纠错以及代码补全,指令问题采用代码形式,指令回复采用代码形式,即代码翻译、代码纠错以及代码补全作为一个下游代码任务,该下游代码任务对应代码到代码类;对于代码注释和代码解释,指令问题采用代码形式,指令回复采用文本形式,即代码注释和代码解释,作为一个下游代码任务,该下游代码任务对应代码到文本类;对于代码相关问题回答,指令问题采用文本形式,指令回复采用文本形式,即代码相关问题回答,作为一个下游代码任务,该下游代码任务对应文本到文本类。
进一步,在划分得到各指令数据类后,对各指令数据类中的指令数据进行清洗,其中,清洗可以包括去除各指令数据类的重复指令数据,去除噪声指令数据,或者通过抽样数据后进行人工审核判断该数据集质量,删除质量低的数据。
在步骤S13中,在获取到第一训练数据集后,如图4所示,采用第一训练数据集对预设语言模型进行全参微调,也就是说,对于第一训练数据集中的每个指令数据,将指令数据中的指令问题输入预设语言模型,通过预设语言模型输出预测指令回复,然后基于预测指令回复和指令数据中的指令回复对预设语言模型的模型参数进行优化,以得到初始大语言模型。
S20、在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集。
具体地,种子数据集包括若干种子数据,若干种子数据中的每个种子数据均对应第一训练样本集中的一个指令数据,其中,种子数据为第一训练样本集中的指令数据,也可以为第一训练样本集中的指令数据所包含的指令问题等。此外,种子数据集可以通过在第一训练样本集中随机选取预设数量的指令数据所形成的,也可以是在第一训练样本集中的每个指令数据类中随机选取若干指令数据所得到的预设数量的指令数据所形成的,也可以是一个预定指令数据类中随机选取若干指令数据所形成的等。
在一些实现方式中,第一训练样本集中至少包括文本到代码类的指令数据,并且通过从文本到代码类的指令数据中选取种子数据,这样由于文本到代码类的指令数据中的指令问题为文本数据,一方面文本数据便于进行信息扩充,另一方面通过采用文本指令数据类型的指令问题来构建种子数据集,再基于种子数据集构建第二训练数据集,使得第二训练数据集中的训练数据中的指令问题为文本数据,指令回复为代码数据,这样可以提高训练得到的大语言模型对于代码生成任务的能力。基于此,所述在所述第一训练样本集中选取种子数据集具体包括:
在所述第一训练样本集中随机选取若干候选指令数据;
在选取到的候选指令数据中选取包括预设语种的目标指令数据;
提取各目标指令数据中的指令问题,并将提取到的所有指令问题构成的集合作为种子数据集。
具体地,若干候选指令数据中的每个候选指令数据均为文本到代码类的指令数据,也就是说,在第一训练集中的文本到代码类的指令数据中随机选取若干候选指令数据。例如,在第一训练样本集中选取300个文本到代码类的指令数据等。当然,值得说明的是,若干候选指令数据的数量小于第一训练集中的文本到代码类的指令数据的数量。
在获取到若干候选指令数据后,按照预设规则对若干候选指令数据进行筛选,其中,预设规则为预先设置的,例如,候选指令数据包括预设语种(如,英文,中文等),或者是,候选指令数据的样本长度大于预设长度阈值等。在本申请实施例中,预设规则为预设语种,即在选取到的候选指令数据中选取包括预设语种的目标指令数据,其中,预设语种可以为英文或者中文等。例如,若干候选指令数据为300个文本到代码类的指令数据,然后在300个文本到代码类的指令数据中选取到200个包含有英文的指令数据等。此外,需要说明的是,在选取到的候选指令数据中选取包括预设语种的目标指令数据的过程可以通过识别指令数据是否包含英文而自动实现的,也可以是人工按照是否包含英文而手动选取的。
进一步,第二训练数据集为基于种子数据集构建的,并且第二训练数据集包括若干训练数据,若干训练数据中至少存在一个目标训练数据,该目标训练数据所包含的数据信息多于用于构建所述训练数据的种子数据。例如,种子数据为“编写一个Python程序来计算0到n中所有偶数的总和”,基于种子数据构建的一训练数据为“编写一个Python程序,计算斐波那契数列中直到第n项的所有偶数斐波那契数的总和;斐波那契数列是一系列数字,其中每个数字都是前两个数字的总和,通常以0和1开头,如,斐波那契数列的前10项是:0,1,1,2,3,5,8,13,21,34;在这种情况下,如果n=10,您的程序应返回44(即0、2、8和34的总和)”。此外,需要说明的是,第二训练数据集中的训练数据也可以为种子数据集中的种子数据,也就是说,第二训练数据集可以包括种子数据集中的各种子数据,以及基于种子数据构建得到的构建数据。同时,为了提高训练效果,第二训练数据集中包括多条目标训练数据(例如,几千条目标训练数据等)。
在一些实现方式中,如图5所示,所述基于所述种子数据集构建第二训练数据集具体包括:
S211、对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题;
S212、将进化得到的所有进化指令问题合并入所述种子数据集以更新所述种子数据集,并重新执行对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题的步骤,以得到指令问题集;
S213、为所述指令问题集中的各指令问题配置指令回复,得到第二训练数据集。
具体地,在步骤S211中,进化策略为预先设置的,用于将种子数据进化成更难的指令数据以对初始大语言模型进行训练。也就是说,第二训练数据集为进化策略对种子数据集中的种子数据进行进化所得到的。其中,进化策略可以包括增加时间或空间复杂度策略、增加约束策略、需求替换策略以及增加推理复杂度策略中的一种或者多少种。在本申请实施例中,进化策略包括增加时间或空间复杂度策略、增加约束策略、需求替换策略以及增加推理复杂度策略,并且在每次循环过程中,每个种子数据集中的种子数据均通过每个进化策略构建一个进化指令问题,每个进化指令问题可以确定一个训练数据。本申请通过多种进化策略来生成第二训练样本集,一方面可以增加第二训练样本集中的训练数据的数据难度,可以增加大语言模型对于逻辑推理能力要求高的指令问题的理解能力,从而可以提高大语言模型的模型效果;另一方面可以提高第二训练样本集中的训练数据的多样性,从而可以提高基于第二训练样本集训练得到的大语言模型的模型泛化性。
举例说明:假设种子数据为“编写一个Python程序来计算0到n中所有偶数的总和”,进化策略包括增加时间或空间复杂度策略、增加约束策略、需求替换策略以及增加推理复杂度策略,那么基于该种子数据可以构建得到四个指令问题,分别为:
A、增加时间或者空间复杂度策略对应的指令问题为:
编写一个Python程序,计算斐波那契数列中直到第n项的所有偶数斐波那契数的总和;斐波那契数列是一系列数字,其中每个数字都是前两个数字的总和,通常以0和1开头,如,斐波那契数列的前10项是:0,1,1,2,3,5,8,13,21,34;在这种情况下,如果n=10,您的程序应返回44(即0、2、8和34的总和)。
B、增加约束策略对应的指令问题为:
编写一个Python程序,不仅要计算0到n中所有偶数的总和,而且还要找出这些偶数中哪些是质数。此外,程序应该能够处理非整数值,例如字符串或浮点数,并在这种情况下返回一个错误消息。
C、需求替换策略对应的指令问题为:
编写一个Python程序,该程序将计算0到n之间所有质数的总和,并且所有质数满足以下预设条件:所有质数在二进制表示中的1的数量也是质数。例如,如果n=10,那么在0到10之间的质数有2,3,5,7。在二进制表示中,2(10),3(11),5(101)和7(111)的1的数量分别为1,2,2和3,其中,2和3是质数,所以质数3,5和7满足预设条件。因此,满足预设条件的质数的总和为3+5+7=15。
D、增加推理复杂度策略对应的指令问题为:
编写一个Python程序,该Python程序将生成一个包含n个随机整数的列表。然后,Python程序需要找到列表中所有偶数的总和,并且如果该总和是偶数,那么Python程序返回总和的平方根,如果总和是奇数,那么Python程序返回总和的立方根。请注意,您需要考虑到可能出现的所有边界情况,并确保程序能够正确处理。
此外,需要说明的是,在基于进化策略来对种子数据集中的种子数据进化以得到指令问题集时,可以经过多轮进化过程,其中,在第一轮进化过程中,基于进化策略对选取到的种子数据集进行进化,在进化完成后,将进化得到的所有进化指令问题添加到种子数据集,以更新种子数据集;在第二轮进化过程中,对第一轮进化过程更新后种子数据集进行进化;在第三轮进化过程中,对第二轮进化过程更新后种子数据集进行进化,以此类推,在最后一轮进化过程中,对倒数第二轮进化过程更新后种子数据集进行进化,其中,每一轮更新后的种子数据集均包括该轮进化得到的指令问题、该轮之前的所有轮进化得到的指令问题以及选取到的种子数据集中的种子数据。本申请实施例通过进行多轮进化,可以得到任务难度高的指令数据,较难的指令问题使得大语言模型可以接收到较难的任务,而较难的任务可以很好地激发大语言模型的能力,可以进一步提高大语言模型的模型效果。
进一步,在步骤S212中,在获取到指令问题集后,需要为指令问题集中的每个指令问题配置指令回复,其中,指令回复可以是人工标注的,也可以是通过经过第一训练数据集训练得到的初始大语言模型确定的。在本申请实施例中,指令回复为通过初始大语言模型确定的。相应地,所述为所述指令问题集中的各指令问题配置指令回复,以得到第二训练数据集具体包括;
将所述指令问题集中的各指令问题输入初始大语言模型,通过所述初始大语言模型为指令问题生成预测指令回复;
将预测指令回复作为所述指令问题对应的指令回复,以得到第二训练数据集。
具体地,初始大语言模型为输入的指令问题生成预测指令回复,在获取到预测指令回复后,可以直接将预测指令回复作为指令问题的回复标签,即将预测指令回复作为指令问题的指令回复以形成一个训练数据,然后将所有训练数据构成的集合作为第二训练数据集。
在一个实现方式中,述第二训练数据集中的每个训练数据均包括指令问题和指令回复;所述在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集之后,所述方法还包括:
对于第二训练数据集中的各训练数据中的指令回复进行测试,以选取指令回复符合预设正确要求的目标训练数据;
将第二训练数据集中除目标训练数据外的训练数据删除。
具体地,预设正确要求为衡量指令回复所属的训练数据是否可以被用于训练初始大语言模型的依据,其中,符合预设正确要求说明指令回复符合预设正确要求,可以用于训练初始大语言模型;反之,不预设正确要求说明指令回复不符合预设正确要求,不可以用于训练初始大语言模型。其中,测试可以采用人工检查的方式、运行结果验证方式以及可编译性验证方式等。
在本申请实施例的实现方式中,如图6所示,指令回复为代码数据,从而可以采用可编译性验证方式(即通过单元测试的方式)来进行测试。其中,单元测试为针对指令回复进行正确性校验的最低级别的测试活动。我们可以通过大语言模型(例如,大模型GPT4,或者是通过经过第一训练样本集训练得到的初始大语言模型等)对指令回复生成对应的测试单元,通过预设编译软件对指令回复进行单元测试,当运行结果正确时,说明指令回复的正确性验证通过;反之,当编译未通过或者运行结果错误时,说明指令回复的正确性验证未通过。本申请实施例通过对第二训练数据集中通过编译反馈机制对训练数据进行筛选,可以提高第二训练数据集中的训练数据的数据准确性,进而可以降低大语言模型的幻觉影响,从而可以进一步提高基于第二训练数据集微调后的大语言模型的模型性能。
此外,需要说明的是,第二训练数据集的筛选过程可以在基于种子数据集生成第二训练数据的过程中进行,即在基于种子数据集生成指令问题集后,可以通过初始大语言模型生成每个指令问题对应的指令回复以及单元测试,然后通过单元测试来对指令回复进行测试,测试通过的指令回复和指令问题形成一个训练数据,测试未通过的指令回复对应的指令问题丢弃,最后形成筛选后的第二训练数据集。
S30、基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。
具体地,如图7所示,在获取到的第二训练样本集后,将第二训练样中的指令问题输入初始大语言模型,然后初始大语言模型生成预测指令回复,在基于预测指令回复和指令回复对初始大语言模型的模型参数进行微调。本申请实施例通过利用根据第一训练数据集中的部分训练数据生成的难度更高的第二训练数据来进行微调,可以提高大语言模型对困难问题的理解,并且可以使得大语言模型与人类意图对齐,进而提高大语言模型的模型效果。
综上所述,本实施例提供了一种大语言模型的训练方法,方法包括基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集;基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。本申请先采用第一训练样本集对预设语言模型进行训练,然后基于第一训练样本集中的指令数据生成携带有更多信息量的第二训练样本集,并通过第二训练样本集对初始大语言模型进行微调,这样可以使得大语言模型更好地理解人类意图,从而可以提高大语言模型的生成效果。
基于上述大语言模型的训练方法,本实施例提供了一种大语言模型的训练装置,如图8所示,所述的大语言模型的训练装置具体包括微调模块100和构建模块200:
所述微调模块100,用于基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;
所述构建模块200,用于在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练数据集,其中,所述第二训练数据集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;
所述微调模块100,还用于基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型。
基于上述大语言模型的训练方法,本实施例提供了一种代码生成方法,如图9所示,应用基于上述实施例所述的大语言模型的训练方法所得到的大语言模型,所述的代码生成方法包括:
B10、获取目标指令问题;
B20、将所述目标指令问题输入所述大语言模型,通过所述大语言模型生成所述目标指令问题对应的程序代码。
基于上述大语言模型的训练方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的大语言模型的训练方法中的步骤。
基于上述大语言模型的训练方法,本申请还提供了一种终端设备,如图10所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(Communications Interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种大语言模型的训练方法,其特征在于,所述的大语言模型的训练方法具体包括:
基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;
在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练样本集,其中,所述第二训练样本集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;
基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型;
其中,所述基于所述种子数据集构建第二训练样本集具体包括:
对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题;
将进化得到的所有进化指令问题合并入所述种子数据集以更新所述种子数据集,并重新执行对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题的步骤,以得到指令问题集;
为所述指令问题集中的各指令问题配置指令回复,得到第二训练样本集;
所述第二训练样本集中的每个训练数据均为文本到代码类的指令数据,包括指令问题和指令回复;所述在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练样本集之后,所述方法还包括:
对第二训练样本集中的各训练数据中的指令回复进行测试,以选取指令回复符合预设正确要求的目标训练数据,其中,对指令回复进行测试具体为通过单元测试来对指令回复进行测试,其中,单元测试为通过初始大语言模型生成的;
将第二训练样本集中除目标训练数据外的训练数据删除。
2.根据权利要求1所述的大语言模型的训练方法,其特征在于,所述基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型具体包括:
收集代码指令数据集;
将所述代码指令数据集按照下游代码任务划分为若干指令数据类,并分别对各指令数据类所包括的指令数据进行清洗,得到第一训练数据集;
将所述第一训练数据集输入预设语言模型进行训练,以得到初始大语言模型。
3.根据权利要求1所述的大语言模型的训练方法,其特征在于,所述第一训练样本集包括代码到文本类的指令数据、代码到代码类的指令数据、文本到代码类的指令数据和文本到文本类的指令数据。
4.根据权利要求3所述的大语言模型的训练方法,其特征在于,所述第一训练样本集至少包括文本到代码类的指令数据;所述在所述第一训练样本集中选取种子数据集具体包括:
在所述第一训练样本集中随机选取若干候选指令数据,其中,若干候选指令数据中的每个候选指令数据均为文本到代码类的指令数据;
在选取到的候选指令数据中选取包括预设语种的目标指令数据;
提取各目标指令数据中的指令问题,并将提取到的所有指令问题构成的集合作为种子数据集。
5.根据权利要求1所述的大语言模型的训练方法,其特征在于,所述预设进化策略集包括增加时间或空间复杂度策略、增加约束策略、需求替换策略以及增加推理复杂度策略中的一种或者多种。
6.根据权利要求1所述的大语言模型的训练方法,其特征在于,所述为所述指令问题集中的各指令问题配置指令回复,得到第二训练样本集具体包括:
将所述指令问题集中的各指令问题输入初始大语言模型,通过所述初始大语言模型为指令问题生成预测指令回复;
将预测指令回复作为所述指令问题对应的指令回复,以得到第二训练样本集。
7.一种代码生成方法,其特征在于,使用基于如权利要求1-6任意一项所述的大语言模型的训练方法所得到的大语言模型生成代码,所述的代码生成方法包括:
获取目标指令问题;
将所述目标指令问题输入所述大语言模型,通过所述大语言模型生成所述目标指令问题对应的代码。
8.一种大语言模型的训练装置,其特征在于,所述的大语言模型的训练装置具体包括微调模块和构建模块:
所述微调模块,用于基于第一训练样本集对预设语言模型进行全参数微调,得到初始大语言模型;
所述构建模块,用于在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练样本集,其中,所述第二训练样本集中包括若干训练数据,若干训练数据中至少存在一个目标训练数据,所述目标训练数据所包括的数据信息多于用于构建所述训练数据的种子数据;
所述微调模块,还用于基于所述第二训练样本集对所述初始大语言模型进行全参数微调,得到经过训练的大语言模型;
其中,所述基于所述种子数据集构建第二训练样本集具体包括:
对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题;
将进化得到的所有进化指令问题合并入所述种子数据集以更新所述种子数据集,并重新执行对于所述种子数据集中的每个种子数据,在预设进化策略集中选取至少一个进化策略,并基于选取到的进化策略对所述种子数据进行进化,以得到进化指令问题的步骤,以得到指令问题集;
为所述指令问题集中的各指令问题配置指令回复,得到第二训练样本集;
所述第二训练样本集中的每个训练数据均为文本到代码类的指令数据,包括指令问题和指令回复;所述在所述第一训练样本集中选取种子数据集,并基于所述种子数据集构建第二训练样本集之后,所述的大语言模型的训练装置还用于:
对第二训练样本集中的各训练数据中的指令回复进行测试,以选取指令回复符合预设正确要求的目标训练数据,其中,对指令回复进行测试具体为通过单元测试来对指令回复进行测试,其中,单元测试为通过初始大语言模型生成的;
将第二训练样本集中除目标训练数据外的训练数据删除。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-6任意一项所述的大语言模型的训练方法中的步骤,和/或以实现如权利要求7所述的代码生成方法中的步骤。
10.一种终端设备,其特征在于,包括:处理器和存储器;
所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述处理器执行所述计算机可读程序时实现如权利要求1-6任意一项所述的大语言模型的训练方法中的步骤,和/或实现如权利要求7所述的代码生成方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410162402.5A CN117709435B (zh) | 2024-02-05 | 2024-02-05 | 大语言模型的训练方法、代码生成方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410162402.5A CN117709435B (zh) | 2024-02-05 | 2024-02-05 | 大语言模型的训练方法、代码生成方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117709435A CN117709435A (zh) | 2024-03-15 |
CN117709435B true CN117709435B (zh) | 2024-06-11 |
Family
ID=90159278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410162402.5A Active CN117709435B (zh) | 2024-02-05 | 2024-02-05 | 大语言模型的训练方法、代码生成方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117709435B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118035751B (zh) * | 2024-04-12 | 2024-07-16 | 清华大学 | 用于大语言模型微调训练的数据构建方法及装置 |
CN118504714B (zh) * | 2024-07-18 | 2024-09-24 | 北京深势科技有限公司 | 一种对大语言模型的文本嵌入模块进行训练的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116127045A (zh) * | 2023-03-03 | 2023-05-16 | 北京百度网讯科技有限公司 | 生成式大语言模型训练方法、基于模型的人机语音交互方法 |
CN117149989A (zh) * | 2023-11-01 | 2023-12-01 | 腾讯科技(深圳)有限公司 | 大语言模型训练方法、文本处理方法及装置 |
CN117194612A (zh) * | 2023-09-20 | 2023-12-08 | 郑州阿帕斯数云信息科技有限公司 | 大模型训练方法、装置、计算机设备集存储介质 |
CN117390450A (zh) * | 2023-10-27 | 2024-01-12 | 航天信息股份有限公司 | 一种大语言模型训练方法、装置及相关设备 |
-
2024
- 2024-02-05 CN CN202410162402.5A patent/CN117709435B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116127045A (zh) * | 2023-03-03 | 2023-05-16 | 北京百度网讯科技有限公司 | 生成式大语言模型训练方法、基于模型的人机语音交互方法 |
CN117194612A (zh) * | 2023-09-20 | 2023-12-08 | 郑州阿帕斯数云信息科技有限公司 | 大模型训练方法、装置、计算机设备集存储介质 |
CN117390450A (zh) * | 2023-10-27 | 2024-01-12 | 航天信息股份有限公司 | 一种大语言模型训练方法、装置及相关设备 |
CN117149989A (zh) * | 2023-11-01 | 2023-12-01 | 腾讯科技(深圳)有限公司 | 大语言模型训练方法、文本处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117709435A (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12020134B2 (en) | Debugging correctness issues in training machine learning models | |
CN117709435B (zh) | 大语言模型的训练方法、代码生成方法、设备及存储介质 | |
US10936821B2 (en) | Testing and training a question-answering system | |
US11061805B2 (en) | Code dependency influenced bug localization | |
US12079602B2 (en) | Systems and methods for a conversational framework of program synthesis | |
CN107644011A (zh) | 用于细粒度医疗实体提取的系统和方法 | |
US11551151B2 (en) | Automatically generating a pipeline of a new machine learning project from pipelines of existing machine learning projects stored in a corpus | |
CN110705255B (zh) | 检测语句之间的关联关系的方法和装置 | |
CN110110331B (zh) | 文本生成方法、装置、介质和计算设备 | |
CN110929532A (zh) | 数据处理方法、装置、设备及存储介质 | |
EP3968244A1 (en) | Automatically curating existing machine learning projects into a corpus adaptable for use in new machine learning projects | |
CN115358397A (zh) | 一种基于数据采样的并行图规则挖掘方法及装置 | |
EP3965024A1 (en) | Automatically labeling functional blocks in pipelines of existing machine learning projects in a corpus adaptable for use in new machine learning projects | |
US20220405487A1 (en) | Causal Knowledge Identification and Extraction | |
CN114020774A (zh) | 多轮问答语句的处理方法、装置、设备及存储介质 | |
US20240086768A1 (en) | Learning device, inference device, non-transitory computer-readable medium, learning method, and inference method | |
CN117472431A (zh) | 代码注释生成方法、装置、计算机设备、存储介质和产品 | |
WO2022230226A1 (en) | A meta-learning data augmentation framework | |
CN116503608A (zh) | 基于人工智能的数据蒸馏方法及相关设备 | |
CN111666405A (zh) | 用于识别文本蕴含关系的方法和装置 | |
Tkáčik | Pattern Mining in Command Histories from Cybersecurity Training | |
US20240265101A1 (en) | Detecting code anomalies in source code using machine learning techniques | |
CN111737440B (zh) | 一种问题生成方法及装置 | |
US20240346247A1 (en) | Artificial intelligence based log mask prediction for communications system testing | |
JP2024137928A (ja) | 言語処理方法及び言語処理システム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |