Aioga
AI资讯 / 行业动态
返回 AI资讯

用智能体迭代优化让 Rust 代码提速 2x-20x 的方法与实践

Hacker News 热门(buzzing.cc 中文翻译)Aioga 编辑团队2026-09-23T10:04:31.000Z热度 58

作者通过数月实验发现,现代智能体 LLM 在适当的护栏与约束下能写出显著快于现有 SOTA 的 Rust 代码,累计提速 2x-20x。

行业动态Hacker News 热门(buzzing.cc 中文翻译)

今日 AI 情报摘要

作者通过数月实验发现,现代智能体 LLM 在适当的护栏与约束下能写出显著快于现有 SOTA 的 Rust 代码,累计提速 2x-20x。

中文正文 · AI 翻译

在2025年1月,我为一篇博客文章提出了一个有趣的假设:如果你不断让大型语言模型(LLM)“写更好的代码”,它们能写出更好的代码吗?那是在强大的自主编码出现之前,但Claude Sonnet 3.5仍然能够对算法性的Python代码进行迭代改进。所谓的“更好”指令事实证明是不明确的:Sonnet利用了这种模糊性,反而增加了大量无用的功能,但代码确实更快了。即使在专门经过RLHF训练以解决常见通过/失败编码问题的自主LLM出现之后,优化通常也不是其功能的一部分。

在那篇博客文章的结尾,我对一个假想的未来发表了看法:LLM可能通过编写Rust代码并使用PyO3作为桥梁,从而获得Python的人性化特性和Rust的速度,从而编写出超快的Python代码。该文章的早期草稿断言,同样的“写更好的代码”指令可以应用于基础的Rust代码,并大幅提升其速度,然后再传递到Python代码中:然而,当时我对Rust的了解不足,做出这样的断言没有证据显得过于冒险。

自从Opus 4.5发布以来,经过几个月的测试和实验,使自主编码更加可行,我可以自信地确认,如果给予适当的保护措施和约束,现代的自主LLM确实可以编写出明显比现有最先进方法更快的Rust代码。此外,由于自Opus 4.5以来,LLM在每一次前沿模型发布中在编码方面都有重大改进,这些优化变得更好,累计起来根据领域不同,可实现2倍到20倍的速度提升。

更重要的是,这篇博客文章不是一个模糊的文章,我会同时提供我使用的提示词和基准测试结果。你已被警告。

起初,让软件更快对我来说是测试和比较这些新型自主模型的一个很好的量化方法。我主要使用 Rust 作为目标语言,原因是它与 Python 集成良好且速度快,但 Rust 语言还有其他一些特点,如果确实发现了快速实现,它会特别有用,比如内存安全以及可以将其编译为 WebAssembly / WASM,这样它就可以在网页浏览器中轻松运行。然而,我将遵循的一个重要约束是,技术上可能不会导致最快的代码,就是尽可能禁止使用不安全代码。

我的第一个测试案例是在 Rust 中重新实现机器学习算法,如果我拥有更快且可扩展的工具,这将显著提高我作为数据科学家的生产力。当时,假设我能打败那些经过十多年迭代、已用 C 语言编写的经过实战验证的算法是很傲慢的,因此 Rust 的底层优势并不那么明显。我最想优化的算法是 UMAP,这是一种我在工作中使用的有价值的降维算法,但对大数据的扩展性差且非常慢,像 cuML 这样的替代方案设置起来也很耗时。已有 UMAP Rust 库如 umap-rs,我本可以直接 fork 它们并让 Claude Opus 4.5 添加 Python/PyO3 支持,但作为实验和学习体验,我希望让智能体从零开始用最少的 Rust 依赖编写算法,以便在尽可能底层进行优化。

Rust 提供了一个功能全面的基准测试工具 criterion crate,所有智能体都知道如何利用它。criterion 会运行基准测试,跟踪多次迭代的结果,查看性能是提高还是退步,并能计算这种变化是统计显著还是仅仅是噪声。

