feat: publish current EVA repository
本项目面向 Ascend 910B/CANN,研究如何让 Agent 在多个 DSL、多个搜索层级和多轮实验中持续生成、验证和改进高性能算子。Agent 负责理解算子语义与硬件事实、提出可证伪的优化假设、选择搜索路线并编写候选;Harness 负责受控构建、正确性验证、性能测量和 profiling;KernelWiki 保存跨任务可复用的正负经验;Evidence Graph 绑定当前任务的事实、假设、候选和实现 digest。
项目的核心不是“一次生成一个 kernel”,而是让 Agent 在多个 DSL、多个搜索层级和多轮实验中持续回答三个问题:
完整技术方案、实验口径和知识库章节见 项目报告 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、性能和独立复测,不能直接沿用上述分数。
submission/
逐算子结果如下:
t1/fused_silu_and_mul
t1/gelu
t1/matmul_basic
t1/matmul_biasadd
t1/sigmoid_scale_sum
t1/softmax
t2/add_rmsnorm_cast
t2/add_rmsnorm_quant
t2/moe_topk_softmax
t2/rope
t3/causal_conv1d
t3/decode_mla
t3/layernorm_gated
一次优化循环可以概括为:
算子语义/约束 + KernelWiki 先验 ↓ Agent 读取事实并形成 hypothesis ↓ route → structure → algorithm/numeric path → schedule → parameter ↓ 候选封存(implementation digest) ↓ Harness:build → correctness → benchmark → profiling / probe ↓ Evidence Graph 记录事实和解释,KernelWiki 暂存可复用经验 ↺
搜索不是固定参数的盲目枚举。候选池通常同时包含三类动作:
exploit
contrast
escape
编译、NPU 执行和正式测量由 Harness 串行控制。编译失败、环境/设备故障、correctness 失败和性能退化分别记录;基础设施故障是删失样本,不能被 Agent 当作性能结论。候选只有在正确性和证据门禁通过后,才可以成为新的 verified best;finalize 还会检查独立复测、profile digest 绑定和 required sibling 是否处理完毕。
finalize
.opencode/agents/eva-optimizer.md
eva-agent/agent/
.opencode/tools/eva_campaign.ts
eva-agent/agent/harness_socket.py
eva-agent/agent/infra/
eva-agent/agent/evidence/
ascend910b-kernelwiki/
eva-agent/agent/knowledge.py
正式部署至少使用两个 Unix 身份:OpenCode/Agent 用户不能写设备、官方 benchmark 或 Harness-owned 结果;eva-harness 用户独占设备锁、构建、profiling、benchmark 和签名 receipt。Unix socket 使用 SO_PEERCRED,输入快照带 SHA-256,结果树和 receipt 绑定到精确 implementation digest。local-worker 和 inline 仅用于 bring-up 或离线开发,不能产生正式硬件性能证明。
eva-harness
SO_PEERCRED
local-worker
inline
最终实现按证据选择后端,而不是强制所有算子使用同一种 DSL:
fused_silu_and_mul
softmax
add_rmsnorm_cast
gelu
matmul_basic
sigmoid_scale_sum
add_rmsnorm_quant
rope
causal_conv1d
layernorm_gated
torch_npu
moe_topk_softmax
matmul_biasadd
decode_mla
submission/custom_ops/ 保存随提交打包的 OPP 注册文件、主机侧 ACLNN 接口库、tiling 库和 Ascend 910B kernel 目标文件。任务模块会在导入 torch_npu 前自动配置 ASCEND_CUSTOM_OPP_PATH,通常不需要手动导出该变量;自定义 OPP 无法加载时,部分入口会回退到语义正确的 PyTorch 表达式。
submission/custom_ops/
ASCEND_CUSTOM_OPP_PATH
各任务的后端、数据流和主要优化方法见 operator_inventory.md。
KernelWiki 是跨 Campaign 的长期记忆,包含:
Agent 先根据 case、backend、hardware 和当前 hypothesis 检索 KernelWiki,编译为带条件和 knowledge_refs 的 KnowledgeContract;候选通过 Harness 后,结果进入 task-local Evidence Graph。只有经过复现、correctness、环境和 provenance 审核的经验,才从 semantic_staging 进入长期知识库。知识库不是事实权威:真实测量和签名 receipt 仍由 Harness 产生,离线 contract 也不能冒充 910B 性能证明。
knowledge_refs
KnowledgeContract
semantic_staging
知识库章节的完整说明保留在本地 eva-agent/docs/competition/knowledge_base_chapter.md,该竞赛材料目录不随提交包发布;查询索引和校验脚本位于 ascend910b-kernelwiki/。
eva-agent/docs/competition/knowledge_base_chapter.md
新服务器的环境准备、代码版本固定、官方 benchmark、OPP 加载、resident Harness、Agent Campaign、离线 contract demo 和结果核对统一写在 SUBMISSION.md。
新服务器只需要预先具备 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 即可开始优化。
br_agents
.eva-runtime/cann-ops
.opencode
.eva-runtime/
eva-optimizer
也可以直接交给 Agent 一个任务,跳过交互选择:
bash start.sh "优化 t2/rope 算子性能"
该默认入口是同 UID bring-up,适合新服务器快速运行 Agent;它不声称正式双用户权限隔离 或 competition-grade hardware certificate。脚本不会代替管理员安装 OpenCode、模型账号、 Ascend 驱动或 CANN 运行时。
需要正式双用户部署时,再以管理员执行 setup_dual_user.sh。它会创建 eva-agent、 eva-harness 和专用 socket 组,生成只读 release、Harness worker 目录、签名密钥和 eva-harness.service,并自动生成 /etc/eva-agent/env。模型凭据仍只在 eva-agent 用户下配置; 完成后无需手工 export:
setup_dual_user.sh
eva-agent
eva-harness.service
/etc/eva-agent/env
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。
run_agent.sh
eva-agent/docs/colocated_harness_deployment.md
benchmark_results/agent_evidence_20260809/
仓库/ ├── .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-agent/docs/competition/
EVA: Evidence-driven Verifiable Agent
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
多DSL自主寻优的昇腾算子生成Agent
本项目面向 Ascend 910B/CANN,研究如何让 Agent 在多个 DSL、多个搜索层级和多轮实验中持续生成、验证和改进高性能算子。Agent 负责理解算子语义与硬件事实、提出可证伪的优化假设、选择搜索路线并编写候选;Harness 负责受控构建、正确性验证、性能测量和 profiling;KernelWiki 保存跨任务可复用的正负经验;Evidence Graph 绑定当前任务的事实、假设、候选和实现 digest。
项目的核心不是“一次生成一个 kernel”,而是让 Agent 在多个 DSL、多个搜索层级和多轮实验中持续回答三个问题:
完整技术方案、实验口径和知识库章节见 项目报告 PDF。报告源稿和内部知识库章节保留在本地开发目录,不随提交包发布;新服务器的完整复现步骤统一放在 SUBMISSION.md。
最新可核验结果
仓库中最新保存的正式全量 benchmark receipt 来自 2026-08-07 的 Ascend 910B2C / CANN 9.0.0,使用官方 full runner(warmup 10、iterations 100、3 trials):
结果来源:benchmark_results/agent_evidence_20260809/,原始数据位于 raw/eva_worker.json。这是已经保存的远端官方 worker 结果,不是当前 shell 现场重新跑出的 NPU 结果。当前工作区若继续修改
submission/或 Agent 代码,必须针对新的 implementation digest 重新完成 correctness、性能和独立复测,不能直接沿用上述分数。逐算子结果如下:
t1/fused_silu_and_mult1/gelut1/matmul_basict1/matmul_biasaddt1/sigmoid_scale_sumt1/softmaxt2/add_rmsnorm_castt2/add_rmsnorm_quantt2/moe_topk_softmaxt2/ropet3/causal_conv1dt3/decode_mlat3/layernorm_gated方法概览
一次优化循环可以概括为:
搜索不是固定参数的盲目枚举。候选池通常同时包含三类动作:
exploit:在当前结构中调整 tile、ring、双缓冲、事件和参数;contrast:在同一 DSL 中改变数据流、归约树或中间张量组织;escape:切换结构族或 DSL route。编译、NPU 执行和正式测量由 Harness 串行控制。编译失败、环境/设备故障、correctness 失败和性能退化分别记录;基础设施故障是删失样本,不能被 Agent 当作性能结论。候选只有在正确性和证据门禁通过后,才可以成为新的 verified best;
finalize还会检查独立复测、profile digest 绑定和 required sibling 是否处理完毕。组件与职责
.opencode/agents/eva-optimizer.mdeva-agent/agent/.opencode/tools/eva_campaign.tseva-agent/agent/harness_socket.py、eva-agent/agent/infra/eva-agent/agent/evidence/ascend910b-kernelwiki/、eva-agent/agent/knowledge.pysubmission/正式部署至少使用两个 Unix 身份:OpenCode/Agent 用户不能写设备、官方 benchmark 或 Harness-owned 结果;
eva-harness用户独占设备锁、构建、profiling、benchmark 和签名 receipt。Unix socket 使用SO_PEERCRED,输入快照带 SHA-256,结果树和 receipt 绑定到精确 implementation digest。local-worker和inline仅用于 bring-up 或离线开发,不能产生正式硬件性能证明。Submission:13 个算子与多后端组合
最终实现按证据选择后端,而不是强制所有算子使用同一种 DSL:
fused_silu_and_mul、softmax、add_rmsnorm_castgelu、matmul_basic、sigmoid_scale_sum、add_rmsnorm_quant、rope、causal_conv1d、layernorm_gatedtorch_npu融合算子moe_topk_softmaxmatmul_biasadd、decode_mlasubmission/custom_ops/保存随提交打包的 OPP 注册文件、主机侧 ACLNN 接口库、tiling 库和 Ascend 910B kernel 目标文件。任务模块会在导入torch_npu前自动配置ASCEND_CUSTOM_OPP_PATH,通常不需要手动导出该变量;自定义 OPP 无法加载时,部分入口会回退到语义正确的 PyTorch 表达式。各任务的后端、数据流和主要优化方法见 operator_inventory.md。
KernelWiki 与 Evidence Graph
KernelWiki 是跨 Campaign 的长期记忆,包含:
Agent 先根据 case、backend、hardware 和当前 hypothesis 检索 KernelWiki,编译为带条件和
knowledge_refs的KnowledgeContract;候选通过 Harness 后,结果进入 task-local Evidence Graph。只有经过复现、correctness、环境和 provenance 审核的经验,才从semantic_staging进入长期知识库。知识库不是事实权威:真实测量和签名 receipt 仍由 Harness 产生,离线 contract 也不能冒充 910B 性能证明。知识库章节的完整说明保留在本地
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、公钥等配置。直接执行:脚本会自动发现并加载 CANN 环境,选择带
torch_npu的 Python,拉取或复用官方br_agentsbenchmark;如果本机没有可用的 CANN ops 源码,也会自动拉取到.eva-runtime/cann-ops,供 AscendC 候选受控编译。随后安装 EVA/AKG Agents 与.opencodedomain-tool 依赖,创建.eva-runtime/、Ed25519 key 和 Unix-socket Harness,并把所有路径注入当前 OpenCode 进程。 随后 OpenCode 以交互模式启动,用户只需选择eva-optimizerAgent 即可开始优化。也可以直接交给 Agent 一个任务,跳过交互选择:
该默认入口是同 UID bring-up,适合新服务器快速运行 Agent;它不声称正式双用户权限隔离 或 competition-grade hardware certificate。脚本不会代替管理员安装 OpenCode、模型账号、 Ascend 驱动或 CANN 运行时。
可选:正式双用户证据部署
需要正式双用户部署时,再以管理员执行
setup_dual_user.sh。它会创建eva-agent、eva-harness和专用 socket 组,生成只读 release、Harness worker 目录、签名密钥和eva-harness.service,并自动生成/etc/eva-agent/env。模型凭据仍只在eva-agent用户下配置; 完成后无需手工 export:run_agent.sh会自动读取生成的部署环境并连接外部 resident Harness;无参数时进入 OpenCode 交互界面,用户选择eva-optimizer即可。完整参数、 NPU 设备组和前置条件见 SUBMISSION.md 及 详细的 UID/GID、socket、设备隔离和回退参数见eva-agent/docs/colocated_harness_deployment.md。证据边界与当前状态
benchmark_results/agent_evidence_20260809/提供最新结果表、Agent 搜索阶梯、raw receipt、运行检查和逐文件 SHA-256 manifest,适合作为复核入口。项目目录
进一步阅读
eva-agent/docs/competition/(不随提交包发布)