跳到主要内容

AlphaEvolve 的架构:演化搜索 + LLM 如何发现更优的矩阵算法

· 阅读需 10 分钟
Tian Pan
Software Engineer

1969 年,Volker Strassen 发表了一种算法,使用比朴素方法更少的标量乘法来计算 4×4 矩阵。在 56 年的时间里,没有人做得更好。然后一个 AI 编程智能体重写了它——在生产环境中,部署在 Google 的全球基础设施上——并不是通过比人类数学家更聪明,而是通过运行一个循环:生成变体,评估它,保留有效的,重复。

这个循环才是重点。LLM 只是其中一个环节。其周围的架构才是让 AlphaEvolve 奏效的原因,理解这个架构能告诉你 AI 辅助工程正在走向何方。

纯 LLM 代码生成的局限性

让 LLM “编写一个更快的矩阵乘法算法”,它会产生一些看起来像模像样的东西。它甚至可能是正确的。但“正确”和“最优”是不同的标准,而 LLM 没有反馈机制来弥合这一差距。它生成一次,你检查它,对话结束。

进化搜索则面临相反的问题。经典的遗传算法可以找到优化问题的良好解,但它们在固定表示上运行。它们可以高效地变异整数或比特串,但在产生真正算法创新的那种结构化、语义化的代码重写方面却很吃力。

AlphaEvolve 的核心洞察在于,这两种弱点可以相互抵消。LLM 提供具有创造力、语义有意义的代码变异。进化框架提供反馈循环和种群多样性,让有前途的变异在多次迭代中生存并累积。

四组件循环

AlphaEvolve 运行一个包含四个组件的持续循环:

程序数据库。 AlphaEvolve 不仅仅跟踪迄今为止发现的单个最佳解,而是维护一个受进化计算中 MAP-Elites 算法启发的多元存档。程序被存储在“行为利基 (behavioral niches)”网格中——系统显式地保留那些以不同方式呈现趣味性的解,而不仅仅是那些在主要指标上得分最高的解。这防止了早熟收敛 (premature convergence),即进化搜索的经典失败模式。

提示词采样器。 在每次迭代中,系统从数据库中选择少量程序——通常是高性能程序和多样性代表的混合——并构建一个提示词,向 LLM 展示已经尝试过的内容。这为模型提供了上下文:这是当前最好的方法,这是你正在优化的目标,这是有待改进的地方。

LLM 集合。 两个 Gemini 变体并行运行:Gemini Flash 快速生成许多多样的建议,以深度换取吞吐量;Gemini Pro 生成的建议较少,但具有更深思熟虑的推理。关键细节是 LLM 输出的是 diffs(差异),而不是完整的重写。它对现有程序提出有针对性的编辑建议,这使得搜索效率更高——模型是在建议增量改进,而不是每次都从头开始。

评估器。 每个提议的程序都会针对用户定义的 Python 评估函数自动执行,该函数返回标量指标。对于矩阵乘法问题,评估器检查标量运算的数量并验证数学正确性。通过评估的程序进入数据库;失败的程序则被丢弃。这种自动反馈是使循环变得可行的关键——如果没有它,人工审查将在几分钟内成为瓶颈。

该循环在许多并行工作节点上异步运行。没有中心化协调;数据库充当共享状态,工作节点不断地采样、生成、评估和更新。

评估器是设计约束

AlphaEvolve 中最重要的架构决策不是 LLM 的选择或进化选择策略,而是评估器。

评估器必须满足:

  • 自动化:人工参与的评估无法扩展到所需的数千次迭代
  • 快速:每个候选者需要数分钟才能完成的评估器会使搜索变得不切实际
  • 全面:漏掉边缘情况的评估器会导致系统针对代理指标进行优化,从而产生在无法泛化的方面被“优化”的算法

这一约束精确地解释了 AlphaEvolve 的领域契合度。矩阵乘法具有清晰的可验证结构:统计运算次数,检查数学恒等式。数据中心调度可以根据模拟进行测量。硬件电路有形式化验证工具。几何中的接吻数问题 (kissing number problem) 具有精确的组合检查。

它也解释了这种方法的吃力之处。正确性验证成本昂贵的问题——或者“更好”意味着某种微妙且具有语境意义的东西——并不适合这种架构。你无法通过这种方式进化出更好的 UI 组件,或者发现更具说服力的产品策略。搜索空间需要一个你可以计算的奖励信号。

AlphaEvolve 如何击败 FunSearch —— 以及发生了哪些变化

AlphaEvolve 有一个前身:FunSearch,由同一实验室于 2023 年发布。FunSearch 使用了相同的核心循环——LLM + 评估器 + 进化数据库——但它仅限于进化单个 Python 函数。它在组合数学公开问题上找到了新颖的解法,这确实令人印象深刻。

