CN116700684B - 一种代码生成方法和终端 - Google Patents

一种代码生成方法和终端 Download PDF

Info

Publication number
CN116700684B
CN116700684B CN202211213901.XA CN202211213901A CN116700684B CN 116700684 B CN116700684 B CN 116700684B CN 202211213901 A CN202211213901 A CN 202211213901A CN 116700684 B CN116700684 B CN 116700684B
Authority
CN
China
Prior art keywords
code
feature
heterogeneous
normal form
encoder
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
Application number
CN202211213901.XA
Other languages
English (en)
Other versions
CN116700684A (zh
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211213901.XA priority Critical patent/CN116700684B/zh
Publication of CN116700684A publication Critical patent/CN116700684A/zh
Application granted granted Critical
Publication of CN116700684B publication Critical patent/CN116700684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请提供了一种代码生成方法和终端。在该方法中,可以搭建一个代码生成器模型,该代码生成器模型中包括范式特征编码器(初始化的)以及范式特征解码器(初始化的)。然后,基于Q个样本对的相关概率最大化对范式特征编码器中各网络层的权重进行调整,以及基于W个范式基础代码对应的硬件反馈对范式特征解码器进行的各网络层中的参数进行调整,得到训练完成的代码生成器模型(目标代码生成器模型)。

Description

一种代码生成方法和终端
技术领域
本申请涉及终端领域,尤其涉及一种代码生成方法和终端。
背景技术
现阶段,终端可以基于开源代码生成器(例如polycoder等)实现代码生成。这里以polycoder为例进行说明,该开源代码生成器通过监督训练得到了亿级大模型参数以使得可以实现代码生成。例如,可以实现C语言等编程语言的生成。另外,还有githubcopilot也可以实现代码生成,其主要是针对python语言进行生成。
相比于传统的生成方式,使用开源代码生成器生成代码(代码也可以被称为编程语言)可以简化终端的生成过程。其中,传统的生成方式包括但不限于:基于大量规则或者模板代码进行组合得到某些功能的函数或者脚本,比较费时费力。
这里,这些开源代码生成器可以实现完成某些功能的代码的生成,但是不能实现异构代码的编译。异构代码的生成包括将一种代码转换为另一种代码。
发明内容
本申请提供了一种代码生成方法和终端,可以提高代码生成器模型的正确率,使得代码生成器模型基于范式基础代码生成准确率更高的异构代码。
第一方面,本申请提供了一种代码生成方法,该方法包括:将第一范式代码输入到目标代码生成器模型中;该目标代码生成器模型中包括目标特征编码器以及目标特征解码器;通过该目标特征编码器提取该第一范式代码的第一特征;通过该目标特征解码器确定该第一特征对应的代码,将该代码作为该第一范式代码对应的异构代码;其中,获取该目标代码生成器模型的过程包括:建立一个初始化代码生成器模型;该初始化代码生成器模型中包括初始化的第一范式特征编码器以及初始化的范式特征解码器;基于Q个第一范式基础代码及其对应的参考异构代码对该第一范式特征编码器中各网络层的权重进行调整,当该第一范式特征编码器满足第一条件时完成对该权重进行调整,生成该目标特征编码器,该第一条件包括:使得该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化。
上述实施例中,第一范式代码与该第一范式代码对应的异构代码的功能相同,具有相同语义的输入输出,但是代码的语法不同。这里的第一范式代码可以是C语言,该第一范式代码对应的异构代码可以是openCL。该目标代码生成器模型可以完成代码生成,并且,该目标代码生成器模型中的特征编码器(即第一特征编码器)是由初始化的特征编码器经过大量数据(Q个第一范式基础代码及其对应的参考异构代码)训练得到。以该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化作为停止训练的条件,这表示利用第一特征编码器所获取的第一范式基础代码的特征准确率高。则意味着目标代码生成器模型中的目标特征编码器提取范式基础代码的特征能力强,这样,在基于目标代码生成器模型生成范式基础代码的异构代码时,可以更准确的提取该范式基础代码的特征,进而基于该特征生成更准确的异构代码。
结合第一方面,在一些实施例中,生成该目标特征编码器之后,该方法还包括:基于该目标特征编码器以及W个第二范式基础代码对该范式特征解码器的各网络层中的参数进行调整,当该范式特征解码器满足第二条件时完成对该参数进行调整,生成该目标特征解码器;该第二条件包括:该W个第二范式基础代码中,任一第二范式基础代码对应的损失函数值小于第一阈值;其中,该任一第二范式基础代码对应的损失函数值可以指示该任一第二范式基础代码对应的预测参考异构代码在硬件上运行的情况;该任一第二范式基础代码对应的预测参考异构代码是将该任一第二范式基础代码输入到目标特征编码器以及该范式特征解码器之后得到的代码。
上述实施例中,除了对第一特征编码器进行调整以外,还可以对特征解码器也进行调整,以得到准确率更高的目标特征解码器。其中,目标特征解码器的作用在于基于特征生成异构代码,因此从异构代码在硬件上的运行情况作为反馈对特征解码器进行调整,可以使得生成的目标代码生成器可以适应硬件的部署,在硬件变化时基于该变化之后的硬件再次训练该代码生成器模型也可以使得代码生成器模型生成的异构代码更加适配硬件,提升了代码生成器模型对硬件的适配能力。
结合第一方面,在一些实施例中,生成该目标特征编码器之后,该方法还包括:
基于该目标特征编码器以及W个第二范式基础代码对该范式特征解码器的各网络层中的参数进行调整,当该范式特征解码器满足第三条件时完成对该参数进行调整,生成该目标特征解码器;该第三条件包括:对于该W个第二范式基础代码中的第j个第二范式基础代码,该第j个第二范式基础代码对应的损失函数值小于第一阈值,或者,通过该第j个第二范式基础代码对该参数进行调整的次数达到第二阈值;该j的取值范围为1至W之间的整数。
在上述实施例中,在基于硬件反馈对特征解码器中各网络层中的参数进行调整的情况下,除了将硬件反馈结果(即损失函数值)最优作为停止调整的条件以外,还可以设置最大迭代次数,这样,可以防止一直不停的迭代,造成死循环,影响得到目标代码生成器模型。
结合第一方面,在一些实施例中,基于该目标特征编码器以及W个第二范式基础代码对该范式特征解码器的各网络层中的参数进行调整,具体包括:分别基于W个第二范式基础代码中的每一个第二范式基础代码结合该目标特征编码器对该范式特征解码器进行一次训练,以调整该范式特征解码器的各网络层中的参数;其中,该W个第二范式基础代码中包括第j个第二范式基础代码,基于该第j个第二范式基础代码对该范式特征解码器进行一次训练,以调整该范式特征解码器的各网络层中的参数,该j的取值范围为1至W之间的整数;其中,基于该第j个第二范式基础代码对该范式特征解码器进行一次训练,包括:将该第j个第二范式基础代码输入到目标特征编码器以及该范式特征解码器中,生成该第j个第二范式基础代码对应的预测异构代码;获取该预测异构代码在硬件上运行时的指标,基于该指标计算第j个第二范式基础代码对应的损失函数值;在确定该损失函数值大于或者等于该第一阈值的情况下,调整该范式特征解码器的各网络层中的参数,得到调整之后的范式特征解码器;再次基于该第j个第二范式基础代码对该调整之后的范式特征解码器进行调整;在确定该损失函数值小于该第一阈值的情况下,结束基于该第j个第二范式基础代码对该范式特征解码器的训练。
上述实施例中,经过大量数据(W个第二范式基础代码)对特征解码器进行训练得到目标特征解码器。以得到准确率更高的目标特征解码器。其中,目标特征解码器的作用在于基于特征生成异构代码,因此从异构代码在硬件上的运行情况作为反馈对特征解码器进行调整,可以使得生成的目标代码生成器可以适应硬件的部署,在硬件变化时基于该变化之后的硬件再次训练该代码生成器模型也可以使得代码生成器模型生成的异构代码更加适配硬件,提升了代码生成器模型对硬件的适配能力。
结合第一方面,在一些实施例中,基于Q个第一范式基础代码及其对应的参考异构代码对该第一范式特征编码器中各网络层的权重进行调整,具体包括:
分别基于Q个样本对中的每一个样本对对该第一范式特征编码器进行一次训练,以调整该第一范式特征编码器中各网络层的权重;其中,该Q个样本对中包括第i个样本对,该第i个样本对中包括范式基础代码i以及该范式基础代码i对应的参考异构代码i;其中,基于该第i个样本对对该第一范式特征编码器进行一次训练,包括:利用该第一范式特征编码器获取该范式基础代码i的第二特征,以及基于第二范式特征编码器获取该参考异构代码i的第三特征;确定该第二特征以及该第三特征之间的相关概率,作为第一相关概率;调整该第一范式特征编码器以及该第二范式特征编码器中各网络层的权重,得到调整之后的第一范式特征编码器以及调整之后的第二范式特征编码器;基于该调整之后的第一范式特征编码器获取该范式基础代码i的第四特征,以及,基于调整之后的第二范式特征编码器获取该参考异构代码i的第五特征;确定该第四特征以及该第五特征之间的相关概率,作为第二相关概率;在确定该第二相关概率未满足第四条件该的情况下,调整该第一范式特征编码器以及该第二范式特征编码器中各网络层的权重;在确定该第二相关概率满足第四条件的情况下,完成基于该范式基础代码i对该第一范式特征编码器的训练;该第四条件为该第二相关概率连续U次变化梯度趋近于0,或者未变化;该U为大于1的整数。
上述实施例中,经过大量数据(Q个样本对)对第一特征编码器进行训练得到目标特征编码器。以该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化作为停止训练的条件,这表示利用第一特征编码器所获取的第一范式基础代码的特征准确率高。则意味着目标代码生成器模型中的目标特征编码器提取范式基础代码的特征能力强,这样,在基于目标代码生成器模型生成范式基础代码的异构代码时,可以更准确的提取该范式基础代码的特征,进而基于该特征生成更准确的异构代码。
结合第一方面,在一些实施例中,该指标包括以下一个或多个:运行状态、运行时间、运行所占内存、运行功耗;其中,该运行状态用于指示该预测异构代码在该硬件是否运行成功;该运行时间用于指示该预测异构代码在该硬件上的运行时间;该运行所占内容用于指示该预测异构代码在该硬件上运行时所占内存大小;该运行功耗用于指示该预测异构代码在该硬件上运行时的功耗。
结合第一方面,在一些实施例中,该指标包括运行状态、运行时间、运行所占内存、运行功耗;基于该指标计算第j个第二范式基础代码对应的损失函数值,具体包括:将该运行状态、运行时间、运行所占内存、运行功耗对应的权重分别设置为第一权重、第二权重、第三权重以及第四权重;该第一权重大于该第二权重、第三权重以及第四权重之和;该运行状态包括两个值,在预测异构代码在该硬件运行成功的情况下,该运行状态取值为0;在预测异构代码在该硬件运行失败的情况下,该运行状态取值为1;将各指标乘以其对应的权重然后取和作为该损失函数值。
上述实施中,将运行状态对应的权重设置为最大的表示将异构代码能否运行成功看作最重要的参考,在这样的基础上训练处的目标代码生成器模型生成的异构代码运行成功的概率较大。
结合第一方面,该第一权重设置为0.9。
结合第一方面,该第一范式基础代码为C语言,该第一范式基础代码对应的参考异构代码为OpenCL语言。
结合第一方面,该W个第二范式基础代码为该Q个第一范式基础代码中的W个第一范式基础代码。
第二方面,本申请提供了一种终端,该终端包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该终端执行如第一方面或第一方面的任意一种实施方式所描述的方法。
上述实施例中,第一范式代码与该第一范式代码对应的异构代码的功能相同,具有相同语义的输入输出,但是代码的语法不同。这里的第一范式代码可以是C语言,该第一范式代码对应的异构代码可以是openCL。该目标代码生成器模型可以完成代码生成,并且,该目标代码生成器模型中的特征编码器(即第一特征编码器)是由初始化的特征编码器经过大量数据(Q个第一范式基础代码及其对应的参考异构代码)训练得到。以该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化作为停止训练的条件,这表示利用第一特征编码器所获取的第一范式基础代码的特征准确率高。则意味着目标代码生成器模型中的目标特征编码器提取范式基础代码的特征能力强,这样,在基于目标代码生成器模型生成范式基础代码的异构代码时,可以更准确的提取该范式基础代码的特征,进而基于该特征生成更准确的异构代码。
第三方面,本申请实施例提供了一种芯片系统,该芯片系统应用于终端,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该终端执行如第一方面或第一方面的任意一种实施方式所描述的方法。
上述实施例中,第一范式代码与该第一范式代码对应的异构代码的功能相同,具有相同语义的输入输出,但是代码的语法不同。这里的第一范式代码可以是C语言,该第一范式代码对应的异构代码可以是openCL。该目标代码生成器模型可以完成代码生成,并且,该目标代码生成器模型中的特征编码器(即第一特征编码器)是由初始化的特征编码器经过大量数据(Q个第一范式基础代码及其对应的参考异构代码)训练得到。以该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化作为停止训练的条件,这表示利用第一特征编码器所获取的第一范式基础代码的特征准确率高。则意味着目标代码生成器模型中的目标特征编码器提取范式基础代码的特征能力强,这样,在基于目标代码生成器模型生成范式基础代码的异构代码时,可以更准确的提取该范式基础代码的特征,进而基于该特征生成更准确的异构代码。
第四方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在终端上运行时,使得该终端执行如第一方面或第一方面的任意一种实施方式所描述的方法。
上述实施例中,第一范式代码与该第一范式代码对应的异构代码的功能相同,具有相同语义的输入输出,但是代码的语法不同。这里的第一范式代码可以是C语言,该第一范式代码对应的异构代码可以是openCL。该目标代码生成器模型可以完成代码生成,并且,该目标代码生成器模型中的特征编码器(即第一特征编码器)是由初始化的特征编码器经过大量数据(Q个第一范式基础代码及其对应的参考异构代码)训练得到。以该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化作为停止训练的条件,这表示利用第一特征编码器所获取的第一范式基础代码的特征准确率高。则意味着目标代码生成器模型中的目标特征编码器提取范式基础代码的特征能力强,这样,在基于目标代码生成器模型生成范式基础代码的异构代码时,可以更准确的提取该范式基础代码的特征,进而基于该特征生成更准确的异构代码。
第五方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当该指令在终端上运行时,使得该终端执行如第一方面或第一方面的任意一种实施方式所描述的方法。
上述实施例中,第一范式代码与该第一范式代码对应的异构代码的功能相同,具有相同语义的输入输出,但是代码的语法不同。这里的第一范式代码可以是C语言,该第一范式代码对应的异构代码可以是openCL。该目标代码生成器模型可以完成代码生成,并且,该目标代码生成器模型中的特征编码器(即第一特征编码器)是由初始化的特征编码器经过大量数据(Q个第一范式基础代码及其对应的参考异构代码)训练得到。以该Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化作为停止训练的条件,这表示利用第一特征编码器所获取的第一范式基础代码的特征准确率高。则意味着目标代码生成器模型中的目标特征编码器提取范式基础代码的特征能力强,这样,在基于目标代码生成器模型生成范式基础代码的异构代码时,可以更准确的提取该范式基础代码的特征,进而基于该特征生成更准确的异构代码。
附图说明
图1示出了codeGPT模型实现异构代码生成的示意图;
图2示出了目标代码生成器模型的一个示意性流程图;
图3示出了本申请实施例提供的代码生成方法的示意性流程图;
图4示出了终端基于第i个样本对范式特征编码器1进行一次训练的示意图;
图5示出了范式特征编码器1的一个示意图;
图6示出了代码生成器模型(待训练)的示意性流程;
图7示出了范式特征解码器中各网络层中的参数的示意图;
图8是本申请实施例提供的终端的结构示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本申请实施例中,在一些可能的方案中,终端可以利用代码生成器(例如codeBERT、codeGPT等)实现异构代码的生成,将一种代码转换为另一种代码。
这里以codeGPT这一代码生成器为例进行说明。
codeGPT是一种预训练模型,下文中也可以将codeGPT称为codeGPT模型。该codeGPT模型经过预训练以及微调得到。可以实现将一种代码转换为另一种代码。其中,预训练包括输入代码A,通过特征提取器(transformer)对该代码A进行分析,输出代码B。该代码B与代码A的结构不同,但是可以实现相同的功能。其中,代码A可以为C语言,代码B可以为OpenCL语言。微调包括:前馈神经网络(Feedforward Neural Networks,FFNN)以及归一化指数(softmax)函数对codeGPT模型中的参数进行调整,提升模型的准确性,使得输出的代码B正确性更高。
图1示出了codeGPT模型实现异构代码生成的示意图。
如图1所示,首先向codeGPT模型中输入(input)代码A,然后,将代码A进行语句划分,将其划分为多个语句的组合,同时记录各语句之间的顺序关系。对每个语句进行转化得到每个语句对应的预测语句,基于顺序关系对多个预测语句进行整合得到预测异构代码B。然后codeGPT模型通过特征提取器(transformer)提取代码A以及预测异构代码B的特征。基于代码A的特征以及预测异构代码B的特征确定代码A以及预测异构代码B的相关概率(也可以理解为相似性)A,在确定该相关概率A大于一定阈值时,则将预测异构代码B作为代码B输出。在该相关概率A小于或者等于一定阈值时,利用前馈神经网络以及归一化指数函数(FFNN+softmax)对codeGPT模型中的参数进行参数调整,在调整之后,重新基于代码A转化得到新的预测异构代码B,然后再基于特征确定预测异构代码B是否可以作为代码B输出,若不可以,则再次基于FFNN+softmax调整模型,然后重复执行后续操作。如果可以,则将预测异构代码B作为代码A对应的异构代码(代码B)输出(output)。
应该理解的是,在一些可能的情况下,特征提取器可以包括多个网络层。如图1所示,可以包括transformer网络层A、transformer网络层B以及其他transformer网络层。
其中,一个代码的特征可以包括代码A中每个语句的关联性,可以反映代码A的语义信息。代码中的一个语句可以表示为两个特殊符号之前的内容。例如换行符与分号之前的内容。例如,图1中的代码A包括语句1以及语句2。代码B中包括预测语句1以及预测语句2。
应该理解的是,调整网络模型中的参数的依据是通过代码A以及预测异构代码B之间的相似性为参考。相似性为满足条件时,则可以调整codeGPT模型中的参数。以使得codeGPT模型能输出准确性更高的代码B。
下文中为了便于叙述,可以将代码A称为被转换代码,也可以称为范式基础代码。将代码B称为异构代码。这里的异构是指:范式基础代码以及异构代码的结构不同(即语法不同),是两种不同的代码,但是范式基础代码以及异构代码的功能是相同的,具有相同含义的输入输出。例如,范式基础代码A是C语言的情况下,其对应的异构代码可以为OpenCL语言、NEON语言、DSP语言等。其中,DSP语言是指运行在数字信号处理器(digital signalprocessor,DSP)上的代码。NEON语言是一种多线程的运行在CPU上的代码。OpenCL语言是一种运行在图形处理器(graphics processing unit,GPU)上的代码。
本申请实施例中,在另一些可能的方案中,还可以从其他维度提升代码生成器模型所输出预测异构代码的质量。其中,其他维度包括:预测异构代码在其对应的硬件上运行时的指标是否满足预设条件A。如果代码生成器模型输出的异构代码在其对应的硬件上运行的指标满足预设条件A,则可以不对代码生成器模型进行更新。如果代码生成器模型输出的预测异构代码在其对应的硬件上运行的指标不满足预设条件A,则可以对代码生成器模型中的参数进行调整,得到目标代码生成器模型。其中,在一些可能的条件下,预设条件A可以为预测异构代码在其对应的硬件上运行时的指标计算得到的损失函数值小于第一预设阈值(也可以被称为第一阈值)。
其中,异构代码对应的硬件是指该异构代码的运行环境,即异构代码在终端中可以运行在何种硬件上。如前述内容所述:DSP语言是指运行在数字信号处理器(digitalsignal processor,DSP)上的代码。NEON语言是一种多线程的运行在CPU上的代码。OpenCL语言是一种运行在图形处理器(graphics processing unit,GPU)上的代码。
异构代码在其对应的硬件上运行时的指标包括但不限于以下指标中的一个或多个:
指标1.异构代码在其对应的硬件上是否运行成功。这里以运行成功为异构代码的质量较好(相比于运行失败较好)。该指标1也可以被称为运行状态。
指标2.异构代码在其对应的硬件上的运行时间(也可以称为性能)。这里以运行时间越短为异构代码的质量较好(相比于运行时间越长)。该指标2也可以被称为运行时间。
指标3.异构代码在其对应的硬件上运行时所占内存大小,该内存可以用于存储异构代码在运行时涉及的数据。这里以所占内存越小为异构代码的质量较好(相比于所占内存越大)。该指标3也可以被称为运行所占内存。
指标4.异构代码在其对应的硬件上运行时的功耗。这里以运行时功耗越小为异构代码的质量较好(相比于功耗越大)。该指标4也可以被称为运行功耗。
图2示出了目标代码生成器模型的一个示意性流程图。
如图2所述,该目标代码生成器模型中包括目标特征编码器(transformerencoder)以及目标特征解码器(transformer decoder)。
其中,目标特征编码器可以用于提取范式基础代码的高维(例如三维)特征。该高维特征可以反映范式基础代码的语义信息,例如可以反映不同字符之间的关联性或者不同字符构成的语句之间的关联性。
目标特征解码器中记录了不同高维特征以及该高维特征对应的代码(与异构代码的语法相同),可以用于基于范式基础代码的高维特征进行分析,确定该高维特征与代码的映射关系,确定该高维特征对应的代码,作为异构代码。
其中,在高维特征为三维特征时,可以将其表示为一个M*M*3的向量或者矩阵等形式的数据。
在一些可能的情况下,输入到目标代码生成器模型中的范式基础代码也可以被称为第一范式代码,该第一范式代码的高维特征也可以被称为第一范式特征或者第一特征。
在一些可能的实施例中,得到该目标代码生成器模型的过程可以参考如下描述:
首先,搭建一个初始化好的代码生成器模型,该初始化代码生成器模型中包括范式特征编码器(初始化的)以及范式特征解码器(初始化的)。该初始化的范式特征编码器以及初始化的范式特征解码器可以是现有的代码生成器模型中的范式特征编码器以及范式特征解码器,例如现有的encoder-decoder模型等。本申请实施例对此不作限定。
然后,终端基于不同的方式对初始化代码生成器模型中包括的范式特征编码器以及范式特征解码器进行训练,得到训练完成的代码生成器模型(目标代码生成器模型)。
这里应该理解的是,对初始化的代码生成器模型进行训练的目的在于:提升代码生成器模型的准确性,使得输出的异构代码正确性更高。其中,对于初始化代码生成器模型中的范式特征编码器进行训练得到目标特征编码器的过程可以参考下述描述:
首先,终端获取至少一个样本对。其中一个样本对中包括范式基础代码以及该范式基础代码对应的异构代码(也可以被称为参考异构代码)。
然后,终端将一个范式基础代码输入到初始化代码生成器模型中的范式特征编码器(范式特征编码器1)中,将该范式基础代码对应的参考异构代码输入到另一个范式特征编码器(范式特征编码器2)中。利用范式特征编码器1提取范式基础代码的高维特征(高维特征1),以及,利用范式特征编码器2提取参考异构代码的高维特征(高维特征2)。再计算该高维特征1以及高维特征2的相关概率1(相关概率也可以称为相关性)。调整范式特征编码器1以及范式特征编码器2中各网络层的权重,得到调整之后的范式特征编码器1以及调整之后的范式特征编码器2。然后执行下述步骤(步骤1):基于调整之后的范式特征编码器1再次提取该范式基础代码的高维特征(高维特征3),以及,基于调整之后的范式特征编码器2再次提取该基础异构代码对应的参考异构代码的高维特征(高维特征4),再计算该高维特征3以及高维特征4的相关概率(相关概率2)。如果相关概率2未满足预设条件B则再次调整范式特征编码器1以及范式特征编码器2中各网络层的权重,得到调整之后的范式特征编码器1以及调整之后的范式特征编码器2。然后重复执行前述步骤1以及后续的步骤。如果相关概率2满足预设条件B,则停止调整范式特征编码器1以及范式特征编码器2中各网络层的权重,将输出相关概率2对应的范式特征编码器1作为更新之后的范式特征编码器,自此完成一次对范式特征编码器的训练。
然后,再基于下一个样本对将该更新之后的范式特征编码器中各网络的权重进行0次或至少一次调整。再次得到更新之后的范式特征编码器。其中,调整范式特征编码器中各网络的权重的相关内容可以参考前述描述,此处不再赘述。
直到全部样本对都参与范式特征编码器中各网络的权重的调整之后,即可得到训练完成的目标特征编码器。
对于从初始化的范式特征编码器得到目标代码生成器中的目标特征编码器的过程可以参考下述对步骤S102以及相关内容的详细描述,此处不再展开叙述。
其中,在一些可能的情况下,该预设条件B为:相关概率2为最大化相关概率。其中,最大化包括相关概率连续U次(例如5次)变化梯度趋近于0,或者未变化。相关概率1次变化梯度趋近于0,或者未变化是指:第G次调整之后的范式特征编码器计算得到的相关概率与第G+1次调整之后的范式特征编码器计算得到的相关概率之间的差值趋近于0,或者未变化(相等)。
对于初始化代码生成器模型中的范式特征解码器(初始化的范式特征解码器)进行训练得到目标特征解码器的过程包括:获取W个范式基础代码,在获取目标特征编码器之后。终端可以基于该目标特征编码器以及W个范式基础代码对初始化的范式特征解码器进行训练,得到目标特征解码器。其中,基于一个范式基础代码以及该目标特征编码器对范式特征解码器进行训练,得到更新后的目标特征解码器的过程如下:
在一些可能的实现方式中,首先,终端将W个范式基础代码中的一个范式基础代码输入到目标特征编码器中,提取该范式基础代码的高维特征A。然后将该高维特征A输入到范式特征解码器中得到该范式基础代码对应的预测异构代码。再将该预测异构代码输入到该预测异构代码对应的硬件上进行运行,得到预测异构代码的在该硬件上运行的指标。确定预测异构代码在其对应的硬件上运行时的指标是否满足预设条件A。如果代码生成器模型输出的异构代码在其对应的硬件上运行的指标满足预设条件A,则可以不对范式特征解码器中个网络层的参数进行更新,完成一次对代码生模型的训练,也意味着完成了一次对范式特征编码器的训练。如果代码生成器模型输出的预测异构代码在其对应的硬件上运行的指标不满足预设条件A,则可以对范式特征解码器中各网络层中的参数进行调整,得到调整之后的范式特征解码器,然后再基于该范式基础代码以及目标特征编码器对该调整之后的范式特征解码器中各网络层的参数进行调整,直到生成的预测异构代码满足预设条件A,则停止调整,完成一次训练。
直到基于W个范式基础代码分别对范式特征解码器进行训练之后,即可得到目标特征解码器,则得到了目标代码生成器模型。
应该理解的是,由于在对范式特征解码器进行训练之前已经得到了目标特征编码器,则得到更新之后的目标特征解码器也意味着得到了更新之后的代码生成器模型。得到目标特征解码器也意味着得到了目标代码生成器模型。
图3示出了本申请实施例提供的代码生成方法的示意性流程图。
关于基于范式基础代码得到其对应的异构代码的过程包括:终端生成目标代码生成器模型。后续,该目标代码生成器模型可以布置在终端中,终端可以将待转换的范式基础代码输入到该目标代码生成器模型中,得到该范式基础代码对应的异构代码。
其中,关于基于生成目标代码生成器模型的过程可以参考下述对步骤S101-步骤S111的描述。
S101.终端对待处理数据集合进行数据清洗,得到目标数据集,该目标数据集中包括Q个样本对,其中,一个样本可以表示为一个范式基础代码以及一个参考异构代码的对应关系。
一个样本中包括一个范式基础代码以及该范式基础代码对应的参考异构代码。参考异构代码即为样本对中,一个范式基础代码对应的异构代码。范式基础代码及其对应的参考异构代码的结构不同,是两种不同的代码,但是范式基础代码及其对应的异构代码的功能是相同的,具有相同含义的输入输出。例如,范式基础代码A的输入为A1、A2,输出为B1,则该范式基础代码A对应的参考异构代码A的输入可以为C1、C2,输出为D1。其中,A1、A2、B1分别与C1、C2、D1的含义相同,但是表现形式不同,A1、A2是用范式基础代码A对应的语法(语法A)表示的,C1、C2是用参考异构代码A(语法B)对应的语法表示的。
终端获取R个待处理样本对,其中,R为大于等于1的整数。通常R的取值较大,可以为千万级别。
该R个待处理样本对中每一个样本对都包括一个范式基础代码以及该范式基础代码对应的异构代码。
终端对该R个待处理样本进行数据清洗剔除其中不合格的样本对,得到目标数据集,该目标数据集中包括Q个样本对。Q为小于等于R的正整数。
以范式基础代码为编程语言1(例如C语言),参考异构代码为编程语言2(例如OpenCL语言)为例进行说明,不合格的样本对包括但不限于以下类型的样本对:
(1)样本对中的范式基础代码或者该范式基础代码对应的参考异构代码无法运行成功。
(2)样本对于其他样本对内容相同。
(3)范式基础代码不是编程语言1或者参考异构代码不是编程语言2。即需要保证Q个样本对中的每一个范式基础代码都是同一种编程语言,以及,每一个参考异构代码都是另一种编程语言。
然后,在步骤S102以及步骤S103中可以基于该Q个样本对对代码生成器中的范式特征编码器(范式特征编码器1)进行训练:更新其中各网络层的权重。将训练完成的范式特征编码器1作为目标代码生成器中的范式特征编码器(目标特征编码器)。其中,基于一个样本对对范式特征编码器1进行一次训练,更新其中各网络层的权重的过程可以参考下述对步骤S102的描述。完成一次训练之后,利用下一个样本对对更新之后的范式特征编码器1进行更新的过程可以参考对步骤S103以及步骤S102的描述。
S102.终端获取Q对样本中的第i个样本对,基于该第i个样本中包括的范式基础代码i以及参考异构代码i对代码生成器模型中的范式特征编码器1进行一次训练,更新范式特征编码器1中各网络层的权重,得到更新后的范式特征编码器1,其中,i的初始值为1。
图4示出了终端基于第i个样本对范式特征编码器1进行一次训练的示意图。
下面结合图4详细描述该步骤S102。
如图4所述,将范式基础代码i输入到代码生成器模型中的范式特征编码器(范式特征编码器1)中,并且,将参考异构代码i输入到范式特征编码器2中。利用范式特征编码器1提取范式基础代码的高维特征(高维特征i1,该高维特征i1也可以被称为第二特征),以及,利用范式特征编码器2提取参考异构代码i的高维特征(高维特征i2,该高维特征i2也可以被称为第三特征)。再计算该高维特征i1以及高维特征i2的相关概率i1。其中,计算相关概率i1的方法包括:基于表示器1(representation1)、全连接(full connection,FC)网络以及softmax函数将高维特征i1表示为一个128维的特征向量(特征向量i1),以及,基于表示器2(representation2)、全连接(full connection,FC)网络以及softmax函数将高维特征i2表示为一个128维的特征向量(特征向量i2),计算特征向量i1以及特征向量i2之间的距离作为相关概率i1(也可以被称为第一相关概率)。
然后,调整范式特征编码器1以及范式特征编码器2中各网络层的权重,得到调整之后的范式特征编码器1以及调整之后的范式特征编码器2。然后执行下述步骤(步骤1):基于调整之后的范式特征编码器1再次提取该范式基础代码i的高维特征(高维特征i3,该高维特征i3也可以被称为第四特征),以及,基于调整之后的范式特征编码器2再次提取该参考异构代码i的高维特征(高维特征i4,该高维特征i4也可以被称为第五特征),再计算该高维特征i3以及高维特征i4的相关概率(相关概率i2)。如果相关概率i2未满足预设条件B则再次调整范式特征编码器1以及范式特征编码器2中各网络层的权重,得到调整之后的范式特征编码器1以及调整之后的范式特征编码器2。然后重复执行前述步骤1以及后续的步骤。如果相关概率i2满足预设条件B,则停止调整范式特征编码器1以及范式特征编码器2中各网络层的权重,将输出相关概率i2对应的范式特征编码器1作为更新之后的范式特征编码器1,自此完成一次对范式特征编码器1的训练。其中,计算相关概率i2的过程可以参考前述计算相关概率i1的描述,此处不再赘述。
其中,预设条件B为相关概率i2(也可以被称为第二相关概率)为最大化相关概率。其中,最大化包括相关概率连续U次(例如5次)变化梯度趋近于0,或者未变化。相关概率1次变化梯度趋近于0,或者未变化是指:第G次调整之后的范式特征编码器计算得到的相关概率与第G+1次调整之后的范式特征编码器计算得到的相关概率之间的差值趋近于0,或者未变化(相等)。
应该理解的是,范式特征编码器1以及范式特征编码器2中可以包括至少一个网络层。初始化的范式特征编码器1以及初始化的范式特征编码器2的网络结构可以相同也可以不同。如图4所示,该范式特征编码器1中可以包括X1个网络层(每一个网络层可以称为网络层A1),该范式特征编码器2中可以包括X2个网络层(每一个网络层可以称为网络层A2)。表示器1以及表示器2中也可以包括至少一个网络层。例如,表示器1中可以包括Y1个网络层(每一个网络层可以称为网络层B1)。表示器2中可以包括Y2个网络层(每一个网络层可以称为网络层B2)。
图5示出了范式特征编码器1的一个示意图。
如图5所示,该范式特征编码器1中可以包括X1个网络层,分别记为网络层1、网络层2至网络层X1,不同的网络层都有对应的权重,一个网络层对应的权重表示该网络层在提取特征时的贡献。不同的网络层中可以包括至少一个参数。该一个参数可以看作一个神经元。例如,其中,网络层1的权重可以表示w1,其中的参数可以为:参数11、参数12以及其他参数。网络层2的权重可以表示w2,其中的参数可以为:参数21、参数22以及其他参数。网络X11的权重可以表示w-X1,其中的参数可以为:参数X11、参数X12以及其他参数。前述涉及的调整范式特征编码器1中各网络层的权重,即是调整权重w1、权重w2至权重w-X1的值。
S103.终端设置i等于i+1,且确定i是否小于等于Q。
这里可以理解的是,执行完步骤S103之后,继续执行步骤S102,再基于下一个样本对将该更新之后的范式特征编码器中各网络的权重进行0次或至少一次调整。再次得到更新之后的范式特征编码器。其中,调整范式特征编码器中各网络的权重的相关内容可以参考前述对步骤S102的描述,此处不再赘述。
重复执行步骤S102以及步骤S103,直到全部样本对(Q个样本对)都参与范式特征编码器1中各网络的权重的调整之后,即可得到训练完成的目标特征编码器。其中,Q个范式基础代码也可以被称为Q个第一范式基础代码,其中,第i个范式基础代码可以被称为第i个第一范式基础代码。范式特征编码器1也可以被称为第一范式特征编码器。范式特征编码器2也可以被称为第二范式特征编码器。
这里应该理解的是,重复执行步骤S102以及步骤S103表示执行了以下操作:基于Q个第一范式基础代码及其对应的参考异构代码对第一范式特征编码器中各网络层的权重进行调整,当第一范式特征编码器满足第一条件时完成对权重进行调整,生成目标特征编码器,该第一条件包括:使得Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化。
在得到目标特征编码器之后,可以基于该目标特征编码器以及W个范式基础代码对代码生成器模型中的范式特征解码器进行训练,得到目标特征解码器。对该过程的描述可以参考下述对步骤S104-步骤S111的描述。
S104.终端设置迭代次数h的初始值为1。
该迭代次数为大于等于1的整数,通常可以设置为千万级别的整数。
该迭代次数可以表示对范式特征解码器中各网络中的参数进行调整的总次数。
下述步骤S105-步骤S109描述了基于一个范式基础代码(例如范式基础代码j)对代码生成器模型(待训练的)进行一次训练的过程。详细过程可以参考下述对步骤S105-步骤S109的描述。
S105.终端将W个范式基础代码中的第j个范式基础代码输入到代码生成器模型中,生成该第j个范式基础代码对应的预测异构代码j,其中,j的初始值为1。
步骤S105中的代码生成器模型中包括训练完成的范式特征编码器1(目标特征编码器),以及待训练的范式特征解码器。
图6示出了代码生成器模型(待训练)的示意性流程。
如图6所述,代码生成器模型中可以包括目标特征编码器以及范式特征解码器(待训练的),该目标特征编码器即为前述涉及的训练完成的范式特征编码器1。其中包括权重更新之后的X1个网络层A1。该范式特征解码器(transformer decoder)中可以包括Z个网络层C。
设置变量j,该变量j的初始值为1。然后,将W个范式基础代码中的第j个范式基础代码(范式基础代码j)输入到代码生成器模型中,生成该第j个范式基础代码对应的预测异构代码j。该过程包括:目标特征编码器可以提取范式基础代码j的高维特征j。然后传输到范式特征解码器中,该范式特征解码器可以基于高维特征j进行分析,确定该高维特征j与代码(与异构代码语法相同)的映射关系,确定该高维特征j对应的代码,作为预测异构代码j。
后续,可以基于该预测异构代码j构建损失函数,通过硬件反馈调整代码生成器模型中范式特征解码器的各网络层中的参数。对于该过程的描述可以参考下述对步骤S106-步骤S108的描述。
该W个范式基础代码可以被称为W个第二范式基础代码,第j个范式基础代码可以被称为第j个第二范式基础代码。在一些可能的情况下,该W个第二范式基础代码为前述涉及的Q个第一范式基础代码中的W个第一范式基础代码。在另一些可能的情况下,该W个第二范式基础代码与Q个第一范式基础代码中的范式基础代码来源可以不同。本申请实施例对此不作限定。
S106.终端在该预测异构代码j对应的硬件A上运行该预测异构代码j,获取该预测异构代码j在硬件A上运行时的指标,基于该指标得到代码生成器模型的损失函数值。其中,预测异构代码j对应的硬件A是指该异构代码j的运行环境。
该指标可以反映预测异构代码j在硬件A上运行的情况。预测异构代码j在硬件A上运行时的指标包括但不限于以下指标中的一个或多个:预测异构代码j在硬件A上是否运行成功、预测异构代码j在硬件A上的运行时间、预测异构代码j在硬件A上运行时所占内存大小、异构代码j在硬件A上运行时的功耗。关于指标的相关描述可以参考前述相关内容的描述,此处不再赘述。
损失函数值可以看作一种硬件反馈,其可以反馈预测异构代码j在硬件A上运行的情况。在一些可能的情况下,以损失函数越小越好,即损失函数越小则表示预测异构代码j在硬件A上运行的情况也好,则代码生成器模型的性能越好。
步骤S106中获取损失函数值的作用在于,可以用于决定是否继续基于范式基础代码j对范式特征解码器的各网络层中的参数进行调整。如果将范式基础代码j输入到代码生成器中之后,该代码生成器得到的预测异构代码j对应的损失函数值小于第一预设阈值,则可以不对范式特征解码器的各网络层中的参数进行调整,结束本次训练。如果将范式基础代码j输入到代码生成器中之后,该代码生成器得到的预测异构代码j对应的损失函数值大于第一预设阈值,则可以继续对范式特征解码器的各网络层中的参数进行调整。对于该过程的描述可以参考下述对步骤S107-步骤S109的描述,此处暂不赘述。
在一些可能的情况下,可以对不同的指标设置不同的权重,然后将各指标乘以其对应的权重然后取和作为损失函数值。例如,可以基于下述公式确定预测异构代码j对应的损失函数值。
totallossj=w11*closs+w12*ploss+w13*mloss+w14*pcloss
上述公式中,totallossj表示预测异构代码j对应的损失函数值。closs表示预测异构代码j在硬件上是否运行成功,其中,运行成功则该closs取值为0,运行失败则该closs取值为1。即closs可以指示异构代码在其对应的硬件上是否运行成功(前述涉及的指标1)。w11可以表示closs对应的权重。ploss表示预测异构代码j在硬件上的运行时间(前述涉及的指标2)。w12可以表示ploss对应的权重。mloss表示预测异构代码j在硬件上运行时所占内存大小(前述涉及的指标3)。w13可以表示mloss对应的权重。pcloss表示预测异构代码j在硬件上运行时的功耗(前述涉及的指标4)。w14可以表示pcloss对应的权重。其中,w11+w12+w13+w14=1。
在一些可能的情况下,以预测异构代码j在硬件A上是否允许成功(指标1)作为重要指标来决定是否对范式特征解码器的各网络层数的参数进行调整。这里可以将w11的值设置为4个权重中最大的,例如可以设置w11的值大于等于0.5,例如可以设置w11=0.9。设置w12=0.04、w13=0.03、w11=0.03。
应该理解的是,步骤S106中涉及的得到代码生成器模型的损失函数值,也可以表示为得到范式特征解码器的损失函数值,或者可以表示为预测异构代码j对应的损失函数值,还可以表示为第j个范式基础代码对应的损失函数值。
S107.确定该损失函数值是否小于第一预设阈值,或者,迭代次数h是否等于第二预设阈值。
在一些可能的情况下,基于该范式基础代码j对代码生成器模型进行训练时,结束本次训练的时机包括但不限于以下时机中任意一个:
时机1.预测异构代码j对应的损失函数值小于第一预设阈值。
时机2.迭代次数h等于第二预设阈值(也可以被称为第二阈值)。
其中,第一预设阈值可以设置为趋近于0,例如,可以设置为0.001。本申请实施例对此不作限定。第二预设值为大于等于1的整数,通常可以设置为千万级别的整数。
在确定损失函数值小于第一预设阈值,或者,迭代次数h等于第二预设阈值的情况下,可以不再基于范式基础代码j对代码生成器模型进行训练。可以执行下述步骤S109。
在确定损失函数值大于或者等于第一预设阈值,以及,迭代次数h小于第二预设阈值的情况下,可以再次基于范式基础代码j对代码生成器模型的各网络层中的参数进行调整,继续基于该范式基础代码j对代码生成器模型进行训练,可以执行下述步骤S108。
S108.终端调整代码生成器模型中范式特征解码器的各网络层中的参数,得到调整后的范式特征解码器,设置h等于h+1。
范式特征解码器中可以包括至少一层网络,不同的网络层中包括至少一个参数。这些参数可以看作网络的神经元。不同网络层中包括的参数数量可以相同也可以不同。
图7示出了范式特征解码器中各网络层中的参数的示意图。
如图7所示,该范式特征解码器中可以包括多个网络层,例如可以包括网络层11、网络层12以及其他网络层。这里,网络层11中可以包括至少一个参数,例如可以包括参数A1、参数A2以及其他参数(例如其他参数1、其他参数2)。网络层12中可以包括至少一个参数,例如可以包括参数B1、参数B2以及其他参数。其他网络层中也可以包括至少一个参数。
在确定损失函数值大于或者等于第一预设阈值,以及迭代次数h小于第二预设阈值的情况下,可以调整代码生成器模型中范式特征解码器的各网络层中的参数,得到调整后的范式特征解码器。
S109.终端将调整后的范式特征解码器以及更新后的范式特征编码器1作为更新后的代码生成器模型。
在确定损失函数值小于第一预设阈值,或者,迭代次数h等于第二预设阈值的情况下,可以不再基于范式基础代码j对代码生成器模型进行训练。将调整后的范式特征解码器以及更新后的范式特征编码器1作为更新后的代码生成器模型。这里,就结束了基于范式基础代码j对代码生成器模型的训练。
S110.终端设置j等于j+1,且确定j是否小于等于W。
前述步骤S109表示,结束了基于范式基础代码j对代码生成器模型的训练。这里可以设置j=j+1,基于下一个范式基础代码对代码生成器模型进行训练。
在确定j小于等于W的情况下,基于下一个范式基础代码对代码生成器模型进行训练。
在确定j大于W的情况下,则表示已经基于W个范式基础代码完成了对代码生成器模型的训练,得到了目标代码生成器模型。
S111.终端将更新后的代码生成器模型作为目标代码生成器模型。
这里应该理解的是,在一些可能的情况下,重复执行前述步骤S105-步骤S111之后,可以理解为执行了以下操作:基于目标特征编码器以及W个第二范式基础代码对范式特征解码器的各网络层中的参数进行调整,当范式特征解码器满足第二条件时完成对参数进行调整,生成目标特征解码器;该第二条件包括:该W个第二范式基础代码中,任一第二范式基础代码对应的损失函数值小于第一预设阈值;其中,任一第二范式基础代码对应的损失函数值可以指示该任一第二范式基础代码对应的预测参考异构在硬件上运行的情况;任一范式基础代码对应的预测参考异构是将任一第二范式基础代码输入到目标特征编码器以及范式特征解码器之后得到的代码。
在另一些可能的情况下,重复执行前述步骤S105-步骤S111之后,可以理解为执行了以下操作:基于目标特征编码器以及W个第二范式基础代码对范式特征解码器的各网络层中的参数进行调整,当范式特征解码器满足第三条件时完成对参数进行调整,生成目标特征解码器;该第三条件包括:对于W个第二范式基础代码中的第j个第二范式基础代码,该第j个第二范式基础代码对应的损失函数值小于第一预设阈值,或者,通过该第j个第二范式基础代码对参数进行调整的次数达到第二预设阈值;j的取值范围为1至W之间的整数。
S112.将范式基础代码输入到目标代码生成器模型中,得到该范式基础代码对应的异构代码。
该目标代码生成器模型中包括目标特征编码器(训练完成的transformerencoder1)以及目标特征解码器(训练完成的transformer decoder)。
其中,目标特征编码器可以用于提取范式基础代码的高维(例如三维)特征。该高维特征可以反映范式基础代码的语义信息,例如可以反映不同字符之间的关联性或者不同字符构成的语句之间的关联性。
目标特征解码器中记录了不同高维特征以及该高维特征对应的代码(与异构代码的语法相同),可以用于基于范式基础代码的高维特征进行分析,确定该高维特征与代码的映射关系,确定该高维特征对应的代码,作为异构代码。
对该目标代码生成器模型的描述可以参考前述对图2的相关描述,此处不再赘述。
应该理解的是,前述内容中,对范式特征编码器1进行调整得到目标特征编码器的过程,以及,对范式特征解码器进行调整得到目标特征解码器的过程,其中一个是可选的。
本申请实施例中范式基础代码也被称为基础代码,范式特征编码器也可以称为特征编码器,范式特征解码器也可以被称为特征解码器。代码生成器模型也可以称为代码生成模型。范式特征编码器提取的特征也可以被称为范式特征。
下面首先介绍本申请实施例提供的示例性终端。
图8是本申请实施例提供的终端的结构示意图。
下面以终端为例对实施例进行具体说明。应该理解的是,终端可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
终端可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端的具体限定。在本申请另一些实施例中,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是终端的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端的结构限定。在本申请另一些实施例中,终端也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。
终端的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
无线通信模块160可以提供应用在终端上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。
在一些实施例中,终端的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS)等等。
终端通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。
终端可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,颜色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。
数字信号处理器(digital signal processor,DSP)用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现终端的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory,DRAM)等;
终端可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
耳机接口170D用于连接有线耳机。
按键190包括开机键,音量键等。按键190可以是机械按键。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。
本申请实施例中,该处理器110可以调用内部存储器121中存储的计算机指令,以使得终端执行本申请实施例中的代码生成方法。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

