模型研发的本质是密集的实验迭代,需要研究员判断哪个方向值得投入,设计并运行实验,从结果中分辨真实进步与偶然波动,再把经验带入下一轮实验。如今,AI 执行研究任务的能力提升显著,自动研究系统在机器学习、数学、芯片设计等方向已经展示出惊人的潜力。让自动研究应用于执行自动研究的 AI 本身,也就是递归自我迭代(Recursive Self-Improvement, RSI),正在成为模型制造商的关键竞争力,直接影响模型的迭代效率。

ERNIE Evolve 是我们朝这一方向迈出的一步。它是一个围绕明确目标与约束,持续提出研究方向、开展实验、验证结果并积累经验的自动研究系统。与在给定方向上反复搜索更优实现的方法不同,ERNIE Evolve 同时回答“研究什么”和“如何做好”,既在有价值的方向上深入优化,也根据实验事实调整下一步的研究方向。具体而言,给定真实代码仓库、优化目标和评测标准,它自主修改代码并在隔离环境中完成实验,以独立评测的结果决定保留哪些改进,并将每一轮的发现沉淀为后续研究可以复用的经验。

我们首先在 NanoChat AutoResearch、NanoGPT Speedrun 和 SOL-ExecBench 三项公开 AI 研发任务上检验了 ERNIE Evolve,它们分别对应 AI 研发中的训练算法、训练速度优化和底层算子优化三个部分,ERNIE Evolve 在三项任务上均取得了相对基线的明显提升,并在 NanoChat AutoResearch 和 NanoGPT Speedrun 上超过了目前公开验证的最好结果。在公开任务验证了 ERNIE Evolve 的能力后,我们将它用于正在开发中的 ERNIE-5.5-Flash 的推理效率优化,其发现的改进得到了生产级验证,并带来了可观的收益。这些结果表明,自动研究已经能够在真实 AI 研发中产出经过验证、可以落地的改进。

构建 ERNIE Evolve 这样的自动研究系统需要让 AI 具备与人类研究员对齐的工作环境,这需要对已有的基础设施进行大量改造。自动研究系统建立在 AI 原生的基础设施之上,也正在成为新的基础设施。随着 RSI 在真实研发场景中的规模化落地,智能的提升速度将会达到前所未有的水平。

ERNIE Evolve

图1:ERNIE Evolve 架构
图1:ERNIE Evolve 架构

ERNIE Evolve 用双层循环组织研究,外层决定研究什么,内层负责把一个方向做好。 外层根据历史实验和知识资料提出研究方向,每个方向交给一条研究线(lane)执行。多条研究线并行,每条线维护自己的候选树。内层在研究线里连续迭代,每轮从已有版本出发修改代码,再交给独立的评测和复核。每一轮的代码改动和实验结果都会沉淀下来,成为后续研究的依据。系统内部包含以下关键智能体来推进研究:

  • Director 决定研究什么。它从经验库(Experience Bank)和知识库(Knowledge Base)中提取下一个值得验证的方向,并选择起点,可以是原始代码、此前的最优版本或中间版本,也可以是上游主干的最新提交。经验库保存历次研究的候选、代码改动和实验结果,知识库收录论文、开源代码和领域经验。

  • Selector 负责研究线内每一轮的决策。它选择研究线内的一个节点作为一轮的起点,并给出这一轮要验证的假设。除了分数,它还参考各候选的代码改动、失败原因和此前决策的结果。

  • Executor 在隔离环境中按 Selector 的计划修改代码,产出新的候选版本。

新版本能否保留,由 Evaluator 和 Reviewer 把关。Evaluator 是固定的评测程序,在真实负载上测性能、查正确性。它放在被优化的仓库之外,对所有智能体不可见,超出允许修改范围的改动不进入评测,提升超过噪声阈值才会被接受。Reviewer 再对照代码改动和评测结果,检查改动是否偏离本轮方向以及提升是否来自利用评测漏洞。偏离方向的版本不能成为最优版本,利用漏洞的版本直接作废。

在这套分工下,Director 决定下一步研究什么,Selector 决定沿哪个版本继续,ERNIE Evolve 因此既能在一个方向上持续深入,也能根据实验事实及时转向。保留下来的改进都经过独立评测和复核,代码沿候选树继承,经验经由记忆回流,局部实验的发现会影响后续研究的安排。

自主研究的能力验证

