news 2026/8/5 5:03:58

【面壁智能ForgeStencil技术解析】双Agent如何打通Stencil自动研究与真实应用部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【面壁智能ForgeStencil技术解析】双Agent如何打通Stencil自动研究与真实应用部署

文章目录

  • 面壁智能ForgeStencil技术解析:双Agent如何打通Stencil自动研究与真实应用部署
    • 一、引言
    • 二、Stencil是什么:为什么它既规则又难优化
      • 2.1 从一个网格点看科学计算
      • 2.2 旧自动化为什么停在代码生成
    • 三、双Agent架构:一个研究算子,一个负责落地
      • 3.1 完整数据流
      • 3.2 知识库不是一堆最佳Kernel
    • 四、自动研究:从Profile到可验证的新策略
      • 4.1 Kernel Agent的闭环
      • 4.2 App Agent的六项直接接入门
      • 4.3 Amdahl定律是部署前的止损线
    • 五、自动部署:怎样防止Agent虚报加速
      • 5.1 Patch模式保留上游来源
      • 5.2 “fdtd金标准”的五条硬约束
      • 5.3 为什么报告几何平均
    • 六、公开结果:100个应用的数字应该怎样读
      • 6.1 端到端分布
      • 6.2 算子级与跨代结果
    • 七、工程实践:复现算子与真实应用
      • 7.1 环境要求
      • 7.2 一分钟算子检查
      • 7.3 复现haccmk端到端结果
      • 7.4 上线自己的应用前检查
    • 八、横向对比与边界
    • 九、总结

面壁智能ForgeStencil技术解析:双Agent如何打通Stencil自动研究与真实应用部署

一、引言

亲爱的朋友们,创作不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:jasonai.fn@gmail.com

高性能计算里最昂贵的工作,往往不是写出一个能运行的 CUDA Kernel,而是证明它在真实软件中更快且没有改变科学结果。研究者要找热点、分析访存与占用率、设计分块和融合策略、反复 Profile,再把新算子嵌回气象、流体、医学成像或油气软件;单个微基准快十倍,落进完整程序后也可能因为数据转换和同步开销只剩 1.01 倍。

2026 年 8 月 4 日,面壁智能联合 OpenBMB 开源 ForgeStencil。它面向 Stencil(模板计算)优化,使用 Kernel Agent 和 App Agent 两个智能体,前者执行“计划—编码—剖析”的自动研究,后者完成热点定位、专用算子锻造、正确性验证和真实应用集成。项目采用 Apache-2.0 许可证,公开 CUDA 算子、Agent 循环、100 个应用复现包、测量 Harness 与结果注册表。

官方报告显示,ForgeStencil 在 100 个端到端验证应用上取得中位 1.41×、几何平均 2.05× 的加速。真正值得研究的并非某个夸张峰值,而是它如何约束智能体:只有真实上游程序、程序内单开关、应用自带正确性检查、交错计时和全标准算例几何平均全部满足,结果才允许标记为端到端验证。


二、Stencil是什么:为什么它既规则又难优化

2.1 从一个网格点看科学计算

Stencil 是规则网格上的邻域计算。三维 7 点 Stencil 会用当前点和上下、左右、前后六个邻居更新输出:

u'(i,j,k) = c0·u(i,j,k) + cx·[u(i-1,j,k) + u(i+1,j,k)] + cy·[u(i,j-1,k) + u(i,j+1,k)] + cz·[u(i,j,k-1) + u(i,j,k+1)]

类似模式出现在有限差分、扩散方程、地震波、电磁场、气象和流体模拟中。计算表达式规则,却高度受显存带宽、缓存复用、线程块形状、Halo、寄存器压力和 Kernel 启动影响。

优化手段目标常见副作用
空间分块/Tiling提高邻域数据复用Shared Memory 与同步开销上升
时间分块一次加载完成多个时间步Halo扩大、寄存器和边界逻辑复杂
Kernel融合减少中间写回和启动次数寄存器压力可能降低占用率
布局重排合并访存、改善缓存局部性与上下游布局不兼容时转换成本更高
向量化与低精度提升带宽利用率对齐、数值误差与可移植性风险
架构特化利用特定GPU代际特性跨A100/H100/B200需要分别回归

