CN116820429A - 代码处理模型的训练方法、装置、电子设备及存储介质 - Google Patents
代码处理模型的训练方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116820429A CN116820429A CN202311085387.0A CN202311085387A CN116820429A CN 116820429 A CN116820429 A CN 116820429A CN 202311085387 A CN202311085387 A CN 202311085387A CN 116820429 A CN116820429 A CN 116820429A
- Authority
- CN
- China
- Prior art keywords
- code processing
- processing model
- model
- code
- training
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 417
- 238000012549 training Methods 0.000 title claims abstract description 308
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 238000004590 computer program Methods 0.000 claims abstract description 14
- 239000011159 matrix material Substances 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 26
- 238000013136 deep learning model Methods 0.000 claims description 23
- 230000007246 mechanism Effects 0.000 claims description 22
- 238000013528 artificial neural network Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 16
- 238000013145 classification model Methods 0.000 claims description 9
- 108091026890 Coding region Proteins 0.000 claims description 8
- 230000006870 function Effects 0.000 description 48
- 238000005516 engineering process Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 230000018109 developmental process Effects 0.000 description 12
- 238000011161 development Methods 0.000 description 11
- 239000013598 vector Substances 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000003058 natural language processing Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 230000000306 recurrent effect Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000002689 soil Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001416177 Vicugna pacos Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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/088—Non-supervised learning, e.g. competitive learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Machine Translation (AREA)
Abstract
本申请提供了一种代码处理模型的训练方法、装置、电子设备、计算机程序产品及计算机可读存储介质;方法包括:获取通用语料训练集、领域语料训练集以及指令数据集合;基于通用语料训练集预训练代码处理模型,得到预训练后的代码处理模型;基于通用语料训练集中的至少部分样本和领域语料训练集,调用预训练后的代码处理模型进行领域训练处理,得到特定领域的代码处理模型;基于指令数据集合调用特定领域的代码处理模型进行训练,得到训练完成的代码处理模型,其中,训练完成的代码处理模型用于基于输入的问题指令生成作为回答内容的代码。通过本申请,能够提升代码处理模型生成特定领域代码的准确性。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种代码处理模型的训练方法、装置、设备及计算机可读存储介质。
背景技术
自然语言处理(Nature Language processing, NLP)是计算机科学领域与人工智能领域中的重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理涉及自然语言,即人们日常使用的语言,与语言学研究密切;同时涉及计算机科学和数学、人工智能领域模型训练的重要技术。预训练模型,即是从NLP领域的大语言模型(Large Language Model,LLM)发展而来。经过微调,大语言模型可以广泛应用于下游任务。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。
相关技术中,通过大语言模型进行代码生成处理,在应用阶段,面对新任务或编程语言时,泛化能力较弱,在训练阶段,强化学习方法通常需要大量的计算资源和训练时间。相关技术中,暂无较好的方案提升代码处理模型生成特定领域代码的准确性。
发明内容
本申请实施例提供一种代码处理模型的训练方法、装置、设备及计算机可读存储介质、计算机程序产品,能够提升代码处理模型生成特定领域代码的准确性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种代码处理模型的训练方法,所述方法包括:
获取通用语料训练集、领域语料训练集以及指令数据集合;
基于所述通用语料训练集预训练所述代码处理模型,得到预训练后的所述代码处理模型,其中,预训练后的所述代码处理模型用于基于待处理文本生成代码;
基于所述通用语料训练集中的至少部分样本和所述领域语料训练集,调用预训练后的所述代码处理模型进行领域训练处理,得到特定领域的代码处理模型,其中,特定领域的所述代码处理模型用于基于待处理的领域文本生成目标领域的代码;
基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型,其中,训练完成的所述代码处理模型用于基于输入的问题指令生成作为回答内容的代码。
本申请实施例提供一种代码处理模型的训练装置,包括:
数据获取模块,配置为获取通用语料训练集、领域语料训练集以及指令数据集合;
模型训练模块,配置为基于所述通用语料训练集预训练所述代码处理模型,得到预训练后的所述代码处理模型,其中,预训练后的所述代码处理模型用于基于待处理文本生成代码;
所述模型训练模块,配置为基于所述通用语料训练集中的至少部分样本和所述领域语料训练集,调用预训练后的所述代码处理模型进行领域训练处理,得到特定领域的代码处理模型,其中,特定领域的所述代码处理模型用于基于待处理的领域文本生成目标领域的代码;
所述模型训练模块,配置为基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型,其中,训练完成的所述代码处理模型用于基于输入的问题指令生成作为回答内容的代码。
本申请实施例提供一种电子设备,所述电子设备包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现本申请实施例提供的代码处理模型的训练方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于被处理器执行时,实现本申请实施例提供的代码处理模型的训练方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或计算机可执行指令,述计算机程序或计算机可执行指令被处理器执行时,实现本申请实施例提供的代码处理模型的训练方法。
本申请实施例具有以下有益效果:
通过通用语料训练集训练模型,确保了代码处理模型在通用领域的基础功能可靠;通过将至少部分通用语料训练集的数据结合领域语料训练集进行训练,使得代码处理模型在获取特定领域的代码生成功能时,避免基础的通用领域功能遗忘;通过指令数据集合训练模型,使得模型能够具备问答能力,提升模型理解用户输入内容的能力,进而使得所输出的代码更符合需求;通过多层次的训练方式,提升了代码处理模型生成代码的精确度,使得代码处理模型能够生成更符合用户所输入的内容的代码,提升用户体验。
附图说明
图1是本申请实施例提供的代码处理模型的训练方法的应用模式示意图;
图2是本申请实施例提供的电子设备的结构示意图;
图3A是本申请实施例提供的代码处理模型的训练方法的第一流程示意图;
图3B是本申请实施例提供的代码处理模型的训练方法的第二流程示意图;
图3C是本申请实施例提供的代码处理模型的训练方法的第三流程示意图;
图3D是本申请实施例提供的代码处理模型的训练方法的第四流程示意图;
图3E是本申请实施例提供的代码处理模型的训练方法的第五流程示意图;
图4是本申请实施例提供的代码处理模型的第一结构示意图;
图5是本申请实施例提供的代码处理模型的训练方法的一个可选的流程示意图;
图6是本申请实施例提供的代码处理模型的第二结构示意图;
图7是本申请实施例提供的不同大小模型及量化后的精度对比表;
图8是本申请实施例提供的基于功能服务化平台的代码处理模型的部署方案。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
需要指出,本申请书中相关数据收集处理(例如:通用语料训练集、领域语料训练集)在实例应用时应该严格根据相关国家法律法规的要求,获取个人信息主体的知情同意或单独同意,并在法律法规及个人信息主体的授权范围内,开展后续数据使用及处理行为。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)大语言模型(Large Language Model,LLM),是一种基于人工神经网络的自然语言处理技术,它能够自动地学习并理解自然语言中的语法、语义和上下文,从而生成与之相关的文本。大语言模型通常基于深度学习模型,例如:循环神经网络(Recurrent NeuralNetwork,RNN)或转换器模型(Transformer),并通过大规模语料库的训练来提高其性能。这些模型通常由数百万或数十亿个参数组成,能够生成高度连贯和自然的文本。
2)循环神经网络(Recurrent Neural Network,RNN),一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。
3)领域特定语言(Domain-Specific Language,DSL),一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如服务业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与领域特定语言相比的另一个概念是通用语言(General-Purpose Language,GPL),通用语言则可以广泛应用于各种商业或应用问题当中。
4)自注意力机制,一种用于机器学习和自然语言处理的技术,它能够将输入序列中的每个元素(例如单词或字符)与其他元素建立关联,并计算它们之间的相似度。这样的关联可以用于各种任务,例如:序列到序列的转换、文本分类和语言建模等。
5)预训练(Pre-training),一种机器学习技术。预训练的主要思想是在大规模数据上训练一个模型,以使训练后的模型得到一定的语义表达能力。预训练的目的不是为了解决某个具体任务,而是学习一般的语义知识。利用预训练的模型作为初始化,并在目标任务的数据上进行微调(fine-tuning)。微调的过程可以更快地收敛,并且可以避免遗忘预训练时得到的知识。预训练可以利用大规模数据,学习到更强的语义表达能力。
6)提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力,如问答和算术推理能力。开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。
7)位置编码,分为绝对位置编码和相对位置编码,绝对位置编码就是直接按照函数公式或者可学习参数得到每个标记(token)的位置编码加到标记(token)的输入表征上。相对位置编码(Relative Position Embedding,RPE)是在自注意力(self-attention)的时候关注当前标记的时候,其他标记按照和当前标记的相对位置编码其位置信息。
8)简化注意力机制(Flash Attention)技术,一种基于全局注意力和局部注意力协同的注意力机制。在简化注意力机制中,输入信息首先通过全局注意力机制,对输入信息进行初步筛选和权重分配,得到输入信息的粗略特征表示。然后,局部注意力机制根据全局注意力分配的权重,对输入信息的不同区域进行更精细的分析和提取,得到局部特征表示。最后,通过将全局和局部特征融合,得到输入信息的完整表示,用于后续的预测或分类任务。
9)矩阵低秩分解,将一个大矩阵分解成多个小的矩阵的过程。例如:将一个的矩阵A分解成一个/>的矩阵U 和一个/>的矩阵 V,其中 k 是任意自然数,使得A~UV,即矩阵A的近似值可以用矩阵U和矩阵V的乘积来表示。
本申请实施例提供一种代码处理模型的训练方法、代码处理模型的训练装置、电子设备和计算机可读存储介质及计算机程序产品,能够提升代码处理模型生成特定领域代码的准确性。
下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施终端设备,如笔记本电脑、平板电脑、台式计算机、机顶盒、智能电视、移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、车载终端、虚拟现实(Virtual Reality,VR)设备、增强现实(Augmented Reality,AR)设备等各种类型的用户终端,也可以实施为服务器。下面,将说明电子设备实施为终端设备或服务器时示例性应用。
参考图1,图1是本申请实施例提供的代码处理模型的训练方法的应用模式示意图;示例的,图1中涉及服务器200、网络300及终端设备400、数据库500。终端设备400通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。
在一些实施例中,数据库500存储有大量的通用语料、特定领域语料以及代码。服务器200用于训练代码处理模型,并通过训练后的模型生成对应的代码。终端设备400可以是用户的电脑。
示例的,服务器200从数据库500中获取训练数据,并根据训练数据对代码处理模型进行训练,得到训练后的代码处理模型。当接收到用户通过终端设备400上传的指令文本时,服务器200调用代码处理模型将指令文本转换为对应的提示词,根据提示词调用代码处理模型进行代码生成,得到目标代码。服务器200通过网络300将目标代码发送给终端设备400,用户可以在终端设备400上查看生成的目标代码。
本申请实施例可以通过数据库技术实现,数据库(Database),简而言之可视为电子化的文件柜存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(Database Management System,DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible Markup Language,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如结构化查询语言(SQL,Structured Query Language)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例,还可以通过云技术实现,云技术(Cloud Technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,将来每个物品都有可能存在自己的哈希编码识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
在一些实施例中,服务器200可以实施为多个服务器,例如:预训练服务器、领域训练服务器、代码处理服务器。其中,预训练服务器用于训练通用的代码处理模型,领域训练服务器用于将通用的代码处理模型训练为特定领域的代码处理模型,代码处理服务器存储训练完成的代码处理模型,并基于训练完成的代码处理模型、用户上传的指令进行代码生成处理。
在一些实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。电子设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明实施例中不做限制。
参见图2,图2是本申请实施例提供的电子设备的结构示意图,电子设备可以是图1中的服务器200,图2所示的服务器200包括:至少一个处理器410、存储器450、至少一个网络接口420和服务器200。终端设备400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器 410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他电子设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器450中的代码处理模型的训练装置455,其可以是程序和插件等形式的软件,包括以下软件模块:数据获取模块4551、模型训练模块4552,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在一些实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的代码处理模型的训练方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如代码编辑APP或者即时通信APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
将结合本申请实施例提供的终端的示例性应用和实施,说明本申请实施例提供的代码处理模型的训练方法。
下面,说明本申请实施例提供的代码处理模型的训练方法,如前,实现本申请实施例的代码处理模型的训练方法的电子设备可以是终端或者服务器,又或者是二者的结合。因此下文中不再重复说明各个步骤的执行主体。
参见图3A,图3A是本申请实施例提供的代码处理模型的训练方法的第一流程示意图,将结合图3A示出的步骤进行说明。
在步骤301中,获取通用语料训练集、领域语料训练集以及指令数据集合。
示例的,通用语料训练集包括:作为样本文本的大规模通用语料以及作为样本代码的通用代码训练集。大规模通用语料中,语料来源包含中文新闻、百科、社区问答、GitHub代码等。通用代码训练集可以是CodeSearchNet、Public Git Archive等公开的数据集。
示例的,领域语料训练集包括样本领域文本以及样本领域代码,领域语料可以根据代码处理模型的应用场景确定,假设特定领域是某代码编辑平台,则领域语料训练集的来源包括平台和接口文档、用户日常咨询记录、用户代码库以及平台官方代码库。领域语料训练集的样本领域文本包括:函数功能释义、平台功能介绍、接口说明文档;样本领域代码包括:代码、代码对应的标准的代码注释。
示例的,指令数据集合包括:样本指令以及样本回答,样本指令是与领域语料训练集对应的领域相关的,至少部分的样本回答包括代码内容。样本回答可以是中间结果(例如:根据用户输入的文本获取到的与代码相关的提示词),也可以是最终回答内容(例如:用户所需的目标代码)。
在一些实施例中,参考图3E,图3E是本申请实施例提供的代码处理模型的训练方法的第五流程示意图,在步骤302之前,执行图3E中的步骤3011至步骤3016以获取词表。
在步骤3011中,对通用语料训练集、领域语料训练集以及指令数据集合中的每个单词进行拆分处理,得到每个单词的字符序列。
示例的,代码处理模型属于大语言模型,训练过程中所需处理的数据量十分庞大,涉及中文以及英文字符,可以通过设置训练数据集合对应的词表以节约训练模型所需的计算资源。可以基于分词模型(SentencePiece)对单词进行拆分处理,得到拆分后的每个单词。
在步骤3012中,将每个字符序列组合为当前词表。
示例的,将拆分得到的每个单词的字符序列组合为初始的当前词表,组合顺序可以是每个单词对应的拆分处理的顺序。存储在词表的每个字符序列设置有对应的字符标识(ID),以便在词表中查找对应的字符。
在步骤3013中,获取通用语料训练集、领域语料训练集以及指令数据集合中每个字节对的出现频率,将出现频率最高的字节对添加到当前词表,得到更新后的词表。
这里,字节对包括至少两个字符。出现频率也即,字节对在通用语料训练集、领域语料训练集以及指令数据集合中总的出现次数。例如:字节对为“专利”,“专利”在通用语料训练集、领域语料训练集以及指令数据集合中的出现频率为N,N是正整数。
在步骤3014中,将添加到词表中的字节对从通用语料训练集、领域语料训练集以及指令数据集合中删除。
示例的,将已经添加到词表中的字节从训练集中删除,进而,下一次统计出现频率最高的字节时,不统计已经添加的字节对,以避免重复添加。词表中不存在重复的字节对。
在步骤3015中,响应于更新后的词表的字节总数未达到字节数阈值,转入获取通用语料训练集、领域语料训练集以及指令数据集合中每个字节对的出现频率的步骤。
示例的,假设字节数阈值为50000字节,响应于字节总数没有达到50000字节,回到步骤3013继续执行。
在步骤3016中,响应于更新后的词表的字节总数达到字节数阈值,将当前的更新后的词表作为代码处理模型对应的词表。
示例的,假设字节数阈值为50000字节,响应于字节总数达到了50000字节,将当前的词表作为代码处理模型对应的词表。代码处理模型对应的词表用于在代码处理模型进行代码预测处理时,预测词表中每个字符与输入的文本特征之间的关联程度,以确定代码处理模型所生成的代码。
在一些实施例中,若未添加到词表中的词的出现频率均为1,且词表中的词的数量没有达到字节数阈值,从简繁体字典中获取所有的汉字,将简繁体字典与词表中的字符进行比对,将词表相较于简繁体字典缺少的汉字补充到词表中,以使词表中的内容满足汉字相关的应用场景。
继续参考图3A,在步骤302中,基于通用语料训练集预训练代码处理模型,得到预训练后的代码处理模型。
这里,预训练后的代码处理模型用于基于待处理文本生成代码。
示例的,为便于理解,对代码处理模型的结构进行解释说明。参考图4,图4是本申请实施例提供的代码处理模型的第一结构示意图。代码处理模型401包括:编码器402、深度学习模型403以及解码器404。在一些实施例中,代码处理模型401还包括分类模型405。深度学习模型403可以是多个层次的转换器模型组成的。
在一些实施例中,通用语料训练集包括:样本文本以及样本代码;代码处理模型包括:编码器(输入层)、深度学习模型、解码器(输出层)。
参考图3B,图3B是本申请实施例提供的代码处理模型的训练方法的第二流程示意图,图3A的步骤302可以通过图3B中的步骤3021至步骤3025实现,以下具体说明。
在步骤3021中,基于样本文本,调用代码处理模型的编码器进行编码处理,得到文本序列。
示例的,编码器将样本文本中每个字符转换为对应的输入嵌入向量(InputEmbeddings),文本序列由每个字符的输入嵌入向量组合形成,组合顺序是字符在文本中的顺序。文本的向量特征可以捕捉单词之间的语义关系和相似性。
在步骤3022中,基于文本序列调用代码处理模型的深度学习模型进行概率预测处理,得到文本序列对应的预测概率最高的字符序列。
示例的,继续参考图4,深度学习模型403包括:注意力机制层4031、前馈神经网络层4033以及位置编码层4032;3022可以通过以下方式实现:基于文本序列,调用注意力机制层确定文本序列对应的权重矩阵;基于权重矩阵和文本序列,调用位置编码层进行位置编码处理,得到位置编码序列;基于位置编码序列,调用前馈神经网络层多次预测词表中的每个字符的出现概率;将每次预测得到的出现概率最高的字符组合为字符序列。
示例的,注意力机制层所调用的可以是简化注意力机制(Flash Attention),降低计算复杂度,从而在相同参数量和空间占用条件下,代码处理模型能够容纳更长的文本。计算注意力权重矩阵的方法如以下公式(1)所示:
(1)
其中,relu为ReLU激活函数,Q、K分别为输入向量的线性变换,A是权重矩阵,n是所输入的字符数量。位置编码层可以通过相对位置编码(Relative Position Embedding,RPE)或者abili位置编码方法,基于权重矩阵和文本序列进行位置编码,得到位置编码序列。前馈神经网络(Feedforward Neural network,FNN)层以位置编码序列为输入,预测输出内容中每个位置与词表中每个字符对应的概率,每个位置选取概率最大的字符组合为输出内容。
假设输出内容的第3位针对词表中多个词汇得到不同的预测概率,选取预测概率最高的字符A作为输出内容的第3位的字符,依次将每个位置预测得到的字符为对应的序列。
本申请实施例中,通过调用简化注意力机制,降低模型的注意力权重复杂度,提升了模型的预测速度,节约了计算资源。
在步骤3023中,基于字符序列调用代码处理模型的解码器进行解码处理,得到预测代码。
示例的,解码器与编码器是互逆的,解码器用于将特征向量形式的字符序列转换为对应的代码。
在步骤3024中,基于预测代码与样本代码分别对应的预测概率,确定代码处理模型的第一交叉熵损失。
示例的,交叉墒损失函数可以表征为以下公式(3)
(3)
其中,t为输入的文本序列, 为模型参数。是指第i个输入的文本序列对应
的预测概率。
在步骤3025中,基于第一交叉熵损失更新代码处理模型的参数,得到预训练后的代码处理模型。
示例的,通过反向传播处理对代码处理模型进行参数更新,学习率可以设置为1.5e-4。预训练后的代码处理模型具有通用领域下基于文本生成代码的功能,以及基于文本和代码续写代码的功能。
继续参考图3A,在步骤303中,基于通用语料训练集中的至少部分样本和领域语料训练集,调用预训练后的代码处理模型进行领域训练处理,得到特定领域的代码处理模型。
这里,特定领域的代码处理模型用于基于待处理的领域文本生成目标领域的代码。
在一些实施例中,领域语料训练集包括:样本领域文本以及样本领域代码;参考图3C,图3C是本申请实施例提供的代码处理模型的训练方法的第三流程示意图,图3A的步骤303可以通过图3C中的步骤3031至步骤3036实现,以下具体说明。
在步骤3031中,将通用语料训练集中的至少部分样本添加到领域语料训练集中,得到更新后的领域语料训练集。
示例的,为防止模型遗忘通用领域功能,在特定领域语料中混入部分通用语料。语料训练集中的至少部分样本的数据量可以根据领域语料训练集的数据量、以及实际应用场景确定。
在步骤3032中,基于更新后的领域语料训练集中的样本领域文本,调用预训练后的代码处理模型的编码器进行编码处理,得到文本序列。
步骤3032的原理与步骤3021的原理相同,此处不再赘述。每个训练阶段的代码处理模型的结构均相同。
在步骤3033中,基于文本序列调用代码处理模型的深度学习模型进行概率预测处理,得到文本序列对应的预测概率最高的字符序列。
步骤3033的原理与步骤3022的原理相同,此处不再赘述。每个训练阶段的代码处理模型的结构均相同。
在步骤3034中,基于字符序列调用预训练后的代码处理模型的解码器进行解码处理,得到预测代码。
步骤3034的原理与步骤3023的原理相同,此处不再赘述。每个训练阶段的代码处理模型的结构均相同。
在步骤3035中,基于预测代码与样本领域代码分别对应的预测概率,确定代码处理模型的第二交叉熵损失。
步骤3035的原理与步骤3024的原理相同,此处不再赘述。每个训练阶段的代码处理模型的结构均相同。
在步骤3036中,基于第二交叉熵损失增量更新代码处理模型的参数,基于更新后的参数确定特定领域的代码处理模型。
示例的,增量更新可以通过以下方式实现:将基于第二交叉熵损失确定的增量参数与对应的原始参数相加,得到更新参数,以更新参数替代预训练的代码处理模型中的原始参数,得到特定领域的代码处理模型。特定领域的代码处理模型能够在特定领域内根据用户输入的文本生成代码。
继续参考图3A,在步骤304中,基于指令数据集合调用特定领域的代码处理模型进行训练,得到训练完成的代码处理模型。
示例的,训练完成的代码处理模型用于基于输入的问题指令生成作为回答内容的代码。回答内容可以包括代码以及代码注释内容,以便于用户理解生成的代码,对代码进行修改。
在一些实施例中,指令数据集合包括:样本指令以及样本回答;代码处理模型包括:参考图3D,图3D是本申请实施例提供的代码处理模型的训练方法的第四流程示意图,图3A的步骤304可以通过图3D中的步骤3041至步骤3045实现,以下具体说明。
在步骤3041中,基于样本指令,调用特定领域的代码处理模型的编码器进行编码处理,得到文本序列。
示例的,步骤3041至步骤3042的原理与步骤3021至步骤3022相同,此处不再赘述。
在一些实施例中,代码处理模型包括分类模型;在在步骤3041之前,基于样本指令,调用特定领域的代码处理模型的分类模型进行预测处理,得到样本指令属于特定领域的概率;响应于样本指令属于特定领域的概率大于概率阈值,转入基于样本指令,调用特定领域的代码处理模型的编码器进行编码处理的步骤。
示例的,输入代码处理模型的样本指令可能是与特定领域无关的内容,当样本指令与特定领域的相似度小于阈值,也即,样本指令属于特定领域的概率小于阈值,不执行相应的训练过程,将样本指令标记为负样本。若样本指令属于特定领域,则转入对应的训练过程。
在步骤3042中,基于文本序列调用代码处理模型的深度学习模型进行概率预测处理,得到文本序列对应的预测概率最高的字符序列。
在步骤3043中,基于字符序列调用预训练后的代码处理模型的解码器进行解码处理,得到回答内容。
示例的,回答内容至少包括预测代码。
在步骤3044中,基于回答内容与样本回答分别对应的预测概率,确定代码处理模型的第三交叉熵损失。
示例的,步骤3044的原理可以参考步骤3024,此处不再赘述。
在步骤3045中,基于第三交叉熵损失增量更新特定领域的代码处理模型的参数,基于更新后的参数确定训练完成的代码处理模型。
示例的,增量更新的原理参考步骤3036,此处不再赘述。
本申请实施例中,通过预训练、领域微调以及指令调整,使得代码处理模型能够以问答形式生成代码,便于用户通过代码处理模型获取目标代码。
在一些实施例中,在步骤304之后,将训练完成的代码处理模型上传至服务器;在服务器配置训练完成的代码处理模型对应的应用程序接口和消息队列,其中,消息队列用于将针对训练完成的代码处理模型的待处理文本转发至服务器。
示例的,训练完成的代码处理模型的文件较大,可以将其上传至云端此处,服务器可以是云服务器,消息队列可以是kafka一类的高吞吐量的分布式发布订阅消息系统。服务器的应用程序接口设置有接口鉴权机制,用于限制调用应用程序接口的用户群体数量,以及保护调用应用程序接口的用户的隐私,同时,限制使用次数以降低服务器压力。
在一些实施例中,在步骤304之后,响应于接收到新语料数据,基于新语料数据中的样本文本调用训练完成的代码处理模型进行代码生成处理,得到预测代码;基于预测代码与新语料数据中的实际代码确定代码处理模型的更新参数;基于更新参数对代码处理模型进行增量更新处理,得到更新后的代码处理模型。
示例的,实际应用过程中,代码语法及接口更新频繁,代码处理模型在应用阶段可以获取到不同的新语料数据,新语料数据包括但不限于:新的代码内容以及新的文本知识。代码处理模型本身参数量大、训练速度慢,可以基于(Low-Rank Adaptation,LoRA)低秩自适应的快速训练方法对代码处理模型进行增量更新。
在一些实施例中,更新参数以权重矩阵的形式表征;基于更新参数对代码处理模型进行增量更新处理,可以通过以下方式实现:获取代码处理模型的线性层中的原权重矩阵以及预配置更新比例;获取更新参数与预配置更新比例之间的乘积;基于原权重矩阵与乘积之间的加和替换代码处理模型中的原权重矩阵,得到更新后的代码处理模型,其中,更新前后的代码处理模型的结构相同。
示例的,提取模型的线性层低秩矩阵作为适配器,并只更新适配器的参数(LoRA),其计算方法为:,其中W是转换器模型中的线性层,/>是低秩矩阵,预配置更新比例/>可以为十分之一,在模型训练时只训练注意力机制层的权重矩阵,可以快速训练,以使模型学习到新的功能。
在一些实施例中,在基于更新参数对代码处理模型进行增量更新处理,得到更新后的代码处理模型之后,响应于代码处理模型的增量更新的数据量达到增量更新阈值,将代码处理模型配置为增量更新之前的原始参数;将代码处理模型每次增量更新的新语料数据组合为训练集合;基于训练集合对代码处理模型进行全量训练处理,得到全量更新后的代码处理模型。
示例的,增量更新的数据量可以通过增量更新的次数或者增量更新的参数数量表征。当代码处理模型的增量更新的数据量达到增量更新阈值,将代码处理模型还原为增量更新的数据量对应的之前的时刻的代码处理模型参数,也即参数回退。并将增量更新过程对应的数据组合为新的训练集合,对参数回退的代码处理模型进行全量的更新处理。
本申请实施例中,通过增量更新和全量更新交替进行,得益于训练速度快的特点,可以在短时间内获得一个低秩自适应的增量版本。在积累了一定低秩自适应增量后,进行一次全量更新,使得代码处理模型在应用阶段维持最新功能,节约了平台维护所需的计算资源。
在一些实施例中,在步骤304之后,响应于接收到输入内容,基于输入内容调用代码处理模型进行编码处理,得到提示信息;显示提示信息;响应于接收到基于提示信息确定的关键信息,基于关键信息和提示信息调用代码处理模型进行代码生成处理,得到目标代码;显示目标代码。
示例的,假设代码处理模型运行在图1中的服务器200中,服务器200基于终端设备400的输入内容生成的提示信息(Prompt)发送回终端设备400,用户根据提示信息编辑关键信息,基于关键信息和提示信息调用代码处理模型生成代码内容。提示信息可以是代码的注释或者包括至少部分的代码。
本申请实施例中,通过向用户反馈提示信息,以问答形式生成目标代码,提升了代码生成的准确性,节约了获取代码所需的计算资源。
本申请实施例中,通过通用语料训练集训练模型,确保了代码处理模型在通用领域的基础功能可靠;通过将至少部分通用语料训练集的数据结合领域语料训练集进行训练,使得代码处理模型在获取特定领域的代码生成功能时,避免基础的通用领域功能遗忘;通过指令数据集合训练模型,使得模型能够具备问答能力,提升模型理解用户输入内容的能力,进而使得所输出的代码更符合需求;通过多层次的训练方式,提升了代码处理模型生成代码的精确度,使得代码处理模型能够生成更符合用户所输入的内容的代码,提升用户体验。
下面,将说明本申请实施例代码处理模型的训练方法在一个实际的应用场景中的示例性应用。
预训练大语言模型无法直接解决代码生成问题,使用原始的大语言模型生成代码,精度基本为0。相对于阅读理解、文本生成、多轮对话等自然语言处理领域的常见场景,代码生成问题具有语法严格、结构清晰、表达无二义性的特点。目前大模型记忆和模仿的代码生成方式,缺乏理解和遵守编程范式并生成相应的代码。
业界目前的代码生成模型存在下述问题:(1)大多数代码生成模型的训练语言为英文,无法很好的理解中文代码注释,预训练模型需要中英文双语语料辅助理解。(2)目前的代码大模型是使用与自然语言大模型相同的架构来实现的。但实际上,自然语言和程序设计语言之间的差别较大,自然语言语法复杂不严格,层次结构不清晰,语义不严谨,表达存在多义性。而程序设计语法简单严格、层次结构清晰、语义严格确定、表达不具有二义性,总体上看,是一种递归结构。(3)出现语法和静态语义错误,训练样本中的无意义字符会干扰训练结果,(如左右括号不匹配,变量名错误,表达式语义错误),生成重复和无意义代码。
针对特定领域的代码生成模型匮乏,通用型代码生成框架不适用于强业务需求场景,更适合通用型的代码生成(比如SQL、Python等),对于偏向于业务、功能描述的代码生成效果不好,无法满足业务开发需要。
本申请实施例,针对现有技术存在的问题,提出了一种代码处理模型的训练方法,相较于现有技术,包括以下几个方向的改进:
(1)模型结构改进:针对长文本问题,采用FLASH简化注意力机制,将复杂度降为线性复杂度,从而在相同参数量和空间占用条件下,模型能够容纳更长的文本;并使用Alibi位置编码赋予模型自适应长度扩展能力,从而使得用于读取较短文本的模型在长文本场景下依然具备出色的推理性能。
(2)预处理训练集改进:除了大规模通用语料外,加入通用语言的代码训练集以及领域知识文档,包括标准的代码注释、函数功能释义、平台功能介绍、接口说明文档等;针对编程语言的结构特点,对词表和分词器(tokenizer)进行优化,加入常用的变量、关键词、数值等,以更高效地处理编程语言。
(3)模型训练过程改进:模型通过GitHub等公开代码数据集进行训练,学习代码语义理解;通过预处理的领域代码数据集对模型进行领域微调和指令精调,训练过程中,训练数据包括至少部分的通用代码和自然语言样本以防止遗忘(数据回放)。在充分学习通用知识的前提下,快速将通用知识迁移到领域上,同时避免遗忘先前学过的内容。
(4)持续与增量训练:针对代码语法及接口更新频繁的问题,即模型所需的知识发生变化时,启动增量训练进行模型参数更新。
(5)提示工程:结合思维链和生成知识两种技术,构建了一套适合领域特定代码的提示词(Prompt),增强模型对所输入的代码生成需求的理解。
参考图5,图5是本申请实施例提供的代码处理模型的训练方法的一个可选的流程示意图。以下将图1中的服务器200为执行主体,结合以下步骤,对本申请实施例提供的代码处理模型的训练方法进行解释说明。
在步骤501中,获取通用训练数据集合以及特定领域语言数据集合。
示例的,通用训练数据集合包括:大规模通用语料、通用代码训练集。大规模通用语料中,语料来源包含中文新闻、百科、社区问答、GitHub代码等。通用代码训练集的内容可以来源于以下数据集:
(1)CodeSearchNet,由GitHub和OpenAI共同创建的大型代码数据集,旨在促进代码搜索和代码理解任务的研究。该数据集包含了从GitHub上抓取的600万个代码片段,涵盖了6种不同的编程语言。
(2)Public Git Archive,由source{d}创建的大型代码数据集,包含了从GitHub上抓取的180,000个最流行的代码库,可以用于训练大型语言模型,以学习编程语言的语法和语义。
(3)BigCode,由EPFL创建的代码数据集,包含了从GitHub上抓取的大量Java项目。这个数据集可以用于训练大型语言模型,以学习Java编程语言的语法和语义。
(4)GPT-f,由OpenAI创建的针对代码生成任务的预训练模型。
特定领域语言数据集合根据语言类型和适用场景的区别有不同的来源,本申请实施例以一种平台特定语言为例。训练集的来源包括平台和接口文档、用户日常咨询记录、用户代码库以及平台官方代码库。训练集的内容包括:标准的代码注释、函数功能释义、平台功能介绍、接口说明文档等。
示例的,在用于训练模型的数据集合的数据量非常庞大,为提升训练效率,可以训练数据进行预处理。将训练数据中的自然语言转换成切分后的标记化标识(token id)。语料长度不同,而模型输入序列长度固定,为了提升预训练效率,对于长度短的样本,使用相同的缓存区,将多条短语料拼接成一个长样本,确保模型每次的输入序列填充充分。训练数据的预处理策略的目标是实现一个不重复的、完整的、正确的、干净的和通用的代码语料库。
示例的,针对编程语言的结构特点,对词表和分词器(tokenizer)标记化单词进行优化,加入常用的变量、关键词、数值等,以更高效地处理编程语言。具体步骤如下:基于分词模型(SentencePiece),从大量语料中学习字词之间的位置统计关系,实现分词功能。收集代码数据、中英文语料,用于训练分词模型。总词表数量为50,000个,覆盖率为99.5%(去除长尾样本,提高词表利用率),根据先验知识,结合特定编程语言的特征,将常用变量名称和关键字等词汇加入词表中,总量约为1,000词,完成后的词表能够高效区分代码注释和编程语言。
使用字节对编码模式(byte pair encoding,BPE),确保代码处理模型支持所有字、词和符号。例如:训练使用的词典为50000词,由于中文包含大量罕见字,可能不会被模型训练到,因此进一步对词表进行扩充。首先获取到常用中文词的前20000个,其中大约4000个不在词表内,扩充进词表中。再从简繁体字典中获取所有的汉字,大约8000汉字不在词表中,其中大多数为繁体字,进一步扩充词表。最终得到的中英文双语词表包含约62000词。
在步骤502中,对待训练的模型进行预训练处理,得到通用模型。
为便于理解,对本申请实施例中待训练的模型的结构进行解释说明。参考图6,图6是本申请实施例提供的代码处理模型的第二结构示意图。代码处理模型600的每个转换器层包括简化注意力层602、标准化层603、门控前馈网络604以及标准化层605。输入层601用于将输入的数据转换为代码处理模型600能够读取的数据格式,输出层607用于将代码处理模型600输出的内容转换为对应的代码。代码处理模型600的转换器层的数量可以是40层。
示例的,输入层601接收包括多个字符的文本作为输入,将文本中的每个单词(或子词)转换为固定大小的向量表示。向量表示可以表征单词之间的语义关系和相似性。通常,向量表示是在模型训练过程中学习得到的。
示例的,传统的转换器模型中自注意力结构的文本长度呈平方复杂度,长文本会对设备产生巨大的内存/显存占用;本申请实施例中,简化注意力层602采用FLASH简化注意力机制,降低计算复杂度,从而在相同参数量和空间占用条件下,代码处理模型能够容纳更长的文本。简化注意力层602中计算注意力权重矩阵的方法如以下公式(1)所示:
(1)
其中,relu为ReLU激活函数,Q、K分别为输入向量的线性变换,A是权重矩阵,n是所输入的字符数量。本申请实施例中,采用Alibi位置编码对文本进行编码,使得模型能够适应长文本场景。门控前馈网络604用于学习输入序列的非线性表示。门控前馈网络604由全连接神经网络组成,由于在注意力部分使用了弱化的注意力机制,因此使用门控线性单元(Gated Linear Unit,GLU)网络,强化非线性学习能力。前馈神经网络层的隐层输出计算方法表征为以下公式(2):
(2)
其中,h是隐层输出,X为输入矩阵,W、V是可学习的参数矩阵,b、c为偏置项。
示例的,预训练阶段,使用大量的文本数据进行无监督学习,以学习语言的通用表示和模式。模型的训练目标为语言模型概率建模,使用交叉墒损失函数,交叉墒损失函数可以表征为以下公式(3)
(3)
其中,t为输入的文本序列, 为模型参数。假设代码处理模型的参数为:模型包括40个转换器层,隐藏层神经元数量为5120,注意力头为40,总参数量13B。启动训练时,以1.5e-4学习率、adamw优化器,在最大长度2048tokens的文本上,迭代一轮,获得预训练后的模型。
继续参考图5,在步骤503中,对通用模型进行调整,得到训练后的模型。
示例的,在预训练后的模型的基础上,使用特定领域的标注数据对模型进行微调,以适应特定任务或领域,提高模型在特定任务上的性能。预训练阶段的训练目标为通用语言、代码续写,因此不包含问答(对话)能力,在调整阶段(指令、领域训练)中,需要让模型适配领域能力,并且能够进行问答。
示例的,领域微调的训练方法与通用预训练一样,其目的是:让模型在学习通用世界知识的前提下,了解领域知识。获取领域语料,使用上述预处理后的领域知识数据集用于训练模型。由于模型已经经过预训练,只需要使用较小学习率(例如:2e-5)进行增量训练,另一方面,为了防止模型在领域训练时遗忘之前已经学到的通用知识,也在领域语料中混入一部分通用语料。
示例的,在指令精调阶段,将模型的运行模式由语言模型(文本续写)转换为问答模型。首先准备指令数据,指令数据由指令和回答组成。其中指令代表要求模型完成的任务描述,回答是模型应该给出的标准答案。指令数据对数据的要求高、构建成本高,只需要少量数据(例如:1000条)。为了缓解数据的需求,在指令数据使用通用指令进行数据选择增强。数据选择的具体方法为:训练一个分类模型,用于区分一条指令样本是否属于领域数据。再将分类模型从大规模通用数据进行召回,找出通用数据中与领域数据接近的样本,将这批样本与领域数据一同进行指令精调,所采用的损失函数可以参考上文中的公式(3)。
示例的,在通用预训练模型阶段,训练目标是使模型学习中文通用能力,所采用的数据集包括:百科、中英文平行语料、中文社区互动数据、中文科学文献、GitHub代码等。在领域预训练模型阶段,训练目标是使模型学习领域知识,所采用的数据集包括:领域文档、领域知识库、领域代码集、通用语料。
在指令对话模型训练阶段,训练目标是使模型学习人类指令,所采用的数据集包括:领域问答数据、BELLE 指令数据、Alpaca 数据、pCLUE提示数据集。
在一些实施例中,为缓解推理算力和部署资源紧张问题,降低模型应用成本,在模型部署时,使用int8量化技术进行推理优化,从而实现低成本高效推理。其中,int8量化(Quantization)是一种将浮点数转换为8位整数的过程。在深度学习和神经网络中,通过量化可以将模型的参数和激活值表示为更小的数据类型,从而减少模型的存储需求和计算量。通过将浮点数转换为较低精度的整数,使用整数运算更快地执行矩阵乘法等操作,模型量化可以在不实质性损失模型性能的情况下实现显著的内存节省和较快的计算速度。现有的6B/7B 大语言模型 至少需要多张T10显卡才足以加载及推理,而模型量化后可在单张消费级显卡上运行,使模型的大规模应用成为可能。参考图7,图7是本申请实施例提供的不同大小模型及量化后的精度对比表。模型量化后的精度损失如图7表格中最后一行所示,经过int8 混合量化方法处理后,本申请实施例的模型的精度并未有显著下降。
在一些实施例中,步骤504至步骤506之间不存在固定的先后顺序关系,例如:步骤504可以在步骤505、步骤506之前执行,步骤505也可以是在步骤504之前执行。
在步骤504中,将训练后的模型部署在云平台。
示例的,将训练好的模型部署到生产环境,以便用户可以通过应用程序接口或其他接口访问模型,涉及模型的压缩、优化和扩展等操作。
参考图8,图8是本申请实施例提供的基于功能服务化平台的代码处理模型的部署方案。部署方案的架构包括:功能服务软件开发工具包(FaaS SDK)801、超文本传输协议(HTTP)802、接口鉴权模块803、消息队列804、功能服务(FaaS)的云服务805、模型文件806、应用程序开发框架807、模型文件808。其中,应用程序开发框架807、模型文件808部署在云端存储809。
在一些实施例中,训练完成的模型可以通过应用编程接口(ApplicationProgramming Interface,API)的方式或者引入Gradio的方式自动化生成交互式web页面,并支持多种输入输出格式,也支持多人交互使用。
本申请实施例提供基于功能即服务(以下简称FaaS)的便捷部署方式,功能即服务指支持无服务器应用程序开发和管理的云服务,本申请实施例的工程化应用基于小应用平台的功能即服务功能,但同样适用于相似架构的其他功能即服务平台。
将训练及量化后的模型文件上传至FaaS平台,若平台不提供大文件保存服务,需额外将模型文件传至云端存储,并通过langchain(开源库,它为开发人员提供必要的工具来创建由大型语言模型提供支持的应用程序)等插件对外提供调用应用编程接口。
在FaaS平台上编写应用编程接口转发服务,这一步除了构造转发消息服务外,还可结合多种可插拔组件,如历史问答记录、提示词prompt优化组件等等,得益于FaaS平台的灵活性,开发者可以自由选择及评估组件的效果。
为了保证服务的稳定性,可以加入消息队列(例如:kafka高吞吐量的分布式发布订阅消息系统等)确保流量能平稳转发到FaaS服务,并加入相应的熔断和拥塞检测机制保证不会引起雪崩。引入接口鉴权机制一方面是为了保护用户隐私,单独记录每位用户的对话上下文,另一方面可以限制使用次数以降低服务器压力。
在步骤505中,响应于接收到问题文本,基于问题文本调用训练后的模型生成提示词文本,响应于接收到基于提示词文本输入的关键词,基于关键词、和提示词文本调用训练后的模型生成目标代码。
示例的,将训练好的模型应用于实际任务,实际任务的类型包括:代码生成、代码提示、代码问答等功能。具体应用过程中,可以根据不同的任务需求,调整模型的输入和输出。在模型应用过程中,通过提示工程设计和优化模型的输入提示,以提高模型在特定任务上的性能。包括提示模板设计、提示选择和提示生成等操作。
本申请实施例进行领域特定语言的代码生成优化时结合了如下两种技术:(1)思维链(Chain-of-Thought(CoT)prompting),通过提供推理步骤,让大语言模型具备分析能力,引导模型在回答的时候,给出推理步骤,更容易获得理想的结果。经过预训练和领域微调的大模型具有基础的代码知识和编码能力,但编程作为一项逻辑复杂、层层递进的思维推理活动,如果模型不能很好的理解编程需求的话,代码生成会退化为代码摘抄和重写任务,目前主流模型都存在这类问题。通过思维链技术可以细化用户提出的需求,引导模型思考需求的解决方式,生成更高质量且符合开发者需求的代码。(2)生成知识(GeneratedKnowledge Prompting),一种利用语言模型自动生成知识并整合到常识推理中的方法,这种方法利用了大语言模型的优势,将其作为改进常识推理的、灵活的外部知识来源。通过使用通用的提示格式直接从语言模型中生成知识陈述,然后选择与给定任务相关的知识,可以提高常识推理的准确性。对于一些大模型不掌握的知识,本申请实施例可以通过提示的形式输入进去,从而获得更准确的答案。
假设用户输入的提问内容为“请生成一段检查用户签到天数的FaaS代码”。
代码处理模型根据提问内容构造提示词(Prompt),得到以下内容:
请使用小应用平台提供的标准JavaScript或TypeScript语言编写一段样板函数,该函数具有以下功能:[检查用户签到天数]
该函数接收[一个输入参数roleid,表示唯一的用户id]
[该函数应调用BK_LoginCheck、BK_GetLoginInfo官方函数查询用户登录天数与签到状态]
该函数输出[一个输出参数day,表示用户签到天数]
输出要求:确保代码有良好的可读性和充足的注释,请注意遵守ES5或者ES6的语法规范。
用户可以根据上述提示词输入规范的关键词,模型根据添加了关键词的提示词生成对应的目标代码。
在步骤506中,响应于训练后的模型对应的知识领域变化,对训练后的模型进行增量更新处理。
示例的,针对代码语法及接口更新频繁的问题,即模型知识发生变化时,启动增量训练进行模型参数更新。由于大模型本身参数量大、训练速度慢,使用基于(Low-RankAdaptation,LoRA)低秩自适应的快速训练方法。对模型的线性层参数进行矩阵低秩分解,只训练新增的额外参数,能够在短时间低成本学到新知识。
本申请实施例通过低秩自适应(LoRA)的持续学习方法,使用低秩自适应算法将知识快速更新到模型,并在系统闲时(周末)将低秩自适应部分参数全量更新到主模型中,平衡了模型训练时间和模型效果。
基础模型训练完成后,模型已经学习到了世界知识和领域知识,能够胜任当前场景的业务。然而,业务是不断演进和改变的,尤其领域特定语言的接口和标准相对于通用语言(如C++,Python)变化更加频繁。当外部知识发生变化时,模型应该做出相应的调整来适应变化,防止为用户提供错误的提示和回答。由于大模型的训练成本很高,一旦启动训练耗时巨大,因此难以实时训练和调整模型。
传统的低秩自适应技术用来进行一次性训练,本申请实施例将低秩自适应用于持续学习,短时间内,对模型进行低秩自适应增量更新,当增量更新的数据达到阈值,对模型进行全量更新。得益于训练速度快的特点,可以在短时间内获得一个低秩自适应的增量版本。在积累了一定低秩自适应增量后,进行一次全量更新,全量更新的流程为:
1、对低秩自适应参数进行回退,也就是使用低秩自适应训练之前的原始权重。
2、将低秩自适应训练使用的数据用于全参数训练,由于数据格式相同,其方法步骤503相同,此处不再赘述。
示例的,当新知识产生时,将知识整理成文本形式汇总为数据集,数据集的类型包括:(1)文档形式:用文本描述的业务知识,格式与预训练数据相同;(2)问答形式,问答数据包含涉及新知识的领域问题及回答,格式与指令数据相同。
提取模型的线性层低秩矩阵作为适配器,并只更新适配器的参数(LoRA),其计算方法为:,其中W是转换器模型中的线性层的权重矩阵,/>是低秩矩阵,参数量为原来线性层的十分之一,在模型训练时只训练这部分参数,因此可以快速训练。
3、得到全量知识更新的权重。
示例的,基于矩阵乘法的特性,将参数合并到W中,更新后的模型不改变模型原本结构。
本申请实施例可应用于领域特定语言的代码生成场景,并在工程化后实现一系列多样化的下游任务,包括但不限于基础代码功能生成、代码提示、代码智能补全、代码纠错等功能。本申请实施例可应用于小应用平台PixUI和功能服务器(FaaS)平台,为小应用开发者提供上述功能,达到降低学习成本、提升开发效率、提高代码质量的目的;对平台侧,本申请实施例可节约平台维护者提供的辅助开发、咨询的人力成本,使开发者专注于平台功能的更新,减少在对接方面的投入。
本申请实施例技术方案带来的有益效果包括以下几项:
(1)相对于传统基于形式化建模的代码生成方法,本申请实施例的代码处理模型的生成准确率更高,通用性更强,可以适应变化频率高的领域特定语言;同时通过预训练节约时间、人力、算力成本,通过小规模的领域微调即可快速迭代出满足需求的模型参数,并可以较低的部署成本和难度投入实际生产使用。
(2)目前通用的代码大模型在特定领域语言的代码生成问题上并不适用,本申请实施例解决了将大模型迁移到特定领域上投入使用的问题,使其能够生成符合规范以及语义正确的领域特定代码。
(3)在日常开发过程中,当开发者需要使用领域特定语言进行功能开发时,可以使用此发明方法进行代码补全、代码纠错,以及根据需求获取代码模板等功能,达到减少开发工作量,节省咨询时间,让开发者更专注于业务逻辑本身的目的。
下面继续说明本申请实施例提供的代码处理模型的训练装置455的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器450的代码处理模型的训练装置455中的软件模块可以包括:数据获取模块4551,配置为获取通用语料训练集、领域语料训练集以及指令数据集合;模型训练模块4552,配置为基于通用语料训练集预训练代码处理模型,得到预训练后的代码处理模型,其中,预训练后的代码处理模型用于基于待处理文本生成代码;模型训练模块4552,配置为基于通用语料训练集中的至少部分样本和领域语料训练集,调用预训练后的代码处理模型进行领域训练处理,得到特定领域的代码处理模型,其中,特定领域的代码处理模型用于基于待处理的领域文本生成目标领域的代码;模型训练模块4552,配置为基于指令数据集合调用特定领域的代码处理模型进行训练,得到训练完成的代码处理模型,其中,训练完成的代码处理模型用于基于输入的问题指令生成作为回答内容的代码。
在一些实施例中,通用语料训练集包括:样本文本以及样本代码;代码处理模型包括:编码器、深度学习模型、解码器;模型训练模块4552,配置为基于样本文本,调用代码处理模型的编码器进行编码处理,得到文本序列;基于文本序列调用代码处理模型的深度学习模型进行概率预测处理,得到文本序列对应的预测概率最高的字符序列;基于字符序列调用代码处理模型的解码器进行解码处理,得到预测代码;基于预测代码与样本代码分别对应的预测概率,确定代码处理模型的第一交叉熵损失;基于第一交叉熵损失更新代码处理模型的参数,得到预训练后的代码处理模型。
在一些实施例中,领域语料训练集包括:样本领域文本以及样本领域代码;代码处理模型包括:编码器、深度学习模型和解码器;模型训练模块4552,配置为将通用语料训练集中的至少部分样本添加到领域语料训练集中,得到更新后的领域语料训练集;基于更新后的领域语料训练集中的样本领域文本,调用预训练后的代码处理模型的编码器进行编码处理,得到文本序列;基于文本序列调用代码处理模型的深度学习模型进行概率预测处理,得到文本序列对应的预测概率最高的字符序列;基于字符序列调用预训练后的代码处理模型的解码器进行解码处理,得到预测代码;基于预测代码与样本领域代码分别对应的预测概率,确定代码处理模型的第二交叉熵损失;基于第二交叉熵损失增量更新代码处理模型的参数,基于更新后的参数确定特定领域的代码处理模型。
在一些实施例中,指令数据集合包括:样本指令以及样本回答;代码处理模型包括:编码器、深度学习模型和解码器;模型训练模块4552,配置为基于样本指令,调用特定领域的代码处理模型的编码器进行编码处理,得到文本序列;基于文本序列调用代码处理模型的深度学习模型进行概率预测处理,得到文本序列对应的预测概率最高的字符序列;基于字符序列调用预训练后的代码处理模型的解码器进行解码处理,得到回答内容,其中,回答内容包括预测代码;基于回答内容与样本回答分别对应的预测概率,确定代码处理模型的第三交叉熵损失;基于第三交叉熵损失增量更新特定领域的代码处理模型的参数,基于更新后的参数确定训练完成的代码处理模型。
在一些实施例中,代码处理模型包括分类模型;模型训练模块4552,配置为在基于样本指令,调用特定领域的代码处理模型的编码器进行编码处理,得到文本序列之前,基于样本指令,调用特定领域的代码处理模型的分类模型进行预测处理,得到样本指令属于特定领域的概率;响应于样本指令属于特定领域的概率大于概率阈值,转入基于样本指令,调用特定领域的代码处理模型的编码器进行编码处理的步骤。
在一些实施例中,深度学习模型包括:注意力机制层、前馈神经网络层以及位置编码层;模型训练模块4552,配置为基于文本序列,调用注意力机制层确定文本序列对应的权重矩阵;基于权重矩阵和文本序列,调用位置编码层进行位置编码处理,得到位置编码序列;基于位置编码序列,调用前馈神经网络层多次预测词表中的每个字符的出现概率;将每次预测得到的出现概率最高的字符组合为字符序列。
在一些实施例中,模型训练模块4552,配置为在基于通用语料训练集预训练代码处理模型,得到预训练后的代码处理模型之前,对通用语料训练集、领域语料训练集以及指令数据集合中的每个单词进行拆分处理,得到每个单词的字符序列;将每个字符序列组合为当前词表;获取通用语料训练集、领域语料训练集以及指令数据集合中每个字节对的出现频率,将出现频率最高的字节对添加到当前词表,得到更新后的词表,其中,字节对包括至少两个字符;将添加到词表中的字节对从通用语料训练集、领域语料训练集以及指令数据集合中删除;响应于更新后的词表的字节总数未达到字节数阈值,转入获取通用语料训练集、领域语料训练集以及指令数据集合中每个字节对的出现频率的步骤;响应于更新后的词表的字节总数达到字节数阈值,将当前的更新后的词表作为代码处理模型对应的词表。
在一些实施例中,模型训练模块4552,配置为在基于指令数据集合调用特定领域的代码处理模型进行训练,得到训练完成的代码处理模型之后,将训练完成的代码处理模型上传至服务器;在服务器配置训练完成的代码处理模型对应的应用程序接口和消息队列,其中,消息队列用于将针对训练完成的代码处理模型的待处理文本转发至服务器。
在一些实施例中,模型训练模块4552,配置为在基于指令数据集合调用特定领域的代码处理模型进行训练,得到训练完成的代码处理模型之后,响应于接收到新语料数据,基于新语料数据中的样本文本调用训练完成的代码处理模型进行代码生成处理,得到预测代码;基于预测代码与新语料数据中的实际代码确定代码处理模型的更新参数;基于更新参数对代码处理模型进行增量更新处理,得到更新后的代码处理模型。
在一些实施例中,更新参数以权重矩阵的形式表征;模型训练模块4552,配置为获取代码处理模型的线性层中的原权重矩阵以及预配置更新比例;获取更新参数与预配置更新比例之间的乘积;基于原权重矩阵与乘积之间的加和替换代码处理模型中的原权重矩阵,得到更新后的代码处理模型,其中,更新前后的代码处理模型的结构相同。
在一些实施例中,模型训练模块4552,配置为在基于更新参数对代码处理模型进行增量更新处理,得到更新后的代码处理模型之后,响应于代码处理模型的增量更新的数据量达到增量更新阈值,将代码处理模型配置为增量更新之前的原始参数;将代码处理模型每次增量更新的新语料数据组合为训练集合;基于训练集合对代码处理模型进行全量训练处理,得到全量更新后的代码处理模型。
在一些实施例中,代码生成模块,配置为在基于指令数据集合调用特定领域的代码处理模型进行训练,得到训练完成的代码处理模型之后,响应于接收到输入内容,基于输入内容调用代码处理模型进行编码处理,得到提示信息;显示提示信息;响应于接收到基于提示信息确定的关键信息,基于关键信息和提示信息调用代码处理模型进行代码生成处理,得到目标代码;显示目标代码。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机可执行指令,该计算机程序或计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的代码处理模型的训练方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令或者计算机程序,当计算机可执行指令或者计算机程序被处理器执行时,将引起处理器执行本申请实施例提供的代码处理模型的训练方法,例如,如图3A示出的代码处理模型的训练方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperText Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
综上所述,通过本申请实施例通过通用语料训练集训练模型,确保了代码处理模型在通用领域的基础功能可靠;通过将至少部分通用语料训练集的数据结合领域语料训练集进行训练,使得代码处理模型在获取特定领域的代码生成功能时,避免基础的通用领域功能遗忘;通过指令数据集合训练模型,使得模型能够具备问答能力,提升模型理解用户输入内容的能力,进而使得所输出的代码更符合需求;通过多层次的训练方式,提升了代码处理模型生成代码的精确度,使得代码处理模型能够生成更符合用户所输入的内容的代码,提升用户体验。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (15)
1.一种代码处理模型的训练方法,其特征在于,所述方法包括:
获取通用语料训练集、领域语料训练集以及指令数据集合;
基于所述通用语料训练集预训练所述代码处理模型,得到预训练后的所述代码处理模型,其中,预训练后的所述代码处理模型用于基于待处理文本生成代码;
基于所述通用语料训练集中的至少部分样本和所述领域语料训练集,调用预训练后的所述代码处理模型进行领域训练处理,得到特定领域的代码处理模型,其中,特定领域的所述代码处理模型用于基于待处理的领域文本生成目标领域的代码;
基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型,其中,训练完成的所述代码处理模型用于基于输入的问题指令生成作为回答内容的代码。
2.根据权利要求1所述的方法,其特征在于,所述通用语料训练集包括:样本文本以及样本代码;所述代码处理模型包括:编码器、深度学习模型、解码器;
所述基于所述通用语料训练集预训练所述代码处理模型,得到预训练后的所述代码处理模型,包括:
基于所述样本文本,调用所述代码处理模型的编码器进行编码处理,得到文本序列;
基于所述文本序列调用所述代码处理模型的深度学习模型进行概率预测处理,得到所述文本序列对应的预测概率最高的字符序列;
基于所述字符序列调用所述代码处理模型的解码器进行解码处理,得到预测代码;
基于所述预测代码与所述样本代码分别对应的预测概率,确定所述代码处理模型的第一交叉熵损失;
基于所述第一交叉熵损失更新所述代码处理模型的参数,得到预训练后的所述代码处理模型。
3.根据权利要求1所述的方法,其特征在于,所述领域语料训练集包括:样本领域文本以及样本领域代码;所述代码处理模型包括:编码器、深度学习模型和解码器;
所述基于所述通用语料训练集中的至少部分样本和所述领域语料训练集,调用预训练后的所述代码处理模型进行领域训练处理,得到特定领域的代码处理模型,包括:
将所述通用语料训练集中的至少部分样本添加到所述领域语料训练集中,得到更新后的所述领域语料训练集;
基于更新后的所述领域语料训练集中的样本领域文本,调用预训练后的所述代码处理模型的编码器进行编码处理,得到文本序列;
基于所述文本序列调用所述代码处理模型的深度学习模型进行概率预测处理,得到所述文本序列对应的预测概率最高的字符序列;
基于所述字符序列调用预训练后的所述代码处理模型的解码器进行解码处理,得到预测代码;
基于所述预测代码与所述样本领域代码分别对应的预测概率,确定所述代码处理模型的第二交叉熵损失;
基于所述第二交叉熵损失增量更新所述代码处理模型的参数,基于更新后的所述参数确定特定领域的代码处理模型。
4.根据权利要求1所述的方法,其特征在于,所述指令数据集合包括:样本指令以及样本回答;所述代码处理模型包括:编码器、深度学习模型和解码器;
所述基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型,包括:
基于所述样本指令,调用特定领域的所述代码处理模型的编码器进行编码处理,得到文本序列;
基于所述文本序列调用所述代码处理模型的深度学习模型进行概率预测处理,得到所述文本序列对应的预测概率最高的字符序列;
基于所述字符序列调用预训练后的所述代码处理模型的解码器进行解码处理,得到回答内容,其中,所述回答内容包括预测代码;
基于所述回答内容与所述样本回答分别对应的预测概率,确定所述代码处理模型的第三交叉熵损失;
基于所述第三交叉熵损失增量更新所述特定领域的代码处理模型的参数,基于更新后的所述参数确定训练完成的代码处理模型。
5.根据权利要求4所述的方法,其特征在于,所述代码处理模型包括分类模型;
在所述基于所述样本指令,调用特定领域的所述代码处理模型的编码器进行编码处理,得到文本序列之前,所述方法还包括:
基于所述样本指令,调用所述特定领域的所述代码处理模型的分类模型进行预测处理,得到所述样本指令属于所述特定领域的概率;
响应于所述样本指令属于所述特定领域的概率大于概率阈值,转入所述基于所述样本指令,调用特定领域的所述代码处理模型的编码器进行编码处理的步骤。
6.根据权利要求2至4任一项所述的方法,其特征在于,所述深度学习模型包括:注意力机制层、前馈神经网络层以及位置编码层;
所述基于所述文本序列调用所述代码处理模型的深度学习模型进行概率预测处理,得到所述文本序列对应的预测概率最高的字符序列,包括:
基于所述文本序列,调用所述注意力机制层确定所述文本序列对应的权重矩阵;
基于所述权重矩阵和所述文本序列,调用所述位置编码层进行位置编码处理,得到位置编码序列;
基于所述位置编码序列,调用所述前馈神经网络层多次预测词表中的每个字符的出现概率;
将每次所述预测得到的出现概率最高的字符组合为字符序列。
7.根据权利要求6所述的方法,其特征在于,在所述基于所述通用语料训练集预训练所述代码处理模型,得到预训练后的所述代码处理模型之前,所述方法还包括:
对所述通用语料训练集、所述领域语料训练集以及所述指令数据集合中的每个单词进行拆分处理,得到每个所述单词的字符序列;
将每个所述字符序列组合为当前词表;
获取所述通用语料训练集、所述领域语料训练集以及所述指令数据集合中每个字节对的出现频率,将出现频率最高的字节对添加到所述当前词表,得到更新后的词表,其中,所述字节对包括至少两个字符;
将添加到所述词表中的字节对从所述通用语料训练集、所述领域语料训练集以及所述指令数据集合中删除;
响应于所述更新后的词表的字节总数未达到字节数阈值,转入所述获取所述通用语料训练集、所述领域语料训练集以及所述指令数据集合中每个字节对的出现频率的步骤;
响应于所述更新后的词表的字节总数达到字节数阈值,将当前的更新后的词表作为所述代码处理模型对应的词表。
8.根据权利要求1所述的方法,其特征在于,在所述基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型之后,所述方法包括:
将所述训练完成的代码处理模型上传至服务器;
在所述服务器配置所述训练完成的代码处理模型对应的应用程序接口和消息队列,其中,所述消息队列用于将针对所述训练完成的代码处理模型的待处理文本转发至所述服务器。
9.根据权利要求1所述的方法,其特征在于,在所述基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型之后,所述方法包括:
响应于接收到新语料数据,基于所述新语料数据中的样本文本调用所述训练完成的代码处理模型进行代码生成处理,得到预测代码;
基于所述预测代码与所述新语料数据中的实际代码确定所述代码处理模型的更新参数;
基于所述更新参数对所述代码处理模型进行增量更新处理,得到更新后的代码处理模型。
10.根据权利要求9所述的方法,其特征在于,所述更新参数以权重矩阵的形式表征;
所述基于所述更新参数对所述代码处理模型进行增量更新处理,包括:
获取所述代码处理模型的线性层中的原权重矩阵以及预配置更新比例;
获取所述更新参数与所述预配置更新比例之间的乘积;
基于所述原权重矩阵与所述乘积之间的加和替换所述代码处理模型中的原权重矩阵,得到更新后的代码处理模型,其中,更新前后的所述代码处理模型的结构相同。
11.根据权利要求9所述的方法,其特征在于,在所述基于所述更新参数对所述代码处理模型进行增量更新处理,得到更新后的代码处理模型之后,所述方法还包括:
响应于所述代码处理模型的增量更新的数据量达到增量更新阈值,将所述代码处理模型配置为增量更新之前的原始参数;
将所述代码处理模型每次所述增量更新的新语料数据组合为训练集合;
基于所述训练集合对所述代码处理模型进行全量训练处理,得到全量更新后的所述代码处理模型。
12.根据权利要求1所述的方法,其特征在于,在所述基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型之后,所述方法包括:
响应于接收到输入内容,基于所述输入内容调用代码处理模型进行编码处理,得到提示信息;
显示所述提示信息;
响应于接收到基于所述提示信息确定的关键信息,基于所述关键信息和所述提示信息调用所述代码处理模型进行代码生成处理,得到目标代码;
显示所述目标代码。
13.一种代码处理模型的训练装置,其特征在于,所述装置包括:
数据获取模块,配置为获取通用语料训练集、领域语料训练集以及指令数据集合;
模型训练模块,配置为基于所述通用语料训练集预训练所述代码处理模型,得到预训练后的所述代码处理模型,其中,预训练后的所述代码处理模型用于基于待处理文本生成代码;
所述模型训练模块,配置为基于所述通用语料训练集中的至少部分样本和所述领域语料训练集,调用预训练后的所述代码处理模型进行领域训练处理,得到特定领域的代码处理模型,其中,特定领域的所述代码处理模型用于基于待处理的领域文本生成目标领域的代码;
所述模型训练模块,配置为基于所述指令数据集合调用特定领域的所述代码处理模型进行训练,得到训练完成的代码处理模型,其中,训练完成的所述代码处理模型用于基于输入的问题指令生成作为回答内容的代码。
14.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令或者计算机程序时,实现权利要求1至12任一项所述的代码处理模型的训练方法。
15.一种计算机可读存储介质,存储有计算机可执行指令或者计算机程序,其特征在于,所述计算机可执行指令或者计算机程序被处理器执行时实现权利要求1至12任一项所述的代码处理模型的训练方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311085387.0A CN116820429B (zh) | 2023-08-28 | 2023-08-28 | 代码处理模型的训练方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311085387.0A CN116820429B (zh) | 2023-08-28 | 2023-08-28 | 代码处理模型的训练方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116820429A true CN116820429A (zh) | 2023-09-29 |
CN116820429B CN116820429B (zh) | 2023-11-17 |
Family
ID=88120568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311085387.0A Active CN116820429B (zh) | 2023-08-28 | 2023-08-28 | 代码处理模型的训练方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820429B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117194056A (zh) * | 2023-11-07 | 2023-12-08 | 苏州元脑智能科技有限公司 | 大语言模型推理优化方法、装置、计算机设备及存储介质 |
CN117289841A (zh) * | 2023-11-24 | 2023-12-26 | 浙江口碑网络技术有限公司 | 基于大语言模型的交互方法和装置、存储介质和电子设备 |
CN117421414A (zh) * | 2023-12-18 | 2024-01-19 | 珠海金智维信息科技有限公司 | 基于aigc的rpa智能交互式系统的设计方法 |
CN117454884A (zh) * | 2023-12-20 | 2024-01-26 | 上海蜜度科技股份有限公司 | 历史人物信息纠错方法、系统、电子设备和存储介质 |
CN117495321A (zh) * | 2023-11-03 | 2024-02-02 | 北京探也智能科技有限公司 | 一种基于大模型的自助式招聘方法以及设备 |
CN117556263A (zh) * | 2024-01-10 | 2024-02-13 | 阿里云计算有限公司 | 样本构建方法、代码生成方法、电子设备及存储介质 |
CN118227107A (zh) * | 2024-05-10 | 2024-06-21 | 金蝶软件(中国)有限公司 | 代码生成模型训练方法、代码生成方法、装置 |
CN118278527A (zh) * | 2024-06-03 | 2024-07-02 | 浪潮电子信息产业股份有限公司 | 自然语言处理任务执行及模型训练方法、装置、设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200249918A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc. | Deep learning enhanced code completion system |
US20200311195A1 (en) * | 2019-04-01 | 2020-10-01 | International Business Machines Corporation | Controllable Style-Based Text Transformation |
CN112559702A (zh) * | 2020-11-10 | 2021-03-26 | 西安理工大学 | 基于Transformer的土木建筑信息领域自然语言问题生成方法 |
CN113254615A (zh) * | 2021-05-31 | 2021-08-13 | 中国移动通信集团陕西有限公司 | 文本处理方法、装置、设备及介质 |
CN114023412A (zh) * | 2021-11-23 | 2022-02-08 | 大连海事大学 | 基于联合学习和去噪机制的icd代码预测方法及系统 |
CN115202640A (zh) * | 2022-07-26 | 2022-10-18 | 上海交通大学 | 基于自然语义理解的代码生成方法及系统 |
CN116501306A (zh) * | 2023-06-29 | 2023-07-28 | 深圳市银云信息技术有限公司 | 一种基于自然语言描述生成接口文档代码的方法 |
-
2023
- 2023-08-28 CN CN202311085387.0A patent/CN116820429B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200249918A1 (en) * | 2019-02-02 | 2020-08-06 | Microsoft Technology Licensing, Llc. | Deep learning enhanced code completion system |
US20200311195A1 (en) * | 2019-04-01 | 2020-10-01 | International Business Machines Corporation | Controllable Style-Based Text Transformation |
CN112559702A (zh) * | 2020-11-10 | 2021-03-26 | 西安理工大学 | 基于Transformer的土木建筑信息领域自然语言问题生成方法 |
CN113254615A (zh) * | 2021-05-31 | 2021-08-13 | 中国移动通信集团陕西有限公司 | 文本处理方法、装置、设备及介质 |
CN114023412A (zh) * | 2021-11-23 | 2022-02-08 | 大连海事大学 | 基于联合学习和去噪机制的icd代码预测方法及系统 |
CN115202640A (zh) * | 2022-07-26 | 2022-10-18 | 上海交通大学 | 基于自然语义理解的代码生成方法及系统 |
CN116501306A (zh) * | 2023-06-29 | 2023-07-28 | 深圳市银云信息技术有限公司 | 一种基于自然语言描述生成接口文档代码的方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117495321A (zh) * | 2023-11-03 | 2024-02-02 | 北京探也智能科技有限公司 | 一种基于大模型的自助式招聘方法以及设备 |
CN117194056A (zh) * | 2023-11-07 | 2023-12-08 | 苏州元脑智能科技有限公司 | 大语言模型推理优化方法、装置、计算机设备及存储介质 |
CN117194056B (zh) * | 2023-11-07 | 2024-02-23 | 苏州元脑智能科技有限公司 | 大语言模型推理优化方法、装置、计算机设备及存储介质 |
CN117289841A (zh) * | 2023-11-24 | 2023-12-26 | 浙江口碑网络技术有限公司 | 基于大语言模型的交互方法和装置、存储介质和电子设备 |
CN117421414A (zh) * | 2023-12-18 | 2024-01-19 | 珠海金智维信息科技有限公司 | 基于aigc的rpa智能交互式系统的设计方法 |
CN117421414B (zh) * | 2023-12-18 | 2024-03-26 | 珠海金智维信息科技有限公司 | 基于aigc的rpa智能交互式系统的设计方法 |
CN117454884A (zh) * | 2023-12-20 | 2024-01-26 | 上海蜜度科技股份有限公司 | 历史人物信息纠错方法、系统、电子设备和存储介质 |
CN117454884B (zh) * | 2023-12-20 | 2024-04-09 | 上海蜜度科技股份有限公司 | 历史人物信息纠错方法、系统、电子设备和存储介质 |
CN117556263A (zh) * | 2024-01-10 | 2024-02-13 | 阿里云计算有限公司 | 样本构建方法、代码生成方法、电子设备及存储介质 |
CN117556263B (zh) * | 2024-01-10 | 2024-04-23 | 阿里云计算有限公司 | 样本构建方法、代码生成方法、电子设备及存储介质 |
CN118227107A (zh) * | 2024-05-10 | 2024-06-21 | 金蝶软件(中国)有限公司 | 代码生成模型训练方法、代码生成方法、装置 |
CN118278527A (zh) * | 2024-06-03 | 2024-07-02 | 浪潮电子信息产业股份有限公司 | 自然语言处理任务执行及模型训练方法、装置、设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116820429B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116820429B (zh) | 代码处理模型的训练方法、装置、电子设备及存储介质 | |
CN112131366B (zh) | 训练文本分类模型及文本分类的方法、装置及存储介质 | |
US20210365635A1 (en) | Joint intent and entity recognition using transformer models | |
CN113672708B (zh) | 语言模型训练方法、问答对生成方法、装置及设备 | |
JP2023539532A (ja) | テキスト分類モデルのトレーニング方法、テキスト分類方法、装置、機器、記憶媒体及びコンピュータプログラム | |
CN115310551A (zh) | 文本分析模型训练方法、装置、电子设备和存储介质 | |
CN115827819A (zh) | 一种智能问答处理方法、装置、电子设备及存储介质 | |
CN110084323A (zh) | 端到端语义解析系统及训练方法 | |
CN117216544A (zh) | 模型训练方法、自然语言处理方法、装置及存储介质 | |
CN114492661B (zh) | 文本数据分类方法和装置、计算机设备、存储介质 | |
CN115437626A (zh) | 一种基于自然语言的ocl语句自动生成方法和装置 | |
Mathur et al. | A scaled‐down neural conversational model for chatbots | |
CN118170795A (zh) | 数据查询方法、装置、存储介质及电子设备 | |
CN113221553A (zh) | 一种文本处理方法、装置、设备以及可读存储介质 | |
CN116186220A (zh) | 信息检索方法、问答处理方法、信息检索装置及系统 | |
CN117033649A (zh) | 文本处理模型的训练方法、装置、电子设备及存储介质 | |
CN116483314A (zh) | 一种自动化智能活动图生成方法 | |
CN114791950A (zh) | 基于词性位置与图卷积网络的方面级情感分类方法及装置 | |
CN114911940A (zh) | 文本情感识别方法及装置、电子设备、存储介质 | |
CN114691836A (zh) | 文本的情感倾向性分析方法、装置、设备及介质 | |
CN114297353A (zh) | 数据处理方法、装置、存储介质及设备 | |
Wang | Neural network machine translation method based on unsupervised domain adaptation | |
CN118503411B (zh) | 提纲生成方法、模型训练方法、设备及介质 | |
CN117992791B (zh) | 语句生成模型的训练方法、语句生成方法、系统以及设备 | |
Ma | Research on Computer Intelligent Proofreading System for English Translation Based on Deep Learning |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40094511 Country of ref document: HK |