我们用 NanoChat AutoResearch、NanoGPT Speedrun 和 SOL-ExecBench 三项公开 AI 研发任务检验 ERNIE Evolve,它们分别对应训练算法、训练速度优化和底层算子优化。三项任务都有公开的评测协议和经过验证的榜单记录,社区研究者和其他自动研究系统已在上面做过大量优化,结果可以直接比较。在 NanoChat AutoResearch 和 NanoGPT Speedrun 上,ERNIE Evolve 的结果超过了目前公开验证的最好结果。ERNIE Evolve 在这些任务上优化得到的结果已在 Github 上开源。

Benchmark NanoChat AutoResearch NanoGPT Speedrun Track 1 NanoGPT Speedrun Track 3 SOL-ExecBench
任务 模型训练算法 加速模型训练 加速模型训练 优化GPU kernel
指标 验证集 BPB ↓ 达标训练时间 ↓ 达标训练步数 ↓ 平均 SOL 分数 ↑
社区公开最佳 0.8878 39.9 秒 2690 步 0.827
Recursive 0.9109 77.5 秒 — 0.676
Hyra-1.0 0.9015 76.4 秒 — 0.736
ERNIE Evolve 0.8763 38.9 秒 2590 步 0.819

表1:公开任务结果对比,粗体为最好结果,“—”表示未报告。最佳结果中,NanoChat AutoResearch 取自 rekursiv.ai 报告的结果,NanoGPT Speedrun 和 SOL-ExecBench(采用 Evaluation Stack v1.1 的评测设定)取自官方榜单最优结果。Hyra-2.0 虽已发布但未报告相关结果,因此对比 Hyra-1.0

在 NanoChat AutoResearch 上,ERNIE Evolve 需要在单卡 5 分钟的固定训练预算内,同时权衡模型结构、优化器、学习率策略和执行效率。社区方案经过持续优化后,单纯改网络结构的空间已经很小,ERNIE Evolve 因此在神经网络之外加入两个预测分支,一个利用全训练语料的 n-gram 统计,另一个检索与当前上下文相似的训练文档,用其中的后续内容做预测。门控根据各分支在此前位置的预测表现动态调整混合权重,让网络在五分钟内来不及充分学习的语料信息也能参与预测。为控制额外开销,方案用不存动量的稀疏优化器管理大型输入表,把 softcap 与交叉熵融合为一个 Triton 算子,并让 CPU 建表与 GPU 训练并行,最终把验证集 BPB 降到 0.8763。

NanoGPT Speedrun 经过社区两年多和九十多次的持续优化,剩余优化空间已经被压缩的很小。在 Track 1 任务上,ERNIE Evolve 主要减少每一步的执行开销,改进集中在通信重叠、反向传播和输出层梯度计算,处理了成熟训练方案中仍然存在的串行等待、隐性数据搬运和昂贵的梯度计算,把训练到目标损失的时间缩短到 38.9 秒,最终版本通过了目标损失的多次验证。在 Track 3 任务上,ERNIE Evolve 通过改进更新规则来减少收敛步数,并整合了两条搜索分支的发现:一是把矩阵权重拆分为方向与幅度;二是引入基于历史位移的 EMA-Nesterov 外推。归一化更新让持续一致的更新趋势和来回振荡的更新受同一个步长尺度约束,外推让持续的趋势能够累积,增强沿这些方向的推进。组合两种机制时,系统还解决了一个实现上的冲突:优化器会从内部状态重写权重,直接加在权重上的外推会被覆盖,因此外推必须作用于分解后的状态。最终方案再加入学习率下限和训练末期的权重平均,改善后半程收敛,把达到目标损失所需的步数降到 2590 步。

SOL-ExecBench 包含来自真实模型的 235 个算子问题,要求写出既正确又快的 GPU kernel。官方榜单发布 7 个多月来已有 700 多名开发者提交了近 5 万次,至今仍在持续刷新,进一步提升越来越难。ERNIE Evolve 的平均 SOL 分数达到 0.819,高于 Recursive 和 Hyra-1.0,接近榜单第一的 0.827。

三项任务横跨训练算法、训练速度优化和底层算子优化,反馈形式也各不相同,ERNIE Evolve 没有针对某一种指标或代码结构做专门适配,而是用同一套研究闭环处理这三类问题。它既能在成熟方案上继续深挖局部瓶颈,也能根据不同形式的反馈调整研究策略,把失败原因和有效经验带入后续搜索,最终在不同层次的任务上找到经过验证的改进。这说明 ERNIE Evolve 的优势不只是生成代码,更在于能够把研究方向选择、实验执行、结果判断和经验积累组织成一个可持续的过程。

让自动研究走进真实研发

