AlphaEvolve: A Coding Agent for Scientific and Algorithmic Discovery
一句话总结:把「LLM 变异 + 进化数据库 + 自动评测器」拼成一个能改整份代码文件的编码 Agent——不是让模型一次性写出答案,而是让它在程序空间里一代代地试错、打分、择优、再变异,最终在数学发现(56 年来首次把 4×4 复数矩阵乘法从 49 次降到 48 次标量乘法、改进 Erdős 最小重叠问题、11 维 kissing number)和 Google 生产基础设施(数据中心调度省 0.7% 算力、Gemini 训练核加速 23%、TPU 电路精简、FlashAttention 提速 32%)上都拿到了真实、可证明正确的新结果。
- 来源:Alexander Novikov*, Ngân Vũ*, Marvin Eisenberger*, Emilien Dupont*, Po-Sen Huang*, Adam Zsolt Wagner*, Sergey Shirobokov*, Borislav Kozlovskii*, … Pushmeet Kohli, Matej Balog*(Google DeepMind),arXiv:2506.13131v1,2025-06-16(white paper)
- 配套产物:数学新结果的 Google Colab(
google-deepmind/alphaevolve_results) - 本地 PDF:ref20_alphaevolve.pdf
TL;DR 速览
- 问题:让 LLM 从「答对已知题」跨越到「做出全新的科学 / 算法发现」一直很难——单纯采样一次或几次,既不可靠(会幻觉)、也没法在开放问题上持续爬升。能不能把 LLM 的生成能力接进一个能长期爬坡、且不受幻觉污染的搜索框架?
- 方法:
1. 进化式编码 Agent——用一个自动评测函数
h(把代码映射到标量分数)作为唯一"地面真值",把 LLM 的错误建议直接过滤掉; 2. LLM 集成(ensemble):Gemini 2.0 Flash(快、量大)+ Gemini 2.0 Pro(慢、偶尔高质量突破)配合,最大化"每单位算力探索的想法数 × 突破概率"; 3. diff-based 编辑:LLM 输出<<<<<<< SEARCH / ======= / >>>>>>> REPLACE差异块,精准改动大代码库里的局部,也能整块重写; 4. 进化数据库:融合 MAP-Elites + 岛屿模型(island model),在"利用最优"和"保持多样性"间平衡,把历史好程序重新端上来当灵感; 5. evaluator cascade(评测级联)+ 多目标 + 分布式异步流水线:便宜的测试先跑、通过才进贵测试,可并行花上百 compute-hour 评一个候选。 - 关键数字:
- 4×4 复数矩阵乘法 48 次标量乘法——56 年来首次改进 Strassen(1969) 的 49 次(在特征 0 的任意域上);共改进 14 个矩阵乘法目标的 SOTA。
- 50+ 个开放数学问题:~75% 追平最优已知构造、~20% 超过 SOTA(含 Erdős 最小重叠、11 维 kissing number 从 592→593)。
- Borg 调度:全 fleet 平均持续回收 0.7% 本会被搁浅(stranded)的算力,已上线。
- Gemini 训练核:平均 23% 加速、整体训练时间 -1%;核优化周期从"几个月"缩到"几天",已上线。
- FlashAttention(编译器生成 IR 直接优化):核 +32%、前后处理 +15%。
- 样本效率:相比 FunSearch 需要数百万次 LLM 采样,AlphaEvolve 数千次即可(因为用了 SOTA LLM + 富上下文)。
- 一句话评价:这是 [[ref09_meta-harness]]/[[ref17_self-harness]] 反复引用的"程序进化对照系"的奠基之作——它把"苦涩的教训"贯彻到极致:与其手写变异算子或直接搜索答案,不如让强 LLM 当变异算子、把机器可验证的评测当罗盘,然后用进化去堆 test-time compute。它的边界也极清晰:只适用于"能写出自动评测器"的问题;一旦目标无法机器打分(多数自然科学实验),它就失效。这条"评测器即环境"的信条,正是后续 harness 自动优化工作(Meta-Harness 的 Pareto/文件系统、Self-Harness 的回归门)要么继承、要么刻意突破的起点。
tags: #进化式代码搜索 #coding-agent #llm-guided-evolution #算法发现 #自动评测 #diff-editing #map-elites #test-time-compute #FunSearch谱系
related: [[ref09_meta-harness]](把本文列为"标量分数驱动的程序进化"对照)· [[ref17_self-harness]](自我改进谱系里引本文为 AlphaEvolve[15])· [[ref13_adas-automated-design-agentic-systems]](同为"用 meta 过程搜索出系统")· [[ref21_shinkaevolve]](后继:更省样本的进化)· [[ref22_thetaevolve]](进化式代码搜索谱系)· [[ref19_gepa]](反思式文本优化,另一支)
摘要
我们提出 AlphaEvolve——一个进化式编码 Agent,它显著增强了 SOTA LLM 在"攻克开放科学问题、优化关键计算基础设施"这类极难任务上的能力。AlphaEvolve 编排一条自主的 LLM 流水线,任务是通过直接改代码来改进一个算法;用进化方法、持续从一个或多个评测器接收反馈,迭代地改进算法,可能带来新的科学与实践发现。
论文展示的广度:在 Google 大规模计算栈上,AlphaEvolve 发现了更高效的数据中心调度算法、给硬件加速器电路设计找到功能等价的化简、并加速了它自己底层 LLM 的训练;在数学与计算机科学上,它发现了可证明正确、超过 SOTA 的新算法——尤其是找到了用 48 次标量乘法 相乘两个 4×4 复数矩阵的过程,为这一设定下 56 年来对 Strassen 算法的首次改进。作者相信 AlphaEvolve 及类似编码 Agent 能在科学与计算的许多领域产生重大影响。
1 介绍:从"答对题"到"做出发现"
论文开篇给出高价值知识发现的一般图景:构思 → 探索 → 在不靠谱的假设上回溯 → 实验 → 验证,是个漫长过程。近期大家很想用 LLM 自动化其中大部分——底气来自 LLM 惊人的能力、test-time compute 的加持、以及"语言生成 + 行动"的 agent 崛起。但作者点破现状:让 LLM 流水线一路走到"做出全新科学或实践发现"仍然很难。
AlphaEvolve 的破法是把进化计算和 LLM 代码生成结合:它专注于"候选可被自动评测"的科学与工程发现问题,把候选(新数学对象、实用启发式)表示成算法,用一组 LLM 去生成、批判、进化这一池算法。关键在于——
[!TIP] 为什么"自动评测"是整个方法的地基?(讲透) LLM 会幻觉:它可能自信地给出一个"看起来对但其实错"的构造。AlphaEvolve 的核心设计是让 代码执行 + 自动评测成为唯一的地面真值——LLM 只负责"提议",是否采纳由评测函数
h打分说了算([44] 讲幻觉综述)。这样做有三重好处: 1. 过滤幻觉:任何错误提议直接被 0 分淘汰,不会污染后续进化; 2. 可长跑:因为不靠人判断,进化可以跑成千上万步而不累积错误(对比 AI Co-Scientist 那种"自然语言假设 + 自然语言评价"就很难长跑); 3. 代价:也正因如此,只有"能写出机器评测器"的问题才在射程内——需要人工实验的问题(多数自然科学)被排除在外。这是全文最重要的适用边界。
一个反直觉但关键的策略:即便你想要的最终解不是一个算法(比如你要的是一个具体的数学构造 / 一张图),让 AlphaEvolve 去进化"如何构造出该解"的算法,往往比直接搜索那个解更有效 [83]。此时"发现算法"只是工具性目标,却出奇地好使。
[!TIP] 本文相对 FunSearch [83] 的跃迁(Table 1 逐行对照) AlphaEvolve 是 FunSearch 的"大号升级"。为什么这几点升级是质变而非量变,见下面举例:
维度 FunSearch [83] AlphaEvolve 进化对象 单个函数 整份代码文件(跨多函数/组件) 代码规模 10–20 行 数百行 语言 仅 Python 任意语言(含 Verilog) 评测预算 需快(单 CPU ≤20min) 可跑数小时、并行、上加速器 LLM 采样量 数百万次 数千次即可 底座 LLM 小模型、大模型无增益 SOTA LLM 越强越好 上下文 极简(只给上一个解) 富上下文 + 反馈 目标 单指标 多指标同时优化 举例理解"整文件 vs 单函数"的意义:矩阵乘法那个应用里(§3.1),AlphaEvolve 一次改动同时动了优化器(adam→adamw)、权重初始化、损失函数、超参 sweep 四个组件(见 Figure 4),而且这些改动必须彼此一致——这是 FunSearch"只改一个函数"根本表达不了的搜索空间。
射程:作者用 AlphaEvolve 攻了算法设计的开放问题(矩阵乘法)、50+ 个构造性数学开放问题、以及 Google 计算栈四层的工程优化(Borg 调度、Gemini 训练核、TPU 电路、Transformer attention)。
2 AlphaEvolve 方法:一个"LLM 驱动的进化循环"