AlphaEvolve 在三个维度上进行了泛化:

  1. Scope(范围):从单个函数扩展到整个代码库。Diffs(差异)可以涉及多个文件、多个函数,甚至是多种语言。
  2. Optimization surface(优化空间):从单一指标扩展到对多个同时追踪的量进行多目标优化。
  3. Context richness(上下文丰富度):AlphaEvolve 不再使用极简提示,而是提供问题的自然语言描述、先前解决方案的示例以及来自评估器的结构化反馈——这为 LLM 提供了关于什么是好的变异的更丰富上下文。

这些扩展的结合使得 AlphaEvolve 能够应对 TPU 硬件电路设计和 FlashAttention 内核优化等问题,这些问题涉及大型代码库中复杂的相互依赖关系,而非孤立的数学函数。

值得了解的结果

有三个 AlphaEvolve 的结果值得研究,它们揭示了这种方法的优势:

Strassen 算法的改进。 使用 48 次标量乘法而不是 Strassen 算法要求的 49 次来完成 4×4 复值矩阵乘法,这听起来像是渐进式的改进。实则不然。矩阵乘法是几乎所有神经网络前向传播的核心。尽管数学专家付出了持续努力,但这个问题在 56 年里一直未能被人类突破。自动化循环在几周内就找到了它,这一事实有力地证明了在定义良好的问题空间上进行大规模自动化搜索的能力。

Google 基础设施的影响。 通过更好的数据中心调度回收了全球 0.7% 的计算资源,并部署了一年多,这在 Google 的规模下代表了巨大的现实价值。通过内核优化,Gemini 的训练速度提升了 23%,这是通过寻找更好的分解矩阵运算的方法实现的——同样是基础搜索,但应用于已部署代码的持续优化,而非公开的数学问题。

接吻数问题 (Kissing number problem)。 虽然关注度较低,但在理论上可能更有趣:AlphaEvolve 在 11 维空间的接吻数问题上取得了进展,该问题探讨了有多少个互不重叠的单位球可以同时接触一个中心单位球。这是一个纯数学问题,没有直接的工程应用。解决这一问题表明,这种方法不仅是针对工程问题的复杂参数调节器,它还能参与真正的数学发现。

工程师构建 AI 系统的范式

AlphaEvolve 不仅仅是一个令人印象深刻的研究成果。它编码了一种工程师可以更广泛应用的模式:

将代码改进视为搜索,而非生成。 当你需要 AI 系统产生更好的输出时,考虑该问题是否可以表述为迭代改进而非一次性生成。如果你有一个可验证的质量指标,那么循环架构就变得可行了。

投资你的评估器。 进化搜索的质量受限于其评估器的质量。弱评估器会产生学会钻代理指标空子的系统。强评估器——那些检查正确性、性能和边缘情况的评估器——则会产生能够改进你真正关心的事情的系统。大多数团队在评估器上的投入相对于 LLM 的选择来说是不足的。

显式保留多样性。 MAP-Elites 的见解——即你应该维持一个多样化的种群,而不是收敛到单个最佳候选者——不仅适用于进化算法。任何生成并选择候选者的系统都能从显式的多样性约束中获益。这就是为什么集束搜索 (beam search) 优于贪婪解码,以及为什么并行维护多个代理策略通常优于过早投身于得分最高的那一个。

增量修改 (Diff) 优于重写。 AlphaEvolve 选择让 LLM 生成有针对性的 diffs 而不是完整的重写,这是一个被低估的设计决策。它保持了每次迭代搜索空间的可处理性,并给了模型一个更明确的任务:什么样的微小改变能让这个程序变得更好?这一原则同样适用于提示词优化、配置调整以及任何需要迭代改进结构化人工产物的领域。

未来展望

AlphaEvolve 代表了近年来从 EvoPrompting 到 FunSearch 发展至今的一种模式的当前前沿。其轨迹非常清晰:结合了生成模型与结构化搜索的自动化系统正在变得能够进行真正的发现,而不仅仅是检索或模式匹配。

短期内的约束不是 LLM——而是评估器。随着形式化验证工具的改进、模拟环境运行成本的降低以及自动化测试框架变得更加全面,适用于这种架构的问题范围将显著扩大。

更长远的问题是,这种方法能否从发现更好的算法扩展到发现更好的架构——不仅仅是在固定的设计空间内进行优化,而是在可能的设计空间之间穿梭。这是 Darwin Gödel Machine 研究正在探索的方向,即代理不仅可以修改其输出,还可以修改自身的代码。AlphaEvolve 是迈向这一能力的重要一步,但它仍在一个相对受限的问题表示中运行。未来几年将展示这种循环能泛化到何种程度。

对于当今构建 AI 系统的工程师来说,实际的启示是:如果你有一个具有可计算质量指标的问题,你可能不需要只是给 LLM 发送提示并接受它给出的任何结果。你需要的是一个循环。

References:Let's stay in touch and Follow me for more thoughts and updates