性能优化是软件工程中颇具挑战性的部分,需要高水平的技能和计算机科学理解。GSO 是一组软件性能优化挑战,用来测试模型修改程序代码、显著提升其性能的能力。
GSO-bench 旨在评估模型优化程序性能的能力。它用自动化方法生成题目,素材来自 GitHub 上真实软件包中人类开发者做过的性能优化。模型会看到该软件包在优化之前状态的代码,任务是对软件做出性能改进,然后与当初那位程序员做出的优化效果进行对比。
OPT@K 指标
该基准报告的指标是 OPT@K,指模型在 K 次尝试后能够达到人类速度提升至少 95% 的试验所占的百分比。
在 Opt@1 这一设置下,模型对每道题只有一次尝试机会。Opt@k 的评分方式相同,只是给模型 k 次尝试机会。推理模型被允许使用测试时推理,除此之外所有模型的评估条件是对等的。每个模型允许使用的测试时计算量是手动固定的,并会在排行榜上公布。
模型通过 OpenHands 以智能体方式工作
语言模型通过 OpenHands 以智能体的方式工作。OpenHands 是一个流行的框架,允许模型在计算机上执行软件工程任务,例如执行代码、创建和修改文件、浏览网页以及与终端交互。
模型收到的提示词大致如下:一个 Python 代码仓库已上传到指定目录,同时给出一个展示该仓库用法的测试脚本,模型的任务是修改仓库,使该测试脚本的运行时间得到优化。提示词中附有几条基本准则:
- 只能修改 /workspace 目录下的非测试文件,目标是提升测试脚本的性能;
- 修改时必须保证仓库功能与原版等价;
- 不能只针对测试脚本里的特定输入做过度优化,要针对所展示的使用场景做通用的性能改进;
- 修改后可能需要重新构建仓库才能生效,有些构建耗时较长,需要耐心等待。
提示词还给出了推荐的操作步骤:先探索仓库结构;然后在 /workspace 目录下创建一个脚本(例如 /workspace/test_opt.py)来复现并计时那个示例,用 python 命令执行它;接着编辑仓库源代码提升性能;最后重新构建并重跑脚本,确认性能确实提升了。
为什么值得关注
性能工程是软件工程中极具挑战性的部分,需要高水平的技能和计算机科学理解。GSO 基准把评测从功能正确性推进到了性能优化,并且对标真实人类工程师在真实项目中做出的优化。评估代码已在 GitHub 上公开,数据来自 GSO leaderboard。
热门跟贴