目录

多DSL自主寻优的昇腾算子生成Agent

本项目面向 Ascend 910B/CANN,研究如何让 Agent 在多个 DSL、多个搜索层级和多轮实验中持续生成、验证和改进高性能算子。Agent 负责理解算子语义与硬件事实、提出可证伪的优化假设、选择搜索路线并编写候选;Harness 负责受控构建、正确性验证、性能测量和 profiling;KernelWiki 保存跨任务可复用的正负经验;Evidence Graph 绑定当前任务的事实、假设、候选和实现 digest。

项目的核心不是“一次生成一个 kernel”,而是让 Agent 在多个 DSL、多个搜索层级和多轮实验中持续回答三个问题:

  1. 当前瓶颈是什么,最值得改变的是哪一层?
  2. 哪个候选在官方语义下确实正确且更快?
  3. 这次实验得到的经验,如何约束下一轮搜索并避免重复失败?

完整技术方案、实验口径和知识库章节见 项目报告 PDF。报告源稿和内部知识库章节保留在本地开发目录,不随提交包发布;新服务器的完整复现步骤统一放在 SUBMISSION.md

最新可核验结果

仓库中最新保存的正式全量 benchmark receipt 来自 2026-08-07 的 Ascend 910B2C / CANN 9.0.0,使用官方 full runner(warmup 10、iterations 100、3 trials):

correctness       = 13 / 13 PASS
total weighted    = 1475.66
average speedup   = 5.9006x
highest speedup   = 37.0398x (t3/decode_mla)

结果来源:benchmark_results/agent_evidence_20260809/,原始数据位于 raw/eva_worker.json。这是已经保存的远端官方 worker 结果,不是当前 shell 现场重新跑出的 NPU 结果。当前工作区若继续修改 submission/ 或 Agent 代码,必须针对新的 implementation digest 重新完成 correctness、性能和独立复测,不能直接沿用上述分数。

逐算子结果如下:

算子 加速比 单项分 加权分 状态
t1/fused_silu_and_mul 1.0263x 60.26 60.26 PASS
t1/gelu 0.9982x 59.89 59.89 PASS
t1/matmul_basic 0.9979x 59.87 59.87 PASS
t1/matmul_biasadd 1.0048x 60.05 60.05 PASS
t1/sigmoid_scale_sum 3.6470x 86.47 86.47 PASS
t1/softmax 1.0272x 60.27 60.27 PASS
t2/add_rmsnorm_cast 4.2789x 92.79 139.18 PASS
t2/add_rmsnorm_quant 7.1818x 100.00 150.00 PASS
t2/moe_topk_softmax 10.0653x 100.00 150.00 PASS
t2/rope 1.0680x 60.68 91.02 PASS
t3/causal_conv1d 5.4401x 100.00 200.00 PASS
t3/decode_mla 37.0398x 100.00 200.00 PASS
t3/layernorm_gated 2.9323x 79.32 158.65 PASS

方法概览

总体架构

一次优化循环可以概括为:

算子语义/约束 + KernelWiki 先验
              ↓
      Agent 读取事实并形成 hypothesis
              ↓
 route → structure → algorithm/numeric path → schedule → parameter
              ↓
      候选封存(implementation digest)
              ↓
 Harness:build → correctness → benchmark → profiling / probe
              ↓
 Evidence Graph 记录事实和解释,KernelWiki 暂存可复用经验
              ↺

搜索不是固定参数的盲目枚举。候选池通常同时包含三类动作:

  • exploit:在当前结构中调整 tile、ring、双缓冲、事件和参数;
  • contrast:在同一 DSL 中改变数据流、归约树或中间张量组织;
  • escape:切换结构族或 DSL route。

编译、NPU 执行和正式测量由 Harness 串行控制。编译失败、环境/设备故障、correctness 失败和性能退化分别记录;基础设施故障是删失样本,不能被 Agent 当作性能结论。候选只有在正确性和证据门禁通过后,才可以成为新的 verified best;finalize 还会检查独立复测、profile digest 绑定和 required sibling 是否处理完毕。

