論文の概要: Isolating Compiler Bugs by Generating Effective Witness Programs with Large Language Models
- arxiv url: http://arxiv.org/abs/2307.00593v2
- Date: Tue, 23 Apr 2024 17:24:06 GMT
- ステータス: 処理完了
- システム内更新日: 2024-04-24 20:14:41.025168
- Title: Isolating Compiler Bugs by Generating Effective Witness Programs with Large Language Models
- Title(参考訳): 大規模言語モデルを用いた効率的なウィットネスプログラム生成によるコンパイラバグの分離
- Authors: Haoxin Tu, Zhide Zhou, He Jiang, Imam Nur Bani Yusuf, Yuxian Li, Lingxiao Jiang,
- Abstract要約: 既存のコンパイラのバグ分離アプローチは、問題をテストプログラムの突然変異問題に変換する。
コンパイラのバグ分離のための効率的なテストプログラムを生成するために,LLM4CBIという新しい手法を提案する。
GCCとLLVMの120以上の実際のバグに対する最先端のアプローチと比較し,LLM4CBIの利点を実証した。
- 参考スコア(独自算出の注目度): 10.660543763757518
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Compiler bugs pose a significant threat to safety-critical applications, and promptly as well as effectively isolating these bugs is crucial for assuring the quality of compilers. However, the limited availability of debugging information on reported bugs complicates the compiler bug isolation task. Existing compiler bug isolation approaches convert the problem into a test program mutation problem, but they are still limited by ineffective mutation strategies or high human effort requirements. Drawing inspiration from the recent progress of pre-trained Large Language Models (LLMs), such as ChatGPT, in code generation, we propose a new approach named LLM4CBI to utilize LLMs to generate effective test programs for compiler bug isolation. However, using LLMs directly for test program mutation may not yield the desired results due to the challenges associated with formulating precise prompts and selecting specialized prompts. To overcome the challenges, three new components are designed in LLM4CBI. First, LLM4CBI utilizes a program complexity-guided prompt production component, which leverages data and control flow analysis to identify the most valuable variables and locations in programs for mutation. Second, LLM4CBI employs a memorized prompt selection component, which adopts reinforcement learning to select specialized prompts for mutating test programs continuously. Third, a test program validation component is proposed to select specialized feedback prompts to avoid repeating the same mistakes during the mutation process. Compared with state-of-the-art approaches over 120 real bugs from GCC and LLVM, our evaluation demonstrates the advantages of LLM4CBI: It can isolate 69.70%/21.74% and 24.44%/8.92% more bugs than DiWi and RecBi within Top-1/Top-5 ranked results. We also demonstrate that the LLMs component used in LLM4CBI can be easily replaced while still achieving reasonable results.
- Abstract(参考訳): コンパイラのバグは、セーフティクリティカルなアプリケーションにとって重大な脅威となり、すぐに、そして、これらのバグを効果的に分離することは、コンパイラの品質の確保に不可欠である。
しかし、報告されたバグのデバッグ情報が限られているため、コンパイラのバグ分離タスクが複雑になる。
既存のコンパイラのバグ分離アプローチは、問題をテストプログラムの突然変異問題に変換するが、それでも非効率的な突然変異戦略や高い人間の努力の要求によって制限されている。
コード生成におけるChatGPTなどのLLM(Pre-trained Large Language Models)の最近の進歩から着想を得て,LLM4CBIと呼ばれる新しいアプローチを提案し,コンパイラバグ分離のための効率的なテストプログラムを生成する。
しかし、試験プログラムの突然変異にLSMを直接使用すると、正確なプロンプトの定式化や特別なプロンプトの選択に関連する課題のために、望ましい結果が得られない可能性がある。
これらの課題を克服するため、3つの新しいコンポーネントがLLM4CBIで設計されている。
まず、LSM4CBIは、プログラムの複雑さを誘導するプロンプト生産コンポーネントを使用し、データと制御フロー分析を利用して、突然変異のためのプログラムにおいて最も価値のある変数と場所を特定する。
第2に、LLM4CBIは記憶されたプロンプト選択コンポーネントを使用し、強化学習を採用して、テストプログラムを継続的に変更するための特別なプロンプトを選択する。
第3に、特定のフィードバックプロンプトを選択するために、突然変異プロセス中に同じミスを繰り返すことを避けるために、テストプログラム検証コンポーネントを提案する。
GCCとLLVMの120以上の実際のバグに対する最先端のアプローチと比較して、我々の評価はLLM4CBIの利点を示している。 69.70%/21.74%と24.44%/8.92%のバグをTop-1/Top-5ランキングでDiWiやRecBiよりも多く分離できる。
また, LLM4CBI で使用される LLMs コンポーネントは, 妥当な結果が得られながら, 容易に置き換えることができることを示した。
関連論文リスト
- SpecTool: A Benchmark for Characterizing Errors in Tool-Use LLMs [77.79172008184415]
SpecToolは、ツール使用タスクのLLM出力のエラーパターンを特定するための新しいベンチマークである。
もっとも顕著なLCMでも,これらの誤りパターンが出力に現れることを示す。
SPECTOOLの分析と洞察を使って、エラー軽減戦略をガイドすることができる。
論文 参考訳(メタデータ) (2024-11-20T18:56:22Z) - Improving LLM Reasoning through Scaling Inference Computation with Collaborative Verification [52.095460362197336]
大規模言語モデル(LLM)は一貫性と正確な推論に苦しむ。
LLMは、主に正しいソリューションに基づいて訓練され、エラーを検出して学習する能力を減らす。
本稿では,CoT(Chain-of-Thought)とPoT(Program-of-Thought)を組み合わせた新しい協調手法を提案する。
論文 参考訳(メタデータ) (2024-10-05T05:21:48Z) - Program Slicing in the Era of Large Language Models [7.990456190723922]
プログラムスライシングはソフトウェア工学において重要なテクニックであり、開発者は関連するコードの部分を分離することができる。
本研究では,大規模言語モデル(LLM)の静的スライシングおよび動的プログラムスライシングへの応用について検討する。
論文 参考訳(メタデータ) (2024-09-19T00:07:56Z) - What's Wrong with Your Code Generated by Large Language Models? An Extensive Study [80.18342600996601]
大規模言語モデル(LLM)は、標準解に比べて短いがより複雑なコードを生成する。
3つのカテゴリと12のサブカテゴリを含む誤ったコードに対するバグの分類を開発し、一般的なバグタイプに対する根本原因を分析する。
そこで本研究では,LLMがバグタイプやコンパイラフィードバックに基づいて生成したコードを批判し,修正することのできる,自己批判を導入した新たな学習自由反復手法を提案する。
論文 参考訳(メタデータ) (2024-07-08T17:27:17Z) - SORRY-Bench: Systematically Evaluating Large Language Model Safety Refusal Behaviors [64.9938658716425]
安全でないユーザリクエストを認識して拒否する、大規模な言語モデル(LLM)の既存の評価は、3つの制限に直面している。
まず、既存の手法では、安全でないトピックの粗い粒度を使い、いくつかのきめ細かいトピックを過剰に表現している。
第二に、プロンプトの言語的特徴とフォーマッティングは、様々な言語、方言など、多くの評価において暗黙的にのみ考慮されているように、しばしば見過ごされる。
第3に、既存の評価は大きなLCMに頼っているため、コストがかかる可能性がある。
論文 参考訳(メタデータ) (2024-06-20T17:56:07Z) - DebugBench: Evaluating Debugging Capability of Large Language Models [80.73121177868357]
DebugBench - LLM(Large Language Models)のベンチマーク。
C++、Java、Pythonの4つの主要なバグカテゴリと18のマイナータイプをカバーする。
ゼロショットシナリオで2つの商用および4つのオープンソースモデルを評価する。
論文 参考訳(メタデータ) (2024-01-09T15:46:38Z) - Testing LLMs on Code Generation with Varying Levels of Prompt
Specificity [0.0]
大規模言語モデル (LLM) は、人間のようなテキスト生成と処理を模倣する非並列的な技術を示している。
自然言語のプロンプトを実行可能なコードに変換する可能性は、ソフトウェア開発プラクティスの大きな変化を約束します。
論文 参考訳(メタデータ) (2023-11-10T23:41:41Z) - Evaluating Diverse Large Language Models for Automatic and General Bug
Reproduction [12.851941377433285]
大規模言語モデル(LLM)は自然言語処理やコード生成に適していることが証明されている。
提案手法は,広く使用されているDefects4Jベンチマークにおいて,全バグの約3分の1を再現することができた。
論文 参考訳(メタデータ) (2023-11-08T08:42:30Z) - Towards Generating Functionally Correct Code Edits from Natural Language
Issue Descriptions [11.327913840111378]
Defects4J-NL2Fixは、人気のあるDefects4Jデータセットから283のJavaプログラムのデータセットで、バグ修正の高レベルな記述を付加します。
本研究は,この課題に対するいくつかの最先端LCMの性能を実証的に評価する。
論文 参考訳(メタデータ) (2023-04-07T18:58:33Z) - LEVER: Learning to Verify Language-to-Code Generation with Execution [64.36459105535]
本稿では,プログラムの実行結果の検証を学習することで,言語からコードへの生成を改善するシンプルな手法であるLEVERを提案する。
具体的には、LLMからサンプリングされたプログラムが、自然言語入力、プログラム自体とその実行結果に基づいて正しいか否かを判定するために、検証者を訓練する。
LEVER はベースコード LLMs (4.6% から 10.9% まで) を継続的に改善し、それらすべてに対して新しい最先端の結果を得る。
論文 参考訳(メタデータ) (2023-02-16T18:23:22Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。