LDB: A Large Language Model Debugger via Verifying Runtime Execution Step-by-step

2024年02月25日
  • 简介
    大型语言模型(LLMs)正在带领代码生成领域取得重大进展。除了单次代码生成外,最近的研究进一步将单元测试和程序验证器整合到LLMs中,以迭代地完善生成的程序。然而,这些研究将生成的程序视为不可分割的实体,在LLMs中调试程序时存在缺陷,特别是当程序包含复杂的逻辑流程和数据操作时。相比之下,当人类开发人员调试程序时,他们通常会设置断点并有选择地检查运行时执行信息。执行流程和中间变量在调试过程中起着至关重要的作用,但它们在现有的代码生成文献中被低估了。在本研究中,我们引入了大型语言模型调试器(LDB),这是一个新颖的调试框架,可以使LLMs通过运行时执行信息完善其生成的程序。具体而言,LDB将程序分割成基本块,并在整个运行时执行过程中跟踪每个块后的中间变量的值。这使得LLMs可以集中精力处理整个执行流程中的简单代码单元,逐块根据任务描述验证其正确性,并高效地定位任何潜在的错误。实验表明,在HumanEval、MBPP和TransCoder基准测试中,LDB始终将基线性能提高了高达9.8%,并在各种LLM选择的代码调试方面实现了新的最先进性能。
  • 图表
  • 解决问题
    本论文旨在解决大型语言模型在代码生成中的调试问题,提出了一种新的调试框架。
  • 关键思路
    论文提出的调试框架将生成的程序分段,并跟踪每个基本块执行后中间变量的值,使得大型语言模型能够集中精力在简单的代码单元上,逐块验证其正确性,快速定位潜在错误。
  • 其它亮点
    本论文提出的调试框架在多个数据集上均表现出了优异的性能,相较于基线模型提升了高达9.8%。实验设计合理,论文提供了开源代码,对于代码生成领域的研究具有重要意义。
  • 相关研究
    近期的相关研究包括《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》、《Deep Code Comment Generation》等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论