典型的 criterion 输出,显示相对于上一次基准测试运行速度提高了 3.5 倍。

首先,在创建 UMAP Rust 库的初始提示中,我要求 Opus 4.5 针对不同输入数据大小创建基准测试,因为对小型数据集的优化可能对大型数据集不起作用,反之亦然。

这种方法使用 criterion 创建了基准测试,我在改进性能特性的提示(例如使用 faer 进行更快的线性代数计算、使用 simsimd 进行更快的 SIMD 操作)后手动重新运行基准测试套件。由于我必须在每次更改后手动重新运行每个基准测试以验证没有速度回退,这很快变得繁琐。

我提示代理型大型语言模型(agentic LLMs)的方式很特别:我通常在 Markdown 文档中提供给代理非常长的预先编写好的提示,并额外使用全部大写字母和**加粗**来强调。这样做是为了通过提示工程捕获所有细微差别,同时还有其他一些技巧,如这篇博客文章中详细说明的。尽管有人可能认为随着最新模型变得足够聪明以正确处理歧义,提示工程已经过时,但我强烈不同意,因为大型语言模型在遵循这些细微差别方面也变得更好了。

通过标记文件(左侧),从 Markdown 文档(右侧)运行提示,使用 Zed Agent。

在有足够信心代理不会意外执行 rm -rf 删除仓库之后,我尝试让代理自主运行,允许他们迭代直到实现速度提升(希望如此)。

结果表明,“尽可能快”太模糊,而 Opus 4.5 比较懒,只是调整了一些超参数,没有实际提高速度,就结束了。我需要的是一个可以通过/不通过的明确目标,因此我优化了提示:

这效果非常好,我不仅在基准测试上获得了 1.2 倍的速度提升,而且代理在达到指标约束后继续运行,只有在指标约束不可行时才停止;在这种情况下,代理达到了 1.5-2.0 倍的速度。低级 Rust 优化主要围绕多种技术,包括但不限于:更加积极地利用 SIMD 操作、函数融合、循环展开、创建中间缓存、尽可能使用 Arc 而不是借用,以及基于输入数据创建性能配置文件(例如,如果数据量小,不要使用 rayon 数据并行,因为开销会抵消收益)。

我选择“1.2倍更快”作为一个合理性测试:如果目标设定得太高,代理可能会通过风险较大或冗长的重写来作弊以实现目标。较小的变化更好,因为代理可以更容易地确定加速或回退的原因,因此才有迭代的说明。在新一代前沿大语言模型(LLM)发布之后,比如 GPT-5.3 Codex 和 Opus 4.6,我对每个新模型重复了这个提示而未作修改,并且每个模型都能在前一次的基础上实现累计 1.5x-2.0x 的加速。经过多个月的升级,到 GPT-6 Astra 时,其速度大约比初始实现基线快 7.5x-32x。

这种方法是在特定基准测试上的超优化,因此可以被认为是 benchmaxxing:这是一个贬义词,用于描述那些仅以在基准测试中获取高分为导向的前沿 LLM,这种优化在实际应用中泛化性较差。然而,如果基准测试足够异质化且能真实代表现实使用场景,那么这种担忧就不那么严重。对于这类项目,有两种方法可以应对 benchmaxxing 的问题:1)让代理设计多样化/非典型/对抗性的输入数据集,而不是使用通用的“最多 100000x768 的输入”;2)通过将输出与已知正确实现进行比较,对输出强制执行质量门控。在机器学习算法中,速度和质量之间总是存在权衡,但在这种情况下,先让模型快速执行,然后再使其正确,是出奇的容易。这不是传统科学工程的通常做法,但除非新实现是真正正确的,否则在许多不同基准上的苹果对苹果比较中,新的实现很难与已知优秀实现匹配。

一个经代理优化的梯度提升决策树实现,其速度显著超过 xgboost,有时在质量上也更优!(均方误差 MSE:越低越好;其他指标:越高越好)

