Skip to main content
QUICK REVIEW

[論文レビュー] Verified Code Transpilation with LLMs

Sahil Bhatia, Jie Qiu|arXiv (Cornell University)|Jun 5, 2024
Natural Language Processing Techniques被引用数 4
ひとこと要約

この論文では、形式的証明を自動生成するLLMベースのフレームワークであるLLMLiftを紹介する。LLMLiftは、ドメイン固有言語(DSL)における関数的に同等のコードを生成するが、同時に正しさの形式的証明も自動生成する。LLMの推論を活用して、元のコードをPythonベースの中間表現(IR)に翻訳し、その後、ターゲットDSLの構文に変換する。LLMLiftは23のテンソル処理ベンチマークにおいて100%の正しさを達成しており、ドメイン固有のヒューリスティクスを必要とせず、Tenspilerなどの記号的ツールを上回る正確性と速度を実現している。

ABSTRACT

Domain-specific languages (DSLs) are integral to various software workflows. Such languages offer domain-specific optimizations and abstractions that improve code readability and maintainability. However, leveraging these languages requires developers to rewrite existing code using the specific DSL's API. While large language models (LLMs) have shown some success in automatic code transpilation, none of them provide any functional correctness guarantees on the transpiled code. Another approach for automating this task is verified lifting, which relies on program synthesis to find programs in the target language that are functionally equivalent to the source language program. While several verified lifting tools have been developed for various application domains, they are specialized for specific source-target languages or require significant expertise in domain knowledge to make the search efficient. In this paper, leveraging recent advances in LLMs, we propose an LLM-based approach (LLMLift) to building verified lifting tools. We use the LLM's capabilities to reason about programs to translate a given program into its corresponding equivalent in the target language. Additionally, we use LLMs to generate proofs for functional equivalence. We develop lifting-based compilers for {\em four different} DSLs targeting different application domains. Our approach not only outperforms previous symbolic-based tools in both the number of benchmarks transpiled and transpilation time, but also requires significantly less effort to build.

研究の動機と目的

  • ドメイン固有言語(DSL)にコードを手動で書き換える作業は、誤りを起こしやすく、時間がかかるという課題に対処すること。
  • 大規模言語モデル(LLM)を用いて、一般言語からDSLへの自動的で、正しく構築されたコードトランスパイルを可能にすること。
  • 従来の検証済みリフトツールで用いられるドメイン固有のヒューリスティクスや複雑なルールシステムに依存しないこと。
  • LLMが、関数的に同等であることを示す正しく構築されたDSLコードと、形式的証明を同時に生成できることを示すこと。
  • 最小限の工学的作業で、多様なDSLにスケーラブルかつ再利用可能なリフトコンパイラを構築すること。

提案手法

  • LLMLiftは二段階のアプローチを採用する。まず、LLMが元のコードを、DSLの演算子を意味的に捉えるPythonベースの中間表現(IR)に翻訳する。
  • 第二に、LLMが、DSLの意味をエンコードしたプロンプトに従って、IRから最終的なDSLコードを生成する。
  • LLMは、元のコードとトランスパイルされたコードの間の関数的同等性の証明を同時に生成するようプロンプトされる。この際、不変条件と検証条件が使用される。
  • 形式的検証は、生成された証明とコードの正しさを検査するバックエンド検証器を用いて実施される。
  • LLMがプログラムの意味を推論し、正しく検証可能な出力を生成するように導くために、プロンプト工学に依存している。
  • このフレームワークは、TACO(テンソル処理)、DSP(デジタル信号処理)、BLAS、UTDSPの4つの実世界のDSLに適用され、ドメイン固有のベンチマークで評価されている。
Figure 2 : A high-level overview of our LLMLift framework for building verified lifting-based tools.
Figure 2 : A high-level overview of our LLMLift framework for building verified lifting-based tools.

実験結果

リサーチクエスチョン

  • RQ1LLMを用いて、1つのパイプライン内で関数的に正しいDSLコードと同等性の形式的証明を効果的に生成できるか?
  • RQ2LLMベースのアプローチは、記号的検証済みリフトツールに比べ、トランスパイルの正確性とパフォーマンスで優れているか?
  • RQ3LLMLiftは、ドメイン固有の最適化ヒューリスティクスや最適化ルールを一切必要とせずに、高い正しさを達成できるか?
  • RQ4証明とコードの共同生成は、逐次的または二段階のプロンプト提示に比べて、信頼性に優れているか?
  • RQ5LLMは、最小限の再設定で、多様なDSLにどれほど一般化できるか?

主な発見

  • LLMLiftは、テンソル処理分野の23のベンチマークを100%の正確性でトランスパイルに成功し、最先端の記号的検証済みリフトツールTenspilerと同等またはそれを上回るパフォーマンスを示した。
  • LLMLiftは、あらゆるドメイン固有の最適化に依存せずに23のベンチマークをすべて解決したが、Tenspilerは最適化を有効にした場合にのみ23をすべて解決でき、最適化を無効にした場合には18件で失敗した。
  • LLMLiftの平均トランスパイル時間は1ベンチマークあたり95.89秒であり、Tenspilerですら最適化をすべて有効にした場合の115.14秒を上回った。
  • 単一段階のプロンプト提示(証明と不変条件を同時に生成)では23件中20件が解決されたが、これは二段階法がモデルが生成されたプログラム状態を活用して不変条件を構築するのを可能にし、信頼性を向上させることを示している。
  • LLMLiftは、TACO、DSP、BLAS、mathfu、UTDSPを含む、すべての評価対象DSLで100%の正確性を示した。複数のベンチマークスイートで評価された。
  • 従来の検証済みリフトツールに比べ、手作業で作成されたルールや大規模な並列コーパスを学習に用いる必要がないため、はるかに少ない工学的作業で実現された。
Figure 3 : End-to-End Lifting Example
Figure 3 : End-to-End Lifting Example

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。