Figure 1 逐元素解读(全文的"心智模型图"):整张图分上下两块——
- 上方绿框「Human defines "What?"」:人只负责定义问题是什么——设定评测标准、给一份初始解、以及可选的背景知识。注意人不负责"怎么解"。
- 下方蓝框「AlphaEvolve figures out "How?"」:系统自动搞定怎么解。里面是一个四组件闭环:
- Prompt sampler(蓝,左上) → 用 rich context containing past trials and ideas(含历史试验和想法的富上下文)喂给 →
- LLMs ensemble(红,右上) → 产出 proposals of improved programs(改进程序的提议)给 →
- Evaluators pool(黄,右下) → 把 programs with quality scores and other feedback(带质量分和其他反馈的程序)交给 →
- Program database(绿,左下) → 再把 programs to improve and act as inspiration(待改进 + 当灵感的程序)回喂给 Prompt sampler,闭环。
- 两个跨框箭头:绿框→蓝框是 Problem definition(问题定义下达),蓝框→绿框是 Improved solution(改进解上交)。
- 一句话读懂:这就是一个"采样灵感 → LLM 变异 → 评测打分 → 存库择优"的进化飞轮,人只在最外层定义目标与评分。

Figure 2 逐元素解读(把 Figure 1 拆到可实现的粒度):
- 顶部输入行:Scientist / Engineer 提供四样东西——① Initial program with components to evolve(标好待进化块的初始程序)、② Evaluation code(评测代码)、③ Prompt template and configuration(提示模板与配置)、④ Choice of existing or custom LLMs(选用哪些 LLM);产出 Best program。
- 中间「Distributed Controller Loop」——这是方法的伪代码心脏,6 行讲清一次迭代:
python
parent_program, inspirations = database.sample() # ① 从进化库采一个父代 + 若干灵感
prompt = prompt_sampler.build(parent_program, inspirations)# ② 组装富上下文 prompt
diff = llm.generate(prompt) # ③ LLM 生成 diff(SEARCH/REPLACE 块)
child_program = apply_diff(parent_program, diff) # ④ 应用 diff 得到子程序
results = evaluator.execute(child_program) # ⑤ 评测器执行、打分
database.add(child_program, results) # ⑥ 带结果注册回库
- 底部四组件:Evaluators pool / LLMs ensemble / Prompt sampler / Program database,对应上面 6 行里被调用的四个子系统。
- 闭环含义:控制器异步地反复跑这 6 行,每跑一次库里就多一个"带分数的程序",进化就多爬一步。
下面按论文小节把每个组件讲透。
2.1 任务规范(Task specification)
评测(Evaluation):用户必须提供一个把解映射到一组标量指标的函数 h(约定为"越大越好"),在本文里通常实现为一个签名固定的 Python 函数 evaluate,返回一个标量字典。执行 h 可能只需几秒,也可能触发大规模计算(如跑一个搜索算法、或训练+评一个 ML 模型)。
API(进化块标注):为了能进化一份代码里的多个组件,AlphaEvolve 让用户用注释标记"待系统进化"的代码块:
# EVOLVE-BLOCK-START
... # 这里的用户代码是"初始解",会被 AlphaEvolve 改进
# EVOLVE-BLOCK-END
块内代码是初始解,块外代码是把各进化块"串起来、可被 evaluate 调用"的骨架。初始实现必须完整但可以很简陋(比如返回常数的单行函数即可)。
[!TIP] 抽象层次的自由(Flexibility in choosing the abstraction)——这是很聪明的一招 同一个问题,AlphaEvolve 能用很不同的方式去建模,尤其当"进化的程序不是最终产物、而是发现解的手段"时: - 直接进化解的原始字符串表示(经典进化算法风格); - 进化一个"从零构造解"的定形函数(FunSearch [83] 的做法); - 进化一个定制搜索算法,在固定算力预算内去找解; - 甚至协同进化"中间解 + 搜索算法"——让每个搜索算法专门为改进某个特定中间解而生。
作者的经验法则:不同抽象层对不同问题更优。例如"解高度对称"的问题,进化构造函数更有利(这类解往往更简洁 [83]);而"解非对称"的问题,进化定制搜索算法更好使。这条经验在 §3.2 的数学发现里被反复用到(多阶段自适应搜索启发式)。
2.2 Prompt sampling(提示采样)
因为用 SOTA LLM,AlphaEvolve 能提供长上下文并做多种定制。主 prompt 包含从库里采样的多个历史解 + 如何提改动的系统指令。此外可加:显式上下文(问题细节、公式、代码片段、相关文献 PDF)、随机格式化(模板占位符 + 人给的多个替代项,按概率分布实例化以增多样性)、渲染的评测结果(程序 + 执行结果 + 分数)、以及 meta prompt evolution(让 LLM 自己在一个单独数据库里"进化提示本身",与解程序类比)。
2.3 Creative generation(创造性生成)与 diff 格式
LLM 的核心角色是消化历史解的信息、提出新颖多样的改进。AlphaEvolve 模型无关,但消融显示"底座 LLM 越强,AlphaEvolve 越好"。
[!IMPORTANT] diff-based 编辑(SEARCH/REPLACE 块)——AlphaEvolve 落到大代码库的关键机制 当 LLM 要改现有代码(尤其大代码库)时,AlphaEvolve 要求它以一串特定格式的 diff 块给出改动: ``` <<<<<<< SEARCH
要在当前程序里精确匹配并替换掉的原始代码块
=======
用来替换原始块的新代码块
REPLACE
``SEARCH与=======之间是**要精确匹配**的原文段,=======与REPLACE` 之间是新段。这允许对代码特定部位做定向更新。当被进化的代码很短、或整体重写比小改更合适时,AlphaEvolve 也可配置成让 LLM 直接输出整块代码。为什么这很重要:这正是 [[ref09_meta-harness]]/[[ref17_self-harness]] 里"diff / 有界编辑"的思想源头之一——用 diff 而非整文件重写,既让 LLM 能精准动刀,又天然把改动局部化、可审计。
Models used(LLM 集成):用 Gemini 2.0 Flash + Gemini 2.0 Pro 的组合。
[!TIP] 为什么要"快模型 + 慢模型"混用?(讲透 + 直觉) - Gemini 2.0 Flash:延迟低 → 候选生成率高 → 单位时间探索的想法更多(进化的"广度"); - Gemini 2.0 Pro:能力更强 → 偶尔给出高质量、能显著推进搜索甚至带来突破的建议(进化的"深度")。 - 组合的收益:这是一个 explore/exploit 的算力分配——用便宜模型把搜索空间铺开,用贵模型偶尔打穿。类比 [[ref09_meta-harness]] 用单一强提议者(Opus)、Self-Harness 用被评估模型自身,AlphaEvolve 走的是"模型集成分工"路线。
2.4 Evaluation(评测的三个增强机制)
执行 h 是评测的本体,但 AlphaEvolve 加了三个可选机制让评测更灵活高效:
[!TIP] 什么是 evaluator cascade(评测级联 / 假设检验式剪枝)? 用户可以指定一组难度递增的测试用例,新解只有在前面所有阶段都足够好时才进入下一(更难/更贵)阶段评测。此外,新解会先在小规模上评,把有 bug 的程序早早筛掉。这本质是"便宜的测试先跑、通过才配跑贵测试"的漏斗,用来在海量候选里快速剪枝——直觉上就像招聘先做电话筛、通过才安排 onsite。这个机制让 §3.1 矩阵乘法里"多随机种子跑张量分解"这种昂贵评测变得可行。
- LLM-generated feedback:有些理想性质(如"程序简洁性")难以精确写进
h,就用单独的 LLM 调用去打分并加进分数字典,或用于直接丢弃不合格解。 - Parallelized evaluation(并行评测):因为样本效率高,花上百 compute-hour 评一个新解是可行的;很多评测是"embarrassingly parallel"(如从多个随机初始化跑搜索),可异步分发到评测集群,避免拖慢代际更替。
Multiple scores(多目标):AlphaEvolve 允许优化多个用户指标。有趣的是——即使你只在意一个目标指标,同时优化多个指标常常也能把那个目标指标做得更好。作者的解释:擅长不同评测标准的程序往往有不同的结构/逻辑,把这些"各有所长"的高分程序塞进 prompt,能刺激 LLM 生成更多样的候选,从而更可能撞见对目标指标极其有效的新路子。
2.5 Evolution(进化数据库)
进化中会不断产生"带评测结果(分数 + 程序输出)"的解,存进进化数据库。其首要目标是把过去探索过的想法在未来代际里最优地重新端上来。核心挑战是平衡探索与利用——既要持续改进最好程序,又要维持多样性以探索整个空间。
[!TIP] 什么是 MAP-Elites + 岛屿模型(island model)?(本文进化库的算法灵感) AlphaEvolve 的进化库融合了两个经典思想: - MAP-Elites [74]:不是只保留"全局最优一个",而是把解按若干行为描述维度划成网格(map),每个格子里保留一个精英(elite)。好处是天然维持行为多样性——即使某个格子的解全局分数不高,它可能代表一条独特的解题风格,日后能被杂交出突破。类比:不是只留班级第一名,而是"每种解题流派各留一个尖子"。 - 岛屿模型(island-based population)[83,97]:把种群分成若干半隔离的"岛",各岛独立进化,偶尔迁移(migration)个体。这抑制了"整个种群过早收敛到单一局部最优",让不同岛探索不同区域。 - 在本文的角色:两者结合让进化库既保住最优、又保住多样性,是长跑进化不"早熟收敛"的关键。这也是 [[ref09_meta-harness]] 讨论"程序进化对照"时点名 AlphaEvolve 用 MAP-Elites/island 的地方。
2.6 Distributed pipeline(分布式流水线)
用 Python asyncio 实现的异步计算流水线:许多计算并发跑,某步若依赖别的未完成计算就阻塞等待。包含控制器 + LLM 采样器 + 评测节点。整条流水线为吞吐量(而非任何单次计算的速度)优化,目标是"在给定总算力预算内,最大化能提议并评测的想法数"。
[!NOTE] 把方法论一句话钉住:AlphaEvolve = 「富上下文 prompt(2.2)→ 强 LLM 集成生成 diff(2.3)→ 级联/多目标/并行评测(2.4)→ MAP-Elites+岛屿进化库择优重采(2.5)」在异步吞吐流水线(2.6)上反复循环,唯一地面真值是自动评测器。它把 LLM 从"一次性答题者"变成了"进化搜索里的智能变异算子"。
3 成果:数学发现 + 生产基础设施
3.1 更快的矩阵乘法(张量分解)
[!TIP] 什么是 matrix multiplication tensor rank(矩阵乘法张量的秩)?(本节的数学核心概念) 自 Strassen [95] 起就知道:两个矩阵相乘的算法空间,可表示为把一个给定 3D 张量分解成若干秩一(rank-one)张量的问题。这个分解的秩(项数)恰好等于计算该矩阵积所需的标量乘法次数。 - 举例:把 \(\langle m,n,p\rangle\) 记作"\(m\times n\) 矩阵乘 \(n\times p\) 矩阵"对应的张量。朴素算法乘 2×2 矩阵要 8 次乘法(秩 8);Strassen 发现秩 7 的分解 → 递归用下去就能亚立方地乘大矩阵。秩越低 = 乘法越少 = 算法越快。 - 难在哪:即便最简单的 3×3 矩阵,最小可达秩至今未知。前人用过交替最小二乘 [93]、深度强化学习(AlphaTensor [26])、定制搜索 [47],数十年仍是开放问题。 - AlphaEvolve 怎么做:它不直接搜分解,而是进化一个"基于梯度的搜索算法"(初始含 initializer、重构损失、Adam 优化器),跑多随机种子 + 评测级联,以"每个目标达到的最低秩 + 达此秩的种子比例"作为爬坡信号。为保证分解精确(避免数值误差),评测时把每个元素四舍五入到最近整数或半整数,并在 prompt 里用自然语言要求算法生成近整数解。
头条结果(Table 2):AlphaEvolve 改进了 14 个矩阵乘法目标的 SOTA。对 \(\langle 4,4,4\rangle\)——把 Strassen 递归用会得秩 49(任意域都成立);Fawzi 等 [26] 在 2 元域下找到秩 47;但在特征 0 的任意域上,56 年来"秩 <49"是开放问题。AlphaEvolve 是第一个找到"用 48 次乘法相乘两个 4×4 复数矩阵"的方法。
| \(\langle m,n,p\rangle\) | 最佳已知 [ref] | AlphaEvolve |
|---|---|---|
| \(\langle 2,4,5\rangle\) | 33 [42] | 32 |
| \(\langle 3,4,7\rangle\) | 66 [91] | 63 |
| \(\langle 4,4,4\rangle\) | 49 [95] | 48 ⭐ |
| \(\langle 4,5,6\rangle\) | 93 [48] | 90 |
| \(\langle 5,5,5\rangle\) | 93 [72] | 93(追平) |
[!NOTE] 一个重要的技术注脚(原文脚注 3):确实存在"用少于 49 次乘法"的算法,但它们不对应矩阵乘法张量的分解,因此不能递归地用于相乘更大的矩阵——AlphaEvolve 的 48 次分解的价值恰恰在于它是一个合法张量分解、可递归。