2.2 旧自动化为什么停在代码生成

Halide、Devito 等 DSL 能从人类定义的算法和调度生成高性能代码;AN5D、EBISU、DRStencil 等自动调优器在预设搜索空间中选择参数。它们解决了大量手工编码问题,但优化策略、真实应用热点和集成工作通常仍由人负责。

ForgeStencil 试图补上两段:让 Agent 根据 Profile 发现策略,而不是只枚举固定 Tile;让另一个 Agent 把策略集成到真实上游应用,并通过程序自己的结果和计时判断成败。这也是项目将自身称作“自动研究 + 自动部署”闭环的原因。


三、双Agent架构:一个研究算子,一个负责落地

3.1 完整数据流

┌──────────────── Kernel Agent ────────────────┐ │ Plan ─► Code ─► Compile ─► Correctness ─► Profile │ ▲ │ │ └──────── 性能证据 / 失败原因 / 新假设 ───┘ └──────────────────────┬──────────────────────┘ │ 优化算子与技术记录 ▼ kernel/ 算子知识库 │ ▼ ┌───────────────── App Agent ──────────────────┐ │ 拉取真实上游 ─► 定位热点 ─► 匹配/锻造算子 │ │ └────► 注入USE_OURS开关 ─► 集成Patch │ └──────────────────────┬──────────────────────┘ │ ▼ 端到端验证Harness 原始/优化交错运行 · 自带校验 · 自带计时 │ ▼ integration_registry.json / 可复现结果

Kernel Agent 的循环脚本和优化规则位于agents/,默认可由 Claude Code 或兼容的 Agent CLI 驱动。它每轮提出单一变化、编译、检查正确性、测量并保留有效版本。针对 H100、B200 的 Backend Brief 会把已测到的瓶颈注入提示,使 Agent 从实际 Roofline 和硬件限制出发,而不是重复通用 CUDA 建议。

App Agent 使用算子库作为知识库,先判断真实应用算子能否直接替换。若 Shape、语义、精度、布局或性能门任一不满足,就进入自动研究分支,目标可能变成“把物理项与 Stencil 融成一个新 Kernel”,而不是勉强串两个 Kernel 造成回退。

3.2 知识库不是一堆最佳Kernel

算子库同时保存源代码、适用 Shape、精度、GPU 架构分支、Profile 结果和失败经验。A100 上有效的配置不一定适合 B200;某个布局在算子微基准中极快,若真实应用上下游使用另一布局,转换流量可能吃掉全部收益。

组件作用
kernel/优化CUDA Kernel与A100/H100/B200运行时分派
tools/run.py编译算子、与可用Baseline比较、做NumPy正确性检查
agents/双Agent循环、集成状态机和优化纪律
operator_bench/真实应用算子的代理微基准,只能报告算子级结果
applications/100个来源记录、拉取脚本、集成Patch和配置
harness/构建、交错测量、正确性与端到端判定
results/结果注册表和跨GPU代际原始测量

这里最重要的分类是:operator_bench只能说明被替换算子快了多少,不能称为端到端;只有harness在真实程序中跑完整标准测例,才能写入e2e_validated=true


四、自动研究:从Profile到可验证的新策略

4.1 Kernel Agent的闭环

建立Baseline │ ▼ 查看Kernel时间、DRAM带宽、Occupancy、寄存器与启动开销 │ ▼ 提出一个可证伪假设 例如:跨步复用不足,应采用K方向深预取 │ ▼ 只实现这一项变化 ─► 正确性失败?回退并记录 │通过 ▼ 多轮稳健测量 ─► 性能回退?回退并记录 │提升 ▼ 提交有效版本,进入下一轮

“每轮只改一项”让性能变化有因果解释;正确性 Gate 和零回退规则阻止 Agent 为追求数字积累不可控修改;连续无进展后再搜索外部资料,避免一开始就复制与当前瓶颈无关的技巧。

4.2 App Agent的六项直接接入门

