返回案例库

精选案例 · Agent / 实践案例

用 AI 词元复现 CodePDE 论文——LLM 驱动的 PDE 求解器生成

这个案例围绕「用 AI 词元复现 CodePDE 论文——LLM 驱动的 PDE 求解器生成」记录了一条真实 AI 实践线索,正文重点集中在「背景」「为什么需要 AI 词元」,适合先按任务意图阅读再判断复用。

案例速读

README 标题「用 AI 词元复现 CodePDE 论文——LLM 驱动的 PDE 求解器生成」下已经出现运行/配置路径、脚本或接口线索、结果证据,正文重点集中在「背景」「为什么需要 AI 词元」,比纯概念介绍更适合进入精选阅读流。 这篇案例的阅读价值在于,它把真实任务、模型辅助过程和可迁移做法放在同一个上下文里,读者可以从 「用 AI 词元复现 CodePDE 论文——LLM 驱动的 PDE 求解器生成」、「背景」、「为什么需要 AI 词元」、「使用的 AI 工具」 进入正文。

  • 建议重点看 可参考其中的运行与配置路径、包含可迁移的命令、脚本或接口线索、已有结果或观测证据可用于判断复用价值。结合 Agent / 实践案例 和「任务驱动用户、AI 实践者」这一受众定位,它更适合作为任务检索后的精读材料,而不是只看一句短摘要后快速跳过。
  • 正文目录和原始材料仍然是判断依据;导读只帮助你更快定位阅读重点。
看点
用 AI 词元复现 CodePDE 论文——LLM 驱动的 PDE 求解器生成
读者
任务驱动用户、AI 实践者
复用
可参考其中的运行与配置路径
结构
12 个目录入口

原文内容

用 AI 词元复现 CodePDE 论文——LLM 驱动的 PDE 求解器生成

背景

我在科研工作中需要复现论文 CodePDE: An Inference Framework for LLM-driven PDE Solver Generation 的 baseline 方法。这篇论文来自 CMU,提出了一个用大语言模型自动生成偏微分方程(PDE)数值求解器的推理框架。

论文的核心思路是:让 LLM 根据 PDE 的数学描述和初始条件,自动生成 Python 求解代码,然后通过实际运行求解器来评估效果,最后用进化搜索(FunSearch)不断改进代码。三个核心方法:

  • Repeated Sample:让 LLM 从零开始独立生成多个求解器
  • Refine:给 LLM 已有的种子求解器作为参考,让它改进
  • FunSearch:用进化算法维护求解器"种群",通过交叉变异持续优化

为什么需要 AI 词元

复现这个项目需要大量调用不同的大语言模型。论文官方支持 OpenAI(GPT 系列)、Anthropic(Claude)、Google(Gemini)、DeepSeek、Qwen 等。正好「词元计划」提供了 DeepSeek-v4 和 Qwen 系列的 API 接口,我利用词元计划的 token 额度,完整跑通了 5 个 PDE × 3 种方法 × 4 个模型的轻量级复现实验。

使用的 AI 工具

模型 来源 用途
deepseek-v4-pro 词元计划 代码生成、debug、funsearch 搜索
deepseek-v4-flash-ascend 词元计划 快速代码生成(轻量模型)
qwen3.6-chat 词元计划 代码生成、debug(最稳定的模型)
qwen3.6-reasoner 词元计划 代码生成(推理模型,但格式不兼容)
Claude Code Anthropic 辅助理解代码、调试实验配置、写文档

复现过程

1. 理解项目结构(AI 辅助)

项目代码量约 1000+ 行 Python,包含 Hydra 配置文件体系、多模型 API 调用层、代码生成与 debug 循环、进化程序数据库等多个模块。我把代码喂给 Claude,让它帮我梳理了完整的架构和数据流:

  • main.py → 路由到三种方法之一
  • code_generation.py → 构建 prompt → 调 LLM → 提取代码 → 执行 → 出错则 debug
  • llm_api.py → 统一封装 OpenAI / Anthropic / Gemini / DeepSeek / Qwen 接口
  • funsearch.py → 进化搜索主循环
  • program_database.py → 岛屿模型 + 聚类采样的程序数据库

2. 配置词元计划 API(AI 辅助)

项目需要配置 configs/api.jsonlconfigs/model.jsonl 来指定 API 端点和模型。在 Claude 的帮助下,将词元计划的 API 信息填入 openai-compatible 格式的配置文件:

{"api_id": "2", "api_key": "sk-xxx", "base_url": "https://llm.ustc.edu.cn/v1"}

3. 准备数据集(手动)

从 HuggingFace 下载 CodePDE 数据集,包含 5 个 PDE 的开发集和测试集:Advection(对流)、Burgers(粘性 Burgers)、Reaction-Diffusion(反应扩散)、Compressible Navier-Stokes(可压 N-S)、Darcy Flow(达西渗流)。

4. 批量运行实验(AI 辅助调试)

实验规模:5 PDE × 4 模型 × 3 方法 = 60 个实验任务(另有 20 个 warm-start 任务),整体耗时约 19.5 小时。

跑实验过程中遇到的几个问题,都由 Claude 帮我排查修复:

  • Parser 过于严格code_generation.py 用正则 r'```python(.*?)```' 提取代码,但有些模型返回的代码块没有闭合。Claude 帮我定位到具体位置并提出修复方案。
  • FunSearch seed 缺失导致崩溃:部分 warm-start seed 不完整时,funsearch 在访问 result_sheet 时直接 IndexError。Claude 帮我加了保护逻辑。
  • API 超时处理:部分 PDE(CNS、Darcy)求解耗时很长,需要调整超时参数。