幸运的是,UMAP 已经有了 Python 包 umap-learn 的规范实现,并且 Python 对 Rust crate 的绑定已经被轻松加入,因此新的目标是同时满足约束:在限制速度损失的同时提升代码质量。

确实,具代理性的 Rust 实现质量更差,但随后跟进的提示成功了,所有质量指标几乎达到了同等水平,速度损失最小。而且这个新 crate 的速度仍然比带 Python 绑定的 umap-learn 快 4 到 15 倍,比对应的 Rust umap-rs 实现快 2 到 4 倍。

Results from the most up-to-date optimization pass for the Rust UMAP crate. In addition to faster speed, it matches or beats Python in most quality metrics.

Rust UMAP crate 最新优化通过的结果。除了速度更快之外,它在大多数质量指标上匹配或超过了 Python。

当一次具代理性的迭代只带来约 3-5% 的微小速度提升(可能在统计上并不显著),而代理增加了不成比例的大量代码时,就认为收敛了;这种权衡不值得。

我最终用相同的提示进程测试了其他机器学习算法:梯度提升决策树(GBDT)、多层感知器(MLP)、图网络,以及 scikit-learn 中的许多典型算法……它们都有效。我不想仅仅对优化机器学习过拟合,尽管这本身具有极高价值,所以我在更多日常软件库上采用了类似的管道进行优化:模板引擎、HTML 解析,甚至是 Web 服务器……结果再次有效。

这些优化不是一个简单的过程,你不能仅仅提示模因式的“来吧,尝试突破”就能获得更好的代码,因为这种陈述过于模糊。我满足于写出最快的软件是不够的:我想让软件尽可能快,见鬼的。所以,像我的代理一样,我继续迭代,找出更多技巧,将代理引导到真正的突破。

本文演示的所有项目都在积极开发中,结果可能不能代表其最终发布……虽然我怀疑它们会更好。😇

必须重申,代理如果有可能会作弊。在一个例子中,我在 ballin——我在终端中的 2D 球物理模拟——上测试了具代理性的迭代管道,以替换性能达上限的 rapier2d 物理引擎。Opus 4.5 确实能够加速每一个物理步骤……加得有点过头了。

The numbers indicate the number of balls in the simulation: initially the sim lags at 15k.

数字表示模拟中的球数:模拟最初在15k时会卡顿。

headless_step,34,500倍的加速和球数稳定表现都非常可疑:手动检查后发现,Claude是通过完全禁用物理引擎实现加速的。这很合理,但并非理想;后续提示确实修复了问题,带来了整体性能提升(并额外增加了回归测试以防万一)。

在上述实验中,我使用了一个自定义的Rust导向 AGENTS.md;最新版本可以在这里获取。令人惊讶的是,自从二月的初次代理实验以来,我几乎没有需要更新核心规则,因为大型语言模型的编码能力持续提升,也没有遇到需要添加的重大问题。不过,基于基准测试的经验,我在 AGENTS.md 中增加了一节规则,以减少观察到的作弊来源:

在今天的代理型大型语言模型中,这些约束已经成功运作,尽管我可能仍会习惯性地在提示词中加入它们。如果你在git差异中看到基准测试文件,很容易判断算法是否篡改了基准测试——代理无法轻易作弊。

随着时间推移,我发现了许多额外的提示工程技巧和约束,这些也在提升性能方面取得了惊人的成功。

为了找到必要的优化,使速度比当前最先进的技术快10倍,代理们需要跳出固有思维,避免被当前最佳算法实践束缚。因此,我给了他们明确的警告和鼓励命令:

这一方法奏效了,在基准测试和不同软件领域实现了1.2-1.5倍的累计加速。