在公开任务上验证了 ERNIE Evolve 的能力之后,我们把 ERNIE Evolve 接入文心团队正在进行的 ERNIE-5.5-Flash 推理效率优化,包括昆仑芯 P800 上的低时延场景性能优化、GPU 上的确定性推理吞吐和单并发解码速度优化。这些任务的优化目标来自工程师手上正在推进的需求,评测和正确性检查沿用团队自己的压测和验证流程。ERNIE Evolve 的改动和人工提交一样,必须通过这些检查才算有效。和公开任务相比,真实研发任务的优化和落地更难:

  • 多数任务起点更高:多数任务的基线已经过工程师的专项优化,容易拿到的收益已经被拿走,剩下的提升要从算子实现、通信路径和调度细节里逐项去找。

  • 约束更多:改动最终要进入生产级代码和线上服务,不仅确定性、精度和延迟不能变差,修改范围也限定在指定模块内。

  • 反馈更难判断:一处改动的效果往往要经过端到端压测才能看到,不少有效改进的单项收益和测量噪声在同一量级,系统必须分清真实提升和偶然波动。

  • 开发环境更复杂:公开任务通常只涉及一个训练脚本或一个算子,真实任务面对的是由推理引擎、算子库、硬件适配插件和服务启动脚本组成的大型代码库,模块之间相互依赖。每次实验都要在多卡机器上启动完整的推理服务,再跑压测和精度检查,环境中任何一处配置出错,都会让实验失败或结果失真。

昆仑芯 P800 低时延场景的性能优化

ERNIE-5.5-Flash 已经能在昆仑芯 P800 上运行,但能运行不等于用上了高效的执行路径。这个任务要提升低时延场景的推理速度,改动限定在昆仑芯适配插件内,模型和部署方式保持不变,生成结果也必须正确。低时延场景推理生成阶段每一步的计算量很小,时间大多耗在 Python 调用、临时张量分配和主机与设备之间的同步上,这些开销在每层、每步都会重复发生。经过四个研究方向的探索,最优版本的生成速度提升至基线的 623.6%,并通过了所有正确性检查。

图2:昆仑芯 P800 低时延场景的性能优化过程
图2:昆仑芯 P800 低时延场景的性能优化过程

第一轮先接通已有能力,把 mHC 仍由大量小算子拼接的调用路径转接到昆仑芯原生融合算子,并利用模型自带的多 token 预测层启用投机解码,累计提升至基线的 282.9%。第二轮转向主机调度与同步,小矩阵乘绕过推理不需要的包装层,直接调用底层实现;验证阶段不再等待设备到主机的同步,索引和中间信息跨层复用,注意力也接入原生算子,累计提升至基线的 588.8%。这一轮还尝试过用通用集合通信替换专用通信,结果速度下降 14.0%,这个方向随即被放弃。第三轮缓存 MoE 专家计算的索引和工作缓冲区后,只比上一轮多提升约 1.4%,ERNIE Evolve 据此重新测量各阶段开销。第四轮的运行时检查发现,通信模式虽然设成了自动选择,生成请求却仍走普通路径;修正分派逻辑、按实际规模缩小通信缓冲区后,单流生成才真正用上 DeepEP 低延迟通信,累计提升至基线的 623.6%。

确定性推理吞吐优化

强化学习训练要求推理是确定性的,同一个请求不论和哪些请求拼成一批,生成的 token 和 logprob 都必须逐位相同,还要和训练端重新计算整段序列的结果逐位一致。SGLang 的确定性模式为此固定了所有规约顺序,代价是 GPU 算力用不满,推理明显变慢。这个任务要提高 ERNIE-5.5-Flash 确定性推理服务的吞吐,改动只限确定性相关的开关及其实现,确定性必须完全保持,精度和延迟也不能变差。

常规加速手段,比如按 batch 大小选择算子实现、原子加和自适应通信,都会改变规约顺序,在这里都不能用。基线也已包含工程师针对确定性推理做的专项优化,剩下的改进单项往往只有 1% – 2%,与测量波动相当。经过约 3 天的搜索,最终版本的吞吐提升 33.7%,平均每个 token 的生成时间缩短 26%,首 token 延迟缩短 12%,确定性保持不变。

图3:确定性推理吞吐的优化过程
图3:确定性推理吞吐的优化过程

