Skip to content

Latest commit

 

History

History
20 lines (15 loc) · 2.54 KB

2312.13064.md

File metadata and controls

20 lines (15 loc) · 2.54 KB

背景

  • 背景
    论文探讨了程序缩减技术,旨在通过自动最小化触发bug的程序来促进编译器的调试。当前的程序缩减技术要么是跨语言通用的,例如Perses和Vulcan,要么是特定于某种语言的,例如利用语言特定特性的C-Reduce。然而,在多种编程语言通用性与特定语言特性之间找到平衡是一个仍需探索的领域。

  • 已有的工作 现有的工作并没有妥善处理程序缩减中的一个关键挑战,即在多种语言通用性和针对特定语言特性之间做出权衡。目前有两类程序缩减技术:一类是特定于语言的,例如C-Reduce;另一类是通用于各种编程语言的,例如Perses和Vulcan。但是由于缺乏对各种语言特性和语义的了解,语言通用的缩减器无法执行特定于语言的转换,而且对每种语言的特殊特性也无法优化以实现最小化缩减。

核心贡献

  • 提出了一个LLMs辅助的程序缩减(Lampr)
    • 挑战1:语言通用缩减器的局限性 现有的语言通用缩减器,如Perses,虽然在多种编程语言的程序缩减中具备高度的适用性,但缺乏对语义信息的理解以进一步提升性能。本文通过整合大型语言模型(LLMs)的能力,提出了Lampr来弥补这一不足,它不仅能处理语言通用的语法级程序缩减,还能利用LLMs学习的特定于语言的语义级程序转换。

    • 挑战2:有效利用LLMs的问题 LLMs在执行程序缩减时面临着理解微妙代码差异、容易被不相关的上下文分心以及因为大型输入而发生灾难性遗忘等问题。而Lampr提出了一种多层次提示(multi-level prompting)方法来指导LLMs执行程序转换,克服了上述挑战,并在实践中证明了其有效性。

实现与部署

Lampr通过大型语言模型辅助的方式,实现了在现有的通用程序缩减技术基础上进行语言特定缩减。在实验中与Perses这样的通用缩减器交替使用,并对测评结果与Vulcan(一种先进的通用程序缩减器)进行了比较。Lampr在C语言、Rust和JavaScript的50个基准测试中展现了更高的效果,产生了更小的程序,并且有更高的效率,比Vulcan分别减少了10.77%,34.88%和36.96%的时间。

总结

Lampr是第一个整合LLMs于程序缩减过程的算法。它通过多层次提示方法和LLMs的辅助,取得了跨语言通用性和特定语言语义意识之间的平衡,并且在实验中证明了其优越性。