Figure 4 逐元素解读(这张图是"diff-based 编辑 + 整文件进化"的最佳实证):
- 左侧细长条:这一轮 AlphaEvolve 提出的完整 diff 的缩略全貌——绿色是新增行、红色是删除行,可见改动贯穿整个文件的多处(放大版在附录 Figures 9a–9c)。
- 右侧三块高亮摘录(对应三个被改的组件):
- top right(优化器 + 权重初始化):把 optax.adam(...) 改为 optax.adamw(..., weight_decay=...);并把初始化 scale 乘 0.2"以鼓励找低秩解"。
- middle right(损失函数):加入离散化损失(dist_to_half_ints / dist_to_ints,鼓励元素取整数或半整数)、幻觉损失(随机替换值以促探索)、目标张量加噪、软裁剪、余弦退火权重等一整套。
- bottom right(超参 sweep):hyper.zipit([...]) 里新增了 discretization_weight、hallucination_prob、grad_noise_std、half_int_start 等一大批新超参及其区间。
- 图注关键信息:这些改动"高度非平凡,进化过程中需要 15 次变异(15 mutations)"——即最终这个强搜索算法不是一步生成的,而是跨 15 代逐步累积出来的。这正是"进化 vs 单次采样"的价值所在。
大多数 Table 2 结果(含 \(\langle 4,4,4\rangle\))都从简单初始程序得到;但对某些参数,用研究者自己的想法(如给评测函数加随机性、用进化式方法)播种初始程序能进一步提升——凸显了"研究者 × AlphaEvolve"科学协作的可能。
3.2 为大量开放数学问题定制搜索算法
设置:应用于精选的 50+ 个数学问题,横跨分析、组合、数论、几何 5+ 个分支,在众多具体参数下评测。结果:~75% 追平最佳已知构造、~20% 发现更优新对象(改进 SOTA);所有情形的起点都是简单或随机构造。
[!TIP] 关键方法创新:进化"搜索启发式"而非"构造本身"(多阶段自适应搜索) 对目标函数评测快的问题(数学里常见),作者用迭代精炼策略:每一代 AlphaEvolve 进化一个"搜索启发式程序",给它固定时间预算(如 1000 秒)和"上一个最佳启发式找到的最好构造",让它在此基础上找更好的。于是进化选择的是"擅长改进已经很好的解"的启发式。最终构造往往是一串专门化启发式的接力——早期启发式擅长从随机/简单初态大步前进,后期启发式擅长在近最优配置上精调。这种"多阶段、自适应搜索策略的自动发现"手工很难复制,是超过 SOTA 的关键。
具体新结果: - 分析:改进多个自相关不等式的最佳已知界;打磨一个 Fourier 分析里的不确定性原理构造 [33] 得到略好上界。 - 组合/数论:为 Erdős 最小重叠问题 [25] 建立新上界(略超此前记录 [40])。 - 几何/装填:11 维 kissing number 找到 593 个不重叠单位球同时触碰中心球的配置(超过此前记录 592 [31]);以及若干装填问题(最小化最大/最小距离比、多边形装填、Heilbronn 变体)的新结果。
多数发现是外部数学家 Javier Gomez Serrano 与 Terence Tao 建议的开放问题(并指导如何formulate成 AlphaEvolve 的输入)——凸显 AI 发现引擎与人类数学专长的协同。
3.3 优化 Google 计算生态
3.3.1 数据中心调度(Borg)
问题:把计算作业调度到机群(Borg [102] 编排)本质是两变量向量装箱(vector bin-packing)——机器是有 CPU/内存容量的箱子,作业是有资源需求的物品。低效分配会造成搁浅资源(stranded resources):一台机器某种资源(如内存)耗尽而其他资源(如 CPU)还空着,就再也接不了活。启发式函数吃"作业的 CPU/内存需求 + 机器的 CPU/内存可用量",输出机器优先级分。因为它只对"Borg 已判定可行的机器"重排序,调度决策天然正确(correct by construction)。