组件与职责

组件 主要职责 关键入口
OpenCode / LLM 读取代码和证据、提出 hypothesis、编写或修复候选 .opencode/agents/eva-optimizer.md
Agent 控制层 Campaign 状态机、分层搜索、候选池、晋级与回退 eva-agent/agent/
Domain tools 将自然语言任务转换为受控 Campaign 操作 .opencode/tools/eva_campaign.ts
Harness / Infra 快照校验、受控 build、correctness、benchmark、profiling、receipt eva-agent/agent/harness_socket.pyeva-agent/agent/infra/
Evidence Graph 当前 Campaign 的 digest-bound Fact、Semantic、Hypothesis 和 Probe 关系 eva-agent/agent/evidence/
KernelWiki 跨 Campaign 的长期知识、检索索引、正负证据和审核暂存 ascend910b-kernelwiki/eva-agent/agent/knowledge.py
Submission 13 个官方算子的最终入口、OPP 包和 ACLNN bridge submission/

正式部署至少使用两个 Unix 身份:OpenCode/Agent 用户不能写设备、官方 benchmark 或 Harness-owned 结果;eva-harness 用户独占设备锁、构建、profiling、benchmark 和签名 receipt。Unix socket 使用 SO_PEERCRED,输入快照带 SHA-256,结果树和 receipt 绑定到精确 implementation digest。local-workerinline 仅用于 bring-up 或离线开发,不能产生正式硬件性能证明。

Submission:13 个算子与多后端组合

最终实现按证据选择后端,而不是强制所有算子使用同一种 DSL:

后端/路线 数量 代表算子
Triton-Ascend 3 fused_silu_and_mulsoftmaxadd_rmsnorm_cast
AscendC/TBE/CANN 自定义 OPP + ACLNN bridge 7 gelumatmul_basicsigmoid_scale_sumadd_rmsnorm_quantropecausal_conv1dlayernorm_gated
官方 torch_npu 融合算子 1 moe_topk_softmax
原生 PyTorch/CANN 表达式 2 matmul_biasadddecode_mla

submission/custom_ops/ 保存随提交打包的 OPP 注册文件、主机侧 ACLNN 接口库、tiling 库和 Ascend 910B kernel 目标文件。任务模块会在导入 torch_npu 前自动配置 ASCEND_CUSTOM_OPP_PATH,通常不需要手动导出该变量;自定义 OPP 无法加载时,部分入口会回退到语义正确的 PyTorch 表达式。

各任务的后端、数据流和主要优化方法见 operator_inventory.md

KernelWiki 与 Evidence Graph

知识库类型与用途

KernelWiki 是跨 Campaign 的长期记忆,包含:

  • case card:算子语义、输入形状和正确性契约;
  • backend / hardware note:CANN、Triton-Ascend、AscendC 和硬件限制;
  • optimization pattern:访存、归约、融合、同步、tile、ring 等症状—动作模式;
  • implementation guide:可复用的 ABI、动态入口、MTE 地址和同步约束;
  • positive / negative evidence:稳定提速、退化、编译失败、运行时错误和不可提交路线;
  • source corpus:每条经验可追溯的源码、profile、receipt 或外部资料。

Agent 先根据 case、backend、hardware 和当前 hypothesis 检索 KernelWiki,编译为带条件和 knowledge_refsKnowledgeContract;候选通过 Harness 后,结果进入 task-local Evidence Graph。只有经过复现、correctness、环境和 provenance 审核的经验,才从 semantic_staging 进入长期知识库。知识库不是事实权威:真实测量和签名 receipt 仍由 Harness 产生,离线 contract 也不能冒充 910B 性能证明。

Agent 使用并更新知识库

知识库章节的完整说明保留在本地 eva-agent/docs/competition/knowledge_base_chapter.md,该竞赛材料目录不随提交包发布;查询索引和校验脚本位于 ascend910b-kernelwiki/

复现入口