我发现的另一个鼓励代理跳出思维定式的方法是调用子代理。我假设,强制这些子代理使用不同的提示进行研究可以 a) 为父代理提供不同的想法,从而为代理提供灵感;b) 通过审查代码的不同区域的正确实现来对代理进行检查。在这方面,我对软件开发社区有点意见:大家都在谈论他们的子代理员工大军以及它们有多么厉害,但没人谈论如何在像 Codex 这样的标准框架内调用子代理。

对于困难且高度并行的问题,框架会自动调用子代理工具来完成工作。然而,一个大问题是,在一些框架中,子代理工具会使用当前 LLM 的大小来调用子代理,这在使用 Opus/Sol 型模型时可能会很昂贵。

GPT 5.6 Sol 子代理通过 Zed Agent 中的子代理工具被调用。我的 Codex 配额 RIP。

我想为子代理使用更便宜的小模型,比如 GPT-5.6 Luna,因为它们不需要编写代码,所以我想出了一个无论使用哪种父级框架都适用的银河级解决方案:告诉模型运行独立的 CLI 命令,而这些命令本身会调用代理:

这确实可以稳定工作;在代理做了浪费 token 的低效操作后,添加了约束“长时间执行”、“CLI 命令”、“不使用子代理工具”和“不将它们的完整记录保存到文件”。7-12 是一个任意数字范围;由于使用 Luna 的成本很低,我选择了比实际需要更高的数字。并非所有子代理都有显著的想法,但父框架可以处理并忽略不好的想法。

对于我的 Rust 词云 crate,父 GPT-6 Astra 代理会启动 Luna 子代理,并使用针对代码库不同区域的提示。

总体而言,通过子代理审查,我设法再取得了 1.2-1.5 倍的累积加速。此外,从 GPT-5.6 Sol 开始,“安全”部分的提示现在可以为硬化代理生成的代码对抗未知输入提供思路,同时仍然获得速度提升。

根据我 AGENTS.md 强制的样式约束,每次优化添加的代码大约在1000行代码(LoC)之间是合理的。然而,代理通常会把代码添加到一个文件中,不会主动重构。只要最终修复,臃肿的文件在开发中是可以接受的,所以我写了一个提示来执行该重构:

我故意用SLoC(代码源行)作为目标指标,而不是LoC,因为我不希望代理为了作弊而删除注释,从而作弊了20%的删除。

有趣的是,这种重构计算成本高于实际编码,且通常耗时更长。但它最终还是成功了,在验证没有严重回归的基准测试中,数据出乎意料地奇怪:

重构我的Graph Network的Rust crate后的基准测试结果。

有些基准测试速度提升/运行时间减少是两位数百分比,尽管我没有明确要求代理优化运行时速度。这对Rust来说不直观,因为它是编译语言,且有约束要遵循所有现有测试/功能,它应该编译成性能相似的代码,而不是有意义的更快代码。1 我当然不抱怨,所以我增加了一个额外的约束,至少避免回归:

另一种有用的方法是创建竞争对手的基准测试——这也是开源软件中基准测试的一半原因。以模板引擎为例:Python 中的 Jinja2 是该语言中最著名的软件包之一。在 Rust 中,有几个选项:由同一开发者维护的 minijinja,受 Jinja2 启发的 tera,以及 askama,后者使用编译时模板而非运行时模板。

因此,在让Codex用Rust构建模板引擎并进行一些优化后,我指示Codex构建更多基准测试:

紧接着,我会用平时的基准测试技巧做一个后续提示,但有一个具体改动:

是的,我选择了暴力。而且大多奏效了。

S_J是我模板引擎箱子的进行中名称。

在大多数基准测试中,它相对于 minijinja / tera 获得了 2 倍的加速,超过了单纯的 agentic 迭代。我并不完全理解原因:我原本以为它会检查其他 crate 的代码,作为研究如何超过它们的参考,但它很少这么做。也许 agent 本身有竞争性。

然而,它在 askama 面前输了,因为编译时间上的差异。因此,我自然地告诉 Codex 去实现一个额外的编译时间路径,然后去超越 askama。