ERNIE Evolve 在约 3 天时间里依次提出 3 个研究方向。在第一个方向上,ERNIE Evolve 剖析发现确定性采样约占每步 GPU 时间的 14%,是最大瓶颈,系统把它改成按词表切块并行的 Triton 算子,这是单项收益最大的一处改动;随后又优化了稀疏注意力和小 batch 矩阵乘,累计提升 20.6%。第二个方向转向确定性开关。单改一个 MoE 通信开关的收益在噪声内,配合相应的算子改动后才见效。人工调定的 mHC 切分常数从 8 改为 32 后也还有收益,累计提升到 32.6%。第三个方向是检验一个推广假设,即确定性模式下很多算子的并行切分数固定,逐 token 生成时每张卡处理的数据又很少,这些算子只能用上 GPU 的一小部分计算单元。逐个检验同类算子后,这个假设大部分被证伪,最终只保留了 mHC 后处理算子改为二维并行等少数改动,累计提升到 33.7%。

极致解码速度优化

这一任务优化 ERNIE-5.5-Flash 在 GPU 上的极致解码速度,服务使用投机解码,每一步先由草稿模型猜出一段 token,再由主模型一次验证,提速只能来自缩短每一步的耗时。工程师此前已为这一场景做过专项优化,跨卡通信和算子之间的空闲都已压得很低。剩下的耗时分散在主模型验证和草稿模型生成的大量小算子上,每步只处理几个 token,没有单一热点,不少有效改动单独只带来 0.3% – 0.5% 的提升,比测量噪声还小。ERNIE Evolve 将这一场景的解码速度再提升 14.9%,精度与基线相同。

图4:极致解码速度的优化过程
图4:极致解码速度的优化过程

ERNIE Evolve 共提出 7 个研究方向,其中 3 个方向带来了提升。第一个方向在第一轮,针对 MoE 与 mHC。系统发现 MoE 第一层矩阵乘与路由计算并行执行时计算单元分配不合理,重新分配后提速,随后又让 mHC 后处理算子直接输出下一层需要的 FP8 量化输入,省掉了独立的量化算子,累计提升 5.4%。同一轮另外三个方向分别假设瓶颈在长上下文注意力、跨卡通信、算子间空隙与主机开销,都被测量证伪,比如单次跨卡通信已接近 NVLink 往返的延迟下限,算子间空隙只占一步的 2%–4%。第二个方向在第二轮,针对主模型的矩阵乘与 MoE 调度。输入不足 8 行时,原来的 FP8 矩阵乘有一半操作数是零填充,系统把权重和 token 交换到矩阵乘两侧,改用原生 FP16 矩阵乘指令。MoE 专家矩阵乘的调度器从逐组串行扫描全部专家改成两级索引,这是单项收益最大的一处改动,再加上几处算子融合,累计提升到 13.2%。最后一个方向转向一直处在关键路径上的草稿模型,把每个位置的采样和跨卡归约合并成一个算子,并合并草稿注意力的计算,累计提升到 14.9%。

总结与展望

从公开任务到真实推理优化,ERNIE Evolve 已经能够在目标明确、结果可验证的研发任务中持续开展研究并产出有效改进。这些改进并非来自一次代码生成,而是来自系统对研究方向、代码版本、实验结果和后续决策的连续处理。

要让 RSI 更顺畅、更稳定地运行,还需要持续建设适合 AI 深度参与研究的基础设施。人类研究员面对一个优化任务时,可以阅读代码仓库,选择研究问题和起点版本,设计并运行实验,根据结果调整假设,保留有效改动,放弃失败方向,再把新的经验带入下一轮。适合 AI 参与研究的系统,也需要为 AI 提供同样完整的动作空间和运行环境,让它能够访问完成研究所需的代码、工具、评测和反馈。

这套基础设施还需要把研究历史串联起来,研究方向、代码版本、实验结果、失败原因和积累下来的经验,不能只作为彼此孤立的记录,而要成为 AI 下一轮研究可以直接使用的上下文。只有这样,AI 才能沿着已有研究继续提出假设、选择行动和判断结果,逐步形成与研究员相似的连续研究过程,而不是每次面对新任务都从零开始。

目前的推理基础设施优化是 RSI 在真实 AI 研发中的第一个落点。这一实践也让我们看到,同样的研究闭环可以沿着 AI 研发流程继续向外延伸。随着基础设施逐步完善,我们会把它带入训练系统优化;再围绕模型能力指标自动提出假设、设计实验并验证结果;并进一步推动评测基准和评测套件自迭代,让 AI 参与发现能力缺口、生成和完善评测任务,根据研究进展持续改进评测体系。

通过这些努力,我们的目标是使自动化研究系统成为日常 AI 研发的可靠组成部分。与此同时,RSI 的扩展必须以可控、可暂停为前提,在明确的目标、权限和资源边界内运行,并接受持续的安全评估和人工监督。只有当人类仍能理解、监督和终止系统时,才逐步扩大研究范围。