7个主流LLM在代码翻译任务中的有效性评估

人工智能 (AI) 融入编程生态系统彻底改变了该领域,并在代码翻译方面取得了特别重大的进展。本文的目的是讨论一系列先前的研究,并分析直接从这些基础研究中获得的结果。

需要强调的是,这里提出的结论不仅限于这些发现的简单汇编;它们代表了从引用的研究中提取的数据与作者进行的原始研究之间的融合。这种方法产生了丰富的综合,将现有知识与新观点相结合,并为人工智能辅助代码翻译领域做出了重大贡献。

对于这项研究,选择了在代码转换任务中表现出更大潜力的大型语言模型 (LLM)。这一选择的目的是回答主要研究问题 (RQ),探索 LLM 在代码翻译中的有效性,了解翻译错误的性质,并研究缓解这些困难的潜在解决方案。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

代码翻译旨在将源代码从一种编程语言 (PL) 转换为另一种编程语言 (PL)。鉴于大型语言模型 (LLM) 在代码合成方面的良好能力,研究人员正在积极探索其自动化代码翻译的潜力。

了解 LLM 的局限性对于推进基于 LLM 的代码翻译至关重要。为此,正在进行大规模研究,以调查 LLM(包括一般 LLM 和代码 LLM)在不同语言对(包括 C、C++、Go、Java 和 Python)之间翻译代码的能力。

1、通用 LLM

通用 LLM 是在大量文本信息数据集上预先训练的模型,涵盖自然语言和编程代码。它们旨在应用于广泛的任务。引用的研究和论文侧重于最先进的通用 LLM,其容量高达 200 亿个参数,如 Hugging Face 的 Open LLM 排行榜上所列,包括 GPT-4、Llama2、TB-Airoboros 和 TB-Vicuna 等模型。它们代表了多种高度通用的 AI 模型。

2、代码 LLM

代码 LLM 的开发目的明确:促进和自动化与编程直接相关的任务。引用的研究和论文侧重于三个最具创新性和最近发布的代码 LLM:CodeGen、StarCoder 和 CodeGeeX,它们代表了 AI 在编码任务方面的专业化最新成果。

3、LLM 在代码翻译中的有效性

除了 GPT-4 和 StarCoder,其他所有模型的表现都不尽人意。

每个代码翻译样本的平均测试次数与不成功的翻译之间存在很强的相关性(所有模型的相关系数 (r) 范围为 0.64 到 0.85)。也就是说,现有的测试集越严格,就越能评估翻译是否保留了功能。

这项研究 中,在所有列出的 LLM 中执行了 43,379 次翻译,并根据代码样本提供的测试来衡量成功率。

该研究还强调了 LLM 在实际项目和精心设计的基准之间的表现形成鲜明对比。GPT-4 在实际项目中的成功率为 8.1%,而其他模型根本没有成功。

代码翻译以及其他涉及 LLM 的任务中经常遇到的挑战之一是上下文窗口的限制。一项详细研究(可在此处获得)调查了更广泛的输入上下文对语言模型性能的影响。

当关键信息被重新定位时,它们的有效性会明显下降,这表明模型很难在如此大的数据范围内有效管理信息。当重要信息位于广泛上下文的中心时,这个问题会更加严重。这一现象强调,仅仅扩展输入上下文不足以规避这些 LLM 处理限制。

尽管 GPT-4 与其他模型相比表现出更优异的绝对性能,但当相关信息位于输入上下文的中心部分时,其性能仍然会下降。

4、了解基于 LLM 的代码翻译中的错误

大多数 LLM 在代码翻译任务中都举步维艰,即使使用精心设计的基准测试,其成功率也有限,在实际项目中的表现甚至更差。

下图显示了此实验针对每个模型的结果,这些结果针对所有编程语言 (LP) 进行了累积。

