要約
この論文では、LLM ベースのコード変換手法と、プログラム全体を 1 つの高水準プログラミング言語から別の高水準プログラミング言語に変換する CoTran と呼ばれる関連ツールを紹介します。
既存の LLM ベースのコード変換方法には、変換されたコードが確実にコンパイルされるか、入力コードと実質的な機能同等性を保持することを保証するためのトレーニングが不足しています。
私たちの作業では、強化学習を使用して LLM を微調整し、コンパイラーのフィードバックとシンボリック実行 (symexec) ベースのテストのフィードバックを組み込んで、入力プログラムと出力プログラムの機能的等価性を評価します。
このアイデアは、コンパイラと symexec ベースのテスト フィードバックを通じて、微調整中に LLM に完璧な翻訳からどの程度の距離があるかを知らせることで LLM をガイドすることです。
私たちは、CoTran と、人間が作成したトランスパイラー、LLM ベースの翻訳ツール、ChatGPT などの他の 14 のコード翻訳ツールを比較する広範な実験を行っています。
Java と Python の \num{57000} 個を超えるコード ペアのベンチマークを使用して、CoTran がコンパイル精度 (CompAcc) や機能等価精度 (FEqAcc) などの関連指標で他のツールよりも優れていることを実証しました。
たとえば、Python から Java への変換では、CoTran は 48.68% の FEqAcc と 76.98% CompAcc を達成していますが、最も近い競合ツール (PLBART ベース) はそれぞれ 38.26% と 75.77% を獲得しています。
さらに、CodeT5 上に構築された CoTran は、Python から Java への場合、FEqAcc を +14.89%、CompAcc を +8.14% 改善します (Java から Python への場合、それぞれ +12.94% および +4.30%)。
要約(オリジナル)
In this paper, we present an LLM-based code translation method and an associated tool called CoTran, that translates whole-programs from one high-level programming language to another. Existing LLM-based code translation methods lack training to ensure that the translated code reliably compiles or bears substantial functional equivalence to the input code. In our work, we fine-tune an LLM using reinforcement learning, incorporating compiler feedback, and symbolic execution (symexec)-based testing feedback to assess functional equivalence between the input and output programs. The idea is to guide an LLM during fine-tuning, via compiler and symexec-based testing feedback, by letting it know how far it is from producing perfect translations. We conduct extensive experiments comparing CoTran with 14 other code translation tools, including human-written transpilers, LLM-based translation tools, and ChatGPT. Using a benchmark of over \num{57000} code pairs in Java and Python, we demonstrate that CoTran outperforms the other tools on relevant metrics such as compilation accuracy (CompAcc) and functional equivalence accuracy (FEqAcc). For example, in Python-to-Java translation, CoTran achieves 48.68% FEqAcc and 76.98% CompAcc, whereas the nearest competing tool (PLBART-base) gets 38.26% and 75.77% respectively. Additionally, CoTran, built on top of CodeT5, improves FEqAcc by +14.89% and CompAcc by +8.14% for Python-to-Java (resp., +12.94% and +4.30% for Java-to-Python).
arxiv情報
著者 | Prithwish Jana,Piyush Jha,Haoyang Ju,Gautham Kishore,Aryan Mahajan,Vijay Ganesh |
発行日 | 2024-10-30 17:22:41+00:00 |
arxivサイト | arxiv_id(pdf) |
提供元, 利用サービス
arxiv.jp, Google