Figure 6 逐元素解读:
- 左侧代码:AlphaEvolve 发现的启发式 alpha_evolve_score(required, free)——先算 cpu_residual = required.cpu/free.cpu、mem_residual = required.mem/free.mem,再返回 -1.0 * (cpu_residual + mem_residual + mem_residual/cpu_residual + cpu_residual/mem_residual)。关键在那两个交叉比值项 mem/cpu + cpu/mem:它们在"两种资源残差不平衡时"给出惩罚,从而偏好让 CPU、内存被均衡消耗,避免一种先耗尽造成搁浅。
- 右侧热力图:横轴 CPU residual、纵轴 Memory residual,黄色=高分、紫色=低分。可以看到高分黄色区集中在"两个残差都中低且相近"的左下-中部对角带,而任一残差趋于 0 或 100% 的边缘都是低分紫色——直观印证了"惩罚不平衡"的设计。
- 成效:部署到全 fleet 后,实测确认持续平均回收 0.7% 本会搁浅的算力。选 AlphaEvolve 而非深度 RL,是因为代码解在可解释性、可调试性、可预测性、易部署性上对关键系统更友好。
3.3.2 Gemini 训练核工程
问题:Gemini 建在 JAX 上、用 Pallas 写定制核(kernel)。核里矩阵乘法的tiling(分块)策略——把大矩阵乘法切成小子问题以平衡计算与数据搬运——极大影响速度。传统靠"搜索式 autotuning(每换输入形状就得重调、打断研究流)"或"手写启发式(工程瓶颈,要深懂核与硬件)"。
AlphaEvolve 优化这个核的 tiling 启发式,目标是最小化真实 TPU 上的运行时;核正确性by construction保证(只改分块策略、不改底层数学运算)。自动采集真实核输入形状,一半做训练集、一半做评估集测泛化。结果:平均 23% 核加速、Gemini 整体训练时间 -1%;核优化周期从几个月缩到几天。已部署上线——这标志着 Gemini 通过 AlphaEvolve 优化了它自己的训练过程。
3.3.3 硬件电路设计(TPU RTL)
AlphaEvolve 被挑战去优化一个已高度优化的 Verilog 实现(TPU 矩阵乘法单元里的关键算术电路),目标是减面积、减功耗、保功能。它找到一个简单的代码重写去掉了不必要的比特,被 TPU 设计师验证正确(虽然下游综合工具也能独立发现,但 AlphaEvolve 在 RTL 阶段就贡献了优化)。将集成进下一代 TPU——这是 Gemini 经 AlphaEvolve 对 TPU 算术电路的首次直接贡献。优势:改动直接用 Verilog(硬件工程师标准语言)表达,利于建立信任、简化采纳。
3.3.4 直接优化编译器生成的代码(FlashAttention)
问题:Transformer 的核心 attention 常用 FlashAttention [22] 实现,在栈里是 Pallas 核 + JAX 高层代码,经 XLA 编译成一系列中间表示(IR)。AlphaEvolve 被挑战去直接优化 XLA 生成的 IR(含 FlashAttention 核 + 前后处理)。这很难,因为 (1) IR 是为调试而非人工编辑设计的,(2) 它是编译器生成且已高度优化。每次改动都对照参考代码在随机输入上校验数值正确性,最终由人类专家严格确认对所有输入正确。结果:FlashAttention 核 +32%、前后处理 +15%。展示了 AlphaEvolve 优化编译器生成代码的能力(未来或可把发现的优化并入编译器工作流)。
4 消融:每个组件都重要