从这些结果中,我们观察到大多数不成功的翻译都会导致编译错误(77.8%,这表明通用和代码 LLM 都难以理解代码的语法。

第二个最常见的影响是功能错误,表明代码在语法上是正确的,并且无一例外地执行,但没有保留源语言中实现的功能。

结果还强调了AI驱动的代码翻译中的几个关键挑战:

  • 输入解析:很大一部分错误(18.1%)源于 LLM 无法准确解析输入。
  • 数据类型选择:正确选择目标语言中的数据类型至关重要,占所有错误的 11.5%。
  • 语法复制:LLM 可能无法充分复制源语言的语法,导致 2.4% 的情况出现错误。
  • 句法和语义差距:大约 30.5% 的错误是由于源语言和目标语言之间的不兼容造成的,其中 24.3% 的错误是由于违反了目标语言(语言范式)。
  • 逻辑和依赖性错误:代码逻辑问题和缺少依赖关系(尤其是导入)占错误的 24.2%。
  • API 调用翻译:在语言之间替换 API 调用可能会引入错误,这表明找到等效 API 的复杂性。
  • 现实世界的复杂性:现实世界的代码带来了额外的翻译挑战,例如处理方法重载和注释等高级功能,而这些功能在基准测试中并不存在。
  • 语言特征:翻译的成功率受到源语言和目标语言特定特征的强烈影响,例如类型系统和对元编程的支持。

这些发现强调了代码翻译的复杂性,以及 LLM 需要更好地理解不同编程语言的句法和语义细微差别,以提高翻译的准确性。

代码翻译过程中引入的错误类型,所有值均以百分比表示

5、缓解挑战和困难的潜在解决方案

在代码翻译方面,开源和闭源 LLM 都有很大改进空间。对于闭源代码模型(例如 GPT-4),用例(真实世界项目)的日益复杂要求提示策略(为语言模型提供输入文本,指导其产生特定类型的响应的行为)有所改进。

一个有前途的研究方向可能涉及创建相互建设性的提示,这些提示遵循连贯和合乎逻辑的信息流,并且可以包含相关的辅助信息,例如变量声明或函数签名,以在翻译后保持完整性和一致性。

对于开源 LLM,提高性能可能涉及微调,其中不同的专门模型经过精心训练以解决翻译过程的不同方面(特别是与本文中检查的错误类别相关的方面)。通过利用精确和微调的 LLM 的力量,每个 LLM 都专注于代码翻译中固有挑战的独特子集,可以获得更全面的理解。

6、结束语

尽管当代的大规模语言模型 (LLM) 既包括通用平台,也包括专门用于代码的平台,在自动化代码翻译方面面临着巨大的挑战,尤其是面对现实世界软件项目固有的复杂性时,但它们尚未达到企业环境所要求的忠实和高质量代码转换的效率水平。

然而,随着深度学习模型的不断进步,人们预计在不久的将来,LLM 的能力将得到增强,以克服当前的障碍,提供更强大、更准确、更经济可行的代码转换。

显然需要进行更多的研究,而该领域的增长潜力表明,重大变化可能会改变软件开发实践。


原文链接:LLM代码翻译的有效性 - BimAnt

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LLM(基于学习的管理方法)是一种在智能决策广泛应用的方法。LLM适用于各种领域,如金融、医疗、交通等。 首先,LLM利用机器学习算法对大量数据进行分析和预测。它可以通过学习历史数据的模式和趋势,将其应用于决策问题。通过分析数据,LLM可以发现隐藏在大量数据的规律和关联,为决策提供有力的支持。例如,在金融领域LLM可以分析市场数据、企业财务报表等信息,预测股票的涨跌趋势,从而帮助投资者做出明智的投资决策。 其次,LLM还可以进行优化和调整。它可以不断学习和改进,根据反馈信息进行自适应调整。通过与环境的互动,LLM可以不断优化模型,并根据情况调整决策策略。例如,在交通管理LLM可以通过分析交通流量数据,根据实时情况调整路线规划,降低交通拥堵,提高通行效率。 此外,LLM在智能决策的应用还包括风险评估、问题诊断和策略制定等方面。通过对历史数据和现有情况的分析,LLM可以预测潜在风险和问题,并提供相应的策略和措施。例如,在医疗领域LLM可以通过分析患者的病历和病情数据,预测患者的病情发展趋势,帮助医生制定更准确的治疗方案。 综上所述,LLM在智能决策的应用广泛且重要。它利用机器学习算法对大量数据进行分析和预测,为决策提供有力的支持。同时,LLM还可以进行优化和调整,根据环境的变化不断改进决策策略。LLM的应用可以提高决策的准确性和效率,在各个领域发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值