Claims (12)

1.一种代码生成方法,其特征在于,所述方法包括:
将第一范式代码输入到目标代码生成器模型中;所述目标代码生成器模型中包括目标特征编码器以及目标特征解码器;
通过所述目标特征编码器提取所述第一范式代码的第一特征;
通过所述目标特征解码器确定所述第一特征对应的代码,将所述第一特征对应的代码作为所述第一范式代码对应的异构代码;其中,获取所述目标代码生成器模型的过程包括:
建立一个初始化代码生成器模型;所述初始化代码生成器模型中包括初始化的第一范式特征编码器以及初始化的范式特征解码器;
基于Q个第一范式基础代码及其对应的参考异构代码对所述第一范式特征编码器中各网络层的权重进行调整,当所述第一范式特征编码器满足第一条件时完成对所述权重进行调整,生成所述目标特征编码器,所述第一条件包括:使得所述Q个第一范式基础代码及其对应的参考异构代码的相关概率最大化;
其中,基于Q个第一范式基础代码及其对应的参考异构代码对所述第一范式特征编码器中各网络层的权重进行调整,包括:分别基于Q个样本对中的每一个样本对将所述第一范式特征编码器进行一次训练,以调整所述第一范式特征编码器中各网络层的权重;所述Q个样本对中包括第i个样本对,所述第i个样本对中包括范式基础代码i以及所述范式基础代码i对应的参考异构代码i;基于所述第i个样本对将所述第一范式特征编码器进行一次训练包括:利用所述第一范式特征编码器获取所述范式基础代码i的第二特征,以及基于第二范式特征编码器获取所述参考异构代码i的第三特征;确定所述第二特征以及所述第三特征之间的相关概率,作为第一相关概率;调整所述第一范式特征编码器以及所述第二范式特征编码器中各网络层的权重,得到调整之后的第一范式特征编码器以及调整之后的第二范式特征编码器;基于所述调整之后的第一范式特征编码器获取所述范式基础代码i的第四特征,以及,基于调整之后的第二范式特征编码器获取所述参考异构代码i的第五特征;确定所述第四特征以及所述第五特征之间的相关概率,作为第二相关概率;在确定所述第二相关概率未满足第四条件的情况下,调整所述第一范式特征编码器以及所述第二范式特征编码器中各网络层的权重。
2.根据权利要求1所述的方法,其特征在于,生成所述目标特征编码器之后,所述方法还包括:
基于所述目标特征编码器以及W个第二范式基础代码对所述范式特征解码器的各网络层中的参数进行调整,当所述范式特征解码器满足第二条件时完成对所述参数进行调整,生成所述目标特征解码器;所述第二条件包括:所述W个第二范式基础代码中,任一第二范式基础代码对应的损失函数值小于第一阈值;其中,所述任一第二范式基础代码对应的损失函数值可以指示所述任一第二范式基础代码对应的预测参考异构代码在硬件上运行的情况;所述任一第二范式基础代码对应的预测参考异构代码是将所述任一第二范式基础代码输入到目标特征编码器以及所述范式特征解码器之后得到的代码。
3.根据权利要求2所述的方法,其特征在于,基于所述目标特征编码器以及W个第二范式基础代码对所述范式特征解码器的各网络层中的参数进行调整,具体包括:
分别基于W个第二范式基础代码中的每一个第二范式基础代码结合所述目标特征编码器对所述范式特征解码器进行一次训练,以调整所述范式特征解码器的各网络层中的参数;其中,所述W个第二范式基础代码中包括第j个第二范式基础代码,基于所述第j个第二范式基础代码对所述范式特征解码器进行一次训练,以调整所述范式特征解码器的各网络层中的参数,所述j的取值范围为1至W之间的整数;其中,基于所述第j个第二范式基础代码对所述范式特征解码器进行一次训练,包括:
将所述第j个第二范式基础代码输入到目标特征编码器以及所述范式特征解码器中,生成所述第j个第二范式基础代码对应的预测异构代码;
获取所述预测异构代码在硬件上运行时的指标,基于所述指标计算第j个第二范式基础代码对应的损失函数值;
在确定所述损失函数值大于或者等于所述第一阈值的情况下,调整所述范式特征解码器的各网络层中的参数,得到调整之后的范式特征解码器;再次基于所述第j个第二范式基础代码对所述调整之后的范式特征解码器进行调整;
在确定所述损失函数值小于所述第一阈值的情况下,结束基于所述第j个第二范式基础代码对所述范式特征解码器的训练。
4.根据权利要求1-3中任一项所述的方法,其特征在于,基于所述第i个样本对将所述第一范式特征编码器进行一次训练时,所述方法还包括:
在确定所述第二相关概率满足第四条件的情况下,完成基于所述范式基础代码i对所述第一范式特征编码器的训练;所述第四条件为所述第二相关概率连续U次变化梯度趋近于0,或者未变化;所述U为大于1的整数。
5.根据权利要求3所述的方法,其特征在于,所述指标包括以下一个或多个:运行状态、运行时间、运行所占内存、运行功耗;其中,所述运行状态用于指示所述预测异构代码在所述硬件是否运行成功;所述运行时间用于指示所述预测异构代码在所述硬件上的运行时间;所述运行所占内容用于指示所述预测异构代码在所述硬件上运行时所占内存大小;所述运行功耗用于指示所述预测异构代码在所述硬件上运行时的功耗。
6.根据权利要求5所述的方法,其特征在于,所述指标包括运行状态、运行时间、运行所占内存、运行功耗;基于所述指标计算第j个第二范式基础代码对应的损失函数值,具体包括:
将所述运行状态、运行时间、运行所占内存、运行功耗对应的权重分别设置为第一权重、第二权重、第三权重以及第四权重;所述第一权重大于所述第二权重、第三权重以及第四权重之和;所述运行状态包括两个值,在预测异构代码在所述硬件运行成功的情况下,所述运行状态取值为0;在预测异构代码在所述硬件运行失败的情况下,所述运行状态取值为1;
将各指标乘以其对应的权重然后取和作为所述损失函数值。
7.根据权利要求6所述的方法,其特征在于,所述第一权重设置为0.9。
8.根据权利要求1-3、5-7中任一项所述的方法,其特征在于,所述第一范式基础代码为C语言,所述第一范式基础代码对应的参考异构代码为OpenCL语言。
9.根据权利要求2或3、5-7中任一项所述的方法,其特征在于,所述W个第二范式基础代码为所述Q个第一范式基础代码中的W个第一范式基础代码。
10.一种终端,其特征在于,所述终端包括:一个或多个处理器和存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述终端执行如权利要求1至9中任一项所述的方法。
11.一种芯片系统,其特征在于,所述芯片系统应用于终端,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述终端执行如权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在终端上运行时,使得所述终端执行如权利要求1至9中任一项所述的方法。
CN202211213901.XA 2022-09-30 2022-09-30 一种代码生成方法和终端 Active CN116700684B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211213901.XA CN116700684B (zh) 2022-09-30 2022-09-30 一种代码生成方法和终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211213901.XA CN116700684B (zh) 2022-09-30 2022-09-30 一种代码生成方法和终端

