目录

OpForge:面向昇腾 NPU 的剖分驱动算子生成与闭环调优 Agent

CCF 开源创新大赛参赛项目 · 上海海洋大学 0 队 底层依赖:MindSpore AKG · 目标平台:昇腾 910B 系列

项目简介

OpForge 面向 akg_kernels_bench_lite 算子任务,交付 算子 current-best、团队 Skill 知识库、OpForge AKG Agent 三类成果。项目以官方 AKG Agent 的 akg-op -> kernelgen -> verifier 流程为生成底座,在其外层补充硬件能力审计、Operator Playbook、Adaptive Pass@N、真实 NPU 反馈、失败记忆、候选晋升、来源证明和可复现打包,将一次性代码生成扩展为可观察、可控制、可复核的算子优化闭环。

三类成果分别记录、分别归因:

交付 内容 结果归属
latest/ 13 个基准算子的当前候选及 AscendC Sidecar 团队实测 current-best
skills/ 27 个团队实测调优 Skill + 8 个 Agent 原生 Skill,共 35 个外层 SKILL.md 团队知识资产,不直接等同于成绩
OpForge-AKG-Agent/ 自主规划、生成、验证、反馈、晋升与打包系统 只统计带 generation provenance 和官方证据的 Agent 结果

当前 chusai 分支记录的 1365 分来自 latest/ 团队实测 current-best,与 Agent 自主生成结果分轨记录。既有候选和历史性能作为 Agent 的搜索先验与同轮对照;只有重新经过官方 kernelgen 生成、Verifier、真实 NPU forward 和官方 runner 的候选才进入 Agent 自主生成成绩口径。

核心创新

创新点 工程实现
剖分与反馈驱动的候选规划 将 runner、Profiler、TensorMove、调用数量和延迟差距压缩为 Profile Digest,按 memory/copy/cube/dispatch 等瓶颈选择下一轮 search axis
算子感知的 Adaptive Pass@N 按算子复杂度分配 1–3 个候选,约束实现族和调度轴差异,支持 stop-on-promote 与 best-only repair,避免重复生成同类 wrapper
Hardware-aware Multi-DSL Routing 先审计 AscendC、Triton-Ascend、Torch NPU、CANN 与 Python ABI,再选择 vendor wrapper、AscendC Sidecar、Triton kernel 或结构化 layout/cache 路线
严格验证与可信晋升 串联静态检查、官方 AKG Verifier、Sidecar build/import、真实 NPU forward、二进制摘要、官方 runner、同轮性能对照和发布审计
Candidate DAG 与失败记忆 记录候选父子关系、策略、DSL、failure signature、性能差距和 do-not-repeat 规则,把失败转化为下一轮的定向修复上下文
双层 Skill 体系 8 个 Agent 原生 Skill 负责控制与生成;27 个团队实测调优 Skill 经 3 个适配 Skill 安全路由,既保留工程经验,又对代码片段、历史数字和冲突规则执行独立复核与隔离

Agent 自主闭环

题目快照与语义抽取
  -> 运行栈与硬件能力审计
  -> Operator Playbook / Candidate Plan
  -> 任务匹配的 Agent Skill 与团队调优 Skill
  -> 官方 akg-op / kernelgen 生成
  -> 官方 Verifier 与严格正确性门
  -> Sidecar build / import / NPU forward / .so attestation
  -> 官方 runner 与 Profile Digest
  -> Candidate DAG / failure memory / targeted repair
  -> keep-best promotion / submission audit / package

控制器不会假设所有算子都适合相同实现。原生库算子已饱和时可选择精确 vendor floor;归一化、量化和 reduction 任务可探索 AscendC/Triton 组合;矩阵任务可比较 layout/cache 路线;有 mutable state 的任务则优先保护真实状态更新与多 seed 语义。

对需要 Sidecar 的候选,构建工作由控制器负责,不在 ModelNew.forward() 中静默调用 CMake 或 subprocess。生成文件可以拥有 AscendC primary、Triton-Ascend fallback 和 Torch correctness floor,但 fallback 只提高容错性,不承诺“100% 通过”,也不能替代官方验证。

27 + 8 + 3 Skill 体系

完整知识体系按 27 + 8 + 3 = 38 项 Skill 资产统计:

  • 27 个团队实测调优 Skill:8 个通用策略、1 个 NPU Profiling、2 个实现模式、16 个 case Skill;16 个 case 文档覆盖 13 个唯一算子,另含 3 个 AscendC 变体。
  • 8 个 Agent 原生 Skill:Operator Playbook、算子族 Handbook、严格正确性、RPB 搜索、Vendor 路由、Sidecar 策略、目标机验证、AscendC direct-invoke 桥接。
  • 3 个适配 Skillopforge-team-tuning-strategy-adapteropforge-team-tuning-profiling-adapteropforge-team-tuning-implementation-adapter

外层 skills/ 中可直接审阅 27 + 8 = 35 个 SKILL.md。Agent 内层保留全部 38 项 Skill 资产,但只注册 8 + 3 = 11 个顶层可发现入口;27 个团队实测调优 Skill 以逐项适配后的 *.ADAPTED_SKILL.md 存放,由适配器按算子、DSL 路线和 Profiling 信号读取 1–3 个匹配条目,而不是一次把 27 篇长文全部注入提示词。

适配过程为每个团队调优 Skill 记录源分支、HEAD、SHA-256、版本状态和验证要求;受排版影响的 fenced code 会被移除。历史 speedup、固定 core/RPB、运行时 CMake、静默 fallback 和缓存方案只能成为候选假设;Agent 原生完整性与验证规则发生冲突时,以 Agent 规则和官方 runner 为准。