在两个任务上做消融:矩阵乘法张量分解(§3.1)与 kissing number 下界(§3.2)。
Figure 8 逐元素解读: - 两个面板:左=矩阵乘法(纵轴聚合目标指标 −10 到 −1,越高越好;实为"越接近 0 的负秩相关量越好"),右=kissing number(纵轴 −50 到 0)。横轴都是算力预算占比 0→100%。每条曲线是一个设定随算力增长的性能,阴影是三次独立随机种子跑出的 intra-target 标准差。 - 左面板 6 条曲线的排序(自上而下即从好到差): - Full method(绿)——全程领先,最快爬到最高; - No meta prompt evolution(橙)——次好,说明 meta prompt 有正贡献但非决定性; - Small base LLM only(棕)——只用小模型,明显掉队 → 底座 LLM 强弱很重要; - No context in the prompt(红) 与 No full-file evolution(紫)——中下,说明"富上下文"和"整文件进化"都有实质贡献; - No evolution(蓝)——垫底,反复喂同一初始程序、不进化 → 进化本身是最大功臣。 - 右面板 3 条曲线:Full method(绿)远超 No context(红)与 No evolution(蓝),且绿线在 ~25% 算力处就基本封顶,另两条则长期低迷。 - 一句话结论:进化(evolution)、富上下文、整文件进化、强底座 LLM、meta prompt——每一个组件都对最终结果有显著贡献,其中"有没有进化"和"底座强不强"是最粗的两根杠杆。
[!TIP] 五个被消融的组件(对照理解) | 消融名 | 拿掉了什么 | 掉多少(定性) | |---|---|---| | No evolution | 不用数据库,反复喂同一初始程序 | 掉最多(进化是核心) | | Small base LLM only | 只用一个小底座模型 | 掉很多(底座强弱关键) | | No context in the prompt | prompt 里不加显式上下文 | 明显掉 | | No full-file evolution | 只进化 loss 函数(回到 FunSearch 式单函数) | 明显掉(整文件重要) | | No meta prompt evolution | 关掉"进化 prompt 本身" | 小幅掉 |
5 相关工作与讨论
5.1 相关工作(把 AlphaEvolve 放进谱系)
[!TIP] ① 进化 / 遗传编程(AlphaEvolve 的老家) - 遗传编程(Genetic Programming)[54,51,5]:用一组手写的变异/交叉算子反复进化程序池。经典成功于符号回归 [66,87]、自动科学 [21]/算法 [16] 发现、调度 [118]。 - 痛点:手写进化算子难设计、可能抓不住领域重要性质。AlphaEvolve 的破法:用 LLM 当变异算子——借 LLM 的世界知识去变异程序,无需预定义允许的变异操作集。 - FunSearch [83]:AlphaEvolve 的直接前身(见 §1 Table 1 对照),把 LLM-guided evolution 用于数学发现。AlphaEvolve 在"整文件/多语言/多目标/强底座+富上下文"四点上超越它。
[!TIP] ② 超优化(superoptimization)与算法发现 - 超优化思想可溯到 1980s [69];前 LLM 方法有系统枚举 [69]、遗传搜索 [20]、Monte Carlo 采样 [86]、深度 RL [68]。 - AlphaTensor [26]:在"矩阵乘法"这一单一问题上用深度 RL 发现可证明正确的算法——AlphaEvolve 通用得多,且在 \(\langle 4,4,4\rangle\) 上(复数域)超过了它。 - AlphaCode [60]:LLM 在(模拟)编程竞赛上的成功,是 LLM-based 超优化/发现的底气来源。近期还有用 LLM 优化 GPU 核 [15,56]、发现进化算法 [55]、训练 LM [58]、优化仓储级计算机 [61] 等。
[!TIP] ③ AI for 科学/数学发现(更广背景) - AI Co-Scientist [34]:用不同 agent 做假设发现/排序/文献综述,但用自然语言表示假设与评价——难以长跑。AlphaEvolve 用代码 + 程序化评测,得以绕开 LLM 幻觉、跑很多步(这是二者最本质的分工,也可原则上结合)。 - FunSearch [24,83] 把 LLM-guided evolution 立成"为数学命题找见证/反例"的工具(与"找形式/非形式证明"互补)。 - AlphaEvolve 与多数方法的差异:用程序化的假设表示 + 评测指标。
[!NOTE] 本文在本项目坐标系里的位置:AlphaEvolve 是"标量分数驱动的、局部变异的、面向单个(较)无状态程序"的进化式代码搜索巅峰。[[ref09_meta-harness]] 正是以它为对照,指出其反馈被压缩成标量分数(只知失败、不知为何失败)、且历史访问受限;[[ref17_self-harness]] 则在自我改进谱系里引它 [15] 作为"自演化 agent 系统"的代表。理解 AlphaEvolve,是理解后续 harness 自动优化"要突破什么"的前提。
5.2 讨论与局限
- 一题多解的自由:同一问题可"直接搜解 / 找构造函数 / 进化搜索算法",各有偏置(如构造函数偏好高对称解 [83]),适配不同问题。
- AlphaEvolve 是一种 test-time compute agent:通过进化显著增强底座 LLM 能力(远超重复采样)。它证明了机器反馈能把 test-time compute scaling 一路撑到"做出新科学发现和高价值实践优化"的地步。自然的下一步是把 AlphaEvolve 增强后的性能蒸馏回下一代底座模型(可能又反过来提升下一版 AlphaEvolve)。
- 自我改进的苗头:AlphaEvolve 能做出"提升自己基础设施、提升自己底座 LLM"的实际发现(Gemini 训练核、TPU 电路)。当前增益中等、反馈环以"月"计;但作者预期"给更多问题配上稳健评测器"的价值会被更广认可。
- 主要局限:AlphaEvolve 只处理"能设计出自动评测器"的问题。数学/计算科学多满足此条件,但自然科学里许多实验只能部分模拟/自动化。虽允许 LLM 提供的评价,但非其优化重点;一个自然方向是"LLM 先对高层想法给反馈,再转入有机器反馈的实现阶段"(呼应 AI Co-Scientist [34])。
个人思考
与其他论文的关联(放进本项目的坐标系)
- 对 [[ref09_meta-harness]](最重要的一组对照):Meta-Harness 在其动机表(Table 1)里把 AlphaEvolve 明确标为"历史=窗口、日志=程序库+评测分数、MTok/iter≈0.022"的代表——即反馈被压缩成标量分数。Meta-Harness 的整个论点就是站在 AlphaEvolve 肩上"反着做": | 维度 | AlphaEvolve (ref20) | Meta-Harness (ref09) | |---|---|---| | 进化对象 | 面向发现的算法/构造(较无状态、干净标量目标) | 有状态的 harness 程序(跨样本累积经验) | | 反馈粒度 | 标量分数(+ 程序输出) | 完整历史:所有候选的源码/分数/原始执行轨迹 | | 变异算子 | LLM 集成生成 diff(局部变异 + 择优) | 编程 Agent 自主 grep 文件系统后改代码 | | 择优结构 | MAP-Elites + 岛屿模型 | Pareto 前沿、无 parent-selection | | 信用分配 | 靠分数 hill-climb | 让 Agent 对失败轨迹做因果推理 |
我的判断:AlphaEvolve 用"评测器过滤幻觉 + 分数爬坡"换来了能跑成千上万步的长跑能力(这是它做出 48 次乘法的底气);但代价是"只知失败、不知为何失败"。Meta-Harness 说:当优化对象是长程、可诊断的 harness 时,压缩成标量分数就丢了把"下游失败"追溯到"上游决策"的信息——所以要给原始轨迹。两者其实是同一进化范式在"目标可诊断性"这条轴上的两端。 - 对 [[ref17_self-harness]]:Self-Harness 在自我改进谱系里引 AlphaEvolve [15] 为"自演化 agent 系统"代表,但刻意收窄到"固定模型 + 有界编辑 + 回归门"。可以说 AlphaEvolve 的"diff 编辑 + 评测器把关"被 Self-Harness 继承并加了纪律(held-in/held-out 非回退门 = 比"单标量分数更高"更严的准入)。 - 对 [[ref13_adas-automated-design-agentic-systems]]:ADAS 用 meta-agent 从历史"编程出"新 agent;AlphaEvolve 用进化 + LLM 变异"进化出"新算法。都属"用一个自动过程搜索出系统/程序",差别在 ADAS 搜 agent 架构、AlphaEvolve 搜算法/构造,且 AlphaEvolve 的评测器更硬(机器可验证)。 - 对 [[ref21_shinkaevolve]] / [[ref22_thetaevolve]]:这两篇是 AlphaEvolve 的直系后继——沿"进化式代码搜索"继续走(ShinkaEvolve 主打样本效率,把 AlphaEvolve 的"数千次采样"再压低)。读它们时,AlphaEvolve 的五大组件(ensemble/diff/database/cascade/异步)是必备的 baseline 参照系。 - 对 [[ref19_gepa]]:GEPA 是"反思式文本优化"另一支(用 rollout 轨迹的反思反馈进化 prompt)。与 AlphaEvolve 对比能看出"进化 + 标量分数"(AlphaEvolve)vs"反思 + 语言反馈"(GEPA)两条自动优化哲学。
方法论启示(可迁移的通用思路)
- "评测器即环境(evaluator-as-environment)"是可复用的元原则:只要你能把目标写成一个机器可打分的函数,就能把 LLM 从"一次性生成器"升级成"进化搜索里的变异算子",用 test-time compute 换质量。反过来——做不出评测器的任务,这套就不灵,这是判断"某问题能否上 AlphaEvolve 式方法"的第一性筛子。
- diff-based 编辑 > 整文件重写:让 LLM 输出 SEARCH/REPLACE 而非重写整文件,既精准又可审计——这个机制被后续 harness 工作普遍继承,值得直接抄进任何"让 LLM 改大代码库"的工具。
- 多目标优化能反哺单目标:即使只在意一个指标,加几个辅助指标能刺激候选多样性、提高撞见突破的概率——一个便宜且反直觉的 trick。
- 快慢模型集成做 explore/exploit:用便宜模型铺广度、贵模型偶尔打深度,是 LLM 算力分配的通用配方。
- 进化库要防早熟收敛:MAP-Elites(保风格多样)+ 岛屿模型(防整体收敛)是长跑搜索的护栏;任何"迭代改进 + 择优"的系统都该想清楚"多样性怎么维持"。
在我的工作中能怎么用
- 本项目(harness 演化)的叙事主线里,AlphaEvolve 是"程序进化"这一支的锚点:讲 Meta-Harness/Self-Harness 时,先用 AlphaEvolve 立起"进化 + 评测器"的范式,再讲它们如何在"反馈粒度/自我性/纪律"上分化,逻辑最顺。
- 我们的
pdf-paper-readerskill 本身就是个 harness。AlphaEvolve 的 §2.4 evaluator cascade(便宜校验先跑、通过才跑贵的)完全可以搬来改进 skill 流程:先 import/实例化/几例小跑做 smoke test,再上完整评测(Meta-Harness 附录 D 也提了同一条,可见是跨论文共识)。 - 若要动手复现进化式代码搜索,最低成本切入点是开源复现 OpenEvolve/ShinkaEvolve(本文的 [24] 已有 reimplementation),比从零搭异步流水线省事。
开放问题 / 疑问
- 成本核算缺失:白皮书未给"数千次采样 × 每候选可达 100 compute-hour"的完整 $ 成本;对预算受限者,"评测有多贵"才是能否用的真门槛。
- 标量分数的信用分配上限:AlphaEvolve 靠分数 hill-climb,在"失败原因深藏于长轨迹"的问题上会不会力不从心?(这正是 Meta-Harness 攻击的点——但对矩阵乘法这种"分数=秩"极干净的目标,标量分数其实够用。)
- 蒸馏回底座的可行性:作者说"把 AlphaEvolve 增强后的性能蒸馏回下一代模型",但未给实验——这个自我强化环若成立会很关键,目前只是愿景。
- 对底座 LLM 的依赖:消融显示"底座越强越好",那么在弱开源模型上,AlphaEvolve 的发现能力会退化多少?(Meta-Harness/Self-Harness 在开源/弱模型上的实验部分回答了"harness 优化对弱底座增益更大",但 AlphaEvolve 式"发现"是否同理未知。)
局限性(承接作者自陈 + 我的补充)
- 只适用于"可自动评测"的问题——这是硬边界,把绝大多数需要真实实验的自然科学挡在外面。
- 反馈压缩为标量:拿不到"为什么失败"的诊断信息(这正是 [[ref09_meta-harness]] 论证要改进的地方)。
- 白皮书性质:很多数学细节推给"upcoming paper"和 Colab,部分工程应用(如 FlashAttention 具体配置)出于机密只给了聚合数字,复现门槛高。
- 反馈环以月计:自我改进(改自己基础设施/底座)的迭代周期还很慢,离"快速递归自我改进"尚远。