新服务器的环境准备、代码版本固定、官方 benchmark、OPP 加载、resident Harness、Agent Campaign、离线 contract demo 和结果核对统一写在 SUBMISSION.md

推荐:一键部署并进入 OpenCode

新服务器只需要预先具备 OpenCode、模型凭据和 Ascend/CANN + torch_npu 运行时;不需要 创建两个 Unix 用户,也不需要复制 socket、Python、benchmark、公钥等配置。直接执行:

bash start.sh

脚本会自动发现并加载 CANN 环境,选择带 torch_npu 的 Python,拉取或复用官方 br_agents benchmark;如果本机没有可用的 CANN ops 源码,也会自动拉取到 .eva-runtime/cann-ops,供 AscendC 候选受控编译。随后安装 EVA/AKG Agents 与 .opencode domain-tool 依赖,创建 .eva-runtime/、Ed25519 key 和 Unix-socket Harness,并把所有路径注入当前 OpenCode 进程。 随后 OpenCode 以交互模式启动,用户只需选择 eva-optimizer Agent 即可开始优化。

也可以直接交给 Agent 一个任务,跳过交互选择:

bash start.sh "优化 t2/rope 算子性能"

该默认入口是同 UID bring-up,适合新服务器快速运行 Agent;它不声称正式双用户权限隔离 或 competition-grade hardware certificate。脚本不会代替管理员安装 OpenCode、模型账号、 Ascend 驱动或 CANN 运行时。

可选:正式双用户证据部署

需要正式双用户部署时,再以管理员执行 setup_dual_user.sh。它会创建 eva-agenteva-harness 和专用 socket 组,生成只读 release、Harness worker 目录、签名密钥和 eva-harness.service,并自动生成 /etc/eva-agent/env。模型凭据仍只在 eva-agent 用户下配置; 完成后无需手工 export:

sudo -iu eva-agent
cd /data/eva-agent/EVA
opencode providers login
bash run_agent.sh

run_agent.sh 会自动读取生成的部署环境并连接外部 resident Harness;无参数时进入 OpenCode 交互界面,用户选择 eva-optimizer 即可。完整参数、 NPU 设备组和前置条件见 SUBMISSION.md 及 详细的 UID/GID、socket、设备隔离和回退参数见 eva-agent/docs/colocated_harness_deployment.md

证据边界与当前状态

  • 正式 benchmark 数字必须来自官方 worker 的 raw JSON、Harness receipt 和精确 artifact 路径;README 中的 1475.66 仅对应已保存的 2026-08-07 full run。
  • Evidence Graph 的 offline contract、静态 fixture 和历史 profiling 只能说明流程或假设,不能替代真实 NPU 测量。
  • Agent 新候选必须通过 formal candidate certificate、correctness、性能和至少一次独立 worker job revalidation,才能宣称“Agent 新发现的加速”。
  • 项目当前没有进行基础模型训练或参数微调;README、报告和答辩材料不虚构训练数据、loss 或微调收益。
  • benchmark_results/agent_evidence_20260809/ 提供最新结果表、Agent 搜索阶梯、raw receipt、运行检查和逐文件 SHA-256 manifest,适合作为复核入口。

项目目录

仓库/
├── .opencode/                         # eva-optimizer prompt 和 Campaign domain tool
├── submission/                        # 13 个官方算子入口与 custom OPP
│   ├── t1/                            # 基础算子
│   ├── t2/                            # 融合、量化、MoE、RoPE
│   ├── t3/                            # causal conv1d、MLA、LayerNorm Gated
│   └── custom_ops/                    # AscendC/TBE/CANN OPP 与 ACLNN bridge
├── eva-agent/                         # Campaign、Harness client、Evidence Graph、tests
├── ascend910b-kernelwiki/             # case card、pattern、guide、正负证据和索引
├── benchmark_results/                 # raw JSON、receipt、profile、搜索过程和图表
├── docs/                              # 最终 PDF、PPTX 与必要 SVG 图形资产
└── SUBMISSION.md                      # 提交入口与打包说明

进一步阅读

关于

EVA: Evidence-driven Verifiable Agent

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

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