← 最新论文
💬 NLP

SuperCoder: Assembly Program Superoptimization with Large Language Models

本文介绍了 SuperCoder,一种基于大语言模型的汇编超优化方法,该方法通过构建一个新的大规模基准测试集和强化学习微调,实现了 95% 的正确率以及相比于行业标准编译器 1.46 倍的加速,证明了在超越传统启发式算法的程序性能优化方面,大语言模型具有可行性。

原作者: Anjiang Wei, Tarun Suresh, Huanmi Tan, Yinglun Xu, Gagandeep Singh, Ke Wang, Alex Aiken

发布于 2026-02-02
📖 1 分钟阅读☕ 轻松阅读

原作者: Anjiang Wei, Tarun Suresh, Huanmi Tan, Yinglun Xu, Gagandeep Singh, Ke Wang, Alex Aiken

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你有一份由世界级大厨已经完善过的蛋糕食谱。大厨已经测量了每一种原料,选择了最佳的烤箱温度,并将烘焙时间精确到了秒。这就是你的“优化后”代码(例如使用 gcc -O3 编译出的代码)。

现在,想象一下你要求一位才华横溢但缺乏经验的学徒(即大语言模型,或称 LLM)看着这份完美的食谱说:“我可以让这个蛋糕做得更快。”

这正是 SuperCoder 论文所研究的内容。以下是他们实验过程的简单解释。

挑战:超越大师级大厨

几十年来,计算机科学家一直试图编写能够自动寻找最快执行方式的程序。这被称为超优化(Superoptimization)

  • 旧方法: 以前的尝试就像是在优化单个句子。它们只能处理极其微小、简单的任务,且不包含循环(重复动作)。这就像是试图让制作三明治的速度变快,但你甚至无法添加第二片面包。
  • 新目标: 作者想要观察现代 AI 是否能够优化一顿完整的“大餐”(即包含循环和逻辑的复杂程序),而这顿大餐已经由最专业的厨师(工业编译器)烹饪过了。

工具箱:一个庞大的全新游乐场

为了进行测试,研究人员不能仅仅使用旧的微型数据集。他们需要一个庞大的健身房来训练他们的 AI。

  • 数据集: 他们构建了一个包含 8,072 个汇编程序(计算机实际运行的底层指令)的库。
  • 规模: 这些并非微小的片段;它们的平均长度为 130 行代码,并且包含了复杂的循环。你可以把它想象成从优化一块乐高积木转向优化一座完整的城堡。
  • 安全网: 他们创建了数千个“测试用例”(类似于味觉测试),以确保如果 AI 修改了食谱,蛋糕的味道依然完全一致,只是烘焙得更快了。

实验:训练学徒

他们选取了 23 种不同的 AI 模型,并要求它们重写汇编代码以提高速度。

  • 初步结果: 大多数 AI 在这方面表现得很糟糕。它们要么写出的代码导致崩溃(蛋糕塌陷了),要么写出的代码速度与原版一样慢。
  • 明星选手: 其中一个模型,Claude-opus-4,表现最为出色。它成功地使代码平均提速了 1.43 倍,同时仍能保证正确运行。这就像是在不破坏蛋糕的前提下,将 10 分钟的烘焙时间缩短到了 7 分钟。

秘密配方:强化学习

研究人员意识到,仅仅要求 AI “做得更好”是不够的。他们需要像训练电子游戏角色一样训练它。

  • 奖励系统: 他们使用了**强化学习(Reinforcement Learning)**技术。
    • 如果 AI 写的代码崩溃或给出了错误答案,它会得到 0 分
    • 如果代码运行正确,它会根据速度提升了多少获得分数。
  • 结果: 他们采用了一个表现稳健的模型(Qwen2.5-Coder-7B),并利用这种奖励系统对其进行训练。
    • 训练前: 它的正确率为 61%,速度仅提升了 10%。
    • 训练后(SuperCoder): 它变得在 95% 的情况下正确,且平均速度提升了 46%

如何打磨这颗宝石

即使在训练之后,他们还使用了两个聪明的技巧来获得更好的效果:

  1. Best-of-N 采样: 他们不再只向 AI 索要一个答案,而是要求它提供 8 个不同的版本,并从中挑选出绝对最好的那一个。这进一步提升了加速效果。
  2. 迭代优化(Iterative Refinement): 如果 AI 犯了错,他们会将错误信息展示给它,并询问:“再试一次,但请修复这个特定的问题。” AI 会利用这些反馈进行自我修正,从而变得越来越聪明。

AI 究竟改变了什么?

当研究人员观察 AI 是如何让代码变快的时,他们发现 AI 正在进行如下操作:

  • 循环重构(Loop Restructuring): 重新排列步骤的顺序,使其更加高效。
  • 指令选择(Instruction Selection): 将冗长、缓慢的指令替换为短小、专门的 CPU 特技(就像使用秘密捷径一样)。
  • 消除冗余(Removing Bloat): 删除了编译器虽然保留但对于特定任务并非严格必要的安全检查或复杂数学运算。

核心结论

这篇论文首次证明了 AI 可以充当超优化器(Superoptimizer)。它可以接收已经被世界上最优秀的工程化编译器优化过的代码,并在不破坏功能的前提下,找到让其运行得更快的方案。

他们不仅仅是在猜测;他们构建了一个庞大的测试场,通过严格的奖励系统训练 AI,并展示了通过正确的训练,AI 可以超越目前的“行业金标准”优化水平。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →