中文

CodeRosetta:突破并行编程无监督代码翻译的边界

分布式、并行与集群计算 2024-10-29 v1 人工智能 机器学习 性能 编程语言 软件工程

摘要

大型语言模型(LLMs)的最新进展重新激发了人们对自动编程语言翻译的兴趣。特别是编码器-解码器 Transformer 模型,在不同编程语言之间的翻译中展现出了潜力。然而,由于并行语义复杂等挑战,语言与其高性能计算(HPC)扩展之间的翻译仍未得到充分探索。在本文中,我们介绍了 CodeRosetta,这是一种专门为编程语言及其 HPC 扩展之间的翻译而设计的编码器-解码器 Transformer 模型。CodeRosetta 在 C++ 到 CUDA 和 Fortran 到 C++ 的翻译任务上进行了评估。它使用了一个定制的具有量身定制的预训练和训练目标的学习框架,以有效地捕获代码语义和并行结构的细微差别,从而实现双向翻译。我们的结果表明,在 C++ 到 CUDA 的翻译中,CodeRosetta 比 state-of-the-art 基线高出 2.9 BLEU 和 1.72 CodeBLEU 分,同时编译准确率提高了 6.05%。与通用的闭源 LLMs 相比,我们的方法在 C++ 到 CUDA 的翻译中将 BLEU 提高了 22.08,CodeBLEU 提高了 14.39,编译准确率提高了 2.75%。最后,CodeRosetta 在 Fortran 到并行 C++ 的翻译中表现出色,据我们所知,这使其成为第一个用于这一复杂任务的编码器-解码器模型,与闭源和开源代码 LLMs 相比,CodeBLEU 至少提高了 4.63 分。

关键词

引用

@article{arxiv.2410.20527,
  title  = {CodeRosetta: Pushing the Boundaries of Unsupervised Code Translation for Parallel Programming},
  author = {Ali TehraniJamsaz and Arijit Bhattacharjee and Le Chen and Nesreen K. Ahmed and Amir Yazdanbakhsh and Ali Jannesari},
  journal= {arXiv preprint arXiv:2410.20527},
  year   = {2024}
}