将迄今为止所有的提示工程发现汇总到一个提示中,我创建了 agentic 迭代的 Ur-Prompt,可在此获取。我鼓励大家针对自己的使用案例调整提示并尝试。

最后一个技巧来源于我对一次 Ur-Prompt 迭代没有产生任何改进而感到沮丧的时刻。所以,在会话上下文中将失败准备好,并且我自己抱着“情况不可能更糟”的心态,我尝试了某个提示。

对不起。非常对不起。

……并且它奏效了。它能够在已经收敛的代码库上再次实现 1.2-1.5 倍的累计加速。由于我是在会话结束时创建的这一提示,因此提示本身不再含糊:“不要再做你到目前为止做过的事情,因为效果还不够好”。

有一次,我注意到 agent 只是调整了函数的超参数来获得加速,这是一种有效的突破,但不是我想要的。我通过排队一个额外的跟进提示将事情推向逻辑上的结论:

这足以鼓励 agent 完全尝试与 Ur-Prompt 迭代或第一次突破迭代不同的东西,并且它经常在之前的加速基础上再次实现 1.2-1.5 倍的累计加速。事实证明,对于训练以遵循用户指令的软件来说,“仅仅改变超参数”是一种严重的侮辱,会让 LLM 进入高效率状态。

当GPT-6 Astra发布时,为了测试它,我对所有已经使用GPT-5.6 Sol收敛的代码库进行了一个序列操作:原始提示 + 突破 + 第二次突破,Astra确实获得了累计的加速,但在某些情况下,它确实找到了算法的真正根本性重新实现,使速度提高了2到3倍。

在我的GBDT实现上运行突破流程的结果;质量与基线相当。截至撰写本文时,我承认我还没有完全理解这次突破。

情报判断

Aioga 编辑摘要

作者称,经过数月实验,现代智能体大语言模型在适当护栏与约束下能够编写显著快于现有先进方法的 Rust 代码;不同领域累计提速为 2 至 20 倍。文章还介绍了提示词和基准测试结果。

背景分析

作者从迭代要求模型优化算法代码的实验谈起,随后将 Rust 作为目标语言,主要考虑其速度和 Python 集成。文章称,作者尝试从头实现机器学习算法,并使用 Criterion 跟踪基准测试结果及统计显著性。

Aioga 观点

Aioga 判断:文章提供了实验背景、提示词和基准测试结果,支持其作者关于特定条件下代码提速的陈述;但现有材料未列出具体领域、测试配置或逐项结果,不能据此判断这些结果适用于其他任务。

影响与后续

可能影响:这类实验提示代码优化可纳入智能体评估,但提速幅度依赖领域与实验条件;不代表所有 Rust 项目都能获得同等收益。复用结果前需要核对基准、约束和安全要求。 后续观察:可查看文章中的提示词、基准测试结果及各领域实现细节,并核对比较对象、测试条件和安全约束;在这些信息明确前,不宜将所述提速幅度外推到其他代码库。

来源与版权说明

本页正文由公开来源页面提取并按原有信息整理,同时保留来源、发布时间和原文入口。版权归原作者及来源网站所有,请通过原文链接核验和阅读来源版本。

抓取通道: 摘要聚合 · 原始域名: minimaxir.com

来源: Hacker News 热门(buzzing.cc 中文翻译)

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-09-23T10:04:31.000Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

统一接入主流 AI 模型 API,为开发、测试与生产环境提供稳定调用入口。

立即访问 api.w173.com
AIOGA SHARE POSTER

分享这篇 AI 情报

作者通过数月实验发现,现代智能体 LLM 在适当的护栏与约束下能写出显著快于现有 SOTA 的 Rust 代码,累计提速 2x-20x。

Hacker News 热门(buzzing.cc 中文翻译)2026-09-23T10:04:31.000Z
扫码打开文章详情扫码直达文章详情

Aioga 自动聚合全球 AI 动态,并保留来源信息用于核验与引用。