条件必须回答的问题
Shape匹配邻域模式是否与库内 star、box、diamond 等完全一致
语义匹配是否纯加权邻域和,不含非线性物理项或方向性Gather
精度匹配f16/f32/f64 是否与可用Kernel一致
布局兼容Padding、Ghost和内存顺序是否与上下游一致
优化版可用对应架构变体是否能编译、运行并通过正确性
端到端不退化集成后是否至少不低于应用原优化路径,容差2%

需要拆分算子就进入研究,因为“优化 Stencil + 单独 Physics Kernel”会增加中间 Buffer 往返和二次读取。新研究目标通常是把两者融合成一个应用专用 Kernel,直接消费原布局。

4.3 Amdahl定律是部署前的止损线

若 Stencil 占完整程序时间比例为f,算子加速为S_kernel,理论端到端加速是:

S_e2e = 1 / ((1 - f) + f / S_kernel)
defprojected_speedup(operator_fraction:float,kernel_speedup:float)->float:ifnot0<=operator_fraction<=1:raiseValueError("operator_fraction must be within [0, 1]")ifkernel_speedup<=0:raiseValueError("kernel_speedup must be positive")return1/((1-operator_fraction)+operator_fraction/kernel_speedup)forfractionin(0.2,0.5,0.8):print(fraction,projected_speedup(fraction,5.0))

一个 Kernel 即使快 5 倍,若只占程序 20%,端到端理论值也只有约 1.19 倍。ForgeStencil 要求f_app来自真实 Profile 或有来源的估计,并把“算子实测”“端到端投影”“端到端实测”分开记录。


五、自动部署:怎样防止Agent虚报加速

5.1 Patch模式保留上游来源

ForgeStencil 不在仓库内打包第三方应用源码,而是为每个应用保存:

applications/<app>/ ├── PROVENANCE.md # 上游URL、版本/哈希与结果 ├── vendor.sh # 从原始位置拉取源码 ├── patches/integration.patch # 注入优化路径的差异 └── e2e/ ├── manifest.json # 构建、测例、计时与校验规则 └── build.sh kernel/<app>_ours.cuh # ForgeStencil生成的专用算子

这既减少许可证混用,也使复现者能核对真实上游字节。原始路径与优化路径位于同一个程序,通过USE_OURS类开关切换,而不是各写一个迷你程序再对比。

5.2 “fdtd金标准”的五条硬约束

Gate约束防止的造假或误判
真实程序Baseline是命名对应的上游Driver/Main用相似Demo冒充工业应用
真实测例运行程序自带标准初始化、时间步和诊断只挑有利的小尺寸循环
同程序开关Orig/Ours只有一个内部开关不同两套程序存在隐藏差异
程序自检使用内置检查或同程序末态Diff只比较几个采样点
程序自计时交错多轮运行并读取程序计时器冷启动、节点漂移和选择性计时

任一条件失败,Harness 会把结果标记为未验证或受阻,不能写成端到端成果。对原项目已有 GPU 版本的应用,必须优先与它自己的 GPU 路径同架构比较;拿第三方框架实现替代原项目 Baseline,只能说明另一个问题。

5.3 为什么报告几何平均

不同标准算例加速比是乘法比率,算术平均容易被一个极大值拉高。几何平均对比率更合适:

Geomean = (S1 × S2 × ... × Sn)^(1/n)

项目还要求原始和优化路径交错运行多轮取中位,降低 GPU 温度、时钟和共享节点负载的顺序偏差。这里的可复现是指 Patch、输入、测量产物和结果可以重跑;LLM Agent 每次探索路径本身并不保证逐位一致。


六、公开结果:100个应用的数字应该怎样读

6.1 端到端分布

指标官方结果
验证应用数100
中位端到端加速1.41×
几何平均2.05×
完整区间0.998×~97.7×
至少1.05×89%
至少1.20×73%
至少1.50×43%
至少3×21%
至少10×7%

中位数 1.41× 比 97.7× 峰值更有代表性。极大提升通常来自上游存在大量小 Kernel、Host 同步或可融合结构,例如pathfinder97.7×;面对高度调优的厂商或手写代码,常见结果只有 1.0~1.5×。接近 1.0× 不一定是失败,也可能说明原实现已接近硬件极限。

6.2 算子级与跨代结果