Publications (2)

Publication Number Publication Date
CN116700684A CN116700684A (zh) 2023-09-05
CN116700684B true CN116700684B (zh) 2024-04-12

Family

ID=87826373

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211213901.XA Active CN116700684B (zh) 2022-09-30 2022-09-30 一种代码生成方法和终端

Country Status (1)

Country Link
CN (1) CN116700684B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673840A (zh) * 2019-09-23 2020-01-10 山东师范大学 一种基于标签图嵌入技术的自动代码生成方法及系统
CN111562915A (zh) * 2020-06-15 2020-08-21 厦门大学 前端代码生成模型的生成方法和装置
CN111950295A (zh) * 2020-08-10 2020-11-17 北京嘀嘀无限科技发展有限公司 一种训练自然语言处理模型的方法和系统
CN112114791A (zh) * 2020-09-08 2020-12-22 南京航空航天大学 一种基于元学习的代码自适应生成方法
CN112148294A (zh) * 2019-06-27 2020-12-29 英特尔公司 用于针对异构系统的有意编程的方法和装置
CN113626038A (zh) * 2021-07-06 2021-11-09 曙光信息产业(北京)有限公司 代码转换方法、装置、设备以及存储介质
CN114648110A (zh) * 2020-12-18 2022-06-21 阿里巴巴集团控股有限公司 模型训练方法、装置、电子设备及计算机存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10664472B2 (en) * 2018-06-27 2020-05-26 Bitdefender IPR Management Ltd. Systems and methods for translating natural language sentences into database queries
US11789711B2 (en) * 2020-12-30 2023-10-17 Mercury Mission Systems, Llc Using artificial intelligence to optimize software to run on heterogeneous computing resource

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148294A (zh) * 2019-06-27 2020-12-29 英特尔公司 用于针对异构系统的有意编程的方法和装置
CN110673840A (zh) * 2019-09-23 2020-01-10 山东师范大学 一种基于标签图嵌入技术的自动代码生成方法及系统
CN111562915A (zh) * 2020-06-15 2020-08-21 厦门大学 前端代码生成模型的生成方法和装置
CN111950295A (zh) * 2020-08-10 2020-11-17 北京嘀嘀无限科技发展有限公司 一种训练自然语言处理模型的方法和系统
CN112114791A (zh) * 2020-09-08 2020-12-22 南京航空航天大学 一种基于元学习的代码自适应生成方法
CN114648110A (zh) * 2020-12-18 2022-06-21 阿里巴巴集团控股有限公司 模型训练方法、装置、电子设备及计算机存储介质
CN113626038A (zh) * 2021-07-06 2021-11-09 曙光信息产业(北京)有限公司 代码转换方法、装置、设备以及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于深度学习的Web用户界面代码生成技术研究;张玮;;科学技术创新(第14期);87-88 *