仓库结构

.
├── latest/                         # 13 个团队实测 current-best
│   ├── t1/                         # 6 个基础算子
│   ├── t2/                         # 4 个复合算子及 Sidecar
│   └── t3/                         # 3 个高难算子及 Sidecar
├── skills/                         # 35 个外层 SKILL.md
│   ├── ascend-bench-strategy/      # 8 个团队通用策略 Skill
│   ├── ascend-npu-profiling/       # 1 个团队 Profiling Skill
│   ├── specific-implementation/    # 18 个团队模式/case Skill
│   └── opforge-agent/              # 8 个 Agent 原生 Skill
├── OpForge-AKG-Agent/              # 自包含 Agent 工程
│   ├── opforge/                    # 规划、控制、验证、反馈、打包
│   ├── akg_op_overlay/             # 8 原生 + 3 适配器 + 27 适配 Skill
│   ├── scripts/                    # setup/self-check/run_case/run_suite
│   ├── tests/                      # 控制器回归测试
│   └── third_party/akg-br-agents/  # 固定的官方 AKG Agent 快照
└── README.md

Agent 工程验证

  • Python 3.13 本地控制层回归:105 tests passed
  • Skill 同步检查:外层 35SKILL.md;内层 38 项 Skill 资产(27+8+3);11 个顶层可发现入口;27 个团队实测调优 Skill 均有独立来源摘要和适配条目。
  • 官方 AKG 快照采用 tree digest 校验;运行时只允许新增 workspace/.opencode/skills/opforge-*,任务、prompt、runner、候选源码与结果均绑定摘要。
  • 2026-07-10 的真实 GELU smoke 中,外层 OpForge Conductor 调用官方 kernelgen,官方 Verifier 与最终 runner 为 1/1 pass,加速比 1.0581x;使用 1 次 LLM、无 repair/sidecar/fallback。完整摘要见 GELU Agent 真实链路烟测证据,该结果与 1365 分分轨统计。

静态回归不等于 NPU 性能验证。真实候选仍须在 Ascend 环境执行 run_case.shrun_agent_suite.sh,并以当次官方证据为准。

团队实测 current-best

下表保留原有调优口径,用于展示 latest/ 的团队实测结果。数字对应既有昇腾 910B 环境记录,当前提交与新运行栈需重新执行官方 runner;本表与 Agent 自主生成结果分别统计。

算子 梯队 记录的参考延迟 (ms) 历史加速比
fused_silu_and_mul T1 0.0666 1.07x
gelu T1 0.0438 1.00x
matmul_basic T1 0.0641 1.12x
matmul_biasadd T1 0.4824 0.92x
sigmoid_scale_sum T1 0.0732 1.35x
softmax T1 0.4562 1.01x
add_rmsnorm_cast (Triton) T2 2.2932 3.29x
add_rmsnorm_cast (AscendC) T2 2.2932 2.11x
add_rmsnorm_quant (Triton) T2 4.1772 1.25x
add_rmsnorm_quant (AscendC) T2 4.1772 2.24x
moe_topk_softmax T2 0.0264 4.77x
rope T2 0.3652 1.00x
causal_conv1d T3 0.0631 4.66x
decode_mla T3 15.3513 8.79x
layernorm_gated T3 0.5229 2.09x

快速开始

运行 Agent

cd OpForge-AKG-Agent
bash scripts/setup.sh --ascend
cp .env.example .env
bash scripts/self_check.sh --runtime
bash scripts/run_case.sh t1/sigmoid_scale_sum

完整题集:

cd OpForge-AKG-Agent
bash scripts/run_agent_suite.sh

每次运行默认写入 OpForge-AKG-Agent/artifacts/runs/<run-id>/,包含 runtime audit、Pass@N 候选、progress events、Verifier/runner 证据、Candidate Memory、promotion decision 和 submission audit。

检查团队候选

import torch
from latest.t1.gelu import Model, ModelNew, get_inputs, get_init_inputs

args = get_inputs()
init_args = get_init_inputs()
reference = Model(*init_args)(*args)
candidate = ModelNew(*init_args)(*args)
assert torch.allclose(reference, candidate, atol=1e-2, rtol=1e-2)

该片段只用于快速语义检查,正式结论必须使用赛事官方 runner 的输入、预热、计时和评分流程。

环境与评测入口

  • 目标环境:Linux aarch64、Python 3.10+、Ascend 910B 系列、CANN、torchtorch_npu
  • 可选后端:Triton-Ascend、AscendC toolchain、CMake/Ninja。
  • Agent 单题入口:OpForge-AKG-Agent/scripts/run_case.sh
  • Agent 全题入口:OpForge-AKG-Agent/scripts/run_agent_suite.sh
  • 控制层自检:OpForge-AKG-Agent/scripts/self_check.sh --with-tests
  • 官方评分入口:固定快照中的 akg_kernels_bench_lite/tools/run_bench.py
  • Profile 反馈整理:OpForge-AKG-Agent/opforge/agent_profile_digest.py

证据与安全边界

  • 不修改赛事题目、官方 Verifier、runner、容差或评分逻辑。
  • 不将既有团队 current-best、fallback 产物或 research import 标记成 Agent 自主生成。
  • 不将 fallback 可运行等同于正确性通过或性能晋升。
  • 不在生成候选中执行网络访问、运行时编译循环或 benchmark 生命周期利用。
  • 共享 Skill 的新增与升级需要 fresh runner 与团队复核;Candidate DAG 与失败记忆可以自动写入,但不会绕过复核覆写知识库。

文档与参考文献

项目设计与算子优化参考:

关于
10.9 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号