5. 结果汇总(AI 辅助生成报告)

Claude Code 帮我写了结果汇总脚本,自动从 80 个任务的 test_results.csv 中提取数据,生成了 Markdown/LaTeX 格式的 nRMSE 对比表、debug 成功率表、best-of-light 表。

复现结果

各 PDE 最佳结果

PDE 方法 模型 nRMSE 求解耗时
Advection(对流方程) refine deepseek-v4-flash-ascend 1.01e-03 0.30s
Burgers(粘性 Burgers) repeated_sample qwen3.6-chat 3.08e-04 26.45s
Reaction-Diffusion(反应扩散) funsearch deepseek-v4-flash-ascend 3.51e-08 551.85s
CNS(可压 Navier-Stokes) funsearch qwen3.6-chat 6.91e-02 694.41s
Darcy(达西渗流) funsearch qwen3.6-chat 4.80e-03 4.72s

关键发现

  1. FunSearch 进化搜索确实有效:在 Reaction-Diffusion 上,FunSearch 比 Repeated Sample 的 nRMSE 提升了 4 个数量级(9.80e-04 → 3.51e-08),是最符合论文动机的成功案例
  2. qwen3.6-chat 最稳定:是所有模型中唯一在全部 15/15 个实验任务中都产出有效结果的
  3. 简单方法在部分 PDE 上已足够:Burgers 方程上 Repeated Sample 就是 best,不需要复杂的搜索
  4. 不同模型有互补优势:deepseek-v4 在 Reaction-Diffusion 上极其出色,qwen 在 Burgers/CNS 上更强

AI 在复现过程中帮了我什么

代码理解

  • 把论文方法和代码实现逐模块对应,快速理解整体架构
  • 解释 Hydra 配置体系(嵌套 default 覆盖)的工作方式
  • 分析 program_database.py 中岛屿模型和聚类采样算法

Bug 定位与修复

  • Parser 代码提取失败 → 定位到正则太严格,部分模型代码块未闭合
  • FunSearch IndexError → 定位到 seed 缺失时仍访问 result_sheet[0]
  • API 超时 → 分析日志确定合理的 pde.timeout 参数

实验自动化

  • 批量生成 Hydra 配置文件(80 个任务配置)
  • 写结果汇总脚本,自动提取、清洗、表格化实验数据
  • 生成 Markdown/LaTeX 格式的复现报告

数据整理

  • 从混乱的任务日志中提取有效 nRMSE
  • 区分 command_failed、parser_failure、numerical_disaster 等不同失败类型
  • 生成 best-of-light 汇总表,选取每个 PDE 下效果最好的结果

心得与建议

  1. 词元计划的 API 质量很好:DeepSeek-v4 和 Qwen3.6 的代码生成能力出乎意料地强,尤其是 qwen3.6-chat 在代码格式合规性上表现最稳定
  2. AI 加速科研复现是真实可行的:从理解代码到跑通实验、修 bug、汇总结果,全程有 AI 辅助。原本可能需要 2-3 周的工作,一周内就完成了
  3. 不同模型搭配使用效果更好:推理任务用 deepseek-v4-pro(强推理),快速生成用 flash 版本,稳定性优先用 qwen3.6-chat
  4. 实验一定要加结果校验:本轮实验中多次出现 nRMSE 极高(1e+03)的"伪成功"结果——命令退出码为 0 但求解器实际已发散。AI 帮我写了自动检测异常值的逻辑
  5. 给想复现论文的同学:先用小规模(1 PDE × 1 方法 × 2 模型)跑通全流程,确认 pipeline 正确后再放大规模。AI 辅助批量脚本编写可以大幅减少配置工作量

附件:关键代码与实验数据

分享目录下附带了复现实验中的关键代码和结果数据:

代码文件 (code/)

文件 说明
llm_api.py 多模型 API 统一封装,支持 OpenAI/Anthropic/Gemini/DeepSeek/Qwen
code_generation.py 核心循环:构建 prompt → 调 LLM → 提取代码 → 执行 → debug
funsearch.py 进化搜索主循环(岛屿模型 + 程序数据库)
program_database.py 聚类采样 + softmax 温度调度的程序数据库
prompt_template.py 系统提示词、代码生成提示词、debug 提示词模板
pde_descriptions.py 5 个 PDE 的数学描述(初始条件、边界条件、参数范围)
sample_solver_burgers.py 一个种子求解器示例(Fourier 谱方法 + RK4 时间积分)

实验结果 (results/)

文件 说明
best_of_light.md 各 PDE 最佳结果汇总
nrmse_funsearch.md FunSearch 方法的 nRMSE 对比表
nrmse_refine.md Refine 方法的 nRMSE 对比表
nrmse_repeated_sample.md Repeated Sample 方法的 nRMSE 对比表
debug_success_rate_*.md 各方法的 debug 成功率
failures.csv 失败任务详情分析

可视化 (visualizations/)

展示了 4 个 PDE 的参考解(种子求解器的数值解),这些是 LLM 生成求解器的"参考答案":

图片 PDE 物理含义
advection.png 对流方程 波形以恒定速度传播
burgers.png 粘性 Burgers 方程 激波形成与耗散
reaction_diffusion.png 反应扩散方程 图灵斑图形成
cns.png 可压 Navier-Stokes 一维可压缩流动

返回顶部