访存受限算子在 A100 上达到官方峰值 DRAM 带宽 2039 GB/s 的 74%~85%。在 32 个同精度、同类别算子形状上,ForgeStencil 相对每个 Shape 的最佳适用公开 Baseline 几何平均约 2.16×。

算子库提供sm_80sm_90sm_100运行时分派。A100 到 H100 时,许多 Kernel 仍保持 77%~90% DRAM 利用;到 B200 后带宽增长快于访存发射能力,部分 Kernel 掉到 44%~65%,促使 Agent 研究更深预取等代际特化策略。

必须注意:100 个完整应用的端到端包统一在 A100 上验证;H100/B200 的完整端到端复测仍在路线图中。“支持三代架构”不能改写成“100 个应用已在三代 GPU 全部验证”。


七、工程实践:复现算子与真实应用

7.1 环境要求

官方要求 NVIDIA GPU,参考验证环境为 A100-SXM4-80GB,使用 CUDA 12.x、C++17 Host 编译器、Python 3.9+、NumPy 与 CuPy。运行 Agent 还需要 Claude Code 或兼容 Agent CLI 及相应模型凭据。

gitclone https://github.com/OpenBMB/ForgeStencil.gitcdForgeStencil python-c"import numpy, cupy; print('deps OK')"

7.2 一分钟算子检查

python tools/run.py--stencilstar_1--shape256--gpu0

该命令编译项目算子,并用 NumPy 参考检查正确性。Halide、Devito 或其他 Baseline 缺失时会显示null,不影响先验证自有 Kernel;要复现对比结论,再按各自许可证拉取 Baseline。

7.3 复现haccmk端到端结果

cdapplications/haccmk ./vendor.shgitapply patches/integration.patch python../../harness/run_e2e.py--apphaccmk--gpuauto

复现前应使用空闲 GPU,并尽可能锁定时钟;共享云节点上的绝对毫秒数和加速比会波动。审计重点不是输出是否恰好等于 README,而是来源哈希、构建路径、正确性、开关差异、逐轮原始时间和汇总算法是否一致。

7.4 上线自己的应用前检查

检查项通过条件
来源上游URL、提交、许可证与文件哈希齐全
Baseline使用应用自己的最强生产GPU路径
正确性全标准测例通过应用自检或可信末态比较
数值容差容差来自应用语义,不由Agent临时放宽
性能热身、交错、多轮中位、GPU状态可追溯
回归新Kernel在所有已集成应用中退化不超过门槛
安全Agent无生产凭据,生成Patch必须进入代码评审

科学计算的正确性不能完全交给 LLM。即使自动研究阶段无人干预,进入生产仓库前仍应做专家评审、编译器矩阵测试、消毒器检查和长时间数值稳定性验证。


八、横向对比与边界

方案搜索对象能否发现新策略真实应用部署结果可审计性
Halide/Devito人定义算法与Schedule/DSL主要由人设计需要人工集成编译链和生成代码可复现
AN5D/EBISU/DRStencil固定参数与变换空间限定在搜索空间内通常停留在算子层微基准较容易复现
通用Coding Agent任意代码修改可以提出新方案能改项目但缺专用测量协议取决于用户提示与测试
ForgeStencilProfile驱动策略、Kernel与应用Patch是,双Agent迭代内置热点到真实程序Harness单开关、来源、正确性与计时规则公开

ForgeStencil 的优势是把“会写 CUDA 的 Agent”变成“受测量纪律约束的优化系统”。它的边界也很明确:当前聚焦 NVIDIA CUDA 和 Stencil 类问题;端到端验证主要基于 A100;正确性上限受原应用自检强度限制;Agent 路径非确定;超大加速常代表 Baseline 结构性空间,不是每个 Kernel 都有同等优势。

此外,项目名称中的“自动部署”指把优化 Patch 集成并验证到真实开源软件,不等于直接发布到企业生产集群。生产发布仍涉及安全审计、编译器和驱动兼容、回滚、SLA 与领域专家签字。


九、总结

