Leveraging Large Language Models for Code Translation and Software Development in Scientific Computing

📄 arXiv: 2410.24119v2 📥 PDF

作者: Akash Dhruv, Anshu Dubey

分类: cs.SE, cs.AI

发布日期: 2024-10-31 (更新: 2025-03-17)

DOI: 10.1145/3732775.3733572


💡 一句话要点

利用大型语言模型进行科学计算中的代码翻译和软件开发

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码翻译 大型语言模型 科学计算 提示工程 Fortran C++ 软件开发

📋 核心要点

  1. 科学计算中代码开发、重构和语言翻译效率低,且GenAI输出的正确性无法保证,需要人工干预。
  2. 提出CodeScribe工具,结合提示工程和用户监督,实现高效的代码转换流程,辅助Fortran到C++的转换。
  3. 展示了CodeScribe在代码转换、API生成和开发支持方面的能力,并讨论了AI驱动代码翻译的挑战和优势。

📝 摘要(中文)

基础模型和生成式人工智能(GenAI)的出现有望改变科学计算的生产力,尤其是在代码开发、重构以及从一种编程语言翻译到另一种编程语言方面。然而,由于GenAI的输出不能保证完全正确,因此仍然需要人工干预。一些干预可以通过特定任务的工具以及正确性验证和有效提示开发的附加方法来实现自动化。我们探索了GenAI在协助代码翻译、语言互操作性和代码库检查方面的应用,该代码库是用于模拟大型强子对撞机(LHC)中粒子相互作用的传统Fortran代码库。在此过程中,我们开发了一个名为CodeScribe的工具,该工具将提示工程与用户监督相结合,以建立高效的代码转换流程。在本文中,我们展示了CodeScribe如何协助将Fortran代码转换为C++,生成用于将遗留系统与现代C++库集成的Fortran-C API,并为代码组织和算法实现提供开发人员支持。我们还讨论了AI驱动的代码翻译的挑战,并强调了其在提高科学计算工作流程生产力方面的优势。

🔬 方法详解

问题定义:论文旨在解决科学计算领域中,特别是大型强子对撞机(LHC)相关的Fortran遗留代码库的代码翻译、语言互操作和代码库检查问题。现有方法依赖人工翻译和重构,效率低下且容易出错。GenAI虽然有潜力,但其输出的正确性无法保证,需要人工干预。

核心思路:论文的核心思路是结合大型语言模型(LLM)的强大代码生成能力和人工监督,通过提示工程(Prompt Engineering)来引导LLM生成更准确的代码,并利用人工干预来修正LLM的错误。这种人机协作的方式旨在提高代码翻译的效率和质量。

技术框架:论文提出了一个名为CodeScribe的工具,该工具是整个技术框架的核心。CodeScribe主要包含以下几个阶段:1) 提示工程:设计有效的提示,引导LLM进行代码翻译。2) LLM代码生成:利用LLM根据提示生成目标代码。3) 用户监督:人工检查和修正LLM生成的代码。4) 迭代优化:根据用户反馈,不断优化提示和LLM的参数,提高代码翻译的准确性。

关键创新:论文的关键创新在于将提示工程和用户监督相结合,形成一个高效的代码翻译流程。与完全依赖LLM自动翻译的方法相比,CodeScribe能够更好地控制代码翻译的质量。此外,CodeScribe还能够生成Fortran-C API,方便遗留系统与现代C++库集成。

关键设计:CodeScribe的关键设计包括:1) 提示模板的设计:针对不同的代码翻译任务,设计不同的提示模板,例如,将Fortran代码转换为C++代码的提示模板,生成Fortran-C API的提示模板。2) 用户界面设计:提供友好的用户界面,方便用户检查和修正LLM生成的代码。3) 迭代优化机制:根据用户的反馈,不断优化提示模板和LLM的参数。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

论文展示了CodeScribe在将Fortran代码转换为C++代码,生成Fortran-C API以及提供代码组织和算法实现方面的能力。虽然论文中没有提供具体的性能数据,但强调了CodeScribe能够提高科学计算工作流程的生产力,并解决了AI驱动代码翻译的挑战。

🎯 应用场景

该研究成果可应用于科学计算领域中遗留代码的现代化改造,例如将Fortran等旧语言编写的科学计算程序迁移到C++等更现代的语言。这有助于提高代码的可维护性、可扩展性和性能,并促进不同语言编写的科学计算模块之间的互操作性。此外,该方法还可用于其他领域的代码翻译和软件开发,具有广泛的应用前景。

📄 摘要(原文)

The emergence of foundational models and generative artificial intelligence (GenAI) is poised to transform productivity in scientific computing, especially in code development, refactoring, and translating from one programming language to another. However, because the output of GenAI cannot be guaranteed to be correct, manual intervention remains necessary. Some of this intervention can be automated through task-specific tools, alongside additional methodologies for correctness verification and effective prompt development. We explored the application of GenAI in assisting with code translation, language interoperability, and codebase inspection within a legacy Fortran codebase used to simulate particle interactions at the Large Hadron Collider (LHC). In the process, we developed a tool, CodeScribe, which combines prompt engineering with user supervision to establish an efficient process for code conversion. In this paper, we demonstrate how CodeScribe assists in converting Fortran code to C++, generating Fortran-C APIs for integrating legacy systems with modern C++ libraries, and providing developer support for code organization and algorithm implementation. We also address the challenges of AI-driven code translation and highlight its benefits for enhancing productivity in scientific computing workflows.