微软宣布推出一种可以提高大型语言模型性能的新工具 Jigsaw。“大型的预训练语言模型(如 GPT-3、Codex 等),可以被调整为从 程序员 意图的自然语言规范中生成代码。这种自动化模型有可能提高世界上每个程序员的生产力;但是,由于这些模型可能难以理解程序语义,因此所生成的代码的质量不能得到保证。”
根据介绍,Jigsaw 部署了理解程序语法和语义的后处理技术,然后利用用户反馈来提高未来的性能;该 工具 旨在使用多模式输入为 Python Pandas API 合成代码。Pandas 是数据科学中广泛使用的 API,具有数百个用于 manipulating dataframes 或具有行和列的表的函数。
微软方面称,其经验表明,随着这些大型语言模型演变为根据意图合成代码,Jigsaw 可以在提高系统准确性方面发挥重要作用。
像 OpenAI 的 Codex 这样的大型语言模型正在重新定义编程领域。软件开发人员在解决编程任务时,可以为预期的代码片段提供英文描述,Codex 可以用 Python 或 JavaScript 等语言合成预期的代码。但合成的代码可能不正确,甚至可能无法编译或运行。Codex 用户有责任在使用代码之前对其进行审查。Jigsaw 团队解释称,通过 Project Jigsaw,其目标是使部分审查自动化,以提高使用 Codex 等大型语言模型进行代码合成的开发人员的生产力。
微软认为 Jigsaw 可以“完全自动化”检查代码是否编译、处理错误信息以及测试代码是否产生开发人员希望输出的内容的整个过程。“Jigsaw 将预期代码的英文描述以及 I/O 实例作为输入。通过这种方式,它将输入与相关的输出配对;并提供质量保证,即输出的 Python 代码将在提供的输入上编译并产生预期的输出。”
在其 ICSE 2022 论文 Jigsaw:Large Language Models meet Program Synthesis 中,微软方面在 Python Pandas 上评估了这种方法。使用 Jigsaw,用户可以提供对预期转换的英文描述、input dataframe 和相应的 output dataframe,然后让 Jigsaw 合成预期代码。
Jigsaw 获取英语查询并使用适当的上下文对其进行预处理,以构建可以馈送到大型语言模型的输入。微软在实验中发现,Jigsaw 可以在 30% 的时间内创建正确的输出。如果代码失败,那么修复过程在后处理阶段开始。
在后处理过程中,Jigsaw 应用了三种变换来修复代码。这些转变中的每一个都是由他们在 GPT-3 和 Codex 中观察到的故障模式所激发的。而 GPT-3 和 Codex 失败的方式都类似,因此 Jigsaw 解决这些失败模式的后处理对两者都很有用。
微软在各种数据集上评估了 Codex 和 Jigsaw (with Codex),并测量了准确率。Codex 给出了约 30% 的开箱即用的准确性,Jigsaw 则将准确率提高到 60% 以上;通过用户反馈,准确率可提高到 80% 以上。接下来,他们将继续致力于完善 Jigsaw,努力将在 Python Pandas API 上的经验推广到其他 API 和其他语言上;在通过自动化提高程序员生产力方面发挥重要作用。
更多详情可查看官方博客。
猜你喜欢: