探索并释放大语言模型在自动代码翻译中的潜力
软件工程
2024-05-14 v2 人工智能
摘要
代码翻译工具(transpiler)是用于自动源代码到源代码翻译的工具。尽管基于学习的翻译器在规则基方法方面显示出显著的提升,归因于其针对大规模单语言语料的任务特定预训练。然而,其当前性能仍不满足实际部署需求,相关训练资源也昂贵且昂贵。预训练于海量人类编写代码/文本的大语言模型(LLM)在许多代码智能任务中表现突出,由于其强大的通用性,即使没有任务特定训练。因此,大语言模型可能规避上述限制,但尚未得到充分探索。本文调查了用于自动代码翻译任务的各种大语言模型和基于学习的翻译器,发现:尽管某些大语言模型超过当前翻译器,但仍存在一些准确性问题,其中大多数失败由源程序理解不足、缺少对输入/输出类型的明确指令以及忽略源程序与目标程序之间的差异所致。深受上述发现启发,我们进一步提出了UniTrans——一个统一的代码翻译框架,适用于各种大语言模型,以释放其在该领域的潜力。具体而言,UniTrans首先辅助源程序制作一系列针对目标程序的测试用例。随后,它利用上述自动生成的测试用例来增强代码翻译,并通过执行来评估其正确性。随后,UniTrans进一步(迭代)修复错误翻译的程序。对六种代码翻译数据集(Python、Java 和 C++ 之间的翻译)进行了广泛实验。测试了三种规模各异的最新大语言模型,所有模型均实现了显著提升。
引用
@article{arxiv.2404.14646,
title = {Exploring and Unleashing the Power of Large Language Models in Automated Code Translation},
author = {Zhen Yang and Fang Liu and Zhongxing Yu and Jacky Wai Keung and Jia Li and Shuo Liu and Yifan Hong and Xiaoxue Ma and Zhi Jin and Ge Li},
journal= {arXiv preprint arXiv:2404.14646},
year = {2024}
}
备注
23 pages, 7 figures, accepted by FSE'24 (2024 ACM International Conference on the Foundations of Software Engineering)