Also Published As

Publication number Publication date
CN116700684A (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
US20240038218A1 (en) Speech model personalization via ambient context harvesting
CN110415687B (zh) 语音处理方法、装置、介质、电子设备
Georgiev et al. Low-resource multi-task audio sensing for mobile and embedded devices via shared deep neural network representations
CN112331193B (zh) 语音交互方法及相关装置
CN114186563A (zh) 电子设备及其语义解析方法、介质和人机对话系统
CN112885328B (zh) 一种文本数据处理方法及装置
KR20220011979A (ko) 언어 모델 및 이를 포함하는 전자 장치
WO2024055752A1 (zh) 语音合成模型的训练方法、语音合成方法和相关装置
CN113948060A (zh) 一种网络训练方法、数据处理方法及相关设备
US20210050016A1 (en) System and method for recognizing user's speech
CN115039169A (zh) 一种语音指令识别方法、电子设备以及非瞬态计算机可读存储介质
CN116700684B (zh) 一种代码生成方法和终端
CN116645960A (zh) 模型训练方法、语音唤醒方法、装置、设备及介质
US20220301542A1 (en) Electronic device and personalized text-to-speech model generation method of the electronic device
CN117012205B (zh) 声纹识别方法、图形界面及电子设备
US11670294B2 (en) Method of generating wakeup model and electronic device therefor
US20220319499A1 (en) Electronic device for processing user utterance and controlling method thereof
KR102631143B1 (ko) 인공 지능을 이용한 음성 합성 장치, 음성 합성 장치의 동작 방법 및 컴퓨터로 판독 가능한 기록 매체
US20220406324A1 (en) Electronic device and personalized audio processing method of the electronic device
US20240112676A1 (en) Apparatus performing based on voice recognition and artificial intelligence and method for controlling thereof
US20230016465A1 (en) Electronic device and speaker verification method of electronic device
US20240135925A1 (en) Electronic device for performing speech recognition and operation method thereof
US20220375467A1 (en) Electronic device for providing update information through an artificial intelligence agent service
US20240242715A1 (en) Method of determining false rejection and electronic device for performing the same
EP4394762A1 (en) Electronic device, and voice recognition method of electronic device

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