AscendProfileAnalysisBench
收藏资源简介:
# Ascend Profile Analysis Bench(Harbor 数据集) 基于 [Harbor 评测框架](https://www.harborframework.com/) 的 Ascend **Profiling 性能数据分析能力**测评数据集。 被测对象为 agent:给定 profiling 数据(**不附带任何 skill/参考文档**),要求其定位瓶颈、找出具体问题原因、给出证据与优化建议——考察 agent 本体对数据的理解、分析与推理能力。 - 故障模式来源:[Ascend/msagent issue 258 性能故障模式库](https://gitcode.com/Ascend/msagent/issues/258)(95 种模式,任务逐一构造中) - 当前已构造 task:`0001-high-freq-small-ops`(高频小算子下发,issue 258 #32) - 开发工具(adapter/沙箱/场景生成脚本等)在 msagent 仓库 `tests/benchmark_harbor/`,本仓库是数据集唯一数据源 ## 目录结构 ```text AscendProfileAnalysisBench/ # 本仓库 = Harbor dataset 根 ├── README.md # 本文档 ├── EXTENSION_GUIDE.md # 新增/拓展 task 的指导(唯一版本) ├── task-registry.csv # 95 故障模式映射表(编号/名称/类别/状态/task id) ├── .gitattributes # LFS 规则(*.db *.csv *.json *.bin *.data) └── tasks/<NNNN>-<fault_mode_id>/ # 每子目录一个 task(Harbor 格式) ├── task.toml # 元数据(名称/难度/超时/资源) ├── instruction.md # 给被测 agent 的任务书(无约束原则) ├── environment/input_data/ # 裁剪后的 profiling 数据(ASCEND_PROFILER_OUTPUT 原样等) ├── solution/ # 标准答案(ground_truth.json + reference_report.md) └── tests/ # verifier(test.sh + check_metrics.py + judge_prompt.md) ``` ## 运行(Harbor) ```bash # 直接从本数据集仓库跑(GitTaskId,自动 LFS 拉取) harbor run -a msagent -m deepseek-chat \ -d https://www.modelscope.cn/datasets/kali20gakki/AscendProfileAnalysisBench.git \ -e docker --ve DEEPSEEK_API_KEY=... ``` ## 评分机制(verifier) 每个 task 的 `tests/` 为双层校验: 1. **确定性硬门槛**(`test.sh` + `check_metrics.py`,无 LLM 依赖): - 报告存在且结构完整; - 结论关键词(如 `Host Bound` / `高频小算子下发`、`Free`); - **指标一致性**:从 `ASCEND_PROFILER_OUTPUT` 独立重算关键指标,与 agent 报告数值比对 (±15% 容差),拦截编造证据。 2. **可选 LLM-as-judge**(`tests/judge_prompt.md` rubric,0-5 分,用于语义评分/复盘)。 reward 合成(0001):硬门槛失败 → 0;否则 `0.6 × 指标一致性得分 + 0.4`(参考解 ≈1、错误解 ≈0)。 ## 预期测评结果 以下为 `0001-high-freq-small-ops` 任务的预期结果形态(reward 为 verifier 校准实测值)。 ### Agent 交付物(`/workspace/report.json`,参考解示例) ```json { "conclusion": "存在性能瓶颈,类型为 Host Bound(Host 侧下发瓶颈)", "root_cause": "高频小算子下发:1 个采集 step 内下发 3401 个极小 kernel,Host 下发开销主导,NPU 空闲", "evidence": [ "step_trace_time.csv: Free 占比 97.1%,Computing 2.4%", "api_statistic.csv: aclrtLaunchKernelWithHostArgs 3401 次" ], "metrics": {"free_ratio_pct": 97.1, "kernel_launch_count": 3401, "communication_time_us": 0}, "recommendations": ["算子融合/图模式降低 launch 次数", "TASK_QUEUE_ENABLE=2"], "confidence": 0.9 } ``` ### Verifier 判定(`/logs/verifier/reward.json`) 参考解(指标全部与数据独立重算一致)→ `reward = 1.0`: ```json { "reward": 1.0, "detail": { "metrics_score": 1.0, "metric_weight": 0.6, "checks": { "free_ratio_pct": {"expected": 97.06, "reported": 97.1, "pass": true}, "kernel_launch_count": {"expected": 3401, "reported": 3401, "pass": true}, "total_op_count": {"expected": 3401, "reported": 3401, "pass": true}, "communication_time_us": {"expected": 0.0, "reported": 0.0, "pass": true}, "avg_add_us": {"expected": 0.901, "reported": 0.901, "pass": true}, "avg_mul_us": {"expected": 0.889, "reported": 0.889, "pass": true}, "avg_relu_us": {"expected": 0.786, "reported": 0.786, "pass": true}, "avg_matmulv2_us": {"expected": 1.312, "reported": 1.312, "pass": true}, "top_op_matmulv2_ratio_pct":{"expected": 21.671, "reported": 21.671, "pass": true} } } } ``` 错误解(结论写成通信瓶颈、数值编造)→ 关键词门槛直接判 `0`: ```json {"reward": 0.0, "reason": "keyword gate failed (bottleneck type or Free evidence missing)"} ``` ### 结果解读 | 情况 | reward | 说明 | | --- | --- | --- | | 结论正确 + 指标全部一致(参考解) | **1.0** | 9/9 指标通过 | | 结论正确但未提供结构化指标(仅 report.md) | 0.4–0.9 | 正则尽力提取,按命中比例计分 | | 结论正确但数值编造/偏差超 ±15% | 0.4–0.9 | 指标一致性检查扣分(拦截"看似正确实则编造") | | 结论错误 / 未识别 Host Bound / 无 Free 证据 | **0.0** | 关键词硬门槛拦截 | ### 完整运行产物 `harbor run` 之后,job 目录包含: - `trajectory.json`:ATIF 轨迹,每步含 `step_id`(对话轮数)、`timestamp`(耗时)、`metrics`(token 消耗); - `reward.json`:上述 verifier 判定; - agent 的 `report.md|json` 与 msagent events jsonl(过程可审计)。 跨 task 聚合时以各 task `reward` 的均值为整体得分(后续可挂 Harbor leaderboard 对比不同 agent/模型)。 ## 效率指标(token / 耗时 / 对话轮数) Harbor 原生支持:token(`Step.metrics`)、耗时(`Step.timestamp` + job 级)、对话轮数(`Step.step_id`)。 ## 新增 / 拓展 task 按 [EXTENSION_GUIDE.md](EXTENSION_GUIDE.md) 的"新增 task 五步"执行,新增后提交推送本仓库。