维度核心结论
研究闭环Kernel Agent用Plan、Code、Correctness和Profile逐轮发现并验证优化策略
部署闭环App Agent定位热点、判断匹配、锻造专用算子并生成真实上游Patch
结果口径100个A100端到端验证应用中位1.41×、几何平均2.05×,峰值不是典型值
可信机制真实程序、标准测例、单开关、自带校验、交错计时和几何平均共同防止虚报
跨代能力算子库支持A100/H100/B200分派,但100应用在H100/B200的端到端复测尚未完成
现实边界自动集成不等于无人审批上线,数值语义、安全和长期回归仍需人类负责

ForgeStencil 展示了 AI for Science 的一个务实方向:不是让模型写一段看起来聪明的 CUDA,而是让每一个性能主张都带着来源、正确性和可复现测量。双 Agent 提供探索宽度,严格 Harness 提供证据边界;后者才是系统从代码生成演示走向工程研究平台的关键。


参考资料

  1. ForgeStencil 官方仓库
  2. ForgeStencil 中文说明
  3. Kernel Agent 与 App Agent 运行说明
  4. 跨GPU代际Re-forge研究
  5. 端到端应用复现包
  6. Halide 官方网站
  7. Devito 官方网站
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 5:03:07

晶体知识全解析:从核心原理到工程选型避坑指南

1. 从“石头”到“芯片”&#xff1a;为什么我们需要了解晶体你可能觉得“晶体”这个词离生活很远&#xff0c;脑海里浮现的是博物馆里闪闪发光的矿物标本&#xff0c;或者化学课上那些难懂的分子结构图。但事实上&#xff0c;我们每一天都生活在晶体构筑的世界里。你口袋里手机…

作者头像 李华
网站建设 2026/8/5 5:02:09

UE5动画重定向避坑指南:APose与TPose原理、问题诊断与修复

1. 项目概述&#xff1a;从一次痛苦的动画重定向经历说起如果你正在用UE5做角色动画&#xff0c;并且尝试过把一个角色的动画套用到另一个骨骼结构不同的角色身上&#xff0c;那你大概率已经和“动画重定向”这个功能打过交道了。这听起来是个很酷的功能&#xff0c;一键就能让…

作者头像 李华
网站建设 2026/8/5 5:02:00

ChatGPT智能体浏览器:基于大语言模型的网页自动化实践指南

这次我们来看一个很有意思的趋势&#xff1a;ChatGPT 正在从一个单纯的对话机器人&#xff0c;演变为一个能够自主浏览、操作网页的“智能体浏览器”。这不仅仅是功能的叠加&#xff0c;而是其作为智能体&#xff08;Agent&#xff09;能力的一次关键进化。简单来说&#xff0c…

作者头像 李华
网站建设 2026/8/5 5:01:23

IDEA与Maven项目导入运行全攻略:从环境配置到实战避坑

1. 从零到一&#xff1a;为什么IDEA和Maven是Java开发的黄金搭档如果你刚开始接触Java企业级开发&#xff0c;或者刚从Eclipse、NetBeans这类IDE转过来&#xff0c;面对IntelliJ IDEA&#xff08;以下简称IDEA&#xff09;和Maven这两个庞然大物&#xff0c;心里可能会犯嘀咕&a…

作者头像 李华
网站建设 2026/8/5 4:59:29

基于WorkBuddy构建AI社群分析工具:从信息过载到智能洞察

1. 项目缘起&#xff1a;当社群运营的“信息过载”遇上AI做社群运营的朋友&#xff0c;或者自己管理过几个活跃微信群、Discord服务器的朋友&#xff0c;一定对这种感觉不陌生&#xff1a;每天成百上千条消息刷屏&#xff0c;你隐约觉得里面藏着用户的需求、产品的槽点、甚至是…

作者头像 李华
网站建设 2026/8/5 4:59:24

深入解析K8s调度器:从核心原理到生产环境优化实践

1. 从“能跑就行”到“跑得更好”&#xff1a;为什么我们需要关注K8s调度如果你刚开始接触Kubernetes&#xff0c;或者只是用它来跑几个简单的测试应用&#xff0c;那么你对“调度”这个词可能没什么感觉。毕竟&#xff0c;大部分时候&#xff0c;你写好一个Deployment的YAML文…

作者头像 李华