From b76509a9ab2348643b45557ff99d49914b7f2a57 Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Tue, 19 May 2026 10:20:27 +0800 Subject: [PATCH 1/7] docs: add PTOAS usability evaluation skill --- .codex/skills/ptoas-usability-eval/SKILL.md | 62 ++++++++++ .../ptoas-usability-eval/agents/openai.yaml | 4 + .../references/evidence-checklist.md | 59 ++++++++++ .../references/metrics-01.md | 107 ++++++++++++++++++ .../references/metrics-04.md | 83 ++++++++++++++ .../ptoas-usability-eval/references/scope.md | 46 ++++++++ 6 files changed, 361 insertions(+) create mode 100644 .codex/skills/ptoas-usability-eval/SKILL.md create mode 100644 .codex/skills/ptoas-usability-eval/agents/openai.yaml create mode 100644 .codex/skills/ptoas-usability-eval/references/evidence-checklist.md create mode 100644 .codex/skills/ptoas-usability-eval/references/metrics-01.md create mode 100644 .codex/skills/ptoas-usability-eval/references/metrics-04.md create mode 100644 .codex/skills/ptoas-usability-eval/references/scope.md diff --git a/.codex/skills/ptoas-usability-eval/SKILL.md b/.codex/skills/ptoas-usability-eval/SKILL.md new file mode 100644 index 000000000..51ae01839 --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/SKILL.md @@ -0,0 +1,62 @@ +--- +name: ptoas-usability-eval +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +--- + +# PTOAS Usability Eval + +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 + +## 默认范围 + +- 默认按 `01 算子复现部署` 评估。 +- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 +- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 +- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 + +先读 [references/scope.md](references/scope.md) 确认映射边界。 + +## 证据来源 + +优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 + +高优先级证据: +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` +- `test/samples/*/README.md` +- `.github/workflows/ci.yml` + +## 工作流 + +1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +6. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 +7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 + +## 计量规则 + +- `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 +- `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 +- `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 +- `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 + +## 输出格式 + +按下面顺序输出: + +1. `评估范围` +2. `分项评分` +3. `关键证据` +4. `主要短板` +5. `建议动作` + +如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 diff --git a/.codex/skills/ptoas-usability-eval/agents/openai.yaml b/.codex/skills/ptoas-usability-eval/agents/openai.yaml new file mode 100644 index 000000000..d433429b1 --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "PTOAS Usability Eval" + short_description: "评估 PTOAS 在 01/04 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." diff --git a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md new file mode 100644 index 000000000..ca7f7b24e --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -0,0 +1,59 @@ +# 证据清单 + +## 固定证据入口 + +| 路径 | 主要用途 | 对应场景 | +| --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | + +## 推荐检索顺序 + +1. `README.md` +2. `docs/no_npu_compile_only_guide_zh.md` +3. `test/samples/MatMul/` +4. `test/samples/runop.sh` +5. `test/npu_validation/scripts/*.py` / `*.sh` +6. `.github/workflows/ci.yml` +7. 按具体样例目录补读 `test/samples/*/README.md` + +## 推荐检索命令 + +```bash +rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg --files test/samples +find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) +``` + +## 记录要求 + +每个评分项至少要落这些证据字段: + +- `证据路径` +- `检索/执行命令` +- `检索轮次` +- `文档跳转次数` +- `耗时` +- `结果` +- `评分` +- `备注` + +## 默认样例 + +若用户没有指定具体算子或样例,优先使用: + +- `test/samples/MatMul/tmatmulk.py` +- `test/samples/MatMul/tmatmulk.pto` +- `test/samples/Addc/addc.py` +- `test/samples/Qwen3DecodeA3/` +- `test/samples/Qwen3DecodeA5/` + +理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-01.md b/.codex/skills/ptoas-usability-eval/references/metrics-01.md new file mode 100644 index 000000000..b310f1e8b --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/metrics-01.md @@ -0,0 +1,107 @@ +# `01 算子复现部署` 指标 + +默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 + +## 默认任务模板 + +若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: + +```bash +python3 test/samples/MatMul/tmatmulk.py > /tmp/tmatmulk.pto +./build/tools/ptoas/ptoas /tmp/tmatmulk.pto -o /tmp/tmatmulk.cpp +``` + +需要无卡 compile-only 时,继续参考: + +```bash +python3 test/npu_validation/scripts/generate_testcase.py \ + --input /tmp/tmatmulk.cpp \ + --run-mode npu \ + --soc-version Ascend910 +``` + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 易部署 + +### 环境下载 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 + +### 环境安装 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 环境校验 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐最小校验命令: + +```bash +./build/tools/ptoas/ptoas --version +python3 -c "from mlir.dialects import pto; print('ok')" +``` + +## 易开发、易演进 + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐记录字段: + +- 使用的样例路径 +- 实际命令 +- 是否需要改环境变量 +- 首次是否成功 +- 报错是否可定位 + +## 何时记 `N/A` + +`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: + +- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 +- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 + +此时保留定性结论,但不要伪造数值分数。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-04.md b/.codex/skills/ptoas-usability-eval/references/metrics-04.md new file mode 100644 index 000000000..d4143ec4c --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/metrics-04.md @@ -0,0 +1,83 @@ +# `04 算子基本功能实现` 的 PTOAS 子集指标 + +这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 + +## 纳入打分的子项 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 学习/理解示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | + +说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | + +### 编译配置 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | + +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 + +### 算子工程编译 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 功能调测 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 默认排除项 + +这些在 PTOAS 仓库里默认不打分,直接标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 + +如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 diff --git a/.codex/skills/ptoas-usability-eval/references/scope.md b/.codex/skills/ptoas-usability-eval/references/scope.md new file mode 100644 index 000000000..c9ddcc60d --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/scope.md @@ -0,0 +1,46 @@ +# PTOAS 评估范围映射 + +## 六大场景映射 + +| 场景 | 结论 | 处理方式 | 原因 | +| --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | +| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | +| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | +| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | +| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | + +## `04 算子基本功能实现` 中纳入的子项 + +只纳入这些与 PTOAS 仓库直接对应的部分: + +- 文档获取 +- 文档学习 +- 获取示例代码 +- 学习/理解示例代码 +- 运行示例代码 +- 编译配置 +- 算子工程编译 +- 功能调测里的运行反馈/验证 + +这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 + +## `04` 中默认排除的子项 + +默认标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 +- 面向业务工程的完整迭代闭环 + +原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 + +## 使用原则 + +- 如果用户没有特别说明,直接按 `01` 做主评估。 +- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 +- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 From dd6995ddb1ebff5ced6c7f97145639d545781027 Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Tue, 19 May 2026 10:39:09 +0800 Subject: [PATCH 2/7] docs: add multi-client PTOAS skill entrypoints --- .claude/skills/ptoas-usability-eval/README.md | 14 +++ .claude/skills/ptoas-usability-eval/SKILL.md | 62 ++++++++++ .../ptoas-usability-eval/agents/openai.yaml | 4 + .../references/evidence-checklist.md | 59 ++++++++++ .../references/metrics-01.md | 107 ++++++++++++++++++ .../references/metrics-04.md | 83 ++++++++++++++ .../ptoas-usability-eval/references/scope.md | 46 ++++++++ .codex/skills/ptoas-usability-eval/README.md | 14 +++ .cursor/skills/ptoas-usability-eval/README.md | 14 +++ .cursor/skills/ptoas-usability-eval/SKILL.md | 62 ++++++++++ .../ptoas-usability-eval/agents/openai.yaml | 4 + .../references/evidence-checklist.md | 59 ++++++++++ .../references/metrics-01.md | 107 ++++++++++++++++++ .../references/metrics-04.md | 83 ++++++++++++++ .../ptoas-usability-eval/references/scope.md | 46 ++++++++ .trae/skills/ptoas-usability-eval/README.md | 14 +++ .trae/skills/ptoas-usability-eval/SKILL.md | 62 ++++++++++ .../ptoas-usability-eval/agents/openai.yaml | 4 + .../references/evidence-checklist.md | 59 ++++++++++ .../references/metrics-01.md | 107 ++++++++++++++++++ .../references/metrics-04.md | 83 ++++++++++++++ .../ptoas-usability-eval/references/scope.md | 46 ++++++++ skills/ptoas-usability-eval/README.md | 14 +++ skills/ptoas-usability-eval/SKILL.md | 62 ++++++++++ .../ptoas-usability-eval/agents/openai.yaml | 4 + .../references/evidence-checklist.md | 59 ++++++++++ .../references/metrics-01.md | 107 ++++++++++++++++++ .../references/metrics-04.md | 83 ++++++++++++++ .../ptoas-usability-eval/references/scope.md | 46 ++++++++ 29 files changed, 1514 insertions(+) create mode 100644 .claude/skills/ptoas-usability-eval/README.md create mode 100644 .claude/skills/ptoas-usability-eval/SKILL.md create mode 100644 .claude/skills/ptoas-usability-eval/agents/openai.yaml create mode 100644 .claude/skills/ptoas-usability-eval/references/evidence-checklist.md create mode 100644 .claude/skills/ptoas-usability-eval/references/metrics-01.md create mode 100644 .claude/skills/ptoas-usability-eval/references/metrics-04.md create mode 100644 .claude/skills/ptoas-usability-eval/references/scope.md create mode 100644 .codex/skills/ptoas-usability-eval/README.md create mode 100644 .cursor/skills/ptoas-usability-eval/README.md create mode 100644 .cursor/skills/ptoas-usability-eval/SKILL.md create mode 100644 .cursor/skills/ptoas-usability-eval/agents/openai.yaml create mode 100644 .cursor/skills/ptoas-usability-eval/references/evidence-checklist.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/metrics-01.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/metrics-04.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/scope.md create mode 100644 .trae/skills/ptoas-usability-eval/README.md create mode 100644 .trae/skills/ptoas-usability-eval/SKILL.md create mode 100644 .trae/skills/ptoas-usability-eval/agents/openai.yaml create mode 100644 .trae/skills/ptoas-usability-eval/references/evidence-checklist.md create mode 100644 .trae/skills/ptoas-usability-eval/references/metrics-01.md create mode 100644 .trae/skills/ptoas-usability-eval/references/metrics-04.md create mode 100644 .trae/skills/ptoas-usability-eval/references/scope.md create mode 100644 skills/ptoas-usability-eval/README.md create mode 100644 skills/ptoas-usability-eval/SKILL.md create mode 100644 skills/ptoas-usability-eval/agents/openai.yaml create mode 100644 skills/ptoas-usability-eval/references/evidence-checklist.md create mode 100644 skills/ptoas-usability-eval/references/metrics-01.md create mode 100644 skills/ptoas-usability-eval/references/metrics-04.md create mode 100644 skills/ptoas-usability-eval/references/scope.md diff --git a/.claude/skills/ptoas-usability-eval/README.md b/.claude/skills/ptoas-usability-eval/README.md new file mode 100644 index 000000000..d7a605627 --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/README.md @@ -0,0 +1,14 @@ +# PTOAS Usability Eval Skill + +这是 PTOAS 仓库内的通用 Skill 源目录。 + +支持的客户端入口: +- Codex: `.codex/skills/ptoas-usability-eval/` +- Cursor: `.cursor/skills/ptoas-usability-eval/` +- Trae: `.trae/skills/ptoas-usability-eval/` +- Claude Code: `.claude/skills/ptoas-usability-eval/` + +约定: +- `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 +- 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 +- 修改 Skill 内容时,应同步更新上述四个客户端目录 diff --git a/.claude/skills/ptoas-usability-eval/SKILL.md b/.claude/skills/ptoas-usability-eval/SKILL.md new file mode 100644 index 000000000..51ae01839 --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/SKILL.md @@ -0,0 +1,62 @@ +--- +name: ptoas-usability-eval +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +--- + +# PTOAS Usability Eval + +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 + +## 默认范围 + +- 默认按 `01 算子复现部署` 评估。 +- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 +- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 +- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 + +先读 [references/scope.md](references/scope.md) 确认映射边界。 + +## 证据来源 + +优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 + +高优先级证据: +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` +- `test/samples/*/README.md` +- `.github/workflows/ci.yml` + +## 工作流 + +1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +6. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 +7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 + +## 计量规则 + +- `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 +- `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 +- `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 +- `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 + +## 输出格式 + +按下面顺序输出: + +1. `评估范围` +2. `分项评分` +3. `关键证据` +4. `主要短板` +5. `建议动作` + +如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 diff --git a/.claude/skills/ptoas-usability-eval/agents/openai.yaml b/.claude/skills/ptoas-usability-eval/agents/openai.yaml new file mode 100644 index 000000000..d433429b1 --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "PTOAS Usability Eval" + short_description: "评估 PTOAS 在 01/04 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." diff --git a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md new file mode 100644 index 000000000..ca7f7b24e --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -0,0 +1,59 @@ +# 证据清单 + +## 固定证据入口 + +| 路径 | 主要用途 | 对应场景 | +| --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | + +## 推荐检索顺序 + +1. `README.md` +2. `docs/no_npu_compile_only_guide_zh.md` +3. `test/samples/MatMul/` +4. `test/samples/runop.sh` +5. `test/npu_validation/scripts/*.py` / `*.sh` +6. `.github/workflows/ci.yml` +7. 按具体样例目录补读 `test/samples/*/README.md` + +## 推荐检索命令 + +```bash +rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg --files test/samples +find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) +``` + +## 记录要求 + +每个评分项至少要落这些证据字段: + +- `证据路径` +- `检索/执行命令` +- `检索轮次` +- `文档跳转次数` +- `耗时` +- `结果` +- `评分` +- `备注` + +## 默认样例 + +若用户没有指定具体算子或样例,优先使用: + +- `test/samples/MatMul/tmatmulk.py` +- `test/samples/MatMul/tmatmulk.pto` +- `test/samples/Addc/addc.py` +- `test/samples/Qwen3DecodeA3/` +- `test/samples/Qwen3DecodeA5/` + +理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-01.md b/.claude/skills/ptoas-usability-eval/references/metrics-01.md new file mode 100644 index 000000000..b310f1e8b --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/metrics-01.md @@ -0,0 +1,107 @@ +# `01 算子复现部署` 指标 + +默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 + +## 默认任务模板 + +若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: + +```bash +python3 test/samples/MatMul/tmatmulk.py > /tmp/tmatmulk.pto +./build/tools/ptoas/ptoas /tmp/tmatmulk.pto -o /tmp/tmatmulk.cpp +``` + +需要无卡 compile-only 时,继续参考: + +```bash +python3 test/npu_validation/scripts/generate_testcase.py \ + --input /tmp/tmatmulk.cpp \ + --run-mode npu \ + --soc-version Ascend910 +``` + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 易部署 + +### 环境下载 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 + +### 环境安装 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 环境校验 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐最小校验命令: + +```bash +./build/tools/ptoas/ptoas --version +python3 -c "from mlir.dialects import pto; print('ok')" +``` + +## 易开发、易演进 + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐记录字段: + +- 使用的样例路径 +- 实际命令 +- 是否需要改环境变量 +- 首次是否成功 +- 报错是否可定位 + +## 何时记 `N/A` + +`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: + +- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 +- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 + +此时保留定性结论,但不要伪造数值分数。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-04.md b/.claude/skills/ptoas-usability-eval/references/metrics-04.md new file mode 100644 index 000000000..d4143ec4c --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/metrics-04.md @@ -0,0 +1,83 @@ +# `04 算子基本功能实现` 的 PTOAS 子集指标 + +这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 + +## 纳入打分的子项 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 学习/理解示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | + +说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | + +### 编译配置 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | + +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 + +### 算子工程编译 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 功能调测 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 默认排除项 + +这些在 PTOAS 仓库里默认不打分,直接标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 + +如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 diff --git a/.claude/skills/ptoas-usability-eval/references/scope.md b/.claude/skills/ptoas-usability-eval/references/scope.md new file mode 100644 index 000000000..c9ddcc60d --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/scope.md @@ -0,0 +1,46 @@ +# PTOAS 评估范围映射 + +## 六大场景映射 + +| 场景 | 结论 | 处理方式 | 原因 | +| --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | +| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | +| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | +| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | +| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | + +## `04 算子基本功能实现` 中纳入的子项 + +只纳入这些与 PTOAS 仓库直接对应的部分: + +- 文档获取 +- 文档学习 +- 获取示例代码 +- 学习/理解示例代码 +- 运行示例代码 +- 编译配置 +- 算子工程编译 +- 功能调测里的运行反馈/验证 + +这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 + +## `04` 中默认排除的子项 + +默认标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 +- 面向业务工程的完整迭代闭环 + +原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 + +## 使用原则 + +- 如果用户没有特别说明,直接按 `01` 做主评估。 +- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 +- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 diff --git a/.codex/skills/ptoas-usability-eval/README.md b/.codex/skills/ptoas-usability-eval/README.md new file mode 100644 index 000000000..d7a605627 --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/README.md @@ -0,0 +1,14 @@ +# PTOAS Usability Eval Skill + +这是 PTOAS 仓库内的通用 Skill 源目录。 + +支持的客户端入口: +- Codex: `.codex/skills/ptoas-usability-eval/` +- Cursor: `.cursor/skills/ptoas-usability-eval/` +- Trae: `.trae/skills/ptoas-usability-eval/` +- Claude Code: `.claude/skills/ptoas-usability-eval/` + +约定: +- `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 +- 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 +- 修改 Skill 内容时,应同步更新上述四个客户端目录 diff --git a/.cursor/skills/ptoas-usability-eval/README.md b/.cursor/skills/ptoas-usability-eval/README.md new file mode 100644 index 000000000..d7a605627 --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/README.md @@ -0,0 +1,14 @@ +# PTOAS Usability Eval Skill + +这是 PTOAS 仓库内的通用 Skill 源目录。 + +支持的客户端入口: +- Codex: `.codex/skills/ptoas-usability-eval/` +- Cursor: `.cursor/skills/ptoas-usability-eval/` +- Trae: `.trae/skills/ptoas-usability-eval/` +- Claude Code: `.claude/skills/ptoas-usability-eval/` + +约定: +- `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 +- 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 +- 修改 Skill 内容时,应同步更新上述四个客户端目录 diff --git a/.cursor/skills/ptoas-usability-eval/SKILL.md b/.cursor/skills/ptoas-usability-eval/SKILL.md new file mode 100644 index 000000000..51ae01839 --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/SKILL.md @@ -0,0 +1,62 @@ +--- +name: ptoas-usability-eval +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +--- + +# PTOAS Usability Eval + +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 + +## 默认范围 + +- 默认按 `01 算子复现部署` 评估。 +- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 +- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 +- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 + +先读 [references/scope.md](references/scope.md) 确认映射边界。 + +## 证据来源 + +优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 + +高优先级证据: +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` +- `test/samples/*/README.md` +- `.github/workflows/ci.yml` + +## 工作流 + +1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +6. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 +7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 + +## 计量规则 + +- `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 +- `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 +- `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 +- `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 + +## 输出格式 + +按下面顺序输出: + +1. `评估范围` +2. `分项评分` +3. `关键证据` +4. `主要短板` +5. `建议动作` + +如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 diff --git a/.cursor/skills/ptoas-usability-eval/agents/openai.yaml b/.cursor/skills/ptoas-usability-eval/agents/openai.yaml new file mode 100644 index 000000000..d433429b1 --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "PTOAS Usability Eval" + short_description: "评估 PTOAS 在 01/04 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." diff --git a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md new file mode 100644 index 000000000..ca7f7b24e --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -0,0 +1,59 @@ +# 证据清单 + +## 固定证据入口 + +| 路径 | 主要用途 | 对应场景 | +| --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | + +## 推荐检索顺序 + +1. `README.md` +2. `docs/no_npu_compile_only_guide_zh.md` +3. `test/samples/MatMul/` +4. `test/samples/runop.sh` +5. `test/npu_validation/scripts/*.py` / `*.sh` +6. `.github/workflows/ci.yml` +7. 按具体样例目录补读 `test/samples/*/README.md` + +## 推荐检索命令 + +```bash +rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg --files test/samples +find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) +``` + +## 记录要求 + +每个评分项至少要落这些证据字段: + +- `证据路径` +- `检索/执行命令` +- `检索轮次` +- `文档跳转次数` +- `耗时` +- `结果` +- `评分` +- `备注` + +## 默认样例 + +若用户没有指定具体算子或样例,优先使用: + +- `test/samples/MatMul/tmatmulk.py` +- `test/samples/MatMul/tmatmulk.pto` +- `test/samples/Addc/addc.py` +- `test/samples/Qwen3DecodeA3/` +- `test/samples/Qwen3DecodeA5/` + +理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md new file mode 100644 index 000000000..b310f1e8b --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md @@ -0,0 +1,107 @@ +# `01 算子复现部署` 指标 + +默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 + +## 默认任务模板 + +若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: + +```bash +python3 test/samples/MatMul/tmatmulk.py > /tmp/tmatmulk.pto +./build/tools/ptoas/ptoas /tmp/tmatmulk.pto -o /tmp/tmatmulk.cpp +``` + +需要无卡 compile-only 时,继续参考: + +```bash +python3 test/npu_validation/scripts/generate_testcase.py \ + --input /tmp/tmatmulk.cpp \ + --run-mode npu \ + --soc-version Ascend910 +``` + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 易部署 + +### 环境下载 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 + +### 环境安装 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 环境校验 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐最小校验命令: + +```bash +./build/tools/ptoas/ptoas --version +python3 -c "from mlir.dialects import pto; print('ok')" +``` + +## 易开发、易演进 + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐记录字段: + +- 使用的样例路径 +- 实际命令 +- 是否需要改环境变量 +- 首次是否成功 +- 报错是否可定位 + +## 何时记 `N/A` + +`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: + +- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 +- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 + +此时保留定性结论,但不要伪造数值分数。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md new file mode 100644 index 000000000..d4143ec4c --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md @@ -0,0 +1,83 @@ +# `04 算子基本功能实现` 的 PTOAS 子集指标 + +这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 + +## 纳入打分的子项 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 学习/理解示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | + +说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | + +### 编译配置 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | + +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 + +### 算子工程编译 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 功能调测 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 默认排除项 + +这些在 PTOAS 仓库里默认不打分,直接标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 + +如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 diff --git a/.cursor/skills/ptoas-usability-eval/references/scope.md b/.cursor/skills/ptoas-usability-eval/references/scope.md new file mode 100644 index 000000000..c9ddcc60d --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/scope.md @@ -0,0 +1,46 @@ +# PTOAS 评估范围映射 + +## 六大场景映射 + +| 场景 | 结论 | 处理方式 | 原因 | +| --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | +| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | +| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | +| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | +| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | + +## `04 算子基本功能实现` 中纳入的子项 + +只纳入这些与 PTOAS 仓库直接对应的部分: + +- 文档获取 +- 文档学习 +- 获取示例代码 +- 学习/理解示例代码 +- 运行示例代码 +- 编译配置 +- 算子工程编译 +- 功能调测里的运行反馈/验证 + +这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 + +## `04` 中默认排除的子项 + +默认标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 +- 面向业务工程的完整迭代闭环 + +原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 + +## 使用原则 + +- 如果用户没有特别说明,直接按 `01` 做主评估。 +- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 +- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 diff --git a/.trae/skills/ptoas-usability-eval/README.md b/.trae/skills/ptoas-usability-eval/README.md new file mode 100644 index 000000000..d7a605627 --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/README.md @@ -0,0 +1,14 @@ +# PTOAS Usability Eval Skill + +这是 PTOAS 仓库内的通用 Skill 源目录。 + +支持的客户端入口: +- Codex: `.codex/skills/ptoas-usability-eval/` +- Cursor: `.cursor/skills/ptoas-usability-eval/` +- Trae: `.trae/skills/ptoas-usability-eval/` +- Claude Code: `.claude/skills/ptoas-usability-eval/` + +约定: +- `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 +- 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 +- 修改 Skill 内容时,应同步更新上述四个客户端目录 diff --git a/.trae/skills/ptoas-usability-eval/SKILL.md b/.trae/skills/ptoas-usability-eval/SKILL.md new file mode 100644 index 000000000..51ae01839 --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/SKILL.md @@ -0,0 +1,62 @@ +--- +name: ptoas-usability-eval +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +--- + +# PTOAS Usability Eval + +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 + +## 默认范围 + +- 默认按 `01 算子复现部署` 评估。 +- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 +- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 +- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 + +先读 [references/scope.md](references/scope.md) 确认映射边界。 + +## 证据来源 + +优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 + +高优先级证据: +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` +- `test/samples/*/README.md` +- `.github/workflows/ci.yml` + +## 工作流 + +1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +6. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 +7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 + +## 计量规则 + +- `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 +- `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 +- `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 +- `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 + +## 输出格式 + +按下面顺序输出: + +1. `评估范围` +2. `分项评分` +3. `关键证据` +4. `主要短板` +5. `建议动作` + +如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 diff --git a/.trae/skills/ptoas-usability-eval/agents/openai.yaml b/.trae/skills/ptoas-usability-eval/agents/openai.yaml new file mode 100644 index 000000000..d433429b1 --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "PTOAS Usability Eval" + short_description: "评估 PTOAS 在 01/04 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." diff --git a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md new file mode 100644 index 000000000..ca7f7b24e --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -0,0 +1,59 @@ +# 证据清单 + +## 固定证据入口 + +| 路径 | 主要用途 | 对应场景 | +| --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | + +## 推荐检索顺序 + +1. `README.md` +2. `docs/no_npu_compile_only_guide_zh.md` +3. `test/samples/MatMul/` +4. `test/samples/runop.sh` +5. `test/npu_validation/scripts/*.py` / `*.sh` +6. `.github/workflows/ci.yml` +7. 按具体样例目录补读 `test/samples/*/README.md` + +## 推荐检索命令 + +```bash +rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg --files test/samples +find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) +``` + +## 记录要求 + +每个评分项至少要落这些证据字段: + +- `证据路径` +- `检索/执行命令` +- `检索轮次` +- `文档跳转次数` +- `耗时` +- `结果` +- `评分` +- `备注` + +## 默认样例 + +若用户没有指定具体算子或样例,优先使用: + +- `test/samples/MatMul/tmatmulk.py` +- `test/samples/MatMul/tmatmulk.pto` +- `test/samples/Addc/addc.py` +- `test/samples/Qwen3DecodeA3/` +- `test/samples/Qwen3DecodeA5/` + +理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-01.md b/.trae/skills/ptoas-usability-eval/references/metrics-01.md new file mode 100644 index 000000000..b310f1e8b --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/metrics-01.md @@ -0,0 +1,107 @@ +# `01 算子复现部署` 指标 + +默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 + +## 默认任务模板 + +若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: + +```bash +python3 test/samples/MatMul/tmatmulk.py > /tmp/tmatmulk.pto +./build/tools/ptoas/ptoas /tmp/tmatmulk.pto -o /tmp/tmatmulk.cpp +``` + +需要无卡 compile-only 时,继续参考: + +```bash +python3 test/npu_validation/scripts/generate_testcase.py \ + --input /tmp/tmatmulk.cpp \ + --run-mode npu \ + --soc-version Ascend910 +``` + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 易部署 + +### 环境下载 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 + +### 环境安装 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 环境校验 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐最小校验命令: + +```bash +./build/tools/ptoas/ptoas --version +python3 -c "from mlir.dialects import pto; print('ok')" +``` + +## 易开发、易演进 + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐记录字段: + +- 使用的样例路径 +- 实际命令 +- 是否需要改环境变量 +- 首次是否成功 +- 报错是否可定位 + +## 何时记 `N/A` + +`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: + +- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 +- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 + +此时保留定性结论,但不要伪造数值分数。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-04.md b/.trae/skills/ptoas-usability-eval/references/metrics-04.md new file mode 100644 index 000000000..d4143ec4c --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/metrics-04.md @@ -0,0 +1,83 @@ +# `04 算子基本功能实现` 的 PTOAS 子集指标 + +这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 + +## 纳入打分的子项 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 学习/理解示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | + +说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | + +### 编译配置 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | + +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 + +### 算子工程编译 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 功能调测 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 默认排除项 + +这些在 PTOAS 仓库里默认不打分,直接标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 + +如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 diff --git a/.trae/skills/ptoas-usability-eval/references/scope.md b/.trae/skills/ptoas-usability-eval/references/scope.md new file mode 100644 index 000000000..c9ddcc60d --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/scope.md @@ -0,0 +1,46 @@ +# PTOAS 评估范围映射 + +## 六大场景映射 + +| 场景 | 结论 | 处理方式 | 原因 | +| --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | +| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | +| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | +| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | +| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | + +## `04 算子基本功能实现` 中纳入的子项 + +只纳入这些与 PTOAS 仓库直接对应的部分: + +- 文档获取 +- 文档学习 +- 获取示例代码 +- 学习/理解示例代码 +- 运行示例代码 +- 编译配置 +- 算子工程编译 +- 功能调测里的运行反馈/验证 + +这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 + +## `04` 中默认排除的子项 + +默认标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 +- 面向业务工程的完整迭代闭环 + +原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 + +## 使用原则 + +- 如果用户没有特别说明,直接按 `01` 做主评估。 +- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 +- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 diff --git a/skills/ptoas-usability-eval/README.md b/skills/ptoas-usability-eval/README.md new file mode 100644 index 000000000..d7a605627 --- /dev/null +++ b/skills/ptoas-usability-eval/README.md @@ -0,0 +1,14 @@ +# PTOAS Usability Eval Skill + +这是 PTOAS 仓库内的通用 Skill 源目录。 + +支持的客户端入口: +- Codex: `.codex/skills/ptoas-usability-eval/` +- Cursor: `.cursor/skills/ptoas-usability-eval/` +- Trae: `.trae/skills/ptoas-usability-eval/` +- Claude Code: `.claude/skills/ptoas-usability-eval/` + +约定: +- `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 +- 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 +- 修改 Skill 内容时,应同步更新上述四个客户端目录 diff --git a/skills/ptoas-usability-eval/SKILL.md b/skills/ptoas-usability-eval/SKILL.md new file mode 100644 index 000000000..51ae01839 --- /dev/null +++ b/skills/ptoas-usability-eval/SKILL.md @@ -0,0 +1,62 @@ +--- +name: ptoas-usability-eval +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +--- + +# PTOAS Usability Eval + +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 + +## 默认范围 + +- 默认按 `01 算子复现部署` 评估。 +- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 +- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 +- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 + +先读 [references/scope.md](references/scope.md) 确认映射边界。 + +## 证据来源 + +优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 + +高优先级证据: +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` +- `test/samples/*/README.md` +- `.github/workflows/ci.yml` + +## 工作流 + +1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +6. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 +7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 + +## 计量规则 + +- `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 +- `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 +- `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 +- `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 + +## 输出格式 + +按下面顺序输出: + +1. `评估范围` +2. `分项评分` +3. `关键证据` +4. `主要短板` +5. `建议动作` + +如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 diff --git a/skills/ptoas-usability-eval/agents/openai.yaml b/skills/ptoas-usability-eval/agents/openai.yaml new file mode 100644 index 000000000..d433429b1 --- /dev/null +++ b/skills/ptoas-usability-eval/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "PTOAS Usability Eval" + short_description: "评估 PTOAS 在 01/04 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." diff --git a/skills/ptoas-usability-eval/references/evidence-checklist.md b/skills/ptoas-usability-eval/references/evidence-checklist.md new file mode 100644 index 000000000..ca7f7b24e --- /dev/null +++ b/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -0,0 +1,59 @@ +# 证据清单 + +## 固定证据入口 + +| 路径 | 主要用途 | 对应场景 | +| --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | + +## 推荐检索顺序 + +1. `README.md` +2. `docs/no_npu_compile_only_guide_zh.md` +3. `test/samples/MatMul/` +4. `test/samples/runop.sh` +5. `test/npu_validation/scripts/*.py` / `*.sh` +6. `.github/workflows/ci.yml` +7. 按具体样例目录补读 `test/samples/*/README.md` + +## 推荐检索命令 + +```bash +rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg --files test/samples +find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) +``` + +## 记录要求 + +每个评分项至少要落这些证据字段: + +- `证据路径` +- `检索/执行命令` +- `检索轮次` +- `文档跳转次数` +- `耗时` +- `结果` +- `评分` +- `备注` + +## 默认样例 + +若用户没有指定具体算子或样例,优先使用: + +- `test/samples/MatMul/tmatmulk.py` +- `test/samples/MatMul/tmatmulk.pto` +- `test/samples/Addc/addc.py` +- `test/samples/Qwen3DecodeA3/` +- `test/samples/Qwen3DecodeA5/` + +理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 diff --git a/skills/ptoas-usability-eval/references/metrics-01.md b/skills/ptoas-usability-eval/references/metrics-01.md new file mode 100644 index 000000000..b310f1e8b --- /dev/null +++ b/skills/ptoas-usability-eval/references/metrics-01.md @@ -0,0 +1,107 @@ +# `01 算子复现部署` 指标 + +默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 + +## 默认任务模板 + +若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: + +```bash +python3 test/samples/MatMul/tmatmulk.py > /tmp/tmatmulk.pto +./build/tools/ptoas/ptoas /tmp/tmatmulk.pto -o /tmp/tmatmulk.cpp +``` + +需要无卡 compile-only 时,继续参考: + +```bash +python3 test/npu_validation/scripts/generate_testcase.py \ + --input /tmp/tmatmulk.cpp \ + --run-mode npu \ + --soc-version Ascend910 +``` + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 易部署 + +### 环境下载 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 + +### 环境安装 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 环境校验 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐最小校验命令: + +```bash +./build/tools/ptoas/ptoas --version +python3 -c "from mlir.dialects import pto; print('ok')" +``` + +## 易开发、易演进 + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +推荐记录字段: + +- 使用的样例路径 +- 实际命令 +- 是否需要改环境变量 +- 首次是否成功 +- 报错是否可定位 + +## 何时记 `N/A` + +`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: + +- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 +- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 + +此时保留定性结论,但不要伪造数值分数。 diff --git a/skills/ptoas-usability-eval/references/metrics-04.md b/skills/ptoas-usability-eval/references/metrics-04.md new file mode 100644 index 000000000..d4143ec4c --- /dev/null +++ b/skills/ptoas-usability-eval/references/metrics-04.md @@ -0,0 +1,83 @@ +# `04 算子基本功能实现` 的 PTOAS 子集指标 + +这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 + +## 纳入打分的子项 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 文档学习 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 获取示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | + +### 学习/理解示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | + +说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 + +### 运行示例代码 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | + +### 编译配置 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | + +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 + +### 算子工程编译 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +### 功能调测 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | +| --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | + +## 默认排除项 + +这些在 PTOAS 仓库里默认不打分,直接标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 + +如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 diff --git a/skills/ptoas-usability-eval/references/scope.md b/skills/ptoas-usability-eval/references/scope.md new file mode 100644 index 000000000..c9ddcc60d --- /dev/null +++ b/skills/ptoas-usability-eval/references/scope.md @@ -0,0 +1,46 @@ +# PTOAS 评估范围映射 + +## 六大场景映射 + +| 场景 | 结论 | 处理方式 | 原因 | +| --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | +| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | +| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | +| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | +| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | + +## `04 算子基本功能实现` 中纳入的子项 + +只纳入这些与 PTOAS 仓库直接对应的部分: + +- 文档获取 +- 文档学习 +- 获取示例代码 +- 学习/理解示例代码 +- 运行示例代码 +- 编译配置 +- 算子工程编译 +- 功能调测里的运行反馈/验证 + +这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 + +## `04` 中默认排除的子项 + +默认标 `N/A`: + +- 算子设计-需求分析 +- 算子设计-方案实现 +- 通用算子代码开发全过程 +- 精度定位全流程 +- 性能调试全流程 +- 面向业务工程的完整迭代闭环 + +原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 + +## 使用原则 + +- 如果用户没有特别说明,直接按 `01` 做主评估。 +- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 +- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 From 9525316ac4d2e7d5df7e485f6ed023ae625ace4e Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Tue, 19 May 2026 11:05:59 +0800 Subject: [PATCH 3/7] docs: add layered PTOAS usability evaluation model --- .claude/skills/ptoas-usability-eval/SKILL.md | 44 ++++++--- .../references/evidence-checklist.md | 30 +++--- .../references/metrics-01.md | 96 +++++++++++-------- .../references/metrics-04.md | 90 +++++++++-------- .../ptoas-usability-eval/references/scope.md | 15 +++ .codex/skills/ptoas-usability-eval/SKILL.md | 44 ++++++--- .../references/evidence-checklist.md | 30 +++--- .../references/metrics-01.md | 96 +++++++++++-------- .../references/metrics-04.md | 90 +++++++++-------- .../ptoas-usability-eval/references/scope.md | 15 +++ .cursor/skills/ptoas-usability-eval/SKILL.md | 44 ++++++--- .../references/evidence-checklist.md | 30 +++--- .../references/metrics-01.md | 96 +++++++++++-------- .../references/metrics-04.md | 90 +++++++++-------- .../ptoas-usability-eval/references/scope.md | 15 +++ .trae/skills/ptoas-usability-eval/SKILL.md | 44 ++++++--- .../references/evidence-checklist.md | 30 +++--- .../references/metrics-01.md | 96 +++++++++++-------- .../references/metrics-04.md | 90 +++++++++-------- .../ptoas-usability-eval/references/scope.md | 15 +++ skills/ptoas-usability-eval/SKILL.md | 44 ++++++--- .../references/evidence-checklist.md | 30 +++--- .../references/metrics-01.md | 96 +++++++++++-------- .../references/metrics-04.md | 90 +++++++++-------- .../ptoas-usability-eval/references/scope.md | 15 +++ 25 files changed, 845 insertions(+), 530 deletions(-) diff --git a/.claude/skills/ptoas-usability-eval/SKILL.md b/.claude/skills/ptoas-usability-eval/SKILL.md index 51ae01839..7d0c46b1b 100644 --- a/.claude/skills/ptoas-usability-eval/SKILL.md +++ b/.claude/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. --- # PTOAS Usability Eval @@ -16,6 +16,21 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 先读 [references/scope.md](references/scope.md) 确认映射边界。 +## 先判层级 + +开始评分前,必须先声明本次评估覆盖到哪一层。没有层级,不能直接混着打分。 + +可选层级: +- `L1 文档审阅层`:只看仓库文档、脚本、样例、CI,不做运行。 +- `L2 本地最小运行层`:当前机器已有 `ptoas` / `ptobc` / Python 绑定,可做最小命令验证。 +- `L3 Linux compile-only 层`:需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:需要带卡 Linux、驱动、权限、`/dev/davinci*` 与对应用户组。 + +约束: +- 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 +- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 + ## 证据来源 优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 @@ -32,14 +47,15 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo ## 工作流 1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 -2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -6. 明确区分: +2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 +3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +7. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 @@ -47,16 +63,18 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 按下面顺序输出: 1. `评估范围` -2. `分项评分` -3. `关键证据` -4. `主要短板` -5. `建议动作` +2. `评估层级` +3. `分项评分` +4. `关键证据` +5. `主要短板` +6. `建议动作` -如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 +如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md index ca7f7b24e..e2c21b729 100644 --- a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,18 +2,18 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | -| --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | +| 路径 | 主要用途 | 对应场景 | 层级 | +| --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | + +说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 ## 推荐检索顺序 @@ -41,6 +41,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `检索/执行命令` - `检索轮次` - `文档跳转次数` +- `评估层级` - `耗时` - `结果` - `评分` @@ -53,7 +54,6 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.py` - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` -- `test/samples/Qwen3DecodeA3/` -- `test/samples/Qwen3DecodeA5/` +- `test/samples/PyPTOIRParser/` -理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 +理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-01.md b/.claude/skills/ptoas-usability-eval/references/metrics-01.md index b310f1e8b..ca9cbb226 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,23 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +## 先声明层级 + +在 `01` 场景里,必须先声明本次评估覆盖的层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释: +- `L1` 只能评文档与可发现性。 +- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 +- `L4` 才是真正的带卡服务器评估。 + +没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 + ## 默认任务模板 若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: @@ -24,48 +41,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 +说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐最小校验命令: @@ -78,16 +95,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐记录字段: @@ -96,12 +113,11 @@ python3 -c "from mlir.dialects import pto; print('ok')" - 是否需要改环境变量 - 首次是否成功 - 报错是否可定位 +- 所属评估层级 -## 何时记 `N/A` - -`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: +## 何时记 `未实测` / `N/A` -- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 -- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 +- `未实测`:当前任务没有进入对应环境层级,例如在本地 Mac 上没有 Linux/CANN/bisheng,却要评价 compile-only。 +- `N/A`:该项超出 PTOAS 能力边界,或本次任务明确不纳入该项。 -此时保留定性结论,但不要伪造数值分数。 +不要把二者混用。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-04.md b/.claude/skills/ptoas-usability-eval/references/metrics-04.md index d4143ec4c..3f5afd986 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-04.md @@ -2,73 +2,87 @@ 这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +## 先声明层级 + +`04` 子集同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释同 `01`: +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` +- `L4` 需要带卡服务器与设备权限 +- 未进入对应层级,只能标 `未实测` + ## 纳入打分的子项 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | 说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | 记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 功能调测 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 默认排除项 diff --git a/.claude/skills/ptoas-usability-eval/references/scope.md b/.claude/skills/ptoas-usability-eval/references/scope.md index c9ddcc60d..3010539c1 100644 --- a/.claude/skills/ptoas-usability-eval/references/scope.md +++ b/.claude/skills/ptoas-usability-eval/references/scope.md @@ -11,6 +11,20 @@ | `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | | `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +## 评估层级 + +任何量化前都先声明层级: + +- `L1 文档审阅层`:只看仓库内容,不跑命令。 +- `L2 本地最小运行层`:当前机器已有 PTOAS 产物,可验证最小命令。 +- `L3 Linux compile-only 层`:Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:带卡 Linux、驱动、ACL、设备节点和用户权限齐全。 + +评分规则: +- 某层未覆盖,只能标 `未实测`。 +- 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 +- 文档是否清楚说明这些前置条件,才属于可评分项。 + ## `04 算子基本功能实现` 中纳入的子项 只纳入这些与 PTOAS 仓库直接对应的部分: @@ -44,3 +58,4 @@ - 如果用户没有特别说明,直接按 `01` 做主评估。 - 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 - 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 +- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 diff --git a/.codex/skills/ptoas-usability-eval/SKILL.md b/.codex/skills/ptoas-usability-eval/SKILL.md index 51ae01839..7d0c46b1b 100644 --- a/.codex/skills/ptoas-usability-eval/SKILL.md +++ b/.codex/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. --- # PTOAS Usability Eval @@ -16,6 +16,21 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 先读 [references/scope.md](references/scope.md) 确认映射边界。 +## 先判层级 + +开始评分前,必须先声明本次评估覆盖到哪一层。没有层级,不能直接混着打分。 + +可选层级: +- `L1 文档审阅层`:只看仓库文档、脚本、样例、CI,不做运行。 +- `L2 本地最小运行层`:当前机器已有 `ptoas` / `ptobc` / Python 绑定,可做最小命令验证。 +- `L3 Linux compile-only 层`:需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:需要带卡 Linux、驱动、权限、`/dev/davinci*` 与对应用户组。 + +约束: +- 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 +- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 + ## 证据来源 优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 @@ -32,14 +47,15 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo ## 工作流 1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 -2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -6. 明确区分: +2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 +3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +7. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 @@ -47,16 +63,18 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 按下面顺序输出: 1. `评估范围` -2. `分项评分` -3. `关键证据` -4. `主要短板` -5. `建议动作` +2. `评估层级` +3. `分项评分` +4. `关键证据` +5. `主要短板` +6. `建议动作` -如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 +如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md index ca7f7b24e..e2c21b729 100644 --- a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,18 +2,18 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | -| --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | +| 路径 | 主要用途 | 对应场景 | 层级 | +| --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | + +说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 ## 推荐检索顺序 @@ -41,6 +41,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `检索/执行命令` - `检索轮次` - `文档跳转次数` +- `评估层级` - `耗时` - `结果` - `评分` @@ -53,7 +54,6 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.py` - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` -- `test/samples/Qwen3DecodeA3/` -- `test/samples/Qwen3DecodeA5/` +- `test/samples/PyPTOIRParser/` -理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 +理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-01.md b/.codex/skills/ptoas-usability-eval/references/metrics-01.md index b310f1e8b..ca9cbb226 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,23 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +## 先声明层级 + +在 `01` 场景里,必须先声明本次评估覆盖的层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释: +- `L1` 只能评文档与可发现性。 +- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 +- `L4` 才是真正的带卡服务器评估。 + +没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 + ## 默认任务模板 若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: @@ -24,48 +41,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 +说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐最小校验命令: @@ -78,16 +95,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐记录字段: @@ -96,12 +113,11 @@ python3 -c "from mlir.dialects import pto; print('ok')" - 是否需要改环境变量 - 首次是否成功 - 报错是否可定位 +- 所属评估层级 -## 何时记 `N/A` - -`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: +## 何时记 `未实测` / `N/A` -- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 -- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 +- `未实测`:当前任务没有进入对应环境层级,例如在本地 Mac 上没有 Linux/CANN/bisheng,却要评价 compile-only。 +- `N/A`:该项超出 PTOAS 能力边界,或本次任务明确不纳入该项。 -此时保留定性结论,但不要伪造数值分数。 +不要把二者混用。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-04.md b/.codex/skills/ptoas-usability-eval/references/metrics-04.md index d4143ec4c..3f5afd986 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-04.md @@ -2,73 +2,87 @@ 这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +## 先声明层级 + +`04` 子集同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释同 `01`: +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` +- `L4` 需要带卡服务器与设备权限 +- 未进入对应层级,只能标 `未实测` + ## 纳入打分的子项 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | 说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | 记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 功能调测 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 默认排除项 diff --git a/.codex/skills/ptoas-usability-eval/references/scope.md b/.codex/skills/ptoas-usability-eval/references/scope.md index c9ddcc60d..3010539c1 100644 --- a/.codex/skills/ptoas-usability-eval/references/scope.md +++ b/.codex/skills/ptoas-usability-eval/references/scope.md @@ -11,6 +11,20 @@ | `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | | `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +## 评估层级 + +任何量化前都先声明层级: + +- `L1 文档审阅层`:只看仓库内容,不跑命令。 +- `L2 本地最小运行层`:当前机器已有 PTOAS 产物,可验证最小命令。 +- `L3 Linux compile-only 层`:Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:带卡 Linux、驱动、ACL、设备节点和用户权限齐全。 + +评分规则: +- 某层未覆盖,只能标 `未实测`。 +- 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 +- 文档是否清楚说明这些前置条件,才属于可评分项。 + ## `04 算子基本功能实现` 中纳入的子项 只纳入这些与 PTOAS 仓库直接对应的部分: @@ -44,3 +58,4 @@ - 如果用户没有特别说明,直接按 `01` 做主评估。 - 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 - 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 +- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 diff --git a/.cursor/skills/ptoas-usability-eval/SKILL.md b/.cursor/skills/ptoas-usability-eval/SKILL.md index 51ae01839..7d0c46b1b 100644 --- a/.cursor/skills/ptoas-usability-eval/SKILL.md +++ b/.cursor/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. --- # PTOAS Usability Eval @@ -16,6 +16,21 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 先读 [references/scope.md](references/scope.md) 确认映射边界。 +## 先判层级 + +开始评分前,必须先声明本次评估覆盖到哪一层。没有层级,不能直接混着打分。 + +可选层级: +- `L1 文档审阅层`:只看仓库文档、脚本、样例、CI,不做运行。 +- `L2 本地最小运行层`:当前机器已有 `ptoas` / `ptobc` / Python 绑定,可做最小命令验证。 +- `L3 Linux compile-only 层`:需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:需要带卡 Linux、驱动、权限、`/dev/davinci*` 与对应用户组。 + +约束: +- 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 +- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 + ## 证据来源 优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 @@ -32,14 +47,15 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo ## 工作流 1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 -2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -6. 明确区分: +2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 +3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +7. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 @@ -47,16 +63,18 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 按下面顺序输出: 1. `评估范围` -2. `分项评分` -3. `关键证据` -4. `主要短板` -5. `建议动作` +2. `评估层级` +3. `分项评分` +4. `关键证据` +5. `主要短板` +6. `建议动作` -如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 +如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md index ca7f7b24e..e2c21b729 100644 --- a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,18 +2,18 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | -| --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | +| 路径 | 主要用途 | 对应场景 | 层级 | +| --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | + +说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 ## 推荐检索顺序 @@ -41,6 +41,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `检索/执行命令` - `检索轮次` - `文档跳转次数` +- `评估层级` - `耗时` - `结果` - `评分` @@ -53,7 +54,6 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.py` - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` -- `test/samples/Qwen3DecodeA3/` -- `test/samples/Qwen3DecodeA5/` +- `test/samples/PyPTOIRParser/` -理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 +理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md index b310f1e8b..ca9cbb226 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,23 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +## 先声明层级 + +在 `01` 场景里,必须先声明本次评估覆盖的层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释: +- `L1` 只能评文档与可发现性。 +- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 +- `L4` 才是真正的带卡服务器评估。 + +没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 + ## 默认任务模板 若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: @@ -24,48 +41,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 +说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐最小校验命令: @@ -78,16 +95,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐记录字段: @@ -96,12 +113,11 @@ python3 -c "from mlir.dialects import pto; print('ok')" - 是否需要改环境变量 - 首次是否成功 - 报错是否可定位 +- 所属评估层级 -## 何时记 `N/A` - -`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: +## 何时记 `未实测` / `N/A` -- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 -- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 +- `未实测`:当前任务没有进入对应环境层级,例如在本地 Mac 上没有 Linux/CANN/bisheng,却要评价 compile-only。 +- `N/A`:该项超出 PTOAS 能力边界,或本次任务明确不纳入该项。 -此时保留定性结论,但不要伪造数值分数。 +不要把二者混用。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md index d4143ec4c..3f5afd986 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md @@ -2,73 +2,87 @@ 这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +## 先声明层级 + +`04` 子集同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释同 `01`: +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` +- `L4` 需要带卡服务器与设备权限 +- 未进入对应层级,只能标 `未实测` + ## 纳入打分的子项 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | 说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | 记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 功能调测 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 默认排除项 diff --git a/.cursor/skills/ptoas-usability-eval/references/scope.md b/.cursor/skills/ptoas-usability-eval/references/scope.md index c9ddcc60d..3010539c1 100644 --- a/.cursor/skills/ptoas-usability-eval/references/scope.md +++ b/.cursor/skills/ptoas-usability-eval/references/scope.md @@ -11,6 +11,20 @@ | `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | | `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +## 评估层级 + +任何量化前都先声明层级: + +- `L1 文档审阅层`:只看仓库内容,不跑命令。 +- `L2 本地最小运行层`:当前机器已有 PTOAS 产物,可验证最小命令。 +- `L3 Linux compile-only 层`:Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:带卡 Linux、驱动、ACL、设备节点和用户权限齐全。 + +评分规则: +- 某层未覆盖,只能标 `未实测`。 +- 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 +- 文档是否清楚说明这些前置条件,才属于可评分项。 + ## `04 算子基本功能实现` 中纳入的子项 只纳入这些与 PTOAS 仓库直接对应的部分: @@ -44,3 +58,4 @@ - 如果用户没有特别说明,直接按 `01` 做主评估。 - 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 - 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 +- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 diff --git a/.trae/skills/ptoas-usability-eval/SKILL.md b/.trae/skills/ptoas-usability-eval/SKILL.md index 51ae01839..7d0c46b1b 100644 --- a/.trae/skills/ptoas-usability-eval/SKILL.md +++ b/.trae/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. --- # PTOAS Usability Eval @@ -16,6 +16,21 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 先读 [references/scope.md](references/scope.md) 确认映射边界。 +## 先判层级 + +开始评分前,必须先声明本次评估覆盖到哪一层。没有层级,不能直接混着打分。 + +可选层级: +- `L1 文档审阅层`:只看仓库文档、脚本、样例、CI,不做运行。 +- `L2 本地最小运行层`:当前机器已有 `ptoas` / `ptobc` / Python 绑定,可做最小命令验证。 +- `L3 Linux compile-only 层`:需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:需要带卡 Linux、驱动、权限、`/dev/davinci*` 与对应用户组。 + +约束: +- 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 +- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 + ## 证据来源 优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 @@ -32,14 +47,15 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo ## 工作流 1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 -2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -6. 明确区分: +2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 +3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +7. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 @@ -47,16 +63,18 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 按下面顺序输出: 1. `评估范围` -2. `分项评分` -3. `关键证据` -4. `主要短板` -5. `建议动作` +2. `评估层级` +3. `分项评分` +4. `关键证据` +5. `主要短板` +6. `建议动作` -如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 +如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md index ca7f7b24e..e2c21b729 100644 --- a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,18 +2,18 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | -| --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | +| 路径 | 主要用途 | 对应场景 | 层级 | +| --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | + +说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 ## 推荐检索顺序 @@ -41,6 +41,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `检索/执行命令` - `检索轮次` - `文档跳转次数` +- `评估层级` - `耗时` - `结果` - `评分` @@ -53,7 +54,6 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.py` - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` -- `test/samples/Qwen3DecodeA3/` -- `test/samples/Qwen3DecodeA5/` +- `test/samples/PyPTOIRParser/` -理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 +理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-01.md b/.trae/skills/ptoas-usability-eval/references/metrics-01.md index b310f1e8b..ca9cbb226 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,23 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +## 先声明层级 + +在 `01` 场景里,必须先声明本次评估覆盖的层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释: +- `L1` 只能评文档与可发现性。 +- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 +- `L4` 才是真正的带卡服务器评估。 + +没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 + ## 默认任务模板 若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: @@ -24,48 +41,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 +说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐最小校验命令: @@ -78,16 +95,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐记录字段: @@ -96,12 +113,11 @@ python3 -c "from mlir.dialects import pto; print('ok')" - 是否需要改环境变量 - 首次是否成功 - 报错是否可定位 +- 所属评估层级 -## 何时记 `N/A` - -`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: +## 何时记 `未实测` / `N/A` -- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 -- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 +- `未实测`:当前任务没有进入对应环境层级,例如在本地 Mac 上没有 Linux/CANN/bisheng,却要评价 compile-only。 +- `N/A`:该项超出 PTOAS 能力边界,或本次任务明确不纳入该项。 -此时保留定性结论,但不要伪造数值分数。 +不要把二者混用。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-04.md b/.trae/skills/ptoas-usability-eval/references/metrics-04.md index d4143ec4c..3f5afd986 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-04.md @@ -2,73 +2,87 @@ 这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +## 先声明层级 + +`04` 子集同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释同 `01`: +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` +- `L4` 需要带卡服务器与设备权限 +- 未进入对应层级,只能标 `未实测` + ## 纳入打分的子项 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | 说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | 记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 功能调测 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 默认排除项 diff --git a/.trae/skills/ptoas-usability-eval/references/scope.md b/.trae/skills/ptoas-usability-eval/references/scope.md index c9ddcc60d..3010539c1 100644 --- a/.trae/skills/ptoas-usability-eval/references/scope.md +++ b/.trae/skills/ptoas-usability-eval/references/scope.md @@ -11,6 +11,20 @@ | `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | | `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +## 评估层级 + +任何量化前都先声明层级: + +- `L1 文档审阅层`:只看仓库内容,不跑命令。 +- `L2 本地最小运行层`:当前机器已有 PTOAS 产物,可验证最小命令。 +- `L3 Linux compile-only 层`:Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:带卡 Linux、驱动、ACL、设备节点和用户权限齐全。 + +评分规则: +- 某层未覆盖,只能标 `未实测`。 +- 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 +- 文档是否清楚说明这些前置条件,才属于可评分项。 + ## `04 算子基本功能实现` 中纳入的子项 只纳入这些与 PTOAS 仓库直接对应的部分: @@ -44,3 +58,4 @@ - 如果用户没有特别说明,直接按 `01` 做主评估。 - 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 - 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 +- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 diff --git a/skills/ptoas-usability-eval/SKILL.md b/skills/ptoas-usability-eval/SKILL.md index 51ae01839..7d0c46b1b 100644 --- a/skills/ptoas-usability-eval/SKILL.md +++ b/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Use PTOAS repo docs, scripts, samples, and CI config as evidence; score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported scene 02/03/05/06 items as N/A. +description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. --- # PTOAS Usability Eval @@ -16,6 +16,21 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 先读 [references/scope.md](references/scope.md) 确认映射边界。 +## 先判层级 + +开始评分前,必须先声明本次评估覆盖到哪一层。没有层级,不能直接混着打分。 + +可选层级: +- `L1 文档审阅层`:只看仓库文档、脚本、样例、CI,不做运行。 +- `L2 本地最小运行层`:当前机器已有 `ptoas` / `ptobc` / Python 绑定,可做最小命令验证。 +- `L3 Linux compile-only 层`:需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:需要带卡 Linux、驱动、权限、`/dev/davinci*` 与对应用户组。 + +约束: +- 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 +- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 + ## 证据来源 优先只用仓库内证据,不把仓外经验当成主证据。固定入口见 [references/evidence-checklist.md](references/evidence-checklist.md)。 @@ -32,14 +47,15 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo ## 工作流 1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 -2. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -3. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -4. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -5. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -6. 明确区分: +2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 +3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +7. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -7. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 @@ -47,16 +63,18 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确未执行且无法合理推断的项。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 按下面顺序输出: 1. `评估范围` -2. `分项评分` -3. `关键证据` -4. `主要短板` -5. `建议动作` +2. `评估层级` +3. `分项评分` +4. `关键证据` +5. `主要短板` +6. `建议动作` -如果用户只要简版结论,也要至少保留:场景归类、总评、最低分项、证据路径。 +如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/skills/ptoas-usability-eval/references/evidence-checklist.md b/skills/ptoas-usability-eval/references/evidence-checklist.md index ca7f7b24e..e2c21b729 100644 --- a/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,18 +2,18 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | -| --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA3/README.md` | A3 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/Qwen3DecodeA5/README.md` | A5 大样例的 compile-regression / board-validation 说明 | `01`, `04-子集` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | +| 路径 | 主要用途 | 对应场景 | 层级 | +| --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | +| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | + +说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 ## 推荐检索顺序 @@ -41,6 +41,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `检索/执行命令` - `检索轮次` - `文档跳转次数` +- `评估层级` - `耗时` - `结果` - `评分` @@ -53,7 +54,6 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.py` - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` -- `test/samples/Qwen3DecodeA3/` -- `test/samples/Qwen3DecodeA5/` +- `test/samples/PyPTOIRParser/` -理由:这些路径要么被 `README.md` 直接引用,要么代表 PTOAS 当前主打的 compile-regression / board-validation 入口。 +理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 diff --git a/skills/ptoas-usability-eval/references/metrics-01.md b/skills/ptoas-usability-eval/references/metrics-01.md index b310f1e8b..ca9cbb226 100644 --- a/skills/ptoas-usability-eval/references/metrics-01.md +++ b/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,23 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +## 先声明层级 + +在 `01` 场景里,必须先声明本次评估覆盖的层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释: +- `L1` 只能评文档与可发现性。 +- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 +- `L4` 才是真正的带卡服务器评估。 + +没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 + ## 默认任务模板 若用户没有指定具体 case,优先用 `test/samples/MatMul/` 作为复现模板: @@ -24,48 +41,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否缺少无卡编译、sample 运行、上板验证、A3/A5 差异等关键场景 | `README.md`, `docs/...`, sample README | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | `README.md`, `ci.yml` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -说明:如果当前任务没有真的去下载 LLVM/CANN/`pto-isa`,后两项写 `未实测`,不要脑补成功率。 +说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐最小校验命令: @@ -78,16 +95,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | 推荐记录字段: @@ -96,12 +113,11 @@ python3 -c "from mlir.dialects import pto; print('ok')" - 是否需要改环境变量 - 首次是否成功 - 报错是否可定位 +- 所属评估层级 -## 何时记 `N/A` - -`01` 场景里一般不应大面积 `N/A`。只有这些情况可以记: +## 何时记 `未实测` / `N/A` -- 当前任务明确不允许实际执行下载/安装/运行,导致只能做文档审阅 -- 某项数据必须依赖真实环境,但当前环境完全不具备,且仓库证据不足以推断 +- `未实测`:当前任务没有进入对应环境层级,例如在本地 Mac 上没有 Linux/CANN/bisheng,却要评价 compile-only。 +- `N/A`:该项超出 PTOAS 能力边界,或本次任务明确不纳入该项。 -此时保留定性结论,但不要伪造数值分数。 +不要把二者混用。 diff --git a/skills/ptoas-usability-eval/references/metrics-04.md b/skills/ptoas-usability-eval/references/metrics-04.md index d4143ec4c..3f5afd986 100644 --- a/skills/ptoas-usability-eval/references/metrics-04.md +++ b/skills/ptoas-usability-eval/references/metrics-04.md @@ -2,73 +2,87 @@ 这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +## 先声明层级 + +`04` 子集同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +解释同 `01`: +- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` +- `L4` 需要带卡服务器与设备权限 +- 未进入对应层级,只能标 `未实测` + ## 纳入打分的子项 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、A3/A5 参数是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、A3/A5 变体说明是否缺失 | 同上 | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/`, `test/samples/Qwen3DecodeA3/`, `test/samples/Qwen3DecodeA5/` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | 说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | 记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ### 功能调测 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 评分口径 | -| --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| --- | --- | --- | --- | --- | +| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | ## 默认排除项 diff --git a/skills/ptoas-usability-eval/references/scope.md b/skills/ptoas-usability-eval/references/scope.md index c9ddcc60d..3010539c1 100644 --- a/skills/ptoas-usability-eval/references/scope.md +++ b/skills/ptoas-usability-eval/references/scope.md @@ -11,6 +11,20 @@ | `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | | `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +## 评估层级 + +任何量化前都先声明层级: + +- `L1 文档审阅层`:只看仓库内容,不跑命令。 +- `L2 本地最小运行层`:当前机器已有 PTOAS 产物,可验证最小命令。 +- `L3 Linux compile-only 层`:Linux + CANN/bisheng + `PTO_ISA_ROOT`,不要求带卡。 +- `L4 NPU 上板层`:带卡 Linux、驱动、ACL、设备节点和用户权限齐全。 + +评分规则: +- 某层未覆盖,只能标 `未实测`。 +- 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 +- 文档是否清楚说明这些前置条件,才属于可评分项。 + ## `04 算子基本功能实现` 中纳入的子项 只纳入这些与 PTOAS 仓库直接对应的部分: @@ -44,3 +58,4 @@ - 如果用户没有特别说明,直接按 `01` 做主评估。 - 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 - 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 +- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 From a9441432821f4e19beab578712418233fb06dbd7 Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Tue, 19 May 2026 17:16:01 +0800 Subject: [PATCH 4/7] Expand PTOAS usability skill for 02/05/06 --- .claude/skills/ptoas-usability-eval/README.md | 8 ++ .claude/skills/ptoas-usability-eval/SKILL.md | 47 ++++--- .../ptoas-usability-eval/agents/openai.yaml | 4 +- .../references/evidence-checklist.md | 59 ++++++--- .../references/metrics-01.md | 69 +++++------ .../references/metrics-02.md | 68 ++++++++++ .../references/metrics-04.md | 96 ++++++++------- .../references/metrics-05.md | 73 +++++++++++ .../references/metrics-06.md | 75 +++++++++++ .../ptoas-usability-eval/references/scope.md | 116 ++++++++++++++---- .codex/skills/ptoas-usability-eval/README.md | 8 ++ .codex/skills/ptoas-usability-eval/SKILL.md | 47 ++++--- .../ptoas-usability-eval/agents/openai.yaml | 4 +- .../references/evidence-checklist.md | 59 ++++++--- .../references/metrics-01.md | 69 +++++------ .../references/metrics-02.md | 68 ++++++++++ .../references/metrics-04.md | 96 ++++++++------- .../references/metrics-05.md | 73 +++++++++++ .../references/metrics-06.md | 75 +++++++++++ .../ptoas-usability-eval/references/scope.md | 116 ++++++++++++++---- .cursor/skills/ptoas-usability-eval/README.md | 8 ++ .cursor/skills/ptoas-usability-eval/SKILL.md | 47 ++++--- .../ptoas-usability-eval/agents/openai.yaml | 4 +- .../references/evidence-checklist.md | 59 ++++++--- .../references/metrics-01.md | 69 +++++------ .../references/metrics-02.md | 68 ++++++++++ .../references/metrics-04.md | 96 ++++++++------- .../references/metrics-05.md | 73 +++++++++++ .../references/metrics-06.md | 75 +++++++++++ .../ptoas-usability-eval/references/scope.md | 116 ++++++++++++++---- .trae/skills/ptoas-usability-eval/README.md | 8 ++ .trae/skills/ptoas-usability-eval/SKILL.md | 47 ++++--- .../ptoas-usability-eval/agents/openai.yaml | 4 +- .../references/evidence-checklist.md | 59 ++++++--- .../references/metrics-01.md | 69 +++++------ .../references/metrics-02.md | 68 ++++++++++ .../references/metrics-04.md | 96 ++++++++------- .../references/metrics-05.md | 73 +++++++++++ .../references/metrics-06.md | 75 +++++++++++ .../ptoas-usability-eval/references/scope.md | 116 ++++++++++++++---- skills/ptoas-usability-eval/README.md | 8 ++ skills/ptoas-usability-eval/SKILL.md | 47 ++++--- .../ptoas-usability-eval/agents/openai.yaml | 4 +- .../references/evidence-checklist.md | 59 ++++++--- .../references/metrics-01.md | 69 +++++------ .../references/metrics-02.md | 68 ++++++++++ .../references/metrics-04.md | 96 ++++++++------- .../references/metrics-05.md | 73 +++++++++++ .../references/metrics-06.md | 75 +++++++++++ .../ptoas-usability-eval/references/scope.md | 116 ++++++++++++++---- 50 files changed, 2355 insertions(+), 720 deletions(-) create mode 100644 .claude/skills/ptoas-usability-eval/references/metrics-02.md create mode 100644 .claude/skills/ptoas-usability-eval/references/metrics-05.md create mode 100644 .claude/skills/ptoas-usability-eval/references/metrics-06.md create mode 100644 .codex/skills/ptoas-usability-eval/references/metrics-02.md create mode 100644 .codex/skills/ptoas-usability-eval/references/metrics-05.md create mode 100644 .codex/skills/ptoas-usability-eval/references/metrics-06.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/metrics-02.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/metrics-05.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/metrics-06.md create mode 100644 .trae/skills/ptoas-usability-eval/references/metrics-02.md create mode 100644 .trae/skills/ptoas-usability-eval/references/metrics-05.md create mode 100644 .trae/skills/ptoas-usability-eval/references/metrics-06.md create mode 100644 skills/ptoas-usability-eval/references/metrics-02.md create mode 100644 skills/ptoas-usability-eval/references/metrics-05.md create mode 100644 skills/ptoas-usability-eval/references/metrics-06.md diff --git a/.claude/skills/ptoas-usability-eval/README.md b/.claude/skills/ptoas-usability-eval/README.md index d7a605627..e243a6f66 100644 --- a/.claude/skills/ptoas-usability-eval/README.md +++ b/.claude/skills/ptoas-usability-eval/README.md @@ -8,7 +8,15 @@ - Trae: `.trae/skills/ptoas-usability-eval/` - Claude Code: `.claude/skills/ptoas-usability-eval/` +当前覆盖的评估场景: +- `01 算子复现部署` +- `02 算子迁移部署` 的 PTOAS 支撑子集 +- `04 算子基本功能实现` 的 PTOAS 工程子集 +- `05 特定 shape 性能优化` 的 PTOAS 支撑子集 +- `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 - 修改 Skill 内容时,应同步更新上述四个客户端目录 +- 对 `L3/L4` 依赖 Linux/CANN/NPU 的指标,未实测时必须标 `未实测`,不能因为当前机器缺环境直接给 PTOAS 低分 diff --git a/.claude/skills/ptoas-usability-eval/SKILL.md b/.claude/skills/ptoas-usability-eval/SKILL.md index 7d0c46b1b..6edf1bc3a 100644 --- a/.claude/skills/ptoas-usability-eval/SKILL.md +++ b/.claude/skills/ptoas-usability-eval/SKILL.md @@ -1,20 +1,22 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval -当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01/02/04/05/06` 给 PTOAS 打分时,使用这个 Skill。 ## 默认范围 -- 默认按 `01 算子复现部署` 评估。 -- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 -- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 -- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 +- `01 算子复现部署`:主评估场景,正常评分。 +- `02 算子迁移部署`:纳入,但只评 PTOAS 仓库能直接支撑的迁移入口、样例、IR/脚本、编译验证链路。 +- `04 算子基本功能实现`:纳入,但只评 PTOAS 直接覆盖的示例、编译、验证、反馈子链路。 +- `05 特定 shape 性能优化`:纳入,但只评 PTOAS 的文档、样例、性能数据获取入口、编译验证、精度/性能验证支撑能力。 +- `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 +- `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认映射边界。 +先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -28,7 +30,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 约束: - 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 -- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- `bisheng` / CANN compile-only 一般属于 `L3`,不应在本地 Mac 上硬打低分。 - 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 ## 证据来源 @@ -38,32 +40,41 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 高优先级证据: - `README.md` - `docs/no_npu_compile_only_guide_zh.md` +- `docs/PTO_IR_manual.md` - `test/samples/runop.sh` - `test/npu_validation/scripts/generate_testcase.py` - `test/npu_validation/scripts/run_remote_npu_validation.sh` -- `test/samples/*/README.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/` +- `test/samples/SetValidShape/`, `test/samples/LayoutInference/`, `test/samples/Partition5D/`, `test/samples/planmemory/` - `.github/workflows/ci.yml` +- `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 工作流 -1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -7. 明确区分: - - PTOAS 仓库已提供的能力 - - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +10. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline +11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 +- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 +- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在,或缺少前后对照 baseline。 - `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 @@ -72,7 +83,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 1. `评估范围` 2. `评估层级` -3. `分项评分` +3. `分场景评分` 4. `关键证据` 5. `主要短板` 6. `建议动作` diff --git a/.claude/skills/ptoas-usability-eval/agents/openai.yaml b/.claude/skills/ptoas-usability-eval/agents/openai.yaml index d433429b1..924e59e3f 100644 --- a/.claude/skills/ptoas-usability-eval/agents/openai.yaml +++ b/.claude/skills/ptoas-usability-eval/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "PTOAS Usability Eval" - short_description: "评估 PTOAS 在 01/04 场景下的易用性" - default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." + short_description: "评估 PTOAS 在 01/02/04/05/06 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for scene 01 operator reproduction/deployment and the PTOAS-supported subsets of scenes 02, 04, 05, and 06." diff --git a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md index e2c21b729..e750e2b4c 100644 --- a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -4,35 +4,60 @@ | 路径 | 主要用途 | 对应场景 | 层级 | | --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | -说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 +说明: +- 不要把当前分支不存在的样例 README 当成固定证据源。 +- 对 `02/05/06`,没有“前后对照基线”时,不要硬算迁移完备度或性能提升幅度。 ## 推荐检索顺序 1. `README.md` 2. `docs/no_npu_compile_only_guide_zh.md` -3. `test/samples/MatMul/` -4. `test/samples/runop.sh` -5. `test/npu_validation/scripts/*.py` / `*.sh` -6. `.github/workflows/ci.yml` -7. 按具体样例目录补读 `test/samples/*/README.md` +3. `docs/PTO_IR_manual.md` +4. `test/samples/MatMul/` 或用户指定样例目录 +5. `test/samples/PyPTOIRParser/`, `FlashAttention/`, `GQA/`, `FFN/`, `SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` +6. `test/samples/runop.sh` +7. `test/npu_validation/scripts/*.py` / `*.sh` +8. `.github/workflows/ci.yml` +9. `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 推荐检索命令 ```bash -rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg -n "构建|运行测试|compile-only|runop|generate_testcase|run_remote_npu_validation|level3" README.md docs test .github +rg -n "valid_shape|layout|partition|reshape|dynamic shape|Level-2|Level-3" docs/PTO_IR_manual.md docs test +rg -n "FlashAttention|GQA|FFN|MatMul|SetValidShape|LayoutInference|Partition5D|planmemory" test .github rg --files test/samples find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) ``` +## 迁移 / 性能场景的补充记录项 + +如果在评 `02/05/06`,额外记录: +- 是否存在迁移前/迁移后对照物 +- 是否存在性能 baseline +- baseline 来源路径 +- 是否需要 NPU 实机 +- 当前停在哪一层 +- 哪些分数是实测,哪些是文档侧支撑分 + ## 记录要求 每个评分项至少要落这些证据字段: @@ -55,5 +80,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` - `test/samples/PyPTOIRParser/` +- `test/samples/FlashAttention/` +- `test/samples/SetValidShape/` -理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 +理由:这些路径要么被 `README.md` 直接引用,要么与迁移/性能/shape 泛化评估强相关,且当前主线可稳定找到。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-01.md b/.claude/skills/ptoas-usability-eval/references/metrics-01.md index ca9cbb226..b765030c4 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,8 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + ## 先声明层级 在 `01` 场景里,必须先声明本次评估覆盖的层级: @@ -11,12 +13,6 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释: -- `L1` 只能评文档与可发现性。 -- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 -- `L4` 才是真正的带卡服务器评估。 - 没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 ## 默认任务模板 @@ -41,48 +37,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md -> docs/... -> test/samples/...` | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/`pto-isa` 的时间 | 真实执行记录 | `L3-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%=10`,按比例计算 | 说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8 步=10`;`9-10=8`;`11-12=6`;`13-14=4`;`>14=2` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%=10`,按比例计算 | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md`, `ci.yml` | `L2-L4` | `100%=10`,按比例计算 | 推荐最小校验命令: @@ -95,25 +91,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | - -推荐记录字段: - -- 使用的样例路径 -- 实际命令 -- 是否需要改环境变量 -- 首次是否成功 -- 报错是否可定位 -- 所属评估层级 +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md`, `test/samples/MatMul/` | `L2-L4` | `<=2 分钟=10`;`2-4=8`;`4-6=6`;`6-8=4`;`>8=2` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%=10`,按比例计算 | ## 何时记 `未实测` / `N/A` diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-02.md b/.claude/skills/ptoas-usability-eval/references/metrics-02.md new file mode 100644 index 000000000..1bcc752ea --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/metrics-02.md @@ -0,0 +1,68 @@ +# `02 算子迁移部署` 指标 + +这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`02` 场景同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +没有进入对应层,就标 `未实测`。 + +## 共享易学习项 + +`02` 的 `文档获取` / `文档学习` 默认复用 [metrics-01.md](metrics-01.md) 中对应规则;只是目标从“复现部署”改成“找到迁移入口、IR 语义、样例和验证链路”。 + +推荐优先证据: +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` + +## 易迁移 + +### 算子迁移 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| tiling 迁移完备度 | 统计迁移前定义的 tiling 结构中,已成功落到 PTO IR / sample / generated testcase 的比例 | `docs/PTO_IR_manual.md`, `test/samples/*`, 用户提供的前后对照物 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| kernel 迁移完备度 | 统计迁移前 kernel 逻辑中,已能由 PTO case / sample / generated testcase 覆盖的比例 | 同上 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| 算子功能失败率 | 迁移后 compile-only / validation / board case 失败比例 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh` | `L3-L4` | `0% 失败=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| 算子性能劣化率 | 迁移后相对迁移前 baseline 的性能增幅 | 用户 baseline、`performance_issue.yml`、实测日志 | `L4` | 劣化 `<5%=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| tiling 代码修改率 | 迁移时 tiling 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| kernel 代码修改率 | 迁移时 kernel 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| 算子迁移总耗时 | 从开始迁移到迁移完成,不含最终验证环节 | 真实执行记录 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 算子迁移成功率 | 迁移任务成功率 | 真实执行记录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 在 PTOAS 中如何落地这些指标 + +### 可直接量化的前提 + +只有当前任务同时具备以下材料时,才量化迁移完备度/修改率/失败率: +- 迁移前输入:上游 IR、旧 kernel、旧 tiling,至少一种 +- 迁移后输入:PTO `.pto`、sample、generated testcase,至少一种 +- 对应验证链路:compile-only 或 board validation + +### 没有对照物时怎么办 + +- 只有仓库文档和样例,没有迁移前材料: + - 可以评“入口是否清晰”“样例/脚本是否齐全” + - 不能给出完备度/修改率/性能劣化率,记 `未实测` +- 指标本身依赖仓外业务工程,且用户没给材料: + - 记 `N/A` + +## 推荐默认证据路径 + +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/*` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-04.md b/.claude/skills/ptoas-usability-eval/references/metrics-04.md index 3f5afd986..496660f68 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,6 +1,8 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 -这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 ## 先声明层级 @@ -11,78 +13,89 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释同 `01`: -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` -- `L4` 需要带卡服务器与设备权限 -- 未进入对应层级,只能标 `未实测` +未进入对应层级,只能标 `未实测`。 -## 纳入打分的子项 +## 易学习 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%=10`,按比例计算 | + +## 易开发、易演进 ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 样例场景覆盖度 | 样例是否覆盖目标算子的输入、输出、golden/compare、compile/validation 场景 | 选定样例目录中的 `.py` / `.pto` / `npu_validation/` | `L1-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 同上 | `L1-L4` | `<=500` 高分;`500-1000` 次高;`1000-2000` 中;`2000-3000` 低;`>3000` 最低 | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-15` 中;`15-20` 低;`>20` 最低 | -说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 +说明:如果运行环境拿不到 token 统计,第二项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 算子编译 ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 新增/修改配置行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `<5 行=100`;`<10=80`;`<15=60`;`<20=40`;`>20=20` | -记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 `0` 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 需要理解的宏/函数个数 | 为改通当前 sample / validation 链路,必须额外读懂多少宏/函数 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh`, sample CMake | `L1-L4` | `2 个=10`;`4 个=8`;`6 个=6`;`8 个=4`;`>10 个=2` | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | -### 功能调测 +## 功能调试 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 报错携带环境/版本/上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度数据获取耗时 | 获取 golden/output/compare 报告所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 定位分析次数 | 从发现精度问题到定位根因的迭代次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 代码修改/迭代循环 | 精度修复迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | ## 默认排除项 @@ -91,7 +104,4 @@ - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 - -如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 +- 脱离 PTOAS 仓库的业务工程联调 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-05.md b/.claude/skills/ptoas-usability-eval/references/metrics-05.md new file mode 100644 index 000000000..079682038 --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/metrics-05.md @@ -0,0 +1,73 @@ +# `05 特定 shape 性能优化` 指标 + +这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`05` 场景通常至少需要: +- `L1` 评文档、样例、入口 +- `L3` 评 compile-only 和工程编译 +- `L4` 才能评真实性能、精度一致性、性能提升 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到性能相关文档、样例、issue 模板所需轮次 | `README.md`, `docs/PTO_IR_manual.md`, `.github/ISSUE_TEMPLATE/performance_issue.yml`, `test/samples/FlashAttention/`, `GQA/`, `FFN/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取 profile/日志/性能数据所需时间 | 用户 benchmark 脚本、sample、remote validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含关键指标、case、shape、参数、耗时 | `performance_issue.yml`、用户日志 | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 优化迭代次数 | 针对固定 shape 调整 pass / IR / sample 的迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 优化耗时 | 完成策略优化的总耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | baseline + 实测性能日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 性能提升幅度 | 优化后相对 baseline 的提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`,因为它超出 PTOAS 仓库单独可证的边界。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取 golden/compare/验证工具所需时间 | sample `golden.py`, `compare.py`, `generate_testcase.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度一致性验证 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/FlashAttention/` +- `test/samples/GQA/` +- `test/samples/FFN/` +- `test/samples/MatMul/` diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-06.md b/.claude/skills/ptoas-usability-eval/references/metrics-06.md new file mode 100644 index 000000000..4e24f2f70 --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/metrics-06.md @@ -0,0 +1,75 @@ +# `06 泛化 shape 性能优化` 指标 + +这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`06` 场景通常至少需要: +- `L1` 评文档、IR 语义、样例覆盖度 +- `L3` 评 compile-only、编译验证 +- `L4` 才能评多 shape 真实性能与精度结果 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到 dynamic/valid-shape、layout、性能相关文档和样例所需轮次 | `docs/PTO_IR_manual.md`, `README.md`, `test/samples/SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取多 shape profile/性能数据所需时间 | 用户 benchmark 脚本、validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含 shape 集合、关键指标、参数、耗时 | 用户日志、`performance_issue.yml` | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 平均优化迭代次数 | 多 shape 场景平均调整次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 平均优化耗时 | 多 shape 场景平均完成策略优化的耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 多 shape 策略优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 多 shape 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | 多 shape baseline + 实测日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 平均性能提升幅度 | 多 shape 场景性能平均提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 最大性能提升幅度 | 提升最大的单个 shape 收益 | 同上 | `L4` | 提升 `>=60%` 高分;`40%-60%` 次之;`20%-40%` 中;`0%-20%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取多 shape 精度验证工具所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度保持率 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带 `valid_shape` / dynamic shape 的样例 diff --git a/.claude/skills/ptoas-usability-eval/references/scope.md b/.claude/skills/ptoas-usability-eval/references/scope.md index 3010539c1..96e5cb004 100644 --- a/.claude/skills/ptoas-usability-eval/references/scope.md +++ b/.claude/skills/ptoas-usability-eval/references/scope.md @@ -2,14 +2,14 @@ ## 六大场景映射 -| 场景 | 结论 | 处理方式 | 原因 | -| --- | --- | --- | --- | -| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | -| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | -| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | -| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | -| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | -| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +| 场景 | 结论 | 处理方式 | PTOAS 中可量化的部分 | 默认不直接量化的部分 | +| --- | --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | 构建、CLI、Python 绑定、sample、compile-only、board-validation | 无 | +| `02 算子迁移部署` | 有限纳入 | 评“迁移支撑能力” | PTO IR 入口、样例/PyPTO 快照、compile-only/validation、迁移前后对照样例 | 业务框架集成、完整模型接线、仓外工程改造 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做差距说明 | 无固定模板 | builtin/业务算子定制主流程 | +| `04 算子基本功能实现` | 次级支撑 | 只评 PTOAS 直接支撑的工程子链路 | 文档、样例、编译配置、工程编译、运行反馈、验证 | 完整需求分析、完整方案设计、通用算子研发全过程 | +| `05 特定 shape 性能优化` | 条件纳入 | 评“特定 shape 性能优化支撑能力” | 性能文档、固定 shape 样例、性能数据获取入口、编译验证、精度/性能验证 | 没有 baseline 时的性能提升幅度、仓外友商对标 | +| `06 泛化 shape 性能优化` | 条件纳入 | 评“多 shape / dynamic shape 支撑能力” | `valid_shape`/dynamic shape 文档、泛化样例、多 shape 验证链路 | 没有多 shape 基线矩阵时的平均/最大收益结论 | ## 评估层级 @@ -25,10 +25,30 @@ - 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 - 文档是否清楚说明这些前置条件,才属于可评分项。 -## `04 算子基本功能实现` 中纳入的子项 +## `02` 的适用边界 -只纳入这些与 PTOAS 仓库直接对应的部分: +PTOAS 可以支撑 `02`,但只能评“迁移支撑能力”,不能假装它已经覆盖完整业务迁移平台。 +可以评分的证据: +- `docs/PTO_IR_manual.md`:IR 层级、tile/view/valid-shape 语义、Level-2/Level-3 入口 +- `test/samples/PyPTOIRParser/README.md`:来自 pypto `ir_parser` 的 vendored `.pto` 快照 +- `test/samples/*`:迁移后 PTO case、样例目录、`golden.py`/`compare.py` +- `docs/no_npu_compile_only_guide_zh.md`、`runop.sh`、remote validation 脚本:迁移后 compile/validate 链路 + +`02` 里这些指标只有在“有前后对照”时才能量化: +- `tiling 迁移完备度` +- `kernel 迁移完备度` +- `tiling/kernel 代码修改率` +- `功能失败率` +- `性能劣化率` + +如果当前任务没有“迁移前/迁移后”对照 case: +- 记 `未实测`,不要臆造百分比。 +- 若该项本质依赖仓外业务工程,且用户没有给材料,可记 `N/A` 并说明原因。 + +## `04` 的适用边界 + +`04` 只纳入这些与 PTOAS 仓库直接对应的子项: - 文档获取 - 文档学习 - 获取示例代码 @@ -36,26 +56,74 @@ - 运行示例代码 - 编译配置 - 算子工程编译 -- 功能调测里的运行反馈/验证 - -这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 - -## `04` 中默认排除的子项 - -默认标 `N/A`: +- 功能调试 +- 精度调试中 repo 已有 compare/golden/validation 的部分 +默认排除: - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 -- 面向业务工程的完整迭代闭环 +- 脱离 PTOAS 仓库的业务工程联调 + +## `05` 的适用边界 + +PTOAS 可以支撑 `05`,但重点是“特定 shape 性能优化的仓内支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md`:Level-2/Level-3、layout、partition、reshape、valid-shape 等语义 +- `.github/ISSUE_TEMPLATE/performance_issue.yml`:性能问题收集模板 +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/`, `test/samples/MatMul/`:固定 shape 样例 +- `runop.sh`、compile-only 文档、remote validation 脚本:生成、编译、上板验证链路 + +`05` 里这些项通常至少要到 `L4` 才能量化: +- 性能数据采集耗时 +- 性能报告完备度 +- 优化迭代次数/耗时/成功率 +- 性能提升幅度 +- 精度一致性验证 + +如果只有文档和样例,没有真实 benchmark/baseline: +- 文档和入口可评分 +- 真实性能数字、友商对标、提升幅度一律 `未实测` 或 `N/A` + +## `06` 的适用边界 + +PTOAS 可以支撑 `06`,但重点是“多 shape / dynamic shape / valid-shape 的泛化支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md` +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带动态 shape / layout / partition / subview / reshape 的样例 + +`06` 里这些项没有多 shape 基线矩阵时不能硬算: +- 平均优化迭代次数 +- 平均优化耗时 +- 平均性能提升幅度 +- 最大性能提升幅度 +- 多 shape 精度保持率 + +如果当前任务只看到 IR 设计与样例,没有多 shape 实测: +- 文档、样例覆盖度可评分 +- 多 shape 性能/精度结果记 `未实测` + +## `未实测` 与 `N/A` 的使用规则 + +记 `未实测`: +- 仓库里有入口,但当前会话没有进入对应层级 +- 缺 Linux/CANN/NPU/baseline,导致只能停在文档或最小运行层 +- 缺迁移前后对照物,无法给出完成度/收益率 -原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 +记 `N/A`: +- 指标本身超出 PTOAS 仓库边界 +- 用户要求的是仓外业务工程能力,当前仓库没有独立证据链 +- 友商对标、完整业务迁移、完整 builtin 定制等不是本 Skill 的默认量化对象 ## 使用原则 - 如果用户没有特别说明,直接按 `01` 做主评估。 -- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 -- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 -- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 +- 如果用户要求顺带看 `02/04/05/06`,按本文件的边界补相应子集。 +- 可以做“支持度评分”,但不要把仓内文档/样例的存在,夸大成业务侧已经打通。 +- 能量化就量化;不能量化就明确说明为什么是 `未实测` 或 `N/A`。 diff --git a/.codex/skills/ptoas-usability-eval/README.md b/.codex/skills/ptoas-usability-eval/README.md index d7a605627..e243a6f66 100644 --- a/.codex/skills/ptoas-usability-eval/README.md +++ b/.codex/skills/ptoas-usability-eval/README.md @@ -8,7 +8,15 @@ - Trae: `.trae/skills/ptoas-usability-eval/` - Claude Code: `.claude/skills/ptoas-usability-eval/` +当前覆盖的评估场景: +- `01 算子复现部署` +- `02 算子迁移部署` 的 PTOAS 支撑子集 +- `04 算子基本功能实现` 的 PTOAS 工程子集 +- `05 特定 shape 性能优化` 的 PTOAS 支撑子集 +- `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 - 修改 Skill 内容时,应同步更新上述四个客户端目录 +- 对 `L3/L4` 依赖 Linux/CANN/NPU 的指标,未实测时必须标 `未实测`,不能因为当前机器缺环境直接给 PTOAS 低分 diff --git a/.codex/skills/ptoas-usability-eval/SKILL.md b/.codex/skills/ptoas-usability-eval/SKILL.md index 7d0c46b1b..6edf1bc3a 100644 --- a/.codex/skills/ptoas-usability-eval/SKILL.md +++ b/.codex/skills/ptoas-usability-eval/SKILL.md @@ -1,20 +1,22 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval -当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01/02/04/05/06` 给 PTOAS 打分时,使用这个 Skill。 ## 默认范围 -- 默认按 `01 算子复现部署` 评估。 -- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 -- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 -- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 +- `01 算子复现部署`:主评估场景,正常评分。 +- `02 算子迁移部署`:纳入,但只评 PTOAS 仓库能直接支撑的迁移入口、样例、IR/脚本、编译验证链路。 +- `04 算子基本功能实现`:纳入,但只评 PTOAS 直接覆盖的示例、编译、验证、反馈子链路。 +- `05 特定 shape 性能优化`:纳入,但只评 PTOAS 的文档、样例、性能数据获取入口、编译验证、精度/性能验证支撑能力。 +- `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 +- `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认映射边界。 +先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -28,7 +30,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 约束: - 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 -- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- `bisheng` / CANN compile-only 一般属于 `L3`,不应在本地 Mac 上硬打低分。 - 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 ## 证据来源 @@ -38,32 +40,41 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 高优先级证据: - `README.md` - `docs/no_npu_compile_only_guide_zh.md` +- `docs/PTO_IR_manual.md` - `test/samples/runop.sh` - `test/npu_validation/scripts/generate_testcase.py` - `test/npu_validation/scripts/run_remote_npu_validation.sh` -- `test/samples/*/README.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/` +- `test/samples/SetValidShape/`, `test/samples/LayoutInference/`, `test/samples/Partition5D/`, `test/samples/planmemory/` - `.github/workflows/ci.yml` +- `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 工作流 -1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -7. 明确区分: - - PTOAS 仓库已提供的能力 - - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +10. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline +11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 +- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 +- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在,或缺少前后对照 baseline。 - `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 @@ -72,7 +83,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 1. `评估范围` 2. `评估层级` -3. `分项评分` +3. `分场景评分` 4. `关键证据` 5. `主要短板` 6. `建议动作` diff --git a/.codex/skills/ptoas-usability-eval/agents/openai.yaml b/.codex/skills/ptoas-usability-eval/agents/openai.yaml index d433429b1..924e59e3f 100644 --- a/.codex/skills/ptoas-usability-eval/agents/openai.yaml +++ b/.codex/skills/ptoas-usability-eval/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "PTOAS Usability Eval" - short_description: "评估 PTOAS 在 01/04 场景下的易用性" - default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." + short_description: "评估 PTOAS 在 01/02/04/05/06 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for scene 01 operator reproduction/deployment and the PTOAS-supported subsets of scenes 02, 04, 05, and 06." diff --git a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md index e2c21b729..e750e2b4c 100644 --- a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -4,35 +4,60 @@ | 路径 | 主要用途 | 对应场景 | 层级 | | --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | -说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 +说明: +- 不要把当前分支不存在的样例 README 当成固定证据源。 +- 对 `02/05/06`,没有“前后对照基线”时,不要硬算迁移完备度或性能提升幅度。 ## 推荐检索顺序 1. `README.md` 2. `docs/no_npu_compile_only_guide_zh.md` -3. `test/samples/MatMul/` -4. `test/samples/runop.sh` -5. `test/npu_validation/scripts/*.py` / `*.sh` -6. `.github/workflows/ci.yml` -7. 按具体样例目录补读 `test/samples/*/README.md` +3. `docs/PTO_IR_manual.md` +4. `test/samples/MatMul/` 或用户指定样例目录 +5. `test/samples/PyPTOIRParser/`, `FlashAttention/`, `GQA/`, `FFN/`, `SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` +6. `test/samples/runop.sh` +7. `test/npu_validation/scripts/*.py` / `*.sh` +8. `.github/workflows/ci.yml` +9. `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 推荐检索命令 ```bash -rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg -n "构建|运行测试|compile-only|runop|generate_testcase|run_remote_npu_validation|level3" README.md docs test .github +rg -n "valid_shape|layout|partition|reshape|dynamic shape|Level-2|Level-3" docs/PTO_IR_manual.md docs test +rg -n "FlashAttention|GQA|FFN|MatMul|SetValidShape|LayoutInference|Partition5D|planmemory" test .github rg --files test/samples find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) ``` +## 迁移 / 性能场景的补充记录项 + +如果在评 `02/05/06`,额外记录: +- 是否存在迁移前/迁移后对照物 +- 是否存在性能 baseline +- baseline 来源路径 +- 是否需要 NPU 实机 +- 当前停在哪一层 +- 哪些分数是实测,哪些是文档侧支撑分 + ## 记录要求 每个评分项至少要落这些证据字段: @@ -55,5 +80,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` - `test/samples/PyPTOIRParser/` +- `test/samples/FlashAttention/` +- `test/samples/SetValidShape/` -理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 +理由:这些路径要么被 `README.md` 直接引用,要么与迁移/性能/shape 泛化评估强相关,且当前主线可稳定找到。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-01.md b/.codex/skills/ptoas-usability-eval/references/metrics-01.md index ca9cbb226..b765030c4 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,8 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + ## 先声明层级 在 `01` 场景里,必须先声明本次评估覆盖的层级: @@ -11,12 +13,6 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释: -- `L1` 只能评文档与可发现性。 -- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 -- `L4` 才是真正的带卡服务器评估。 - 没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 ## 默认任务模板 @@ -41,48 +37,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md -> docs/... -> test/samples/...` | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/`pto-isa` 的时间 | 真实执行记录 | `L3-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%=10`,按比例计算 | 说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8 步=10`;`9-10=8`;`11-12=6`;`13-14=4`;`>14=2` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%=10`,按比例计算 | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md`, `ci.yml` | `L2-L4` | `100%=10`,按比例计算 | 推荐最小校验命令: @@ -95,25 +91,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | - -推荐记录字段: - -- 使用的样例路径 -- 实际命令 -- 是否需要改环境变量 -- 首次是否成功 -- 报错是否可定位 -- 所属评估层级 +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md`, `test/samples/MatMul/` | `L2-L4` | `<=2 分钟=10`;`2-4=8`;`4-6=6`;`6-8=4`;`>8=2` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%=10`,按比例计算 | ## 何时记 `未实测` / `N/A` diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-02.md b/.codex/skills/ptoas-usability-eval/references/metrics-02.md new file mode 100644 index 000000000..1bcc752ea --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/metrics-02.md @@ -0,0 +1,68 @@ +# `02 算子迁移部署` 指标 + +这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`02` 场景同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +没有进入对应层,就标 `未实测`。 + +## 共享易学习项 + +`02` 的 `文档获取` / `文档学习` 默认复用 [metrics-01.md](metrics-01.md) 中对应规则;只是目标从“复现部署”改成“找到迁移入口、IR 语义、样例和验证链路”。 + +推荐优先证据: +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` + +## 易迁移 + +### 算子迁移 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| tiling 迁移完备度 | 统计迁移前定义的 tiling 结构中,已成功落到 PTO IR / sample / generated testcase 的比例 | `docs/PTO_IR_manual.md`, `test/samples/*`, 用户提供的前后对照物 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| kernel 迁移完备度 | 统计迁移前 kernel 逻辑中,已能由 PTO case / sample / generated testcase 覆盖的比例 | 同上 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| 算子功能失败率 | 迁移后 compile-only / validation / board case 失败比例 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh` | `L3-L4` | `0% 失败=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| 算子性能劣化率 | 迁移后相对迁移前 baseline 的性能增幅 | 用户 baseline、`performance_issue.yml`、实测日志 | `L4` | 劣化 `<5%=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| tiling 代码修改率 | 迁移时 tiling 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| kernel 代码修改率 | 迁移时 kernel 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| 算子迁移总耗时 | 从开始迁移到迁移完成,不含最终验证环节 | 真实执行记录 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 算子迁移成功率 | 迁移任务成功率 | 真实执行记录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 在 PTOAS 中如何落地这些指标 + +### 可直接量化的前提 + +只有当前任务同时具备以下材料时,才量化迁移完备度/修改率/失败率: +- 迁移前输入:上游 IR、旧 kernel、旧 tiling,至少一种 +- 迁移后输入:PTO `.pto`、sample、generated testcase,至少一种 +- 对应验证链路:compile-only 或 board validation + +### 没有对照物时怎么办 + +- 只有仓库文档和样例,没有迁移前材料: + - 可以评“入口是否清晰”“样例/脚本是否齐全” + - 不能给出完备度/修改率/性能劣化率,记 `未实测` +- 指标本身依赖仓外业务工程,且用户没给材料: + - 记 `N/A` + +## 推荐默认证据路径 + +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/*` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-04.md b/.codex/skills/ptoas-usability-eval/references/metrics-04.md index 3f5afd986..496660f68 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,6 +1,8 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 -这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 ## 先声明层级 @@ -11,78 +13,89 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释同 `01`: -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` -- `L4` 需要带卡服务器与设备权限 -- 未进入对应层级,只能标 `未实测` +未进入对应层级,只能标 `未实测`。 -## 纳入打分的子项 +## 易学习 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%=10`,按比例计算 | + +## 易开发、易演进 ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 样例场景覆盖度 | 样例是否覆盖目标算子的输入、输出、golden/compare、compile/validation 场景 | 选定样例目录中的 `.py` / `.pto` / `npu_validation/` | `L1-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 同上 | `L1-L4` | `<=500` 高分;`500-1000` 次高;`1000-2000` 中;`2000-3000` 低;`>3000` 最低 | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-15` 中;`15-20` 低;`>20` 最低 | -说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 +说明:如果运行环境拿不到 token 统计,第二项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 算子编译 ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 新增/修改配置行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `<5 行=100`;`<10=80`;`<15=60`;`<20=40`;`>20=20` | -记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 `0` 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 需要理解的宏/函数个数 | 为改通当前 sample / validation 链路,必须额外读懂多少宏/函数 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh`, sample CMake | `L1-L4` | `2 个=10`;`4 个=8`;`6 个=6`;`8 个=4`;`>10 个=2` | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | -### 功能调测 +## 功能调试 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 报错携带环境/版本/上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度数据获取耗时 | 获取 golden/output/compare 报告所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 定位分析次数 | 从发现精度问题到定位根因的迭代次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 代码修改/迭代循环 | 精度修复迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | ## 默认排除项 @@ -91,7 +104,4 @@ - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 - -如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 +- 脱离 PTOAS 仓库的业务工程联调 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-05.md b/.codex/skills/ptoas-usability-eval/references/metrics-05.md new file mode 100644 index 000000000..079682038 --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/metrics-05.md @@ -0,0 +1,73 @@ +# `05 特定 shape 性能优化` 指标 + +这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`05` 场景通常至少需要: +- `L1` 评文档、样例、入口 +- `L3` 评 compile-only 和工程编译 +- `L4` 才能评真实性能、精度一致性、性能提升 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到性能相关文档、样例、issue 模板所需轮次 | `README.md`, `docs/PTO_IR_manual.md`, `.github/ISSUE_TEMPLATE/performance_issue.yml`, `test/samples/FlashAttention/`, `GQA/`, `FFN/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取 profile/日志/性能数据所需时间 | 用户 benchmark 脚本、sample、remote validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含关键指标、case、shape、参数、耗时 | `performance_issue.yml`、用户日志 | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 优化迭代次数 | 针对固定 shape 调整 pass / IR / sample 的迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 优化耗时 | 完成策略优化的总耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | baseline + 实测性能日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 性能提升幅度 | 优化后相对 baseline 的提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`,因为它超出 PTOAS 仓库单独可证的边界。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取 golden/compare/验证工具所需时间 | sample `golden.py`, `compare.py`, `generate_testcase.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度一致性验证 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/FlashAttention/` +- `test/samples/GQA/` +- `test/samples/FFN/` +- `test/samples/MatMul/` diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-06.md b/.codex/skills/ptoas-usability-eval/references/metrics-06.md new file mode 100644 index 000000000..4e24f2f70 --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/metrics-06.md @@ -0,0 +1,75 @@ +# `06 泛化 shape 性能优化` 指标 + +这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`06` 场景通常至少需要: +- `L1` 评文档、IR 语义、样例覆盖度 +- `L3` 评 compile-only、编译验证 +- `L4` 才能评多 shape 真实性能与精度结果 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到 dynamic/valid-shape、layout、性能相关文档和样例所需轮次 | `docs/PTO_IR_manual.md`, `README.md`, `test/samples/SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取多 shape profile/性能数据所需时间 | 用户 benchmark 脚本、validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含 shape 集合、关键指标、参数、耗时 | 用户日志、`performance_issue.yml` | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 平均优化迭代次数 | 多 shape 场景平均调整次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 平均优化耗时 | 多 shape 场景平均完成策略优化的耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 多 shape 策略优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 多 shape 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | 多 shape baseline + 实测日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 平均性能提升幅度 | 多 shape 场景性能平均提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 最大性能提升幅度 | 提升最大的单个 shape 收益 | 同上 | `L4` | 提升 `>=60%` 高分;`40%-60%` 次之;`20%-40%` 中;`0%-20%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取多 shape 精度验证工具所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度保持率 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带 `valid_shape` / dynamic shape 的样例 diff --git a/.codex/skills/ptoas-usability-eval/references/scope.md b/.codex/skills/ptoas-usability-eval/references/scope.md index 3010539c1..96e5cb004 100644 --- a/.codex/skills/ptoas-usability-eval/references/scope.md +++ b/.codex/skills/ptoas-usability-eval/references/scope.md @@ -2,14 +2,14 @@ ## 六大场景映射 -| 场景 | 结论 | 处理方式 | 原因 | -| --- | --- | --- | --- | -| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | -| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | -| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | -| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | -| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | -| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +| 场景 | 结论 | 处理方式 | PTOAS 中可量化的部分 | 默认不直接量化的部分 | +| --- | --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | 构建、CLI、Python 绑定、sample、compile-only、board-validation | 无 | +| `02 算子迁移部署` | 有限纳入 | 评“迁移支撑能力” | PTO IR 入口、样例/PyPTO 快照、compile-only/validation、迁移前后对照样例 | 业务框架集成、完整模型接线、仓外工程改造 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做差距说明 | 无固定模板 | builtin/业务算子定制主流程 | +| `04 算子基本功能实现` | 次级支撑 | 只评 PTOAS 直接支撑的工程子链路 | 文档、样例、编译配置、工程编译、运行反馈、验证 | 完整需求分析、完整方案设计、通用算子研发全过程 | +| `05 特定 shape 性能优化` | 条件纳入 | 评“特定 shape 性能优化支撑能力” | 性能文档、固定 shape 样例、性能数据获取入口、编译验证、精度/性能验证 | 没有 baseline 时的性能提升幅度、仓外友商对标 | +| `06 泛化 shape 性能优化` | 条件纳入 | 评“多 shape / dynamic shape 支撑能力” | `valid_shape`/dynamic shape 文档、泛化样例、多 shape 验证链路 | 没有多 shape 基线矩阵时的平均/最大收益结论 | ## 评估层级 @@ -25,10 +25,30 @@ - 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 - 文档是否清楚说明这些前置条件,才属于可评分项。 -## `04 算子基本功能实现` 中纳入的子项 +## `02` 的适用边界 -只纳入这些与 PTOAS 仓库直接对应的部分: +PTOAS 可以支撑 `02`,但只能评“迁移支撑能力”,不能假装它已经覆盖完整业务迁移平台。 +可以评分的证据: +- `docs/PTO_IR_manual.md`:IR 层级、tile/view/valid-shape 语义、Level-2/Level-3 入口 +- `test/samples/PyPTOIRParser/README.md`:来自 pypto `ir_parser` 的 vendored `.pto` 快照 +- `test/samples/*`:迁移后 PTO case、样例目录、`golden.py`/`compare.py` +- `docs/no_npu_compile_only_guide_zh.md`、`runop.sh`、remote validation 脚本:迁移后 compile/validate 链路 + +`02` 里这些指标只有在“有前后对照”时才能量化: +- `tiling 迁移完备度` +- `kernel 迁移完备度` +- `tiling/kernel 代码修改率` +- `功能失败率` +- `性能劣化率` + +如果当前任务没有“迁移前/迁移后”对照 case: +- 记 `未实测`,不要臆造百分比。 +- 若该项本质依赖仓外业务工程,且用户没有给材料,可记 `N/A` 并说明原因。 + +## `04` 的适用边界 + +`04` 只纳入这些与 PTOAS 仓库直接对应的子项: - 文档获取 - 文档学习 - 获取示例代码 @@ -36,26 +56,74 @@ - 运行示例代码 - 编译配置 - 算子工程编译 -- 功能调测里的运行反馈/验证 - -这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 - -## `04` 中默认排除的子项 - -默认标 `N/A`: +- 功能调试 +- 精度调试中 repo 已有 compare/golden/validation 的部分 +默认排除: - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 -- 面向业务工程的完整迭代闭环 +- 脱离 PTOAS 仓库的业务工程联调 + +## `05` 的适用边界 + +PTOAS 可以支撑 `05`,但重点是“特定 shape 性能优化的仓内支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md`:Level-2/Level-3、layout、partition、reshape、valid-shape 等语义 +- `.github/ISSUE_TEMPLATE/performance_issue.yml`:性能问题收集模板 +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/`, `test/samples/MatMul/`:固定 shape 样例 +- `runop.sh`、compile-only 文档、remote validation 脚本:生成、编译、上板验证链路 + +`05` 里这些项通常至少要到 `L4` 才能量化: +- 性能数据采集耗时 +- 性能报告完备度 +- 优化迭代次数/耗时/成功率 +- 性能提升幅度 +- 精度一致性验证 + +如果只有文档和样例,没有真实 benchmark/baseline: +- 文档和入口可评分 +- 真实性能数字、友商对标、提升幅度一律 `未实测` 或 `N/A` + +## `06` 的适用边界 + +PTOAS 可以支撑 `06`,但重点是“多 shape / dynamic shape / valid-shape 的泛化支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md` +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带动态 shape / layout / partition / subview / reshape 的样例 + +`06` 里这些项没有多 shape 基线矩阵时不能硬算: +- 平均优化迭代次数 +- 平均优化耗时 +- 平均性能提升幅度 +- 最大性能提升幅度 +- 多 shape 精度保持率 + +如果当前任务只看到 IR 设计与样例,没有多 shape 实测: +- 文档、样例覆盖度可评分 +- 多 shape 性能/精度结果记 `未实测` + +## `未实测` 与 `N/A` 的使用规则 + +记 `未实测`: +- 仓库里有入口,但当前会话没有进入对应层级 +- 缺 Linux/CANN/NPU/baseline,导致只能停在文档或最小运行层 +- 缺迁移前后对照物,无法给出完成度/收益率 -原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 +记 `N/A`: +- 指标本身超出 PTOAS 仓库边界 +- 用户要求的是仓外业务工程能力,当前仓库没有独立证据链 +- 友商对标、完整业务迁移、完整 builtin 定制等不是本 Skill 的默认量化对象 ## 使用原则 - 如果用户没有特别说明,直接按 `01` 做主评估。 -- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 -- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 -- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 +- 如果用户要求顺带看 `02/04/05/06`,按本文件的边界补相应子集。 +- 可以做“支持度评分”,但不要把仓内文档/样例的存在,夸大成业务侧已经打通。 +- 能量化就量化;不能量化就明确说明为什么是 `未实测` 或 `N/A`。 diff --git a/.cursor/skills/ptoas-usability-eval/README.md b/.cursor/skills/ptoas-usability-eval/README.md index d7a605627..e243a6f66 100644 --- a/.cursor/skills/ptoas-usability-eval/README.md +++ b/.cursor/skills/ptoas-usability-eval/README.md @@ -8,7 +8,15 @@ - Trae: `.trae/skills/ptoas-usability-eval/` - Claude Code: `.claude/skills/ptoas-usability-eval/` +当前覆盖的评估场景: +- `01 算子复现部署` +- `02 算子迁移部署` 的 PTOAS 支撑子集 +- `04 算子基本功能实现` 的 PTOAS 工程子集 +- `05 特定 shape 性能优化` 的 PTOAS 支撑子集 +- `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 - 修改 Skill 内容时,应同步更新上述四个客户端目录 +- 对 `L3/L4` 依赖 Linux/CANN/NPU 的指标,未实测时必须标 `未实测`,不能因为当前机器缺环境直接给 PTOAS 低分 diff --git a/.cursor/skills/ptoas-usability-eval/SKILL.md b/.cursor/skills/ptoas-usability-eval/SKILL.md index 7d0c46b1b..6edf1bc3a 100644 --- a/.cursor/skills/ptoas-usability-eval/SKILL.md +++ b/.cursor/skills/ptoas-usability-eval/SKILL.md @@ -1,20 +1,22 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval -当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01/02/04/05/06` 给 PTOAS 打分时,使用这个 Skill。 ## 默认范围 -- 默认按 `01 算子复现部署` 评估。 -- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 -- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 -- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 +- `01 算子复现部署`:主评估场景,正常评分。 +- `02 算子迁移部署`:纳入,但只评 PTOAS 仓库能直接支撑的迁移入口、样例、IR/脚本、编译验证链路。 +- `04 算子基本功能实现`:纳入,但只评 PTOAS 直接覆盖的示例、编译、验证、反馈子链路。 +- `05 特定 shape 性能优化`:纳入,但只评 PTOAS 的文档、样例、性能数据获取入口、编译验证、精度/性能验证支撑能力。 +- `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 +- `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认映射边界。 +先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -28,7 +30,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 约束: - 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 -- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- `bisheng` / CANN compile-only 一般属于 `L3`,不应在本地 Mac 上硬打低分。 - 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 ## 证据来源 @@ -38,32 +40,41 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 高优先级证据: - `README.md` - `docs/no_npu_compile_only_guide_zh.md` +- `docs/PTO_IR_manual.md` - `test/samples/runop.sh` - `test/npu_validation/scripts/generate_testcase.py` - `test/npu_validation/scripts/run_remote_npu_validation.sh` -- `test/samples/*/README.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/` +- `test/samples/SetValidShape/`, `test/samples/LayoutInference/`, `test/samples/Partition5D/`, `test/samples/planmemory/` - `.github/workflows/ci.yml` +- `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 工作流 -1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -7. 明确区分: - - PTOAS 仓库已提供的能力 - - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +10. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline +11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 +- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 +- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在,或缺少前后对照 baseline。 - `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 @@ -72,7 +83,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 1. `评估范围` 2. `评估层级` -3. `分项评分` +3. `分场景评分` 4. `关键证据` 5. `主要短板` 6. `建议动作` diff --git a/.cursor/skills/ptoas-usability-eval/agents/openai.yaml b/.cursor/skills/ptoas-usability-eval/agents/openai.yaml index d433429b1..924e59e3f 100644 --- a/.cursor/skills/ptoas-usability-eval/agents/openai.yaml +++ b/.cursor/skills/ptoas-usability-eval/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "PTOAS Usability Eval" - short_description: "评估 PTOAS 在 01/04 场景下的易用性" - default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." + short_description: "评估 PTOAS 在 01/02/04/05/06 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for scene 01 operator reproduction/deployment and the PTOAS-supported subsets of scenes 02, 04, 05, and 06." diff --git a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md index e2c21b729..e750e2b4c 100644 --- a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -4,35 +4,60 @@ | 路径 | 主要用途 | 对应场景 | 层级 | | --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | -说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 +说明: +- 不要把当前分支不存在的样例 README 当成固定证据源。 +- 对 `02/05/06`,没有“前后对照基线”时,不要硬算迁移完备度或性能提升幅度。 ## 推荐检索顺序 1. `README.md` 2. `docs/no_npu_compile_only_guide_zh.md` -3. `test/samples/MatMul/` -4. `test/samples/runop.sh` -5. `test/npu_validation/scripts/*.py` / `*.sh` -6. `.github/workflows/ci.yml` -7. 按具体样例目录补读 `test/samples/*/README.md` +3. `docs/PTO_IR_manual.md` +4. `test/samples/MatMul/` 或用户指定样例目录 +5. `test/samples/PyPTOIRParser/`, `FlashAttention/`, `GQA/`, `FFN/`, `SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` +6. `test/samples/runop.sh` +7. `test/npu_validation/scripts/*.py` / `*.sh` +8. `.github/workflows/ci.yml` +9. `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 推荐检索命令 ```bash -rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg -n "构建|运行测试|compile-only|runop|generate_testcase|run_remote_npu_validation|level3" README.md docs test .github +rg -n "valid_shape|layout|partition|reshape|dynamic shape|Level-2|Level-3" docs/PTO_IR_manual.md docs test +rg -n "FlashAttention|GQA|FFN|MatMul|SetValidShape|LayoutInference|Partition5D|planmemory" test .github rg --files test/samples find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) ``` +## 迁移 / 性能场景的补充记录项 + +如果在评 `02/05/06`,额外记录: +- 是否存在迁移前/迁移后对照物 +- 是否存在性能 baseline +- baseline 来源路径 +- 是否需要 NPU 实机 +- 当前停在哪一层 +- 哪些分数是实测,哪些是文档侧支撑分 + ## 记录要求 每个评分项至少要落这些证据字段: @@ -55,5 +80,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` - `test/samples/PyPTOIRParser/` +- `test/samples/FlashAttention/` +- `test/samples/SetValidShape/` -理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 +理由:这些路径要么被 `README.md` 直接引用,要么与迁移/性能/shape 泛化评估强相关,且当前主线可稳定找到。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md index ca9cbb226..b765030c4 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,8 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + ## 先声明层级 在 `01` 场景里,必须先声明本次评估覆盖的层级: @@ -11,12 +13,6 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释: -- `L1` 只能评文档与可发现性。 -- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 -- `L4` 才是真正的带卡服务器评估。 - 没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 ## 默认任务模板 @@ -41,48 +37,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md -> docs/... -> test/samples/...` | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/`pto-isa` 的时间 | 真实执行记录 | `L3-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%=10`,按比例计算 | 说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8 步=10`;`9-10=8`;`11-12=6`;`13-14=4`;`>14=2` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%=10`,按比例计算 | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md`, `ci.yml` | `L2-L4` | `100%=10`,按比例计算 | 推荐最小校验命令: @@ -95,25 +91,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | - -推荐记录字段: - -- 使用的样例路径 -- 实际命令 -- 是否需要改环境变量 -- 首次是否成功 -- 报错是否可定位 -- 所属评估层级 +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md`, `test/samples/MatMul/` | `L2-L4` | `<=2 分钟=10`;`2-4=8`;`4-6=6`;`6-8=4`;`>8=2` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%=10`,按比例计算 | ## 何时记 `未实测` / `N/A` diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-02.md b/.cursor/skills/ptoas-usability-eval/references/metrics-02.md new file mode 100644 index 000000000..1bcc752ea --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-02.md @@ -0,0 +1,68 @@ +# `02 算子迁移部署` 指标 + +这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`02` 场景同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +没有进入对应层,就标 `未实测`。 + +## 共享易学习项 + +`02` 的 `文档获取` / `文档学习` 默认复用 [metrics-01.md](metrics-01.md) 中对应规则;只是目标从“复现部署”改成“找到迁移入口、IR 语义、样例和验证链路”。 + +推荐优先证据: +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` + +## 易迁移 + +### 算子迁移 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| tiling 迁移完备度 | 统计迁移前定义的 tiling 结构中,已成功落到 PTO IR / sample / generated testcase 的比例 | `docs/PTO_IR_manual.md`, `test/samples/*`, 用户提供的前后对照物 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| kernel 迁移完备度 | 统计迁移前 kernel 逻辑中,已能由 PTO case / sample / generated testcase 覆盖的比例 | 同上 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| 算子功能失败率 | 迁移后 compile-only / validation / board case 失败比例 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh` | `L3-L4` | `0% 失败=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| 算子性能劣化率 | 迁移后相对迁移前 baseline 的性能增幅 | 用户 baseline、`performance_issue.yml`、实测日志 | `L4` | 劣化 `<5%=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| tiling 代码修改率 | 迁移时 tiling 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| kernel 代码修改率 | 迁移时 kernel 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| 算子迁移总耗时 | 从开始迁移到迁移完成,不含最终验证环节 | 真实执行记录 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 算子迁移成功率 | 迁移任务成功率 | 真实执行记录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 在 PTOAS 中如何落地这些指标 + +### 可直接量化的前提 + +只有当前任务同时具备以下材料时,才量化迁移完备度/修改率/失败率: +- 迁移前输入:上游 IR、旧 kernel、旧 tiling,至少一种 +- 迁移后输入:PTO `.pto`、sample、generated testcase,至少一种 +- 对应验证链路:compile-only 或 board validation + +### 没有对照物时怎么办 + +- 只有仓库文档和样例,没有迁移前材料: + - 可以评“入口是否清晰”“样例/脚本是否齐全” + - 不能给出完备度/修改率/性能劣化率,记 `未实测` +- 指标本身依赖仓外业务工程,且用户没给材料: + - 记 `N/A` + +## 推荐默认证据路径 + +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/*` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md index 3f5afd986..496660f68 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,6 +1,8 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 -这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 ## 先声明层级 @@ -11,78 +13,89 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释同 `01`: -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` -- `L4` 需要带卡服务器与设备权限 -- 未进入对应层级,只能标 `未实测` +未进入对应层级,只能标 `未实测`。 -## 纳入打分的子项 +## 易学习 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%=10`,按比例计算 | + +## 易开发、易演进 ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 样例场景覆盖度 | 样例是否覆盖目标算子的输入、输出、golden/compare、compile/validation 场景 | 选定样例目录中的 `.py` / `.pto` / `npu_validation/` | `L1-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 同上 | `L1-L4` | `<=500` 高分;`500-1000` 次高;`1000-2000` 中;`2000-3000` 低;`>3000` 最低 | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-15` 中;`15-20` 低;`>20` 最低 | -说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 +说明:如果运行环境拿不到 token 统计,第二项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 算子编译 ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 新增/修改配置行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `<5 行=100`;`<10=80`;`<15=60`;`<20=40`;`>20=20` | -记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 `0` 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 需要理解的宏/函数个数 | 为改通当前 sample / validation 链路,必须额外读懂多少宏/函数 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh`, sample CMake | `L1-L4` | `2 个=10`;`4 个=8`;`6 个=6`;`8 个=4`;`>10 个=2` | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | -### 功能调测 +## 功能调试 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 报错携带环境/版本/上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度数据获取耗时 | 获取 golden/output/compare 报告所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 定位分析次数 | 从发现精度问题到定位根因的迭代次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 代码修改/迭代循环 | 精度修复迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | ## 默认排除项 @@ -91,7 +104,4 @@ - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 - -如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 +- 脱离 PTOAS 仓库的业务工程联调 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-05.md b/.cursor/skills/ptoas-usability-eval/references/metrics-05.md new file mode 100644 index 000000000..079682038 --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-05.md @@ -0,0 +1,73 @@ +# `05 特定 shape 性能优化` 指标 + +这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`05` 场景通常至少需要: +- `L1` 评文档、样例、入口 +- `L3` 评 compile-only 和工程编译 +- `L4` 才能评真实性能、精度一致性、性能提升 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到性能相关文档、样例、issue 模板所需轮次 | `README.md`, `docs/PTO_IR_manual.md`, `.github/ISSUE_TEMPLATE/performance_issue.yml`, `test/samples/FlashAttention/`, `GQA/`, `FFN/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取 profile/日志/性能数据所需时间 | 用户 benchmark 脚本、sample、remote validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含关键指标、case、shape、参数、耗时 | `performance_issue.yml`、用户日志 | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 优化迭代次数 | 针对固定 shape 调整 pass / IR / sample 的迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 优化耗时 | 完成策略优化的总耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | baseline + 实测性能日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 性能提升幅度 | 优化后相对 baseline 的提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`,因为它超出 PTOAS 仓库单独可证的边界。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取 golden/compare/验证工具所需时间 | sample `golden.py`, `compare.py`, `generate_testcase.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度一致性验证 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/FlashAttention/` +- `test/samples/GQA/` +- `test/samples/FFN/` +- `test/samples/MatMul/` diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-06.md b/.cursor/skills/ptoas-usability-eval/references/metrics-06.md new file mode 100644 index 000000000..4e24f2f70 --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-06.md @@ -0,0 +1,75 @@ +# `06 泛化 shape 性能优化` 指标 + +这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`06` 场景通常至少需要: +- `L1` 评文档、IR 语义、样例覆盖度 +- `L3` 评 compile-only、编译验证 +- `L4` 才能评多 shape 真实性能与精度结果 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到 dynamic/valid-shape、layout、性能相关文档和样例所需轮次 | `docs/PTO_IR_manual.md`, `README.md`, `test/samples/SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取多 shape profile/性能数据所需时间 | 用户 benchmark 脚本、validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含 shape 集合、关键指标、参数、耗时 | 用户日志、`performance_issue.yml` | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 平均优化迭代次数 | 多 shape 场景平均调整次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 平均优化耗时 | 多 shape 场景平均完成策略优化的耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 多 shape 策略优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 多 shape 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | 多 shape baseline + 实测日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 平均性能提升幅度 | 多 shape 场景性能平均提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 最大性能提升幅度 | 提升最大的单个 shape 收益 | 同上 | `L4` | 提升 `>=60%` 高分;`40%-60%` 次之;`20%-40%` 中;`0%-20%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取多 shape 精度验证工具所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度保持率 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带 `valid_shape` / dynamic shape 的样例 diff --git a/.cursor/skills/ptoas-usability-eval/references/scope.md b/.cursor/skills/ptoas-usability-eval/references/scope.md index 3010539c1..96e5cb004 100644 --- a/.cursor/skills/ptoas-usability-eval/references/scope.md +++ b/.cursor/skills/ptoas-usability-eval/references/scope.md @@ -2,14 +2,14 @@ ## 六大场景映射 -| 场景 | 结论 | 处理方式 | 原因 | -| --- | --- | --- | --- | -| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | -| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | -| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | -| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | -| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | -| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +| 场景 | 结论 | 处理方式 | PTOAS 中可量化的部分 | 默认不直接量化的部分 | +| --- | --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | 构建、CLI、Python 绑定、sample、compile-only、board-validation | 无 | +| `02 算子迁移部署` | 有限纳入 | 评“迁移支撑能力” | PTO IR 入口、样例/PyPTO 快照、compile-only/validation、迁移前后对照样例 | 业务框架集成、完整模型接线、仓外工程改造 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做差距说明 | 无固定模板 | builtin/业务算子定制主流程 | +| `04 算子基本功能实现` | 次级支撑 | 只评 PTOAS 直接支撑的工程子链路 | 文档、样例、编译配置、工程编译、运行反馈、验证 | 完整需求分析、完整方案设计、通用算子研发全过程 | +| `05 特定 shape 性能优化` | 条件纳入 | 评“特定 shape 性能优化支撑能力” | 性能文档、固定 shape 样例、性能数据获取入口、编译验证、精度/性能验证 | 没有 baseline 时的性能提升幅度、仓外友商对标 | +| `06 泛化 shape 性能优化` | 条件纳入 | 评“多 shape / dynamic shape 支撑能力” | `valid_shape`/dynamic shape 文档、泛化样例、多 shape 验证链路 | 没有多 shape 基线矩阵时的平均/最大收益结论 | ## 评估层级 @@ -25,10 +25,30 @@ - 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 - 文档是否清楚说明这些前置条件,才属于可评分项。 -## `04 算子基本功能实现` 中纳入的子项 +## `02` 的适用边界 -只纳入这些与 PTOAS 仓库直接对应的部分: +PTOAS 可以支撑 `02`,但只能评“迁移支撑能力”,不能假装它已经覆盖完整业务迁移平台。 +可以评分的证据: +- `docs/PTO_IR_manual.md`:IR 层级、tile/view/valid-shape 语义、Level-2/Level-3 入口 +- `test/samples/PyPTOIRParser/README.md`:来自 pypto `ir_parser` 的 vendored `.pto` 快照 +- `test/samples/*`:迁移后 PTO case、样例目录、`golden.py`/`compare.py` +- `docs/no_npu_compile_only_guide_zh.md`、`runop.sh`、remote validation 脚本:迁移后 compile/validate 链路 + +`02` 里这些指标只有在“有前后对照”时才能量化: +- `tiling 迁移完备度` +- `kernel 迁移完备度` +- `tiling/kernel 代码修改率` +- `功能失败率` +- `性能劣化率` + +如果当前任务没有“迁移前/迁移后”对照 case: +- 记 `未实测`,不要臆造百分比。 +- 若该项本质依赖仓外业务工程,且用户没有给材料,可记 `N/A` 并说明原因。 + +## `04` 的适用边界 + +`04` 只纳入这些与 PTOAS 仓库直接对应的子项: - 文档获取 - 文档学习 - 获取示例代码 @@ -36,26 +56,74 @@ - 运行示例代码 - 编译配置 - 算子工程编译 -- 功能调测里的运行反馈/验证 - -这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 - -## `04` 中默认排除的子项 - -默认标 `N/A`: +- 功能调试 +- 精度调试中 repo 已有 compare/golden/validation 的部分 +默认排除: - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 -- 面向业务工程的完整迭代闭环 +- 脱离 PTOAS 仓库的业务工程联调 + +## `05` 的适用边界 + +PTOAS 可以支撑 `05`,但重点是“特定 shape 性能优化的仓内支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md`:Level-2/Level-3、layout、partition、reshape、valid-shape 等语义 +- `.github/ISSUE_TEMPLATE/performance_issue.yml`:性能问题收集模板 +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/`, `test/samples/MatMul/`:固定 shape 样例 +- `runop.sh`、compile-only 文档、remote validation 脚本:生成、编译、上板验证链路 + +`05` 里这些项通常至少要到 `L4` 才能量化: +- 性能数据采集耗时 +- 性能报告完备度 +- 优化迭代次数/耗时/成功率 +- 性能提升幅度 +- 精度一致性验证 + +如果只有文档和样例,没有真实 benchmark/baseline: +- 文档和入口可评分 +- 真实性能数字、友商对标、提升幅度一律 `未实测` 或 `N/A` + +## `06` 的适用边界 + +PTOAS 可以支撑 `06`,但重点是“多 shape / dynamic shape / valid-shape 的泛化支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md` +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带动态 shape / layout / partition / subview / reshape 的样例 + +`06` 里这些项没有多 shape 基线矩阵时不能硬算: +- 平均优化迭代次数 +- 平均优化耗时 +- 平均性能提升幅度 +- 最大性能提升幅度 +- 多 shape 精度保持率 + +如果当前任务只看到 IR 设计与样例,没有多 shape 实测: +- 文档、样例覆盖度可评分 +- 多 shape 性能/精度结果记 `未实测` + +## `未实测` 与 `N/A` 的使用规则 + +记 `未实测`: +- 仓库里有入口,但当前会话没有进入对应层级 +- 缺 Linux/CANN/NPU/baseline,导致只能停在文档或最小运行层 +- 缺迁移前后对照物,无法给出完成度/收益率 -原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 +记 `N/A`: +- 指标本身超出 PTOAS 仓库边界 +- 用户要求的是仓外业务工程能力,当前仓库没有独立证据链 +- 友商对标、完整业务迁移、完整 builtin 定制等不是本 Skill 的默认量化对象 ## 使用原则 - 如果用户没有特别说明,直接按 `01` 做主评估。 -- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 -- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 -- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 +- 如果用户要求顺带看 `02/04/05/06`,按本文件的边界补相应子集。 +- 可以做“支持度评分”,但不要把仓内文档/样例的存在,夸大成业务侧已经打通。 +- 能量化就量化;不能量化就明确说明为什么是 `未实测` 或 `N/A`。 diff --git a/.trae/skills/ptoas-usability-eval/README.md b/.trae/skills/ptoas-usability-eval/README.md index d7a605627..e243a6f66 100644 --- a/.trae/skills/ptoas-usability-eval/README.md +++ b/.trae/skills/ptoas-usability-eval/README.md @@ -8,7 +8,15 @@ - Trae: `.trae/skills/ptoas-usability-eval/` - Claude Code: `.claude/skills/ptoas-usability-eval/` +当前覆盖的评估场景: +- `01 算子复现部署` +- `02 算子迁移部署` 的 PTOAS 支撑子集 +- `04 算子基本功能实现` 的 PTOAS 工程子集 +- `05 特定 shape 性能优化` 的 PTOAS 支撑子集 +- `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 - 修改 Skill 内容时,应同步更新上述四个客户端目录 +- 对 `L3/L4` 依赖 Linux/CANN/NPU 的指标,未实测时必须标 `未实测`,不能因为当前机器缺环境直接给 PTOAS 低分 diff --git a/.trae/skills/ptoas-usability-eval/SKILL.md b/.trae/skills/ptoas-usability-eval/SKILL.md index 7d0c46b1b..6edf1bc3a 100644 --- a/.trae/skills/ptoas-usability-eval/SKILL.md +++ b/.trae/skills/ptoas-usability-eval/SKILL.md @@ -1,20 +1,22 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval -当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01/02/04/05/06` 给 PTOAS 打分时,使用这个 Skill。 ## 默认范围 -- 默认按 `01 算子复现部署` 评估。 -- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 -- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 -- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 +- `01 算子复现部署`:主评估场景,正常评分。 +- `02 算子迁移部署`:纳入,但只评 PTOAS 仓库能直接支撑的迁移入口、样例、IR/脚本、编译验证链路。 +- `04 算子基本功能实现`:纳入,但只评 PTOAS 直接覆盖的示例、编译、验证、反馈子链路。 +- `05 特定 shape 性能优化`:纳入,但只评 PTOAS 的文档、样例、性能数据获取入口、编译验证、精度/性能验证支撑能力。 +- `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 +- `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认映射边界。 +先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -28,7 +30,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 约束: - 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 -- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- `bisheng` / CANN compile-only 一般属于 `L3`,不应在本地 Mac 上硬打低分。 - 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 ## 证据来源 @@ -38,32 +40,41 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 高优先级证据: - `README.md` - `docs/no_npu_compile_only_guide_zh.md` +- `docs/PTO_IR_manual.md` - `test/samples/runop.sh` - `test/npu_validation/scripts/generate_testcase.py` - `test/npu_validation/scripts/run_remote_npu_validation.sh` -- `test/samples/*/README.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/` +- `test/samples/SetValidShape/`, `test/samples/LayoutInference/`, `test/samples/Partition5D/`, `test/samples/planmemory/` - `.github/workflows/ci.yml` +- `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 工作流 -1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -7. 明确区分: - - PTOAS 仓库已提供的能力 - - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +10. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline +11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 +- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 +- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在,或缺少前后对照 baseline。 - `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 @@ -72,7 +83,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 1. `评估范围` 2. `评估层级` -3. `分项评分` +3. `分场景评分` 4. `关键证据` 5. `主要短板` 6. `建议动作` diff --git a/.trae/skills/ptoas-usability-eval/agents/openai.yaml b/.trae/skills/ptoas-usability-eval/agents/openai.yaml index d433429b1..924e59e3f 100644 --- a/.trae/skills/ptoas-usability-eval/agents/openai.yaml +++ b/.trae/skills/ptoas-usability-eval/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "PTOAS Usability Eval" - short_description: "评估 PTOAS 在 01/04 场景下的易用性" - default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." + short_description: "评估 PTOAS 在 01/02/04/05/06 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for scene 01 operator reproduction/deployment and the PTOAS-supported subsets of scenes 02, 04, 05, and 06." diff --git a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md index e2c21b729..e750e2b4c 100644 --- a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -4,35 +4,60 @@ | 路径 | 主要用途 | 对应场景 | 层级 | | --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | -说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 +说明: +- 不要把当前分支不存在的样例 README 当成固定证据源。 +- 对 `02/05/06`,没有“前后对照基线”时,不要硬算迁移完备度或性能提升幅度。 ## 推荐检索顺序 1. `README.md` 2. `docs/no_npu_compile_only_guide_zh.md` -3. `test/samples/MatMul/` -4. `test/samples/runop.sh` -5. `test/npu_validation/scripts/*.py` / `*.sh` -6. `.github/workflows/ci.yml` -7. 按具体样例目录补读 `test/samples/*/README.md` +3. `docs/PTO_IR_manual.md` +4. `test/samples/MatMul/` 或用户指定样例目录 +5. `test/samples/PyPTOIRParser/`, `FlashAttention/`, `GQA/`, `FFN/`, `SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` +6. `test/samples/runop.sh` +7. `test/npu_validation/scripts/*.py` / `*.sh` +8. `.github/workflows/ci.yml` +9. `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 推荐检索命令 ```bash -rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg -n "构建|运行测试|compile-only|runop|generate_testcase|run_remote_npu_validation|level3" README.md docs test .github +rg -n "valid_shape|layout|partition|reshape|dynamic shape|Level-2|Level-3" docs/PTO_IR_manual.md docs test +rg -n "FlashAttention|GQA|FFN|MatMul|SetValidShape|LayoutInference|Partition5D|planmemory" test .github rg --files test/samples find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) ``` +## 迁移 / 性能场景的补充记录项 + +如果在评 `02/05/06`,额外记录: +- 是否存在迁移前/迁移后对照物 +- 是否存在性能 baseline +- baseline 来源路径 +- 是否需要 NPU 实机 +- 当前停在哪一层 +- 哪些分数是实测,哪些是文档侧支撑分 + ## 记录要求 每个评分项至少要落这些证据字段: @@ -55,5 +80,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` - `test/samples/PyPTOIRParser/` +- `test/samples/FlashAttention/` +- `test/samples/SetValidShape/` -理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 +理由:这些路径要么被 `README.md` 直接引用,要么与迁移/性能/shape 泛化评估强相关,且当前主线可稳定找到。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-01.md b/.trae/skills/ptoas-usability-eval/references/metrics-01.md index ca9cbb226..b765030c4 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,8 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + ## 先声明层级 在 `01` 场景里,必须先声明本次评估覆盖的层级: @@ -11,12 +13,6 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释: -- `L1` 只能评文档与可发现性。 -- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 -- `L4` 才是真正的带卡服务器评估。 - 没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 ## 默认任务模板 @@ -41,48 +37,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md -> docs/... -> test/samples/...` | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/`pto-isa` 的时间 | 真实执行记录 | `L3-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%=10`,按比例计算 | 说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8 步=10`;`9-10=8`;`11-12=6`;`13-14=4`;`>14=2` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%=10`,按比例计算 | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md`, `ci.yml` | `L2-L4` | `100%=10`,按比例计算 | 推荐最小校验命令: @@ -95,25 +91,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | - -推荐记录字段: - -- 使用的样例路径 -- 实际命令 -- 是否需要改环境变量 -- 首次是否成功 -- 报错是否可定位 -- 所属评估层级 +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md`, `test/samples/MatMul/` | `L2-L4` | `<=2 分钟=10`;`2-4=8`;`4-6=6`;`6-8=4`;`>8=2` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%=10`,按比例计算 | ## 何时记 `未实测` / `N/A` diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-02.md b/.trae/skills/ptoas-usability-eval/references/metrics-02.md new file mode 100644 index 000000000..1bcc752ea --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/metrics-02.md @@ -0,0 +1,68 @@ +# `02 算子迁移部署` 指标 + +这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`02` 场景同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +没有进入对应层,就标 `未实测`。 + +## 共享易学习项 + +`02` 的 `文档获取` / `文档学习` 默认复用 [metrics-01.md](metrics-01.md) 中对应规则;只是目标从“复现部署”改成“找到迁移入口、IR 语义、样例和验证链路”。 + +推荐优先证据: +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` + +## 易迁移 + +### 算子迁移 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| tiling 迁移完备度 | 统计迁移前定义的 tiling 结构中,已成功落到 PTO IR / sample / generated testcase 的比例 | `docs/PTO_IR_manual.md`, `test/samples/*`, 用户提供的前后对照物 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| kernel 迁移完备度 | 统计迁移前 kernel 逻辑中,已能由 PTO case / sample / generated testcase 覆盖的比例 | 同上 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| 算子功能失败率 | 迁移后 compile-only / validation / board case 失败比例 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh` | `L3-L4` | `0% 失败=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| 算子性能劣化率 | 迁移后相对迁移前 baseline 的性能增幅 | 用户 baseline、`performance_issue.yml`、实测日志 | `L4` | 劣化 `<5%=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| tiling 代码修改率 | 迁移时 tiling 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| kernel 代码修改率 | 迁移时 kernel 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| 算子迁移总耗时 | 从开始迁移到迁移完成,不含最终验证环节 | 真实执行记录 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 算子迁移成功率 | 迁移任务成功率 | 真实执行记录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 在 PTOAS 中如何落地这些指标 + +### 可直接量化的前提 + +只有当前任务同时具备以下材料时,才量化迁移完备度/修改率/失败率: +- 迁移前输入:上游 IR、旧 kernel、旧 tiling,至少一种 +- 迁移后输入:PTO `.pto`、sample、generated testcase,至少一种 +- 对应验证链路:compile-only 或 board validation + +### 没有对照物时怎么办 + +- 只有仓库文档和样例,没有迁移前材料: + - 可以评“入口是否清晰”“样例/脚本是否齐全” + - 不能给出完备度/修改率/性能劣化率,记 `未实测` +- 指标本身依赖仓外业务工程,且用户没给材料: + - 记 `N/A` + +## 推荐默认证据路径 + +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/*` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-04.md b/.trae/skills/ptoas-usability-eval/references/metrics-04.md index 3f5afd986..496660f68 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,6 +1,8 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 -这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 ## 先声明层级 @@ -11,78 +13,89 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释同 `01`: -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` -- `L4` 需要带卡服务器与设备权限 -- 未进入对应层级,只能标 `未实测` +未进入对应层级,只能标 `未实测`。 -## 纳入打分的子项 +## 易学习 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%=10`,按比例计算 | + +## 易开发、易演进 ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 样例场景覆盖度 | 样例是否覆盖目标算子的输入、输出、golden/compare、compile/validation 场景 | 选定样例目录中的 `.py` / `.pto` / `npu_validation/` | `L1-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 同上 | `L1-L4` | `<=500` 高分;`500-1000` 次高;`1000-2000` 中;`2000-3000` 低;`>3000` 最低 | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-15` 中;`15-20` 低;`>20` 最低 | -说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 +说明:如果运行环境拿不到 token 统计,第二项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 算子编译 ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 新增/修改配置行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `<5 行=100`;`<10=80`;`<15=60`;`<20=40`;`>20=20` | -记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 `0` 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 需要理解的宏/函数个数 | 为改通当前 sample / validation 链路,必须额外读懂多少宏/函数 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh`, sample CMake | `L1-L4` | `2 个=10`;`4 个=8`;`6 个=6`;`8 个=4`;`>10 个=2` | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | -### 功能调测 +## 功能调试 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 报错携带环境/版本/上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度数据获取耗时 | 获取 golden/output/compare 报告所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 定位分析次数 | 从发现精度问题到定位根因的迭代次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 代码修改/迭代循环 | 精度修复迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | ## 默认排除项 @@ -91,7 +104,4 @@ - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 - -如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 +- 脱离 PTOAS 仓库的业务工程联调 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-05.md b/.trae/skills/ptoas-usability-eval/references/metrics-05.md new file mode 100644 index 000000000..079682038 --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/metrics-05.md @@ -0,0 +1,73 @@ +# `05 特定 shape 性能优化` 指标 + +这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`05` 场景通常至少需要: +- `L1` 评文档、样例、入口 +- `L3` 评 compile-only 和工程编译 +- `L4` 才能评真实性能、精度一致性、性能提升 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到性能相关文档、样例、issue 模板所需轮次 | `README.md`, `docs/PTO_IR_manual.md`, `.github/ISSUE_TEMPLATE/performance_issue.yml`, `test/samples/FlashAttention/`, `GQA/`, `FFN/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取 profile/日志/性能数据所需时间 | 用户 benchmark 脚本、sample、remote validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含关键指标、case、shape、参数、耗时 | `performance_issue.yml`、用户日志 | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 优化迭代次数 | 针对固定 shape 调整 pass / IR / sample 的迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 优化耗时 | 完成策略优化的总耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | baseline + 实测性能日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 性能提升幅度 | 优化后相对 baseline 的提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`,因为它超出 PTOAS 仓库单独可证的边界。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取 golden/compare/验证工具所需时间 | sample `golden.py`, `compare.py`, `generate_testcase.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度一致性验证 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/FlashAttention/` +- `test/samples/GQA/` +- `test/samples/FFN/` +- `test/samples/MatMul/` diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-06.md b/.trae/skills/ptoas-usability-eval/references/metrics-06.md new file mode 100644 index 000000000..4e24f2f70 --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/metrics-06.md @@ -0,0 +1,75 @@ +# `06 泛化 shape 性能优化` 指标 + +这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`06` 场景通常至少需要: +- `L1` 评文档、IR 语义、样例覆盖度 +- `L3` 评 compile-only、编译验证 +- `L4` 才能评多 shape 真实性能与精度结果 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到 dynamic/valid-shape、layout、性能相关文档和样例所需轮次 | `docs/PTO_IR_manual.md`, `README.md`, `test/samples/SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取多 shape profile/性能数据所需时间 | 用户 benchmark 脚本、validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含 shape 集合、关键指标、参数、耗时 | 用户日志、`performance_issue.yml` | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 平均优化迭代次数 | 多 shape 场景平均调整次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 平均优化耗时 | 多 shape 场景平均完成策略优化的耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 多 shape 策略优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 多 shape 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | 多 shape baseline + 实测日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 平均性能提升幅度 | 多 shape 场景性能平均提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 最大性能提升幅度 | 提升最大的单个 shape 收益 | 同上 | `L4` | 提升 `>=60%` 高分;`40%-60%` 次之;`20%-40%` 中;`0%-20%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取多 shape 精度验证工具所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度保持率 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带 `valid_shape` / dynamic shape 的样例 diff --git a/.trae/skills/ptoas-usability-eval/references/scope.md b/.trae/skills/ptoas-usability-eval/references/scope.md index 3010539c1..96e5cb004 100644 --- a/.trae/skills/ptoas-usability-eval/references/scope.md +++ b/.trae/skills/ptoas-usability-eval/references/scope.md @@ -2,14 +2,14 @@ ## 六大场景映射 -| 场景 | 结论 | 处理方式 | 原因 | -| --- | --- | --- | --- | -| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | -| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | -| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | -| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | -| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | -| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +| 场景 | 结论 | 处理方式 | PTOAS 中可量化的部分 | 默认不直接量化的部分 | +| --- | --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | 构建、CLI、Python 绑定、sample、compile-only、board-validation | 无 | +| `02 算子迁移部署` | 有限纳入 | 评“迁移支撑能力” | PTO IR 入口、样例/PyPTO 快照、compile-only/validation、迁移前后对照样例 | 业务框架集成、完整模型接线、仓外工程改造 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做差距说明 | 无固定模板 | builtin/业务算子定制主流程 | +| `04 算子基本功能实现` | 次级支撑 | 只评 PTOAS 直接支撑的工程子链路 | 文档、样例、编译配置、工程编译、运行反馈、验证 | 完整需求分析、完整方案设计、通用算子研发全过程 | +| `05 特定 shape 性能优化` | 条件纳入 | 评“特定 shape 性能优化支撑能力” | 性能文档、固定 shape 样例、性能数据获取入口、编译验证、精度/性能验证 | 没有 baseline 时的性能提升幅度、仓外友商对标 | +| `06 泛化 shape 性能优化` | 条件纳入 | 评“多 shape / dynamic shape 支撑能力” | `valid_shape`/dynamic shape 文档、泛化样例、多 shape 验证链路 | 没有多 shape 基线矩阵时的平均/最大收益结论 | ## 评估层级 @@ -25,10 +25,30 @@ - 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 - 文档是否清楚说明这些前置条件,才属于可评分项。 -## `04 算子基本功能实现` 中纳入的子项 +## `02` 的适用边界 -只纳入这些与 PTOAS 仓库直接对应的部分: +PTOAS 可以支撑 `02`,但只能评“迁移支撑能力”,不能假装它已经覆盖完整业务迁移平台。 +可以评分的证据: +- `docs/PTO_IR_manual.md`:IR 层级、tile/view/valid-shape 语义、Level-2/Level-3 入口 +- `test/samples/PyPTOIRParser/README.md`:来自 pypto `ir_parser` 的 vendored `.pto` 快照 +- `test/samples/*`:迁移后 PTO case、样例目录、`golden.py`/`compare.py` +- `docs/no_npu_compile_only_guide_zh.md`、`runop.sh`、remote validation 脚本:迁移后 compile/validate 链路 + +`02` 里这些指标只有在“有前后对照”时才能量化: +- `tiling 迁移完备度` +- `kernel 迁移完备度` +- `tiling/kernel 代码修改率` +- `功能失败率` +- `性能劣化率` + +如果当前任务没有“迁移前/迁移后”对照 case: +- 记 `未实测`,不要臆造百分比。 +- 若该项本质依赖仓外业务工程,且用户没有给材料,可记 `N/A` 并说明原因。 + +## `04` 的适用边界 + +`04` 只纳入这些与 PTOAS 仓库直接对应的子项: - 文档获取 - 文档学习 - 获取示例代码 @@ -36,26 +56,74 @@ - 运行示例代码 - 编译配置 - 算子工程编译 -- 功能调测里的运行反馈/验证 - -这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 - -## `04` 中默认排除的子项 - -默认标 `N/A`: +- 功能调试 +- 精度调试中 repo 已有 compare/golden/validation 的部分 +默认排除: - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 -- 面向业务工程的完整迭代闭环 +- 脱离 PTOAS 仓库的业务工程联调 + +## `05` 的适用边界 + +PTOAS 可以支撑 `05`,但重点是“特定 shape 性能优化的仓内支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md`:Level-2/Level-3、layout、partition、reshape、valid-shape 等语义 +- `.github/ISSUE_TEMPLATE/performance_issue.yml`:性能问题收集模板 +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/`, `test/samples/MatMul/`:固定 shape 样例 +- `runop.sh`、compile-only 文档、remote validation 脚本:生成、编译、上板验证链路 + +`05` 里这些项通常至少要到 `L4` 才能量化: +- 性能数据采集耗时 +- 性能报告完备度 +- 优化迭代次数/耗时/成功率 +- 性能提升幅度 +- 精度一致性验证 + +如果只有文档和样例,没有真实 benchmark/baseline: +- 文档和入口可评分 +- 真实性能数字、友商对标、提升幅度一律 `未实测` 或 `N/A` + +## `06` 的适用边界 + +PTOAS 可以支撑 `06`,但重点是“多 shape / dynamic shape / valid-shape 的泛化支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md` +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带动态 shape / layout / partition / subview / reshape 的样例 + +`06` 里这些项没有多 shape 基线矩阵时不能硬算: +- 平均优化迭代次数 +- 平均优化耗时 +- 平均性能提升幅度 +- 最大性能提升幅度 +- 多 shape 精度保持率 + +如果当前任务只看到 IR 设计与样例,没有多 shape 实测: +- 文档、样例覆盖度可评分 +- 多 shape 性能/精度结果记 `未实测` + +## `未实测` 与 `N/A` 的使用规则 + +记 `未实测`: +- 仓库里有入口,但当前会话没有进入对应层级 +- 缺 Linux/CANN/NPU/baseline,导致只能停在文档或最小运行层 +- 缺迁移前后对照物,无法给出完成度/收益率 -原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 +记 `N/A`: +- 指标本身超出 PTOAS 仓库边界 +- 用户要求的是仓外业务工程能力,当前仓库没有独立证据链 +- 友商对标、完整业务迁移、完整 builtin 定制等不是本 Skill 的默认量化对象 ## 使用原则 - 如果用户没有特别说明,直接按 `01` 做主评估。 -- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 -- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 -- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 +- 如果用户要求顺带看 `02/04/05/06`,按本文件的边界补相应子集。 +- 可以做“支持度评分”,但不要把仓内文档/样例的存在,夸大成业务侧已经打通。 +- 能量化就量化;不能量化就明确说明为什么是 `未实测` 或 `N/A`。 diff --git a/skills/ptoas-usability-eval/README.md b/skills/ptoas-usability-eval/README.md index d7a605627..e243a6f66 100644 --- a/skills/ptoas-usability-eval/README.md +++ b/skills/ptoas-usability-eval/README.md @@ -8,7 +8,15 @@ - Trae: `.trae/skills/ptoas-usability-eval/` - Claude Code: `.claude/skills/ptoas-usability-eval/` +当前覆盖的评估场景: +- `01 算子复现部署` +- `02 算子迁移部署` 的 PTOAS 支撑子集 +- `04 算子基本功能实现` 的 PTOAS 工程子集 +- `05 特定 shape 性能优化` 的 PTOAS 支撑子集 +- `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 - 修改 Skill 内容时,应同步更新上述四个客户端目录 +- 对 `L3/L4` 依赖 Linux/CANN/NPU 的指标,未实测时必须标 `未实测`,不能因为当前机器缺环境直接给 PTOAS 低分 diff --git a/skills/ptoas-usability-eval/SKILL.md b/skills/ptoas-usability-eval/SKILL.md index 7d0c46b1b..6edf1bc3a 100644 --- a/skills/ptoas-usability-eval/SKILL.md +++ b/skills/ptoas-usability-eval/SKILL.md @@ -1,20 +1,22 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability for operator reproduction/deployment and the PTOAS-supported subset of basic operator implementation. Always classify the evaluation by environment layer first, use PTOAS repo docs, scripts, samples, and CI config as evidence, score scene 01 as the primary template, score only the build/run/validation subset of scene 04, and mark unsupported or untested layers as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval -当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01 算子复现部署` / `04 算子基本功能实现` 给 PTOAS 打分时,使用这个 Skill。 +当用户要评估 `hw-native-sys/PTOAS` 的易用性,或要按 `01/02/04/05/06` 给 PTOAS 打分时,使用这个 Skill。 ## 默认范围 -- 默认按 `01 算子复现部署` 评估。 -- 只对 `04 算子基本功能实现` 中 PTOAS 直接支撑的子链路打分:文档获取、文档学习、示例定位、示例理解、编译配置、工程编译、示例运行、运行反馈/验证。 -- 不要强行覆盖 `02 算子迁移部署`、`03 builtin 算子定制修改`、`05 特定 shape 性能优化`、`06 泛化 shape 性能优化`。 -- 对 `04` 里超出 PTOAS 边界的项,例如完整需求分析、完整方案设计、通用算子编码开发、精度/性能优化全流程,默认标 `N/A`。 +- `01 算子复现部署`:主评估场景,正常评分。 +- `02 算子迁移部署`:纳入,但只评 PTOAS 仓库能直接支撑的迁移入口、样例、IR/脚本、编译验证链路。 +- `04 算子基本功能实现`:纳入,但只评 PTOAS 直接覆盖的示例、编译、验证、反馈子链路。 +- `05 特定 shape 性能优化`:纳入,但只评 PTOAS 的文档、样例、性能数据获取入口、编译验证、精度/性能验证支撑能力。 +- `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 +- `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认映射边界。 +先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -28,7 +30,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 约束: - 没进入某层,就把该层指标记为 `未实测`,不能因为当前机器缺环境就给 PTOAS 低分。 -- `bisheng` / CANN compile-only 一般不应在本地 Mac 上评;它属于 `L3`。 +- `bisheng` / CANN compile-only 一般属于 `L3`,不应在本地 Mac 上硬打低分。 - 带卡运行、设备权限、驱动、ACL、用户组属于 `L4`。 ## 证据来源 @@ -38,32 +40,41 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 高优先级证据: - `README.md` - `docs/no_npu_compile_only_guide_zh.md` +- `docs/PTO_IR_manual.md` - `test/samples/runop.sh` - `test/npu_validation/scripts/generate_testcase.py` - `test/npu_validation/scripts/run_remote_npu_validation.sh` -- `test/samples/*/README.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/` +- `test/samples/SetValidShape/`, `test/samples/LayoutInference/`, `test/samples/Partition5D/`, `test/samples/planmemory/` - `.github/workflows/ci.yml` +- `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 工作流 -1. 先判断用户要的是 `01`、`04-子集`,还是两者都要;未说明时默认 `01`。 +1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -6. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -7. 明确区分: - - PTOAS 仓库已提供的能力 - - 外部前置条件,例如 LLVM、CANN、NPU、`pto-isa`、驱动/权限 -8. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +10. 明确区分: + - PTOAS 仓库已提供的能力 + - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline +11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 ## 计量规则 +- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 +- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 - `成功率`:只基于当前任务里真实执行或真实定位到的结果计算。 -- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在。 +- `未实测`:当前会话未覆盖到对应环境层级,或该层级前置条件不存在,或缺少前后对照 baseline。 - `N/A`:只用于超出 PTOAS 能力边界,或当前任务明确不纳入本次评估范围的项。 ## 输出格式 @@ -72,7 +83,7 @@ description: Evaluate PTOAS repository usability for operator reproduction/deplo 1. `评估范围` 2. `评估层级` -3. `分项评分` +3. `分场景评分` 4. `关键证据` 5. `主要短板` 6. `建议动作` diff --git a/skills/ptoas-usability-eval/agents/openai.yaml b/skills/ptoas-usability-eval/agents/openai.yaml index d433429b1..924e59e3f 100644 --- a/skills/ptoas-usability-eval/agents/openai.yaml +++ b/skills/ptoas-usability-eval/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "PTOAS Usability Eval" - short_description: "评估 PTOAS 在 01/04 场景下的易用性" - default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for 01 operator reproduction/deployment and the PTOAS-supported subset of 04 basic operator implementation." + short_description: "评估 PTOAS 在 01/02/04/05/06 场景下的易用性" + default_prompt: "Use $ptoas-usability-eval to evaluate this PTOAS repo for scene 01 operator reproduction/deployment and the PTOAS-supported subsets of scenes 02, 04, 05, and 06." diff --git a/skills/ptoas-usability-eval/references/evidence-checklist.md b/skills/ptoas-usability-eval/references/evidence-checklist.md index e2c21b729..e750e2b4c 100644 --- a/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -4,35 +4,60 @@ | 路径 | 主要用途 | 对应场景 | 层级 | | --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、上板验证主入口 | `01`, `04-子集` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `04-子集` | `L1`, `L3` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `04-子集` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `04-子集` | `L1`, `L3`, `L4` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04-子集` | `L1-L4` | -| `test/samples/PyPTOIRParser/README.md` | vendored `.pto` 样例来源与稳定性说明 | `04-子集` | `L1` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `04-子集` | `L1`, `L3`, `L4` | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | -说明:不要把当前分支不存在的样例 README 当成固定证据源。若某个样例目录确实存在 README,再按需补读。 +说明: +- 不要把当前分支不存在的样例 README 当成固定证据源。 +- 对 `02/05/06`,没有“前后对照基线”时,不要硬算迁移完备度或性能提升幅度。 ## 推荐检索顺序 1. `README.md` 2. `docs/no_npu_compile_only_guide_zh.md` -3. `test/samples/MatMul/` -4. `test/samples/runop.sh` -5. `test/npu_validation/scripts/*.py` / `*.sh` -6. `.github/workflows/ci.yml` -7. 按具体样例目录补读 `test/samples/*/README.md` +3. `docs/PTO_IR_manual.md` +4. `test/samples/MatMul/` 或用户指定样例目录 +5. `test/samples/PyPTOIRParser/`, `FlashAttention/`, `GQA/`, `FFN/`, `SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` +6. `test/samples/runop.sh` +7. `test/npu_validation/scripts/*.py` / `*.sh` +8. `.github/workflows/ci.yml` +9. `.github/ISSUE_TEMPLATE/performance_issue.yml` ## 推荐检索命令 ```bash -rg -n "构建|运行测试|上板验证|compile-only|generate_testcase|run_remote_npu_validation" README.md docs test .github +rg -n "构建|运行测试|compile-only|runop|generate_testcase|run_remote_npu_validation|level3" README.md docs test .github +rg -n "valid_shape|layout|partition|reshape|dynamic shape|Level-2|Level-3" docs/PTO_IR_manual.md docs test +rg -n "FlashAttention|GQA|FFN|MatMul|SetValidShape|LayoutInference|Partition5D|planmemory" test .github rg --files test/samples find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name 'README.md' \) ``` +## 迁移 / 性能场景的补充记录项 + +如果在评 `02/05/06`,额外记录: +- 是否存在迁移前/迁移后对照物 +- 是否存在性能 baseline +- baseline 来源路径 +- 是否需要 NPU 实机 +- 当前停在哪一层 +- 哪些分数是实测,哪些是文档侧支撑分 + ## 记录要求 每个评分项至少要落这些证据字段: @@ -55,5 +80,7 @@ find test/samples -maxdepth 2 -type f \( -name '*.py' -o -name '*.pto' -o -name - `test/samples/MatMul/tmatmulk.pto` - `test/samples/Addc/addc.py` - `test/samples/PyPTOIRParser/` +- `test/samples/FlashAttention/` +- `test/samples/SetValidShape/` -理由:这些路径要么被 `README.md` 直接引用,要么在当前主线可稳定找到。 +理由:这些路径要么被 `README.md` 直接引用,要么与迁移/性能/shape 泛化评估强相关,且当前主线可稳定找到。 diff --git a/skills/ptoas-usability-eval/references/metrics-01.md b/skills/ptoas-usability-eval/references/metrics-01.md index ca9cbb226..b765030c4 100644 --- a/skills/ptoas-usability-eval/references/metrics-01.md +++ b/skills/ptoas-usability-eval/references/metrics-01.md @@ -2,6 +2,8 @@ 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + ## 先声明层级 在 `01` 场景里,必须先声明本次评估覆盖的层级: @@ -11,12 +13,6 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释: -- `L1` 只能评文档与可发现性。 -- `L2` 只验证当前机器已有 PTOAS 产物的最小可运行性,不代表完整部署链路。 -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT`,但不要求带卡。 -- `L4` 才是真正的带卡服务器评估。 - 没有进入对应层,就标 `未实测`,不要把环境缺失当成 PTOAS 负分。 ## 默认任务模板 @@ -41,48 +37,48 @@ python3 test/npu_validation/scripts/generate_testcase.py \ ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 统计找到“构建 + sample 运行 + compile-only/上板验证”入口所需检索轮次 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始找文档到定位到正确路径的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 目标文档是否都能在仓库内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md` -> `docs/...` -> `test/samples/...` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 按文档执行时,检查命令、路径、版本、链接、说明是否错误 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `.github/workflows/ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 从首个命中文档到凑齐完整执行路径,跨文档跳转的次数 | `README.md -> docs/... -> test/samples/...` | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 是否清楚区分本地运行、Linux compile-only、带卡上板等层级前置条件 | `README.md`, `docs/...`, `.github/workflows/ci.yml` | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始读到能给出执行方案的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 需要通过文档解决的问题里,有多少真正被文档回答 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ## 易部署 ### 环境下载 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/pto-isa 的时间 | 真实执行记录 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境获取场景覆盖率 | 看仓库是否说明源码构建、无卡 compile-only、上板验证所需环境 | `README.md`, `docs/no_npu_compile_only_guide_zh.md` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 环境下载耗时 | 真实下载 LLVM/CANN/Python 依赖/`pto-isa` 的时间 | 真实执行记录 | `L3-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 环境下载成功率 | 下载步骤是否一次完成 | 真实执行记录 | `L3-L4` | `100%=10`,按比例计算 | 说明:如果当前任务没有真的在 Linux/CANN 环境里下载依赖,后两项写 `未实测`。 ### 环境安装 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5` 分钟 `(8,10]`;`5-7` `(6,8]`;`7-9` `(4,6]`;`9-11` `(2,4]`;`>11` `[0,2]` | -| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8` 步 `(8,10]`;`9-10` `(6,8]`;`11-12` `(4,6]`;`13-14` `(2,4]`;`>14` `[0,2]` | -| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 软硬件配套兼容率 | 检查仓库是否明确 LLVM 版本、Python 包版本、CANN / `pto-isa` 依赖关系 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `100%=10`;`80%-99%=8`;`60%-79%=6`;`40%-59%=4`;`<40%=2` | +| 部署时长 | 从开始执行安装到可运行 `ptoas`/Python 绑定的时间 | 真实执行记录 | `L2-L4` | `<=5 分钟=10`;`5-7=8`;`7-9=6`;`9-11=4`;`>11=2` | +| 操作步骤数 | 完成安装所需命令/步骤数量 | `README.md` 构建步骤 | `L1-L4` | `<=8 步=10`;`9-10=8`;`11-12=6`;`13-14=4`;`>14=2` | +| 环境安装成功率 | 是否能完成 LLVM + PTOAS 构建与安装 | 真实执行记录 | `L2-L4` | `100%=10`,按比例计算 | ### 环境校验 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md` 5.1/5.2/5.3, `ci.yml` | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 环境安装后校验成功率 | 是否有明确校验动作,例如 `ptoas --version`、Python import、sample compile | `README.md`, `ci.yml` | `L2-L4` | `100%=10`,按比例计算 | 推荐最小校验命令: @@ -95,25 +91,16 @@ python3 -c "from mlir.dialects import pto; print('ok')" ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` 5.3 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 检索命中成功率 | 统计定位到默认样例目录所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `README.md` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md` 5.3/5.4, `test/samples/MatMul/` | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | - -推荐记录字段: - -- 使用的样例路径 -- 实际命令 -- 是否需要改环境变量 -- 首次是否成功 -- 报错是否可定位 -- 所属评估层级 +| 示例代码运行耗时 | 从运行 sample 到拿到 `.pto` / `.cpp` / compile-only 结果的时间 | `README.md`, `test/samples/MatMul/` | `L2-L4` | `<=2 分钟=10`;`2-4=8`;`4-6=6`;`6-8=4`;`>8=2` | +| 示例代码运行成功率 | `py -> .pto -> .cpp` 或 compile-only / validation 是否成功 | 同上 | `L2-L4` | `100%=10`,按比例计算 | ## 何时记 `未实测` / `N/A` diff --git a/skills/ptoas-usability-eval/references/metrics-02.md b/skills/ptoas-usability-eval/references/metrics-02.md new file mode 100644 index 000000000..1bcc752ea --- /dev/null +++ b/skills/ptoas-usability-eval/references/metrics-02.md @@ -0,0 +1,68 @@ +# `02 算子迁移部署` 指标 + +这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`02` 场景同样先声明层级: + +- `L1 文档审阅层` +- `L2 本地最小运行层` +- `L3 Linux compile-only 层` +- `L4 NPU 上板层` + +没有进入对应层,就标 `未实测`。 + +## 共享易学习项 + +`02` 的 `文档获取` / `文档学习` 默认复用 [metrics-01.md](metrics-01.md) 中对应规则;只是目标从“复现部署”改成“找到迁移入口、IR 语义、样例和验证链路”。 + +推荐优先证据: +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `README.md` +- `docs/no_npu_compile_only_guide_zh.md` + +## 易迁移 + +### 算子迁移 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| tiling 迁移完备度 | 统计迁移前定义的 tiling 结构中,已成功落到 PTO IR / sample / generated testcase 的比例 | `docs/PTO_IR_manual.md`, `test/samples/*`, 用户提供的前后对照物 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| kernel 迁移完备度 | 统计迁移前 kernel 逻辑中,已能由 PTO case / sample / generated testcase 覆盖的比例 | 同上 | `L1-L4` | `100%=10`;`80%=8`;`60%=6`;`40%=4`;`20%=2` | +| 算子功能失败率 | 迁移后 compile-only / validation / board case 失败比例 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh` | `L3-L4` | `0% 失败=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| 算子性能劣化率 | 迁移后相对迁移前 baseline 的性能增幅 | 用户 baseline、`performance_issue.yml`、实测日志 | `L4` | 劣化 `<5%=10`;`10%=8`;`20%=6`;`30%=4`;`40%=2` | +| tiling 代码修改率 | 迁移时 tiling 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| kernel 代码修改率 | 迁移时 kernel 相关代码修改行数 / 总行数 | 用户对照 case、PR diff | `L1-L4` | `0%-5%` 高分;`5%-15%` 次高;`15%-25%` 中;`25%-35%` 低;`>35%` 最低 | +| 算子迁移总耗时 | 从开始迁移到迁移完成,不含最终验证环节 | 真实执行记录 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 算子迁移成功率 | 迁移任务成功率 | 真实执行记录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 在 PTOAS 中如何落地这些指标 + +### 可直接量化的前提 + +只有当前任务同时具备以下材料时,才量化迁移完备度/修改率/失败率: +- 迁移前输入:上游 IR、旧 kernel、旧 tiling,至少一种 +- 迁移后输入:PTO `.pto`、sample、generated testcase,至少一种 +- 对应验证链路:compile-only 或 board validation + +### 没有对照物时怎么办 + +- 只有仓库文档和样例,没有迁移前材料: + - 可以评“入口是否清晰”“样例/脚本是否齐全” + - 不能给出完备度/修改率/性能劣化率,记 `未实测` +- 指标本身依赖仓外业务工程,且用户没给材料: + - 记 `N/A` + +## 推荐默认证据路径 + +- `docs/PTO_IR_manual.md` +- `test/samples/PyPTOIRParser/README.md` +- `test/samples/*` +- `docs/no_npu_compile_only_guide_zh.md` +- `test/samples/runop.sh` +- `test/npu_validation/scripts/generate_testcase.py` +- `test/npu_validation/scripts/run_remote_npu_validation.sh` diff --git a/skills/ptoas-usability-eval/references/metrics-04.md b/skills/ptoas-usability-eval/references/metrics-04.md index 3f5afd986..496660f68 100644 --- a/skills/ptoas-usability-eval/references/metrics-04.md +++ b/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,6 +1,8 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 -这里只评估 PTOAS 真正覆盖到的“工程编译 / 示例 / 验证”链路,不把 PTOAS 当成完整算子研发平台。 +这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 ## 先声明层级 @@ -11,78 +13,89 @@ - `L3 Linux compile-only 层` - `L4 NPU 上板层` -解释同 `01`: -- `L3` 需要 Linux + CANN/bisheng + `PTO_ISA_ROOT` -- `L4` 需要带卡服务器与设备权限 -- 未进入对应层级,只能标 `未实测` +未进入对应层级,只能标 `未实测`。 -## 纳入打分的子项 +## 易学习 ### 文档获取 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | -| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 检索命中成功率 | 找到目标样例、相关 CLI、验证脚本所需轮次 | `README.md`, `test/samples/`, `test/npu_validation/scripts/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | +| 文档检索耗时 | 从开始查到定位到目标入口的时间 | 同上 | `L1-L4` | `2 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 文档获取成功率 | 所需文档/脚本/样例是否都能在仓内找到 | 同上 | `L1-L4` | `100%=10`,按比例计算 | ### 文档学习 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `(8,10]`;少量小错 `(6,8]`;一般错误 `(4,6]`;明显错误 `(2,4]`;严重不可用 `[0,2]` | -| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | -| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 文档错误点位密度 | 样例说明、命令、路径、环境前置条件是否准确 | `README.md`, sample README, `runop.sh`, `ci.yml` | `L1-L4` | 零错误 `100`;少量小错 `80`;一般错误 `60`;明显错误 `40`;严重不可用 `20` | +| 文档跳转次数 | 为理解 sample 到 compile/validation 链路所需跳转次数 | 同上 | `L1-L4` | 1 次 `100`;2 次 `80`;3 次 `60`;4-5 次 `40`;>5 次 `20` | +| 内容覆盖缺失率 | 样例定位、编译、验证、环境前置条件说明是否缺失 | 同上 | `L1-L4` | 无缺失 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 文档学习耗时 | 从开始看文档到能解释执行路径的时间 | 同上 | `L1-L4` | `5 分钟=10`;之后每增加 `1` 分钟扣 `1` 分 | +| 通过文档学习检索成功率 | 依赖文档回答的问题是否被解决 | 同上 | `L1-L4` | `100%=10`,按比例计算 | + +## 易开发、易演进 ### 获取示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `(8,10]`;2 次 `(6,8]`;3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | +| 目标示例定位命中成功率 | 找到适合作为基本功能实现基线的 sample 或 `.pto` 所需轮次 | `test/samples/MatMul/`, `test/samples/Addc/`, `test/samples/PyPTOIRParser/` | `L1-L4` | 1 次 `10`;2 次 `8`;3 次 `6`;4-5 次 `4`;>5 次 `2` | ### 学习/理解示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 选定样例目录中的 `.py` / `.pto` / README | `L1-L4` | `<=500` `(8,10]`;`500-1000` `(6,8]`;`1000-2000` `(4,6]`;`2000-3000` `(2,4]`;`>3000` `[0,2]` | -| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-15` `(4,6]`;`15-20` `(2,4]`;`>20` `[0,2]` | +| 样例场景覆盖度 | 样例是否覆盖目标算子的输入、输出、golden/compare、compile/validation 场景 | 选定样例目录中的 `.py` / `.pto` / `npu_validation/` | `L1-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 样例学习分析 Token 数 | 优先使用平台可见的 AI token 统计;没有统计就写 `未量化` | 同上 | `L1-L4` | `<=500` 高分;`500-1000` 次高;`1000-2000` 中;`2000-3000` 低;`>3000` 最低 | +| 示例理解耗时 | 从首次打开样例到能讲清输入、生成物、验证链路的时间 | 同上 | `L1-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-15` 中;`15-20` 低;`>20` 最低 | -说明:如果运行环境拿不到 token 统计,第一项保留原值 `未量化`,不要编造 token 数。 +说明:如果运行环境拿不到 token 统计,第二项保留原值 `未量化`,不要编造 token 数。 ### 运行示例代码 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | -| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2` 分钟 `(8,10]`;`2-4` `(6,8]`;`4-6` `(4,6]`;`6-8` `(2,4]`;`>8` `[0,2]` | +| 运行成功率 | sample 首次执行是否能生成 `.pto` / `.cpp` / compile-only 验证工程 | `README.md`, `test/samples/runop.sh`, sample 目录 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 示例代码运行耗时 | 从开始运行到 sample 结束的时间 | 同上 | `L2-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 算子编译 ### 编译配置 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译配置修改行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | 无需修改 `(8,10]`;`<5` 行 `(6,8]`;`5-10` 行 `(4,6]`;`10-15` 行 `(2,4]`;`>15` 行 `[0,2]` | +| 新增/修改配置行数 | 按仓库已有说明运行 sample / validation 时,需要额外改多少配置行 | `README.md`, `docs/no_npu_compile_only_guide_zh.md`, `ci.yml` | `L1-L4` | `<5 行=100`;`<10=80`;`<15=60`;`<20=40`;`>20=20` | -记录时只统计“文档外的额外修改”。按 README 就能跑通则记 0 行。 +记录时只统计“文档外的额外修改”。按 README 就能跑通则记 `0` 行。 ### 算子工程编译 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, `run_remote_npu_validation.sh` 日志 | `L3-L4` | 无报错 `(8,10]`;1 次修复 `(6,8]`;2-3 次 `(4,6]`;4-5 次 `(2,4]`;>5 次 `[0,2]` | -| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5` 分钟 `(8,10]`;`5-10` `(6,8]`;`10-20` `(4,6]`;`20-30` `(2,4]`;`>30` `[0,2]` | -| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 需要理解的宏/函数个数 | 为改通当前 sample / validation 链路,必须额外读懂多少宏/函数 | `runop.sh`, `generate_testcase.py`, `run_remote_npu_validation.sh`, sample CMake | `L1-L4` | `2 个=10`;`4 个=8`;`6 个=6`;`8 个=4`;`>10 个=2` | +| 编译报错排障效率 | 从 sample / validation 工程编译到成功,中间修复了几轮 | `ninja`, `cmake --build`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功,以及首次是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | -### 功能调测 +## 功能调试 -| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 评分口径 | +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | | --- | --- | --- | --- | --- | -| 报错携带上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `(8,10]`;`>=90%` `(6,8]`;`70%-89%` `(4,6]`;`50%-69%` `(2,4]`;`<50%` `[0,2]` | -| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `(8,10]`;`<=5%` `(6,8]`;`5%-15%` `(4,6]`;`15%-30%` `(2,4]`;`>30%` `[0,2]` | -| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10` 分钟 `(8,10]`;`10-20` `(6,8]`;`20-30` `(4,6]`;`30-60` `(2,4]`;`>60` `[0,2]` | -| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` `(8,10]`;`80%-99%` `(6,8]`;`60%-79%` `(4,6]`;`40%-59%` `(2,4]`;`<40%` `[0,2]` | +| 报错携带环境/版本/上下文信息完整率 | `ptoas` / validation 脚本报错时,是否包含 stage、case、路径、依赖、设备、soc/version 等信息 | `run_remote_npu_validation.sh`, sample/CI 日志 | `L2-L4` | 信息完整 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 报错自带排障建议比例 | 报错是否已经给出下一步可排查方向 | 同上 | `L2-L4` | 全部带建议 `100`;`>=90%` `80`;`70%-89%` `60`;`50%-69%` `40`;`<50%` `20` | +| 无效冗余信息占比 | 日志是否大量充斥与当前失败无关的信息 | 同上 | `L2-L4` | 无冗余 `100`;`<=5%` `80`;`5%-15%` `60`;`15%-30%` `40`;`>30%` `20` | +| 功能调试耗时 | 从第一次失败到定位根因或跑通的时间 | 同上 | `L2-L4` | `<=10 分钟` 高分;`10-20` 次之;`20-30` 中;`30-60` 低;`>60` 最低 | +| 功能调试成功率 | 当前目标问题是否最终解决 | 同上 | `L2-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度数据获取耗时 | 获取 golden/output/compare 报告所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 定位分析次数 | 从发现精度问题到定位根因的迭代次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 代码修改/迭代循环 | 精度修复迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | ## 默认排除项 @@ -91,7 +104,4 @@ - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 - -如果用户有明确的 repo 内 case,且真的执行了 custom golden / compare / profiling,你可以补充定性说明,但不要把它包装成 PTOAS 已经覆盖的标准模板能力。 +- 脱离 PTOAS 仓库的业务工程联调 diff --git a/skills/ptoas-usability-eval/references/metrics-05.md b/skills/ptoas-usability-eval/references/metrics-05.md new file mode 100644 index 000000000..079682038 --- /dev/null +++ b/skills/ptoas-usability-eval/references/metrics-05.md @@ -0,0 +1,73 @@ +# `05 特定 shape 性能优化` 指标 + +这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`05` 场景通常至少需要: +- `L1` 评文档、样例、入口 +- `L3` 评 compile-only 和工程编译 +- `L4` 才能评真实性能、精度一致性、性能提升 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到性能相关文档、样例、issue 模板所需轮次 | `README.md`, `docs/PTO_IR_manual.md`, `.github/ISSUE_TEMPLATE/performance_issue.yml`, `test/samples/FlashAttention/`, `GQA/`, `FFN/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取 profile/日志/性能数据所需时间 | 用户 benchmark 脚本、sample、remote validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含关键指标、case、shape、参数、耗时 | `performance_issue.yml`、用户日志 | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 优化迭代次数 | 针对固定 shape 调整 pass / IR / sample 的迭代次数 | PR diff、真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 优化耗时 | 完成策略优化的总耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | baseline + 实测性能日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 性能提升幅度 | 优化后相对 baseline 的提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`,因为它超出 PTOAS 仓库单独可证的边界。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取 golden/compare/验证工具所需时间 | sample `golden.py`, `compare.py`, `generate_testcase.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度一致性验证 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/FlashAttention/` +- `test/samples/GQA/` +- `test/samples/FFN/` +- `test/samples/MatMul/` diff --git a/skills/ptoas-usability-eval/references/metrics-06.md b/skills/ptoas-usability-eval/references/metrics-06.md new file mode 100644 index 000000000..4e24f2f70 --- /dev/null +++ b/skills/ptoas-usability-eval/references/metrics-06.md @@ -0,0 +1,75 @@ +# `06 泛化 shape 性能优化` 指标 + +这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 + +说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 + +## 先声明层级 + +`06` 场景通常至少需要: +- `L1` 评文档、IR 语义、样例覆盖度 +- `L3` 评 compile-only、编译验证 +- `L4` 才能评多 shape 真实性能与精度结果 + +## 易学习 + +### 文档获取 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能优化文档检索命中率 | 找到 dynamic/valid-shape、layout、性能相关文档和样例所需轮次 | `docs/PTO_IR_manual.md`, `README.md`, `test/samples/SetValidShape/`, `LayoutInference/`, `Partition5D/`, `planmemory/` | `L1-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 文档检索耗时 | 从开始检索到找到目标文档的时间 | 同上 | `L1-L4` | `<=2 分钟` 高分;`2-4` 次之;`4-6` 中;`6-8` 低;`>8` 最低 | + +## 易开发、易演进 + +### 性能分析 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能数据采集耗时 | 获取多 shape profile/性能数据所需时间 | 用户 benchmark 脚本、validation 日志 | `L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 性能报告完备度 | 报告是否包含 shape 集合、关键指标、参数、耗时 | 用户日志、`performance_issue.yml` | `L1`, `L4` | 数据完整齐全高分;`>=90%` 次之;`70%-89%` 中;`50%-69%` 低;`<50%` 最低 | + +### 优化实现 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 平均优化迭代次数 | 多 shape 场景平均调整次数 | 真实执行记录 | `L3-L4` | 1 次高分;2 次次之;3 次中;4-5 次低;>5 次最低 | +| 平均优化耗时 | 多 shape 场景平均完成策略优化的耗时 | 真实执行记录 | `L3-L4` | `<=30 分钟` 高分;`30-60` 次之;`60-120` 中;`120-180` 低;`>180` 最低 | +| 优化成功率 | 多 shape 策略优化任务成功率 | 真实执行记录 | `L3-L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 编译验证 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 编译报错排障效率 | 多 shape 调优后重新编译 sample / validation 工程时,修复了几轮 | `cmake`, `ninja`, validation 日志 | `L3-L4` | 无报错高分;1 次修复次之;2-3 次中;4-5 次低;>5 次最低 | +| 编译耗时 | 从开始编译到编译完成的总时间 | 同上 | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 编译成功率 | 最终编译是否成功 | 同上 | `L3-L4` | `100%` 高分;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +### 性能调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 性能提升达成率 | 达到预期性能提升目标的任务比例 | 多 shape baseline + 实测日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | +| 平均性能提升幅度 | 多 shape 场景性能平均提升幅度 | 同上 | `L4` | 提升 `>=50%` 高分;`30%-50%` 次之;`10%-30%` 中;`0%-10%` 低;无提升或劣化最低 | +| 最大性能提升幅度 | 提升最大的单个 shape 收益 | 同上 | `L4` | 提升 `>=60%` 高分;`40%-60%` 次之;`20%-40%` 中;`0%-20%` 低;无提升或劣化最低 | +| 对标友商差距 | 优化后性能与友商的差距 | 用户提供对标数据 | `L4` | 超越高分;持平次之;差距 `<20%` 中;`20%-50%` 低;`>50%` 最低 | + +说明:`对标友商差距` 没有外部 benchmark 时直接记 `N/A`。 + +### 精度调试 + +| 指标 | 在 PTOAS 中怎么测 | 主要证据 | 可评分层级 | 打分规则 | +| --- | --- | --- | --- | --- | +| 精度验证工具获取耗时 | 获取多 shape 精度验证工具所需时间 | `generate_testcase.py`, sample `golden.py`, `compare.py` | `L3-L4` | `<=5 分钟` 高分;`5-10` 次之;`10-20` 中;`20-30` 低;`>30` 最低 | +| 精度验证运行成功次数 | 直到精度验证成功所需的尝试次数 | 真实执行记录 | `L3-L4` | 首次成功 `10`;2-3 次 `8`;4-5 次 `6`;6-7 次 `4`;>7 次或无法成功 `2` | +| 精度保持率 | 优化后精度与优化前的一致性 | compare 结果、误差阈值 | `L4` | `100% 一致` 高分;误差 `<1e-5` 次之;`<1e-3` 中;`<1e-1` 低;明显差异最低 | +| 用例回归通过率 | 原功能精度用例回归通过率 | 回归日志 | `L4` | `100%=10`;`80%-99%` 次之;`60%-79%` 中;`40%-59%` 低;`<40%` 最低 | + +## 默认样例 + +优先选择: +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带 `valid_shape` / dynamic shape 的样例 diff --git a/skills/ptoas-usability-eval/references/scope.md b/skills/ptoas-usability-eval/references/scope.md index 3010539c1..96e5cb004 100644 --- a/skills/ptoas-usability-eval/references/scope.md +++ b/skills/ptoas-usability-eval/references/scope.md @@ -2,14 +2,14 @@ ## 六大场景映射 -| 场景 | 结论 | 处理方式 | 原因 | -| --- | --- | --- | --- | -| `01 算子复现部署` | 主评估场景 | 正常评分 | PTOAS 仓库直接提供构建、CLI、样例、compile-only、board-validation 入口。 | -| `02 算子迁移部署` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 迁移通常依赖上层框架、业务工程、模型接入与运行时集成,不是 PTOAS 仓库主链路。 | -| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做定性差距说明 | 这是 builtin/业务算子定制流程,不等同于 PTOAS 编译器仓本身的默认使用路径。 | -| `04 算子基本功能实现` | 次级支撑 | 只评估 PTOAS 直接支撑的工程编译/示例/验证子链路 | PTOAS 能证明“编译器、样例、验证工具”易用性,不能替代完整算子研发流程。 | -| `05 特定 shape 性能优化` | 默认不纳入 | 标 `N/A` | 需要体系化 profiling、性能报告、调优回路;仓库没有完整标准化模板。 | -| `06 泛化 shape 性能优化` | 默认不纳入 | 标 `N/A` | 同上,且还涉及更强的泛化策略与性能回归体系。 | +| 场景 | 结论 | 处理方式 | PTOAS 中可量化的部分 | 默认不直接量化的部分 | +| --- | --- | --- | --- | --- | +| `01 算子复现部署` | 主评估场景 | 正常评分 | 构建、CLI、Python 绑定、sample、compile-only、board-validation | 无 | +| `02 算子迁移部署` | 有限纳入 | 评“迁移支撑能力” | PTO IR 入口、样例/PyPTO 快照、compile-only/validation、迁移前后对照样例 | 业务框架集成、完整模型接线、仓外工程改造 | +| `03 builtin 算子定制修改` | 默认不纳入 | 标 `N/A`,必要时只做差距说明 | 无固定模板 | builtin/业务算子定制主流程 | +| `04 算子基本功能实现` | 次级支撑 | 只评 PTOAS 直接支撑的工程子链路 | 文档、样例、编译配置、工程编译、运行反馈、验证 | 完整需求分析、完整方案设计、通用算子研发全过程 | +| `05 特定 shape 性能优化` | 条件纳入 | 评“特定 shape 性能优化支撑能力” | 性能文档、固定 shape 样例、性能数据获取入口、编译验证、精度/性能验证 | 没有 baseline 时的性能提升幅度、仓外友商对标 | +| `06 泛化 shape 性能优化` | 条件纳入 | 评“多 shape / dynamic shape 支撑能力” | `valid_shape`/dynamic shape 文档、泛化样例、多 shape 验证链路 | 没有多 shape 基线矩阵时的平均/最大收益结论 | ## 评估层级 @@ -25,10 +25,30 @@ - 不得因为本机不是 Linux / 没有 `bisheng` / 没有 NPU 就对 PTOAS 本身扣分。 - 文档是否清楚说明这些前置条件,才属于可评分项。 -## `04 算子基本功能实现` 中纳入的子项 +## `02` 的适用边界 -只纳入这些与 PTOAS 仓库直接对应的部分: +PTOAS 可以支撑 `02`,但只能评“迁移支撑能力”,不能假装它已经覆盖完整业务迁移平台。 +可以评分的证据: +- `docs/PTO_IR_manual.md`:IR 层级、tile/view/valid-shape 语义、Level-2/Level-3 入口 +- `test/samples/PyPTOIRParser/README.md`:来自 pypto `ir_parser` 的 vendored `.pto` 快照 +- `test/samples/*`:迁移后 PTO case、样例目录、`golden.py`/`compare.py` +- `docs/no_npu_compile_only_guide_zh.md`、`runop.sh`、remote validation 脚本:迁移后 compile/validate 链路 + +`02` 里这些指标只有在“有前后对照”时才能量化: +- `tiling 迁移完备度` +- `kernel 迁移完备度` +- `tiling/kernel 代码修改率` +- `功能失败率` +- `性能劣化率` + +如果当前任务没有“迁移前/迁移后”对照 case: +- 记 `未实测`,不要臆造百分比。 +- 若该项本质依赖仓外业务工程,且用户没有给材料,可记 `N/A` 并说明原因。 + +## `04` 的适用边界 + +`04` 只纳入这些与 PTOAS 仓库直接对应的子项: - 文档获取 - 文档学习 - 获取示例代码 @@ -36,26 +56,74 @@ - 运行示例代码 - 编译配置 - 算子工程编译 -- 功能调测里的运行反馈/验证 - -这些子项的证据都能在 PTOAS 仓库的文档、脚本、样例、CI 配置里直接找到。 - -## `04` 中默认排除的子项 - -默认标 `N/A`: +- 功能调试 +- 精度调试中 repo 已有 compare/golden/validation 的部分 +默认排除: - 算子设计-需求分析 - 算子设计-方案实现 - 通用算子代码开发全过程 -- 精度定位全流程 -- 性能调试全流程 -- 面向业务工程的完整迭代闭环 +- 脱离 PTOAS 仓库的业务工程联调 + +## `05` 的适用边界 + +PTOAS 可以支撑 `05`,但重点是“特定 shape 性能优化的仓内支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md`:Level-2/Level-3、layout、partition、reshape、valid-shape 等语义 +- `.github/ISSUE_TEMPLATE/performance_issue.yml`:性能问题收集模板 +- `test/samples/FlashAttention/`, `test/samples/GQA/`, `test/samples/FFN/`, `test/samples/MatMul/`:固定 shape 样例 +- `runop.sh`、compile-only 文档、remote validation 脚本:生成、编译、上板验证链路 + +`05` 里这些项通常至少要到 `L4` 才能量化: +- 性能数据采集耗时 +- 性能报告完备度 +- 优化迭代次数/耗时/成功率 +- 性能提升幅度 +- 精度一致性验证 + +如果只有文档和样例,没有真实 benchmark/baseline: +- 文档和入口可评分 +- 真实性能数字、友商对标、提升幅度一律 `未实测` 或 `N/A` + +## `06` 的适用边界 + +PTOAS 可以支撑 `06`,但重点是“多 shape / dynamic shape / valid-shape 的泛化支撑能力”。 + +可直接使用的仓内证据: +- `docs/PTO_IR_manual.md` +- `test/samples/SetValidShape/` +- `test/samples/LayoutInference/` +- `test/samples/Partition5D/` +- `test/samples/planmemory/` +- 其他带动态 shape / layout / partition / subview / reshape 的样例 + +`06` 里这些项没有多 shape 基线矩阵时不能硬算: +- 平均优化迭代次数 +- 平均优化耗时 +- 平均性能提升幅度 +- 最大性能提升幅度 +- 多 shape 精度保持率 + +如果当前任务只看到 IR 设计与样例,没有多 shape 实测: +- 文档、样例覆盖度可评分 +- 多 shape 性能/精度结果记 `未实测` + +## `未实测` 与 `N/A` 的使用规则 + +记 `未实测`: +- 仓库里有入口,但当前会话没有进入对应层级 +- 缺 Linux/CANN/NPU/baseline,导致只能停在文档或最小运行层 +- 缺迁移前后对照物,无法给出完成度/收益率 -原因:这些环节需要业务算子需求、外部框架接入、性能/精度工具链、真实业务 case 与硬件环境,不是 PTOAS 仓库单独能完整覆盖的能力。 +记 `N/A`: +- 指标本身超出 PTOAS 仓库边界 +- 用户要求的是仓外业务工程能力,当前仓库没有独立证据链 +- 友商对标、完整业务迁移、完整 builtin 定制等不是本 Skill 的默认量化对象 ## 使用原则 - 如果用户没有特别说明,直接按 `01` 做主评估。 -- 如果用户要求“顺带看 04”,只补 PTOAS 支撑的子项,不扩大解释边界。 -- 如果用户坚持看 `02/03/05/06`,可以给出“当前仓库缺什么证据/流程”的差距分析,但不要伪造量化分数。 -- 如果用户没说明环境,默认从 `L1` 开始;只有明确进入更高层时,才补 `L2/L3/L4` 结果。 +- 如果用户要求顺带看 `02/04/05/06`,按本文件的边界补相应子集。 +- 可以做“支持度评分”,但不要把仓内文档/样例的存在,夸大成业务侧已经打通。 +- 能量化就量化;不能量化就明确说明为什么是 `未实测` 或 `N/A`。 From 101a45ddb5661a6a70c90d7d2404ecac93409f7d Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Tue, 19 May 2026 18:40:24 +0800 Subject: [PATCH 5/7] Add aggregate scoring rules to PTOAS usability skill --- .claude/skills/ptoas-usability-eval/README.md | 6 + .claude/skills/ptoas-usability-eval/SKILL.md | 25 +-- .../references/scoring.md | 147 ++++++++++++++++++ .codex/skills/ptoas-usability-eval/README.md | 6 + .codex/skills/ptoas-usability-eval/SKILL.md | 25 +-- .../references/scoring.md | 147 ++++++++++++++++++ .cursor/skills/ptoas-usability-eval/README.md | 6 + .cursor/skills/ptoas-usability-eval/SKILL.md | 25 +-- .../references/scoring.md | 147 ++++++++++++++++++ .trae/skills/ptoas-usability-eval/README.md | 6 + .trae/skills/ptoas-usability-eval/SKILL.md | 25 +-- .../references/scoring.md | 147 ++++++++++++++++++ skills/ptoas-usability-eval/README.md | 6 + skills/ptoas-usability-eval/SKILL.md | 25 +-- .../references/scoring.md | 147 ++++++++++++++++++ 15 files changed, 840 insertions(+), 50 deletions(-) create mode 100644 .claude/skills/ptoas-usability-eval/references/scoring.md create mode 100644 .codex/skills/ptoas-usability-eval/references/scoring.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/scoring.md create mode 100644 .trae/skills/ptoas-usability-eval/references/scoring.md create mode 100644 skills/ptoas-usability-eval/references/scoring.md diff --git a/.claude/skills/ptoas-usability-eval/README.md b/.claude/skills/ptoas-usability-eval/README.md index e243a6f66..7f56482be 100644 --- a/.claude/skills/ptoas-usability-eval/README.md +++ b/.claude/skills/ptoas-usability-eval/README.md @@ -15,6 +15,12 @@ - `05 特定 shape 性能优化` 的 PTOAS 支撑子集 - `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 +当前附带的汇总规则: +- 原始指标保留 `10 分制 / 100 分制` +- 汇总时统一归一到 `100` 分制 +- 默认输出 `总分(支撑)` 和 `总分(实测)` +- `未实测/N/A` 不进入总分分母 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.claude/skills/ptoas-usability-eval/SKILL.md b/.claude/skills/ptoas-usability-eval/SKILL.md index 6edf1bc3a..2407058d5 100644 --- a/.claude/skills/ptoas-usability-eval/SKILL.md +++ b/.claude/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, compute normalized support and measured totals, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval @@ -60,16 +60,18 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -10. 明确区分: +9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +11. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 -- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 -- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 +- 保留用户原始口径,不强行覆盖各指标的原始分制。 +- 但做总分汇总时,必须按 [references/scoring.md](references/scoring.md) 做归一化。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 @@ -83,9 +85,12 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. `评估范围` 2. `评估层级` -3. `分场景评分` -4. `关键证据` -5. `主要短板` -6. `建议动作` +3. `总分(支撑)` +4. `总分(实测)` +5. `分场景评分` +6. `覆盖说明` +7. `关键证据` +8. `主要短板` +9. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.claude/skills/ptoas-usability-eval/references/scoring.md b/.claude/skills/ptoas-usability-eval/references/scoring.md new file mode 100644 index 000000000..d460aa56b --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/scoring.md @@ -0,0 +1,147 @@ +# 总分汇总规则 + +本文件定义 PTOAS 易用性评估的总分汇总方法,解决两个问题: +- 单项指标混用 `10 分制` 和 `100 分制` +- `未实测` / `N/A` 不能被误当成低分 + +## 1. 基本原则 + +- 单项展示时,保留用户原始分制。 +- 汇总总分时,再做统一归一化。 +- 默认输出两个总分: + - `总分(支撑)` + - `总分(实测)` + +## 2. 单项归一化 + +把单项分数统一换算到 `100` 分制: + +- 原始 `10` 分制:`归一化分 = 原始分 * 10` +- 原始 `100` 分制:`归一化分 = 原始分` + +示例: +- `8/10 -> 80/100` +- `60/100 -> 60/100` + +## 3. 特殊值处理 + +- `未实测`:不计入任何总分分母 +- `N/A`:不计入任何总分分母 +- 如果某个场景下所有指标都是 `未实测/N/A`: + - 该场景分不输出数值 + - 标记为 `未形成场景总分` + +## 4. 场景分 + +先算场景分,再算总分。 + +### 4.1 场景支撑分 + +定义:该场景下所有“已评分”的指标,归一化后求平均。 + +纳入范围: +- 文档 +- 样例 +- 脚本 +- 配置 +- 已实测项 + +排除范围: +- `未实测` +- `N/A` + +用途:衡量 PTOAS 仓库本身提供的支撑能力。 + +### 4.2 场景实测分 + +定义:该场景下所有“有真实执行证据”的指标,归一化后求平均。 + +必须满足至少一种证据: +- 真实命令执行 +- 真实编译/build +- 真实 sample 运行 +- 真实 validation / compare / board 结果 + +不纳入: +- 纯文档发现性分 +- 纯 README/脚本存在性分 +- `未实测` +- `N/A` + +用途:衡量当前会话里真正被跑通或被验证到的易用性。 + +## 5. 默认场景权重 + +如果用户没有单独指定权重,默认用: + +- `01`:`40%` +- `02`:`15%` +- `04`:`15%` +- `05`:`15%` +- `06`:`15%` + +说明: +- `01` 是 PTOAS 的主评估场景,所以权重最高。 +- `02/04/05/06` 是补充场景,默认均分剩余权重。 + +## 6. 权重重分配 + +不要把没有参与本次评估的场景硬算进总分。 + +### 6.1 用户只评部分场景 + +如果本次只评了部分场景,例如只评 `01 + 04`: +- 先取这两个场景的默认权重 `40` 和 `15` +- 再重分配到 `100%` + +例: +- `01` 新权重 = `40 / (40+15) = 72.73%` +- `04` 新权重 = `15 / (40+15) = 27.27%` + +### 6.2 计算 `总分(支撑)` + +- 只保留“有场景支撑分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +### 6.3 计算 `总分(实测)` + +- 只保留“有场景实测分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +## 7. 输出要求 + +建议固定输出以下内容: + +- `总分(支撑)`:`xx/100` +- `总分(实测)`:`xx/100` 或 `未形成` +- `覆盖场景`:本次实际评了哪些场景 +- `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 +- `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 + +## 8. 解释口径 + +当两个总分差异较大时,优先按下面口径解释: + +- `总分(支撑)` 高、`总分(实测)` 低: + - 仓库文档/样例/脚本铺得比较全 + - 但当前会话真实跑通度一般,或存在环境/样例摩擦 + +- `总分(支撑)` 低、`总分(实测)` 高: + - 当前 case 可能能跑 + - 但仓库的通用文档化、模板化、可发现性较弱 + +- `总分(实测)` 未形成: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 + +## 9. 推荐展示格式 + +```text +总分(支撑): 78.5/100 +总分(实测): 66.4/100 +覆盖场景: 01, 02, 04, 05, 06 +覆盖层级: L1 + L2 +说明: +- 01/04 同时形成支撑分和实测分 +- 02/05/06 当前主要形成文档/样例支撑分 +- L3/L4 未实测,不计入实测总分分母 +``` diff --git a/.codex/skills/ptoas-usability-eval/README.md b/.codex/skills/ptoas-usability-eval/README.md index e243a6f66..7f56482be 100644 --- a/.codex/skills/ptoas-usability-eval/README.md +++ b/.codex/skills/ptoas-usability-eval/README.md @@ -15,6 +15,12 @@ - `05 特定 shape 性能优化` 的 PTOAS 支撑子集 - `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 +当前附带的汇总规则: +- 原始指标保留 `10 分制 / 100 分制` +- 汇总时统一归一到 `100` 分制 +- 默认输出 `总分(支撑)` 和 `总分(实测)` +- `未实测/N/A` 不进入总分分母 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.codex/skills/ptoas-usability-eval/SKILL.md b/.codex/skills/ptoas-usability-eval/SKILL.md index 6edf1bc3a..2407058d5 100644 --- a/.codex/skills/ptoas-usability-eval/SKILL.md +++ b/.codex/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, compute normalized support and measured totals, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval @@ -60,16 +60,18 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -10. 明确区分: +9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +11. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 -- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 -- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 +- 保留用户原始口径,不强行覆盖各指标的原始分制。 +- 但做总分汇总时,必须按 [references/scoring.md](references/scoring.md) 做归一化。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 @@ -83,9 +85,12 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. `评估范围` 2. `评估层级` -3. `分场景评分` -4. `关键证据` -5. `主要短板` -6. `建议动作` +3. `总分(支撑)` +4. `总分(实测)` +5. `分场景评分` +6. `覆盖说明` +7. `关键证据` +8. `主要短板` +9. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.codex/skills/ptoas-usability-eval/references/scoring.md b/.codex/skills/ptoas-usability-eval/references/scoring.md new file mode 100644 index 000000000..d460aa56b --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/scoring.md @@ -0,0 +1,147 @@ +# 总分汇总规则 + +本文件定义 PTOAS 易用性评估的总分汇总方法,解决两个问题: +- 单项指标混用 `10 分制` 和 `100 分制` +- `未实测` / `N/A` 不能被误当成低分 + +## 1. 基本原则 + +- 单项展示时,保留用户原始分制。 +- 汇总总分时,再做统一归一化。 +- 默认输出两个总分: + - `总分(支撑)` + - `总分(实测)` + +## 2. 单项归一化 + +把单项分数统一换算到 `100` 分制: + +- 原始 `10` 分制:`归一化分 = 原始分 * 10` +- 原始 `100` 分制:`归一化分 = 原始分` + +示例: +- `8/10 -> 80/100` +- `60/100 -> 60/100` + +## 3. 特殊值处理 + +- `未实测`:不计入任何总分分母 +- `N/A`:不计入任何总分分母 +- 如果某个场景下所有指标都是 `未实测/N/A`: + - 该场景分不输出数值 + - 标记为 `未形成场景总分` + +## 4. 场景分 + +先算场景分,再算总分。 + +### 4.1 场景支撑分 + +定义:该场景下所有“已评分”的指标,归一化后求平均。 + +纳入范围: +- 文档 +- 样例 +- 脚本 +- 配置 +- 已实测项 + +排除范围: +- `未实测` +- `N/A` + +用途:衡量 PTOAS 仓库本身提供的支撑能力。 + +### 4.2 场景实测分 + +定义:该场景下所有“有真实执行证据”的指标,归一化后求平均。 + +必须满足至少一种证据: +- 真实命令执行 +- 真实编译/build +- 真实 sample 运行 +- 真实 validation / compare / board 结果 + +不纳入: +- 纯文档发现性分 +- 纯 README/脚本存在性分 +- `未实测` +- `N/A` + +用途:衡量当前会话里真正被跑通或被验证到的易用性。 + +## 5. 默认场景权重 + +如果用户没有单独指定权重,默认用: + +- `01`:`40%` +- `02`:`15%` +- `04`:`15%` +- `05`:`15%` +- `06`:`15%` + +说明: +- `01` 是 PTOAS 的主评估场景,所以权重最高。 +- `02/04/05/06` 是补充场景,默认均分剩余权重。 + +## 6. 权重重分配 + +不要把没有参与本次评估的场景硬算进总分。 + +### 6.1 用户只评部分场景 + +如果本次只评了部分场景,例如只评 `01 + 04`: +- 先取这两个场景的默认权重 `40` 和 `15` +- 再重分配到 `100%` + +例: +- `01` 新权重 = `40 / (40+15) = 72.73%` +- `04` 新权重 = `15 / (40+15) = 27.27%` + +### 6.2 计算 `总分(支撑)` + +- 只保留“有场景支撑分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +### 6.3 计算 `总分(实测)` + +- 只保留“有场景实测分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +## 7. 输出要求 + +建议固定输出以下内容: + +- `总分(支撑)`:`xx/100` +- `总分(实测)`:`xx/100` 或 `未形成` +- `覆盖场景`:本次实际评了哪些场景 +- `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 +- `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 + +## 8. 解释口径 + +当两个总分差异较大时,优先按下面口径解释: + +- `总分(支撑)` 高、`总分(实测)` 低: + - 仓库文档/样例/脚本铺得比较全 + - 但当前会话真实跑通度一般,或存在环境/样例摩擦 + +- `总分(支撑)` 低、`总分(实测)` 高: + - 当前 case 可能能跑 + - 但仓库的通用文档化、模板化、可发现性较弱 + +- `总分(实测)` 未形成: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 + +## 9. 推荐展示格式 + +```text +总分(支撑): 78.5/100 +总分(实测): 66.4/100 +覆盖场景: 01, 02, 04, 05, 06 +覆盖层级: L1 + L2 +说明: +- 01/04 同时形成支撑分和实测分 +- 02/05/06 当前主要形成文档/样例支撑分 +- L3/L4 未实测,不计入实测总分分母 +``` diff --git a/.cursor/skills/ptoas-usability-eval/README.md b/.cursor/skills/ptoas-usability-eval/README.md index e243a6f66..7f56482be 100644 --- a/.cursor/skills/ptoas-usability-eval/README.md +++ b/.cursor/skills/ptoas-usability-eval/README.md @@ -15,6 +15,12 @@ - `05 特定 shape 性能优化` 的 PTOAS 支撑子集 - `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 +当前附带的汇总规则: +- 原始指标保留 `10 分制 / 100 分制` +- 汇总时统一归一到 `100` 分制 +- 默认输出 `总分(支撑)` 和 `总分(实测)` +- `未实测/N/A` 不进入总分分母 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.cursor/skills/ptoas-usability-eval/SKILL.md b/.cursor/skills/ptoas-usability-eval/SKILL.md index 6edf1bc3a..2407058d5 100644 --- a/.cursor/skills/ptoas-usability-eval/SKILL.md +++ b/.cursor/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, compute normalized support and measured totals, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval @@ -60,16 +60,18 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -10. 明确区分: +9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +11. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 -- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 -- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 +- 保留用户原始口径,不强行覆盖各指标的原始分制。 +- 但做总分汇总时,必须按 [references/scoring.md](references/scoring.md) 做归一化。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 @@ -83,9 +85,12 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. `评估范围` 2. `评估层级` -3. `分场景评分` -4. `关键证据` -5. `主要短板` -6. `建议动作` +3. `总分(支撑)` +4. `总分(实测)` +5. `分场景评分` +6. `覆盖说明` +7. `关键证据` +8. `主要短板` +9. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.cursor/skills/ptoas-usability-eval/references/scoring.md b/.cursor/skills/ptoas-usability-eval/references/scoring.md new file mode 100644 index 000000000..d460aa56b --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/scoring.md @@ -0,0 +1,147 @@ +# 总分汇总规则 + +本文件定义 PTOAS 易用性评估的总分汇总方法,解决两个问题: +- 单项指标混用 `10 分制` 和 `100 分制` +- `未实测` / `N/A` 不能被误当成低分 + +## 1. 基本原则 + +- 单项展示时,保留用户原始分制。 +- 汇总总分时,再做统一归一化。 +- 默认输出两个总分: + - `总分(支撑)` + - `总分(实测)` + +## 2. 单项归一化 + +把单项分数统一换算到 `100` 分制: + +- 原始 `10` 分制:`归一化分 = 原始分 * 10` +- 原始 `100` 分制:`归一化分 = 原始分` + +示例: +- `8/10 -> 80/100` +- `60/100 -> 60/100` + +## 3. 特殊值处理 + +- `未实测`:不计入任何总分分母 +- `N/A`:不计入任何总分分母 +- 如果某个场景下所有指标都是 `未实测/N/A`: + - 该场景分不输出数值 + - 标记为 `未形成场景总分` + +## 4. 场景分 + +先算场景分,再算总分。 + +### 4.1 场景支撑分 + +定义:该场景下所有“已评分”的指标,归一化后求平均。 + +纳入范围: +- 文档 +- 样例 +- 脚本 +- 配置 +- 已实测项 + +排除范围: +- `未实测` +- `N/A` + +用途:衡量 PTOAS 仓库本身提供的支撑能力。 + +### 4.2 场景实测分 + +定义:该场景下所有“有真实执行证据”的指标,归一化后求平均。 + +必须满足至少一种证据: +- 真实命令执行 +- 真实编译/build +- 真实 sample 运行 +- 真实 validation / compare / board 结果 + +不纳入: +- 纯文档发现性分 +- 纯 README/脚本存在性分 +- `未实测` +- `N/A` + +用途:衡量当前会话里真正被跑通或被验证到的易用性。 + +## 5. 默认场景权重 + +如果用户没有单独指定权重,默认用: + +- `01`:`40%` +- `02`:`15%` +- `04`:`15%` +- `05`:`15%` +- `06`:`15%` + +说明: +- `01` 是 PTOAS 的主评估场景,所以权重最高。 +- `02/04/05/06` 是补充场景,默认均分剩余权重。 + +## 6. 权重重分配 + +不要把没有参与本次评估的场景硬算进总分。 + +### 6.1 用户只评部分场景 + +如果本次只评了部分场景,例如只评 `01 + 04`: +- 先取这两个场景的默认权重 `40` 和 `15` +- 再重分配到 `100%` + +例: +- `01` 新权重 = `40 / (40+15) = 72.73%` +- `04` 新权重 = `15 / (40+15) = 27.27%` + +### 6.2 计算 `总分(支撑)` + +- 只保留“有场景支撑分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +### 6.3 计算 `总分(实测)` + +- 只保留“有场景实测分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +## 7. 输出要求 + +建议固定输出以下内容: + +- `总分(支撑)`:`xx/100` +- `总分(实测)`:`xx/100` 或 `未形成` +- `覆盖场景`:本次实际评了哪些场景 +- `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 +- `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 + +## 8. 解释口径 + +当两个总分差异较大时,优先按下面口径解释: + +- `总分(支撑)` 高、`总分(实测)` 低: + - 仓库文档/样例/脚本铺得比较全 + - 但当前会话真实跑通度一般,或存在环境/样例摩擦 + +- `总分(支撑)` 低、`总分(实测)` 高: + - 当前 case 可能能跑 + - 但仓库的通用文档化、模板化、可发现性较弱 + +- `总分(实测)` 未形成: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 + +## 9. 推荐展示格式 + +```text +总分(支撑): 78.5/100 +总分(实测): 66.4/100 +覆盖场景: 01, 02, 04, 05, 06 +覆盖层级: L1 + L2 +说明: +- 01/04 同时形成支撑分和实测分 +- 02/05/06 当前主要形成文档/样例支撑分 +- L3/L4 未实测,不计入实测总分分母 +``` diff --git a/.trae/skills/ptoas-usability-eval/README.md b/.trae/skills/ptoas-usability-eval/README.md index e243a6f66..7f56482be 100644 --- a/.trae/skills/ptoas-usability-eval/README.md +++ b/.trae/skills/ptoas-usability-eval/README.md @@ -15,6 +15,12 @@ - `05 特定 shape 性能优化` 的 PTOAS 支撑子集 - `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 +当前附带的汇总规则: +- 原始指标保留 `10 分制 / 100 分制` +- 汇总时统一归一到 `100` 分制 +- 默认输出 `总分(支撑)` 和 `总分(实测)` +- `未实测/N/A` 不进入总分分母 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.trae/skills/ptoas-usability-eval/SKILL.md b/.trae/skills/ptoas-usability-eval/SKILL.md index 6edf1bc3a..2407058d5 100644 --- a/.trae/skills/ptoas-usability-eval/SKILL.md +++ b/.trae/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, compute normalized support and measured totals, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval @@ -60,16 +60,18 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -10. 明确区分: +9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +11. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 -- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 -- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 +- 保留用户原始口径,不强行覆盖各指标的原始分制。 +- 但做总分汇总时,必须按 [references/scoring.md](references/scoring.md) 做归一化。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 @@ -83,9 +85,12 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. `评估范围` 2. `评估层级` -3. `分场景评分` -4. `关键证据` -5. `主要短板` -6. `建议动作` +3. `总分(支撑)` +4. `总分(实测)` +5. `分场景评分` +6. `覆盖说明` +7. `关键证据` +8. `主要短板` +9. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.trae/skills/ptoas-usability-eval/references/scoring.md b/.trae/skills/ptoas-usability-eval/references/scoring.md new file mode 100644 index 000000000..d460aa56b --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/scoring.md @@ -0,0 +1,147 @@ +# 总分汇总规则 + +本文件定义 PTOAS 易用性评估的总分汇总方法,解决两个问题: +- 单项指标混用 `10 分制` 和 `100 分制` +- `未实测` / `N/A` 不能被误当成低分 + +## 1. 基本原则 + +- 单项展示时,保留用户原始分制。 +- 汇总总分时,再做统一归一化。 +- 默认输出两个总分: + - `总分(支撑)` + - `总分(实测)` + +## 2. 单项归一化 + +把单项分数统一换算到 `100` 分制: + +- 原始 `10` 分制:`归一化分 = 原始分 * 10` +- 原始 `100` 分制:`归一化分 = 原始分` + +示例: +- `8/10 -> 80/100` +- `60/100 -> 60/100` + +## 3. 特殊值处理 + +- `未实测`:不计入任何总分分母 +- `N/A`:不计入任何总分分母 +- 如果某个场景下所有指标都是 `未实测/N/A`: + - 该场景分不输出数值 + - 标记为 `未形成场景总分` + +## 4. 场景分 + +先算场景分,再算总分。 + +### 4.1 场景支撑分 + +定义:该场景下所有“已评分”的指标,归一化后求平均。 + +纳入范围: +- 文档 +- 样例 +- 脚本 +- 配置 +- 已实测项 + +排除范围: +- `未实测` +- `N/A` + +用途:衡量 PTOAS 仓库本身提供的支撑能力。 + +### 4.2 场景实测分 + +定义:该场景下所有“有真实执行证据”的指标,归一化后求平均。 + +必须满足至少一种证据: +- 真实命令执行 +- 真实编译/build +- 真实 sample 运行 +- 真实 validation / compare / board 结果 + +不纳入: +- 纯文档发现性分 +- 纯 README/脚本存在性分 +- `未实测` +- `N/A` + +用途:衡量当前会话里真正被跑通或被验证到的易用性。 + +## 5. 默认场景权重 + +如果用户没有单独指定权重,默认用: + +- `01`:`40%` +- `02`:`15%` +- `04`:`15%` +- `05`:`15%` +- `06`:`15%` + +说明: +- `01` 是 PTOAS 的主评估场景,所以权重最高。 +- `02/04/05/06` 是补充场景,默认均分剩余权重。 + +## 6. 权重重分配 + +不要把没有参与本次评估的场景硬算进总分。 + +### 6.1 用户只评部分场景 + +如果本次只评了部分场景,例如只评 `01 + 04`: +- 先取这两个场景的默认权重 `40` 和 `15` +- 再重分配到 `100%` + +例: +- `01` 新权重 = `40 / (40+15) = 72.73%` +- `04` 新权重 = `15 / (40+15) = 27.27%` + +### 6.2 计算 `总分(支撑)` + +- 只保留“有场景支撑分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +### 6.3 计算 `总分(实测)` + +- 只保留“有场景实测分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +## 7. 输出要求 + +建议固定输出以下内容: + +- `总分(支撑)`:`xx/100` +- `总分(实测)`:`xx/100` 或 `未形成` +- `覆盖场景`:本次实际评了哪些场景 +- `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 +- `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 + +## 8. 解释口径 + +当两个总分差异较大时,优先按下面口径解释: + +- `总分(支撑)` 高、`总分(实测)` 低: + - 仓库文档/样例/脚本铺得比较全 + - 但当前会话真实跑通度一般,或存在环境/样例摩擦 + +- `总分(支撑)` 低、`总分(实测)` 高: + - 当前 case 可能能跑 + - 但仓库的通用文档化、模板化、可发现性较弱 + +- `总分(实测)` 未形成: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 + +## 9. 推荐展示格式 + +```text +总分(支撑): 78.5/100 +总分(实测): 66.4/100 +覆盖场景: 01, 02, 04, 05, 06 +覆盖层级: L1 + L2 +说明: +- 01/04 同时形成支撑分和实测分 +- 02/05/06 当前主要形成文档/样例支撑分 +- L3/L4 未实测,不计入实测总分分母 +``` diff --git a/skills/ptoas-usability-eval/README.md b/skills/ptoas-usability-eval/README.md index e243a6f66..7f56482be 100644 --- a/skills/ptoas-usability-eval/README.md +++ b/skills/ptoas-usability-eval/README.md @@ -15,6 +15,12 @@ - `05 特定 shape 性能优化` 的 PTOAS 支撑子集 - `06 泛化 shape 性能优化` 的 PTOAS 支撑子集 +当前附带的汇总规则: +- 原始指标保留 `10 分制 / 100 分制` +- 汇总时统一归一到 `100` 分制 +- 默认输出 `总分(支撑)` 和 `总分(实测)` +- `未实测/N/A` 不进入总分分母 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/skills/ptoas-usability-eval/SKILL.md b/skills/ptoas-usability-eval/SKILL.md index 6edf1bc3a..2407058d5 100644 --- a/skills/ptoas-usability-eval/SKILL.md +++ b/skills/ptoas-usability-eval/SKILL.md @@ -1,6 +1,6 @@ --- name: ptoas-usability-eval -description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, and mark unsupported or untested dimensions as 未实测 or N/A. +description: Evaluate PTOAS repository usability across scene 01 as the primary template plus the PTOAS-supported subsets of scenes 02, 04, 05, and 06. Always classify the evaluation by environment layer first, use only repo-native docs/scripts/samples/CI as primary evidence, keep the user's mixed 10-point and 100-point scoring rules, compute normalized support and measured totals, and mark unsupported or untested dimensions as 未实测 or N/A. --- # PTOAS Usability Eval @@ -60,16 +60,18 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -10. 明确区分: +9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +11. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -11. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 -- 保留用户原始口径,不强行把 `10 分制` 和 `100 分制` 归一成一个分值。 -- 如果看板必须统一量纲,可以额外给一个“归一化展示值”,但原始分必须保留。 +- 保留用户原始口径,不强行覆盖各指标的原始分制。 +- 但做总分汇总时,必须按 [references/scoring.md](references/scoring.md) 做归一化。 - `检索轮次`:每次新的定向搜索或定位尝试算 1 轮。 - `文档跳转次数`:命中首个目标文档后,每跨一个文档/README/脚本入口算 1 次。 - `耗时`:尽量记录真实墙钟时间;拿不到就写 `未实测`,不要臆测。 @@ -83,9 +85,12 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. `评估范围` 2. `评估层级` -3. `分场景评分` -4. `关键证据` -5. `主要短板` -6. `建议动作` +3. `总分(支撑)` +4. `总分(实测)` +5. `分场景评分` +6. `覆盖说明` +7. `关键证据` +8. `主要短板` +9. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/skills/ptoas-usability-eval/references/scoring.md b/skills/ptoas-usability-eval/references/scoring.md new file mode 100644 index 000000000..d460aa56b --- /dev/null +++ b/skills/ptoas-usability-eval/references/scoring.md @@ -0,0 +1,147 @@ +# 总分汇总规则 + +本文件定义 PTOAS 易用性评估的总分汇总方法,解决两个问题: +- 单项指标混用 `10 分制` 和 `100 分制` +- `未实测` / `N/A` 不能被误当成低分 + +## 1. 基本原则 + +- 单项展示时,保留用户原始分制。 +- 汇总总分时,再做统一归一化。 +- 默认输出两个总分: + - `总分(支撑)` + - `总分(实测)` + +## 2. 单项归一化 + +把单项分数统一换算到 `100` 分制: + +- 原始 `10` 分制:`归一化分 = 原始分 * 10` +- 原始 `100` 分制:`归一化分 = 原始分` + +示例: +- `8/10 -> 80/100` +- `60/100 -> 60/100` + +## 3. 特殊值处理 + +- `未实测`:不计入任何总分分母 +- `N/A`:不计入任何总分分母 +- 如果某个场景下所有指标都是 `未实测/N/A`: + - 该场景分不输出数值 + - 标记为 `未形成场景总分` + +## 4. 场景分 + +先算场景分,再算总分。 + +### 4.1 场景支撑分 + +定义:该场景下所有“已评分”的指标,归一化后求平均。 + +纳入范围: +- 文档 +- 样例 +- 脚本 +- 配置 +- 已实测项 + +排除范围: +- `未实测` +- `N/A` + +用途:衡量 PTOAS 仓库本身提供的支撑能力。 + +### 4.2 场景实测分 + +定义:该场景下所有“有真实执行证据”的指标,归一化后求平均。 + +必须满足至少一种证据: +- 真实命令执行 +- 真实编译/build +- 真实 sample 运行 +- 真实 validation / compare / board 结果 + +不纳入: +- 纯文档发现性分 +- 纯 README/脚本存在性分 +- `未实测` +- `N/A` + +用途:衡量当前会话里真正被跑通或被验证到的易用性。 + +## 5. 默认场景权重 + +如果用户没有单独指定权重,默认用: + +- `01`:`40%` +- `02`:`15%` +- `04`:`15%` +- `05`:`15%` +- `06`:`15%` + +说明: +- `01` 是 PTOAS 的主评估场景,所以权重最高。 +- `02/04/05/06` 是补充场景,默认均分剩余权重。 + +## 6. 权重重分配 + +不要把没有参与本次评估的场景硬算进总分。 + +### 6.1 用户只评部分场景 + +如果本次只评了部分场景,例如只评 `01 + 04`: +- 先取这两个场景的默认权重 `40` 和 `15` +- 再重分配到 `100%` + +例: +- `01` 新权重 = `40 / (40+15) = 72.73%` +- `04` 新权重 = `15 / (40+15) = 27.27%` + +### 6.2 计算 `总分(支撑)` + +- 只保留“有场景支撑分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +### 6.3 计算 `总分(实测)` + +- 只保留“有场景实测分”的场景 +- 对这些场景的默认权重重分配后加权平均 + +## 7. 输出要求 + +建议固定输出以下内容: + +- `总分(支撑)`:`xx/100` +- `总分(实测)`:`xx/100` 或 `未形成` +- `覆盖场景`:本次实际评了哪些场景 +- `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 +- `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 + +## 8. 解释口径 + +当两个总分差异较大时,优先按下面口径解释: + +- `总分(支撑)` 高、`总分(实测)` 低: + - 仓库文档/样例/脚本铺得比较全 + - 但当前会话真实跑通度一般,或存在环境/样例摩擦 + +- `总分(支撑)` 低、`总分(实测)` 高: + - 当前 case 可能能跑 + - 但仓库的通用文档化、模板化、可发现性较弱 + +- `总分(实测)` 未形成: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 + +## 9. 推荐展示格式 + +```text +总分(支撑): 78.5/100 +总分(实测): 66.4/100 +覆盖场景: 01, 02, 04, 05, 06 +覆盖层级: L1 + L2 +说明: +- 01/04 同时形成支撑分和实测分 +- 02/05/06 当前主要形成文档/样例支撑分 +- L3/L4 未实测,不计入实测总分分母 +``` From ae0852ece6064ab1deba3eca35974c07723feaac Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Tue, 19 May 2026 19:05:33 +0800 Subject: [PATCH 6/7] Clarify measured-score wording in usability skill --- .claude/skills/ptoas-usability-eval/references/scoring.md | 8 ++++---- .codex/skills/ptoas-usability-eval/references/scoring.md | 8 ++++---- .cursor/skills/ptoas-usability-eval/references/scoring.md | 8 ++++---- .trae/skills/ptoas-usability-eval/references/scoring.md | 8 ++++---- skills/ptoas-usability-eval/references/scoring.md | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.claude/skills/ptoas-usability-eval/references/scoring.md b/.claude/skills/ptoas-usability-eval/references/scoring.md index d460aa56b..aacfcf78c 100644 --- a/.claude/skills/ptoas-usability-eval/references/scoring.md +++ b/.claude/skills/ptoas-usability-eval/references/scoring.md @@ -29,7 +29,7 @@ - `N/A`:不计入任何总分分母 - 如果某个场景下所有指标都是 `未实测/N/A`: - 该场景分不输出数值 - - 标记为 `未形成场景总分` + - 标记为 `本次无实测样本` ## 4. 场景分 @@ -113,7 +113,7 @@ 建议固定输出以下内容: - `总分(支撑)`:`xx/100` -- `总分(实测)`:`xx/100` 或 `未形成` +- `总分(实测)`:`xx/100` 或 `本次无法计算` - `覆盖场景`:本次实际评了哪些场景 - `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 - `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 @@ -130,8 +130,8 @@ - 当前 case 可能能跑 - 但仓库的通用文档化、模板化、可发现性较弱 -- `总分(实测)` 未形成: - - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 +- `总分(实测)` 显示为 `本次无法计算`: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有足够的真实执行证据 ## 9. 推荐展示格式 diff --git a/.codex/skills/ptoas-usability-eval/references/scoring.md b/.codex/skills/ptoas-usability-eval/references/scoring.md index d460aa56b..aacfcf78c 100644 --- a/.codex/skills/ptoas-usability-eval/references/scoring.md +++ b/.codex/skills/ptoas-usability-eval/references/scoring.md @@ -29,7 +29,7 @@ - `N/A`:不计入任何总分分母 - 如果某个场景下所有指标都是 `未实测/N/A`: - 该场景分不输出数值 - - 标记为 `未形成场景总分` + - 标记为 `本次无实测样本` ## 4. 场景分 @@ -113,7 +113,7 @@ 建议固定输出以下内容: - `总分(支撑)`:`xx/100` -- `总分(实测)`:`xx/100` 或 `未形成` +- `总分(实测)`:`xx/100` 或 `本次无法计算` - `覆盖场景`:本次实际评了哪些场景 - `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 - `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 @@ -130,8 +130,8 @@ - 当前 case 可能能跑 - 但仓库的通用文档化、模板化、可发现性较弱 -- `总分(实测)` 未形成: - - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 +- `总分(实测)` 显示为 `本次无法计算`: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有足够的真实执行证据 ## 9. 推荐展示格式 diff --git a/.cursor/skills/ptoas-usability-eval/references/scoring.md b/.cursor/skills/ptoas-usability-eval/references/scoring.md index d460aa56b..aacfcf78c 100644 --- a/.cursor/skills/ptoas-usability-eval/references/scoring.md +++ b/.cursor/skills/ptoas-usability-eval/references/scoring.md @@ -29,7 +29,7 @@ - `N/A`:不计入任何总分分母 - 如果某个场景下所有指标都是 `未实测/N/A`: - 该场景分不输出数值 - - 标记为 `未形成场景总分` + - 标记为 `本次无实测样本` ## 4. 场景分 @@ -113,7 +113,7 @@ 建议固定输出以下内容: - `总分(支撑)`:`xx/100` -- `总分(实测)`:`xx/100` 或 `未形成` +- `总分(实测)`:`xx/100` 或 `本次无法计算` - `覆盖场景`:本次实际评了哪些场景 - `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 - `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 @@ -130,8 +130,8 @@ - 当前 case 可能能跑 - 但仓库的通用文档化、模板化、可发现性较弱 -- `总分(实测)` 未形成: - - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 +- `总分(实测)` 显示为 `本次无法计算`: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有足够的真实执行证据 ## 9. 推荐展示格式 diff --git a/.trae/skills/ptoas-usability-eval/references/scoring.md b/.trae/skills/ptoas-usability-eval/references/scoring.md index d460aa56b..aacfcf78c 100644 --- a/.trae/skills/ptoas-usability-eval/references/scoring.md +++ b/.trae/skills/ptoas-usability-eval/references/scoring.md @@ -29,7 +29,7 @@ - `N/A`:不计入任何总分分母 - 如果某个场景下所有指标都是 `未实测/N/A`: - 该场景分不输出数值 - - 标记为 `未形成场景总分` + - 标记为 `本次无实测样本` ## 4. 场景分 @@ -113,7 +113,7 @@ 建议固定输出以下内容: - `总分(支撑)`:`xx/100` -- `总分(实测)`:`xx/100` 或 `未形成` +- `总分(实测)`:`xx/100` 或 `本次无法计算` - `覆盖场景`:本次实际评了哪些场景 - `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 - `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 @@ -130,8 +130,8 @@ - 当前 case 可能能跑 - 但仓库的通用文档化、模板化、可发现性较弱 -- `总分(实测)` 未形成: - - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 +- `总分(实测)` 显示为 `本次无法计算`: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有足够的真实执行证据 ## 9. 推荐展示格式 diff --git a/skills/ptoas-usability-eval/references/scoring.md b/skills/ptoas-usability-eval/references/scoring.md index d460aa56b..aacfcf78c 100644 --- a/skills/ptoas-usability-eval/references/scoring.md +++ b/skills/ptoas-usability-eval/references/scoring.md @@ -29,7 +29,7 @@ - `N/A`:不计入任何总分分母 - 如果某个场景下所有指标都是 `未实测/N/A`: - 该场景分不输出数值 - - 标记为 `未形成场景总分` + - 标记为 `本次无实测样本` ## 4. 场景分 @@ -113,7 +113,7 @@ 建议固定输出以下内容: - `总分(支撑)`:`xx/100` -- `总分(实测)`:`xx/100` 或 `未形成` +- `总分(实测)`:`xx/100` 或 `本次无法计算` - `覆盖场景`:本次实际评了哪些场景 - `覆盖层级`:`L1/L2/L3/L4` 到了哪一层 - `实测覆盖说明`:哪些场景只有文档分,哪些场景有真实执行分 @@ -130,8 +130,8 @@ - 当前 case 可能能跑 - 但仓库的通用文档化、模板化、可发现性较弱 -- `总分(实测)` 未形成: - - 说明本次基本停留在 `L1`,或者只有文档审阅,没有真实执行证据 +- `总分(实测)` 显示为 `本次无法计算`: + - 说明本次基本停留在 `L1`,或者只有文档审阅,没有足够的真实执行证据 ## 9. 推荐展示格式 From 6852246043f0f157800503a70e224804f04cd0be Mon Sep 17 00:00:00 2001 From: HecreReed <821896444@qq.com> Date: Thu, 21 May 2026 15:44:34 +0800 Subject: [PATCH 7/7] Align PTOAS usability skill with touch-point taxonomy --- .claude/skills/ptoas-usability-eval/README.md | 5 + .claude/skills/ptoas-usability-eval/SKILL.md | 42 ++--- .../references/evidence-checklist.md | 38 ++--- .../references/metrics-01.md | 9 + .../references/metrics-02.md | 9 + .../references/metrics-04.md | 9 + .../references/metrics-05.md | 9 + .../references/metrics-06.md | 9 + .../references/scoring.md | 1 + .../references/touchpoint-selection.md | 154 ++++++++++++++++++ .codex/skills/ptoas-usability-eval/README.md | 5 + .codex/skills/ptoas-usability-eval/SKILL.md | 42 ++--- .../references/evidence-checklist.md | 38 ++--- .../references/metrics-01.md | 9 + .../references/metrics-02.md | 9 + .../references/metrics-04.md | 9 + .../references/metrics-05.md | 9 + .../references/metrics-06.md | 9 + .../references/scoring.md | 1 + .../references/touchpoint-selection.md | 154 ++++++++++++++++++ .cursor/skills/ptoas-usability-eval/README.md | 5 + .cursor/skills/ptoas-usability-eval/SKILL.md | 42 ++--- .../references/evidence-checklist.md | 38 ++--- .../references/metrics-01.md | 9 + .../references/metrics-02.md | 9 + .../references/metrics-04.md | 9 + .../references/metrics-05.md | 9 + .../references/metrics-06.md | 9 + .../references/scoring.md | 1 + .../references/touchpoint-selection.md | 154 ++++++++++++++++++ .trae/skills/ptoas-usability-eval/README.md | 5 + .trae/skills/ptoas-usability-eval/SKILL.md | 42 ++--- .../references/evidence-checklist.md | 38 ++--- .../references/metrics-01.md | 9 + .../references/metrics-02.md | 9 + .../references/metrics-04.md | 9 + .../references/metrics-05.md | 9 + .../references/metrics-06.md | 9 + .../references/scoring.md | 1 + .../references/touchpoint-selection.md | 154 ++++++++++++++++++ skills/ptoas-usability-eval/README.md | 5 + skills/ptoas-usability-eval/SKILL.md | 42 ++--- .../references/evidence-checklist.md | 38 ++--- .../references/metrics-01.md | 9 + .../references/metrics-02.md | 9 + .../references/metrics-04.md | 9 + .../references/metrics-05.md | 9 + .../references/metrics-06.md | 9 + .../references/scoring.md | 1 + .../references/touchpoint-selection.md | 154 ++++++++++++++++++ 50 files changed, 1230 insertions(+), 195 deletions(-) create mode 100644 .claude/skills/ptoas-usability-eval/references/touchpoint-selection.md create mode 100644 .codex/skills/ptoas-usability-eval/references/touchpoint-selection.md create mode 100644 .cursor/skills/ptoas-usability-eval/references/touchpoint-selection.md create mode 100644 .trae/skills/ptoas-usability-eval/references/touchpoint-selection.md create mode 100644 skills/ptoas-usability-eval/references/touchpoint-selection.md diff --git a/.claude/skills/ptoas-usability-eval/README.md b/.claude/skills/ptoas-usability-eval/README.md index 7f56482be..3f8fd8545 100644 --- a/.claude/skills/ptoas-usability-eval/README.md +++ b/.claude/skills/ptoas-usability-eval/README.md @@ -21,6 +21,11 @@ - 默认输出 `总分(支撑)` 和 `总分(实测)` - `未实测/N/A` 不进入总分分母 +当前评估逻辑: +- 先按 `touch-point` 体系选取适用于 PTOAS 的触点 +- 再按 `01/02/04/05/06` 场景评分 +- 默认只把适用的 `Core Touch-Points` 放进 repo 级总分 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.claude/skills/ptoas-usability-eval/SKILL.md b/.claude/skills/ptoas-usability-eval/SKILL.md index 2407058d5..24cc41525 100644 --- a/.claude/skills/ptoas-usability-eval/SKILL.md +++ b/.claude/skills/ptoas-usability-eval/SKILL.md @@ -16,7 +16,7 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary - `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 - `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 +先读 [references/touchpoint-selection.md](references/touchpoint-selection.md) 选定适用触点,再读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -54,19 +54,20 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 -3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 -6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 -8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 -10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -11. 明确区分: +3. 先读 [references/touchpoint-selection.md](references/touchpoint-selection.md),按场景选定本次的 `Core / Conditional / Excluded` 触点。 +4. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +5. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +6. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +7. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +8. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +9. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +10. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +11. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +12. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 -13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 +13. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +14. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 @@ -84,13 +85,14 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 按下面顺序输出: 1. `评估范围` -2. `评估层级` -3. `总分(支撑)` -4. `总分(实测)` -5. `分场景评分` -6. `覆盖说明` -7. `关键证据` -8. `主要短板` -9. `建议动作` +2. `触点选择` +3. `评估层级` +4. `总分(支撑)` +5. `总分(实测)` +6. `分场景评分` +7. `覆盖说明` +8. `关键证据` +9. `主要短板` +10. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md index e750e2b4c..89b6f1987 100644 --- a/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.claude/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,25 +2,25 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | 层级 | -| --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | -| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | -| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | -| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | -| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | -| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | -| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | -| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | -| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | +| 路径 | 主要用途 | 对应场景 | 层级 | 主要触点 | +| --- | --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP001-005, TP016-020, TP038, TP049, TP053, TP058` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | `TP005, TP017-018, TP049, TP051-052, TP058-060, TP062-064` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | `TP019-020, TP028, TP032, TP039, TP045-047` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP018, TP034-039, TP049, TP051-052, TP062-064` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP037-039, TP045-047, TP049, TP052` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP049, TP051-052, TP058-060, TP062-064` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | `TP035-037, TP039, TP044, TP046-047` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | `TP018, TP034-039, TP042-047` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | `TP019-020, TP035-039, TP046-047` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | `TP035-039, TP044, TP046-047, TP061` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP003, TP011, TP049, TP052-053, TP058, TP060-064` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | `TP005, TP017, TP040-041, TP062-063` | 说明: - 不要把当前分支不存在的样例 README 当成固定证据源。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-01.md b/.claude/skills/ptoas-usability-eval/references/metrics-01.md index b765030c4..58bcc109d 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-01.md @@ -1,5 +1,14 @@ # `01 算子复现部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-018` +- `源码 & 示例类`: `TP034-035, TP038, TP042, TP044` +- `工具`: `TP049, TP051-052` +- `版本`: `TP053, TP058` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP054, TP057, TP059-061` + 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-02.md b/.claude/skills/ptoas-usability-eval/references/metrics-02.md index 1bcc752ea..8ad84dbf6 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-02.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-02.md @@ -1,5 +1,14 @@ # `02 算子迁移部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017` +- `API / 接口`: `TP019-020, TP032` +- `源码 & 示例类`: `TP035-037, TP039, TP044, TP046-047` +- `工具`: `TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP033, TP061` + 这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-04.md b/.claude/skills/ptoas-usability-eval/references/metrics-04.md index 496660f68..d347924a6 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,5 +1,14 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017-018` +- `API / 接口`: `TP019-020, TP028, TP032` +- `源码 & 示例类`: `TP034-039, TP042-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP010, TP014-015, TP033` + 这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-05.md b/.claude/skills/ptoas-usability-eval/references/metrics-05.md index 079682038..3b05aa815 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-05.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-05.md @@ -1,5 +1,14 @@ # `05 特定 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.claude/skills/ptoas-usability-eval/references/metrics-06.md b/.claude/skills/ptoas-usability-eval/references/metrics-06.md index 4e24f2f70..1e44532c0 100644 --- a/.claude/skills/ptoas-usability-eval/references/metrics-06.md +++ b/.claude/skills/ptoas-usability-eval/references/metrics-06.md @@ -1,5 +1,14 @@ # `06 泛化 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.claude/skills/ptoas-usability-eval/references/scoring.md b/.claude/skills/ptoas-usability-eval/references/scoring.md index aacfcf78c..ba3d01d6d 100644 --- a/.claude/skills/ptoas-usability-eval/references/scoring.md +++ b/.claude/skills/ptoas-usability-eval/references/scoring.md @@ -8,6 +8,7 @@ - 单项展示时,保留用户原始分制。 - 汇总总分时,再做统一归一化。 +- 场景分只基于本次选中的 `Core/Conditional Touch-Points` 或其 repo 级代理指标计算。 - 默认输出两个总分: - `总分(支撑)` - `总分(实测)` diff --git a/.claude/skills/ptoas-usability-eval/references/touchpoint-selection.md b/.claude/skills/ptoas-usability-eval/references/touchpoint-selection.md new file mode 100644 index 000000000..d57a6d79e --- /dev/null +++ b/.claude/skills/ptoas-usability-eval/references/touchpoint-selection.md @@ -0,0 +1,154 @@ +# PTOAS Touch-Point 选型 + +本文件把用户提供的总触点池裁剪成适合 `hw-native-sys/PTOAS` 的 repo 级评估子集。 + +## 1. 选型原则 + +- PTOAS 是**编译器 / 工具链 / 样例仓库**,不是完整 CANN 产品矩阵,也不是官方镜像分发平台。 +- 默认优先评估这些触点: + - `资料/文档` + - `API/接口` 中与 `CLI / Python 绑定 / PTO IR 手册` 直接相关的子项 + - `源码 & 示例类` + - `工具` + - `版本` 中 repo 内可自证的子项 + - `运行反馈` +- 对需要**产品级生态、仓外对标、跨硬件矩阵、发布渠道运营**的数据,默认不要硬打 repo 分,记 `N/A` 或只做差距说明。 + +## 2. 默认纳入的 Core Touch-Points + +这些触点默认进入 PTOAS repo 级评分。 + +### 2.1 资料/文档 + +- `TP001` 检索命中成功率 +- `TP002` 文档跳转次数 +- `TP003` 多入口可达率 +- `TP004` 单次任务文档跳转浏览率 +- `TP005` 知识渐进式发布 +- `TP008` 文档结构风格一致率 +- `TP009` 概念跨文档冲突数 +- `TP011` 文档、版本时效一致性 +- `TP012` 内/外链有效率 +- `TP013` 文档错误点位密度 +- `TP016` 资料交付件完备率 +- `TP017` 文档场景/内容覆盖缺失率 +- `TP018` quick_start / sample 一次跑通率 + +### 2.2 API / 接口 + +这里只看 PTOAS repo 自己暴露的接口层: +- `CLI`: `ptoas`, `ptobc` +- `Python bindings` +- `PTO IR` 公开手册/Op 语义 + +默认纳入: +- `TP019` 目标接口平均查找检索轮次 +- `TP020` 渐进式复杂披露覆盖度 +- `TP028` 平均入参数 / 参数复杂度 +- `TP032` 接口自解释读懂率 + +### 2.3 源码 & 示例类 + +- `TP034` 示例代码无修改一键编译运行成功率 +- `TP035` 示例检索命中成功率 +- `TP036` 样例覆盖度 +- `TP037` 最小功能实现 Demo 覆盖率 +- `TP038` 命令示例覆盖度 +- `TP039` API 调用样例覆盖率 +- `TP042` 样例代码编译语法错误检出率 +- `TP043` 样例使用废弃 / 过期 API 占比 +- `TP044` 业务代码直接复用改编比例 +- `TP045` 编程模型标准对齐率 +- `TP046` 关键链路显性化率 +- `TP047` 认知理解步数 + +### 2.4 工具 + +- `TP049` 首次安装部署一次性成功率 +- `TP051` 标准任务平均操作步骤数 +- `TP052` 功能 / 场景覆盖率 + +### 2.5 版本 + +只纳入 repo 内可通过 `README / CI / tag / branch / issue template` 自证的部分: +- `TP053` 版本检索命中成功率 +- `TP058` 版本配套关系准确性 + +### 2.6 运行反馈 + +- `TP062` 报错携带环境 / 版本 / 上下文信息完整率 +- `TP063` 报错自带排障建议比例 +- `TP064` 无效冗余信息占比 + +## 3. 条件纳入的 Conditional Touch-Points + +这些触点只有在用户明确要求,或者当前任务确实提供了对应证据时才纳入。 + +### 3.1 文档 / API 条件项 + +- `TP006` FAQ 命中率 +- `TP010` 接口文档模板一致率 +- `TP014` API 文档覆盖率 +- `TP015` 错误码文档化率 +- `TP033` N+2 小版本破坏性接口变更频次 + +### 3.2 示例 / 性能高级项 + +- `TP040` E2E 实战案例覆盖率 +- `TP041` 行业深度调优案例覆盖率 + +### 3.3 版本 / 部署高级项 + +- `TP054` 版本信息完备率 +- `TP057` 版本号规范准确率 +- `TP059` 版本部署命令数 +- `TP060` 开箱部署成功率 +- `TP061` 版本兼容性率 + +说明: +- `TP061` 在 PTOAS 里通常要到 `L4`,并且需要 A3/A5/不同硬件的实测证据。 +- `TP040/TP041` 在 PTOAS 里只有当 `FlashAttention/GQA/FFN` 这类样例被当作准业务案例使用时才适合纳入。 + +## 4. 默认排除的 Excluded Touch-Points + +这些触点默认**不进入** PTOAS repo 级总分,除非用户明确要求做生态级差距研究。 + +### 4.1 产品生态 / 友商对标类 + +- `TP021` API 业务场景覆盖率 +- `TP022` 主流 AI 应用框架 API 支持覆盖率 +- `TP023` 主流 AI 框架 API 支持覆盖率 +- `TP024` API 主流生态调用一致性 +- `TP025` 原子 API 与标杆 API 数量对比一致性 +- `TP026` 迁移修改代码(CUDA -> AscendC) +- `TP027` 原子 API 与标杆 API 行为对比一致性 + +原因:这些指标要求的是**全产品生态**、**仓外框架集成**、**与 CUDA/CANN 大盘对比**,不是 PTOAS 仓库单独可证的事实。 + +### 4.2 不适合 PTOAS repo 形态的项 + +- `TP029` 错误返回一致率 +- `TP030` 最小可用代码行数 +- `TP055` 主流镜像仓支持下载覆盖度 +- `TP056` 典型部署模式支持覆盖度 + +原因: +- PTOAS 不是以统一 runtime C API 为主的库产品,`TP029/TP030` 不适合直接套。 +- PTOAS repo 不是镜像/安装包分发平台,`TP055/TP056` 默认不打 repo 分。 + +## 5. 场景到 Touch-Point 的默认映射 + +| 场景 | 默认 Core Touch-Points | 条件 Touch-Points | +| --- | --- | --- | +| `01 算子复现部署` | `TP001-005, TP008-018, TP034-035, TP038, TP042, TP044, TP049, TP051-053, TP058, TP062-064` | `TP006, TP054, TP057, TP059-061` | +| `02 算子迁移部署` | `TP001-005, TP008-009, TP011, TP013, TP017, TP019-020, TP032, TP035-037, TP039, TP044, TP046-047, TP051-052, TP062-064` | `TP040-041, TP033, TP061` | +| `04 算子基本功能实现` | `TP001-005, TP008-009, TP011, TP013, TP017-020, TP028, TP032, TP034-039, TP042-047, TP049, TP051-052, TP062-064` | `TP006, TP010, TP014-015, TP033` | +| `05 特定 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | +| `06 泛化 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046-047, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | + +## 6. 使用要求 + +- 每次正式评估前,先在输出里给出 `触点选择`。 +- 默认只打 `Core Touch-Points`。 +- `Conditional Touch-Points` 只有在证据存在时才纳入,并明确说明为什么本次纳入。 +- `Excluded Touch-Points` 不进入总分;如果用户追问,可以单独给差距分析,但不要混入 repo 级总分。 diff --git a/.codex/skills/ptoas-usability-eval/README.md b/.codex/skills/ptoas-usability-eval/README.md index 7f56482be..3f8fd8545 100644 --- a/.codex/skills/ptoas-usability-eval/README.md +++ b/.codex/skills/ptoas-usability-eval/README.md @@ -21,6 +21,11 @@ - 默认输出 `总分(支撑)` 和 `总分(实测)` - `未实测/N/A` 不进入总分分母 +当前评估逻辑: +- 先按 `touch-point` 体系选取适用于 PTOAS 的触点 +- 再按 `01/02/04/05/06` 场景评分 +- 默认只把适用的 `Core Touch-Points` 放进 repo 级总分 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.codex/skills/ptoas-usability-eval/SKILL.md b/.codex/skills/ptoas-usability-eval/SKILL.md index 2407058d5..24cc41525 100644 --- a/.codex/skills/ptoas-usability-eval/SKILL.md +++ b/.codex/skills/ptoas-usability-eval/SKILL.md @@ -16,7 +16,7 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary - `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 - `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 +先读 [references/touchpoint-selection.md](references/touchpoint-selection.md) 选定适用触点,再读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -54,19 +54,20 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 -3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 -6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 -8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 -10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -11. 明确区分: +3. 先读 [references/touchpoint-selection.md](references/touchpoint-selection.md),按场景选定本次的 `Core / Conditional / Excluded` 触点。 +4. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +5. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +6. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +7. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +8. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +9. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +10. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +11. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +12. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 -13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 +13. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +14. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 @@ -84,13 +85,14 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 按下面顺序输出: 1. `评估范围` -2. `评估层级` -3. `总分(支撑)` -4. `总分(实测)` -5. `分场景评分` -6. `覆盖说明` -7. `关键证据` -8. `主要短板` -9. `建议动作` +2. `触点选择` +3. `评估层级` +4. `总分(支撑)` +5. `总分(实测)` +6. `分场景评分` +7. `覆盖说明` +8. `关键证据` +9. `主要短板` +10. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md index e750e2b4c..89b6f1987 100644 --- a/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.codex/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,25 +2,25 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | 层级 | -| --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | -| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | -| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | -| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | -| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | -| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | -| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | -| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | -| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | +| 路径 | 主要用途 | 对应场景 | 层级 | 主要触点 | +| --- | --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP001-005, TP016-020, TP038, TP049, TP053, TP058` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | `TP005, TP017-018, TP049, TP051-052, TP058-060, TP062-064` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | `TP019-020, TP028, TP032, TP039, TP045-047` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP018, TP034-039, TP049, TP051-052, TP062-064` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP037-039, TP045-047, TP049, TP052` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP049, TP051-052, TP058-060, TP062-064` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | `TP035-037, TP039, TP044, TP046-047` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | `TP018, TP034-039, TP042-047` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | `TP019-020, TP035-039, TP046-047` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | `TP035-039, TP044, TP046-047, TP061` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP003, TP011, TP049, TP052-053, TP058, TP060-064` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | `TP005, TP017, TP040-041, TP062-063` | 说明: - 不要把当前分支不存在的样例 README 当成固定证据源。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-01.md b/.codex/skills/ptoas-usability-eval/references/metrics-01.md index b765030c4..58bcc109d 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-01.md @@ -1,5 +1,14 @@ # `01 算子复现部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-018` +- `源码 & 示例类`: `TP034-035, TP038, TP042, TP044` +- `工具`: `TP049, TP051-052` +- `版本`: `TP053, TP058` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP054, TP057, TP059-061` + 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-02.md b/.codex/skills/ptoas-usability-eval/references/metrics-02.md index 1bcc752ea..8ad84dbf6 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-02.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-02.md @@ -1,5 +1,14 @@ # `02 算子迁移部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017` +- `API / 接口`: `TP019-020, TP032` +- `源码 & 示例类`: `TP035-037, TP039, TP044, TP046-047` +- `工具`: `TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP033, TP061` + 这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-04.md b/.codex/skills/ptoas-usability-eval/references/metrics-04.md index 496660f68..d347924a6 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,5 +1,14 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017-018` +- `API / 接口`: `TP019-020, TP028, TP032` +- `源码 & 示例类`: `TP034-039, TP042-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP010, TP014-015, TP033` + 这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-05.md b/.codex/skills/ptoas-usability-eval/references/metrics-05.md index 079682038..3b05aa815 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-05.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-05.md @@ -1,5 +1,14 @@ # `05 特定 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.codex/skills/ptoas-usability-eval/references/metrics-06.md b/.codex/skills/ptoas-usability-eval/references/metrics-06.md index 4e24f2f70..1e44532c0 100644 --- a/.codex/skills/ptoas-usability-eval/references/metrics-06.md +++ b/.codex/skills/ptoas-usability-eval/references/metrics-06.md @@ -1,5 +1,14 @@ # `06 泛化 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.codex/skills/ptoas-usability-eval/references/scoring.md b/.codex/skills/ptoas-usability-eval/references/scoring.md index aacfcf78c..ba3d01d6d 100644 --- a/.codex/skills/ptoas-usability-eval/references/scoring.md +++ b/.codex/skills/ptoas-usability-eval/references/scoring.md @@ -8,6 +8,7 @@ - 单项展示时,保留用户原始分制。 - 汇总总分时,再做统一归一化。 +- 场景分只基于本次选中的 `Core/Conditional Touch-Points` 或其 repo 级代理指标计算。 - 默认输出两个总分: - `总分(支撑)` - `总分(实测)` diff --git a/.codex/skills/ptoas-usability-eval/references/touchpoint-selection.md b/.codex/skills/ptoas-usability-eval/references/touchpoint-selection.md new file mode 100644 index 000000000..d57a6d79e --- /dev/null +++ b/.codex/skills/ptoas-usability-eval/references/touchpoint-selection.md @@ -0,0 +1,154 @@ +# PTOAS Touch-Point 选型 + +本文件把用户提供的总触点池裁剪成适合 `hw-native-sys/PTOAS` 的 repo 级评估子集。 + +## 1. 选型原则 + +- PTOAS 是**编译器 / 工具链 / 样例仓库**,不是完整 CANN 产品矩阵,也不是官方镜像分发平台。 +- 默认优先评估这些触点: + - `资料/文档` + - `API/接口` 中与 `CLI / Python 绑定 / PTO IR 手册` 直接相关的子项 + - `源码 & 示例类` + - `工具` + - `版本` 中 repo 内可自证的子项 + - `运行反馈` +- 对需要**产品级生态、仓外对标、跨硬件矩阵、发布渠道运营**的数据,默认不要硬打 repo 分,记 `N/A` 或只做差距说明。 + +## 2. 默认纳入的 Core Touch-Points + +这些触点默认进入 PTOAS repo 级评分。 + +### 2.1 资料/文档 + +- `TP001` 检索命中成功率 +- `TP002` 文档跳转次数 +- `TP003` 多入口可达率 +- `TP004` 单次任务文档跳转浏览率 +- `TP005` 知识渐进式发布 +- `TP008` 文档结构风格一致率 +- `TP009` 概念跨文档冲突数 +- `TP011` 文档、版本时效一致性 +- `TP012` 内/外链有效率 +- `TP013` 文档错误点位密度 +- `TP016` 资料交付件完备率 +- `TP017` 文档场景/内容覆盖缺失率 +- `TP018` quick_start / sample 一次跑通率 + +### 2.2 API / 接口 + +这里只看 PTOAS repo 自己暴露的接口层: +- `CLI`: `ptoas`, `ptobc` +- `Python bindings` +- `PTO IR` 公开手册/Op 语义 + +默认纳入: +- `TP019` 目标接口平均查找检索轮次 +- `TP020` 渐进式复杂披露覆盖度 +- `TP028` 平均入参数 / 参数复杂度 +- `TP032` 接口自解释读懂率 + +### 2.3 源码 & 示例类 + +- `TP034` 示例代码无修改一键编译运行成功率 +- `TP035` 示例检索命中成功率 +- `TP036` 样例覆盖度 +- `TP037` 最小功能实现 Demo 覆盖率 +- `TP038` 命令示例覆盖度 +- `TP039` API 调用样例覆盖率 +- `TP042` 样例代码编译语法错误检出率 +- `TP043` 样例使用废弃 / 过期 API 占比 +- `TP044` 业务代码直接复用改编比例 +- `TP045` 编程模型标准对齐率 +- `TP046` 关键链路显性化率 +- `TP047` 认知理解步数 + +### 2.4 工具 + +- `TP049` 首次安装部署一次性成功率 +- `TP051` 标准任务平均操作步骤数 +- `TP052` 功能 / 场景覆盖率 + +### 2.5 版本 + +只纳入 repo 内可通过 `README / CI / tag / branch / issue template` 自证的部分: +- `TP053` 版本检索命中成功率 +- `TP058` 版本配套关系准确性 + +### 2.6 运行反馈 + +- `TP062` 报错携带环境 / 版本 / 上下文信息完整率 +- `TP063` 报错自带排障建议比例 +- `TP064` 无效冗余信息占比 + +## 3. 条件纳入的 Conditional Touch-Points + +这些触点只有在用户明确要求,或者当前任务确实提供了对应证据时才纳入。 + +### 3.1 文档 / API 条件项 + +- `TP006` FAQ 命中率 +- `TP010` 接口文档模板一致率 +- `TP014` API 文档覆盖率 +- `TP015` 错误码文档化率 +- `TP033` N+2 小版本破坏性接口变更频次 + +### 3.2 示例 / 性能高级项 + +- `TP040` E2E 实战案例覆盖率 +- `TP041` 行业深度调优案例覆盖率 + +### 3.3 版本 / 部署高级项 + +- `TP054` 版本信息完备率 +- `TP057` 版本号规范准确率 +- `TP059` 版本部署命令数 +- `TP060` 开箱部署成功率 +- `TP061` 版本兼容性率 + +说明: +- `TP061` 在 PTOAS 里通常要到 `L4`,并且需要 A3/A5/不同硬件的实测证据。 +- `TP040/TP041` 在 PTOAS 里只有当 `FlashAttention/GQA/FFN` 这类样例被当作准业务案例使用时才适合纳入。 + +## 4. 默认排除的 Excluded Touch-Points + +这些触点默认**不进入** PTOAS repo 级总分,除非用户明确要求做生态级差距研究。 + +### 4.1 产品生态 / 友商对标类 + +- `TP021` API 业务场景覆盖率 +- `TP022` 主流 AI 应用框架 API 支持覆盖率 +- `TP023` 主流 AI 框架 API 支持覆盖率 +- `TP024` API 主流生态调用一致性 +- `TP025` 原子 API 与标杆 API 数量对比一致性 +- `TP026` 迁移修改代码(CUDA -> AscendC) +- `TP027` 原子 API 与标杆 API 行为对比一致性 + +原因:这些指标要求的是**全产品生态**、**仓外框架集成**、**与 CUDA/CANN 大盘对比**,不是 PTOAS 仓库单独可证的事实。 + +### 4.2 不适合 PTOAS repo 形态的项 + +- `TP029` 错误返回一致率 +- `TP030` 最小可用代码行数 +- `TP055` 主流镜像仓支持下载覆盖度 +- `TP056` 典型部署模式支持覆盖度 + +原因: +- PTOAS 不是以统一 runtime C API 为主的库产品,`TP029/TP030` 不适合直接套。 +- PTOAS repo 不是镜像/安装包分发平台,`TP055/TP056` 默认不打 repo 分。 + +## 5. 场景到 Touch-Point 的默认映射 + +| 场景 | 默认 Core Touch-Points | 条件 Touch-Points | +| --- | --- | --- | +| `01 算子复现部署` | `TP001-005, TP008-018, TP034-035, TP038, TP042, TP044, TP049, TP051-053, TP058, TP062-064` | `TP006, TP054, TP057, TP059-061` | +| `02 算子迁移部署` | `TP001-005, TP008-009, TP011, TP013, TP017, TP019-020, TP032, TP035-037, TP039, TP044, TP046-047, TP051-052, TP062-064` | `TP040-041, TP033, TP061` | +| `04 算子基本功能实现` | `TP001-005, TP008-009, TP011, TP013, TP017-020, TP028, TP032, TP034-039, TP042-047, TP049, TP051-052, TP062-064` | `TP006, TP010, TP014-015, TP033` | +| `05 特定 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | +| `06 泛化 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046-047, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | + +## 6. 使用要求 + +- 每次正式评估前,先在输出里给出 `触点选择`。 +- 默认只打 `Core Touch-Points`。 +- `Conditional Touch-Points` 只有在证据存在时才纳入,并明确说明为什么本次纳入。 +- `Excluded Touch-Points` 不进入总分;如果用户追问,可以单独给差距分析,但不要混入 repo 级总分。 diff --git a/.cursor/skills/ptoas-usability-eval/README.md b/.cursor/skills/ptoas-usability-eval/README.md index 7f56482be..3f8fd8545 100644 --- a/.cursor/skills/ptoas-usability-eval/README.md +++ b/.cursor/skills/ptoas-usability-eval/README.md @@ -21,6 +21,11 @@ - 默认输出 `总分(支撑)` 和 `总分(实测)` - `未实测/N/A` 不进入总分分母 +当前评估逻辑: +- 先按 `touch-point` 体系选取适用于 PTOAS 的触点 +- 再按 `01/02/04/05/06` 场景评分 +- 默认只把适用的 `Core Touch-Points` 放进 repo 级总分 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.cursor/skills/ptoas-usability-eval/SKILL.md b/.cursor/skills/ptoas-usability-eval/SKILL.md index 2407058d5..24cc41525 100644 --- a/.cursor/skills/ptoas-usability-eval/SKILL.md +++ b/.cursor/skills/ptoas-usability-eval/SKILL.md @@ -16,7 +16,7 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary - `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 - `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 +先读 [references/touchpoint-selection.md](references/touchpoint-selection.md) 选定适用触点,再读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -54,19 +54,20 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 -3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 -6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 -8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 -10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -11. 明确区分: +3. 先读 [references/touchpoint-selection.md](references/touchpoint-selection.md),按场景选定本次的 `Core / Conditional / Excluded` 触点。 +4. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +5. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +6. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +7. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +8. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +9. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +10. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +11. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +12. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 -13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 +13. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +14. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 @@ -84,13 +85,14 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 按下面顺序输出: 1. `评估范围` -2. `评估层级` -3. `总分(支撑)` -4. `总分(实测)` -5. `分场景评分` -6. `覆盖说明` -7. `关键证据` -8. `主要短板` -9. `建议动作` +2. `触点选择` +3. `评估层级` +4. `总分(支撑)` +5. `总分(实测)` +6. `分场景评分` +7. `覆盖说明` +8. `关键证据` +9. `主要短板` +10. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md index e750e2b4c..89b6f1987 100644 --- a/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.cursor/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,25 +2,25 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | 层级 | -| --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | -| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | -| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | -| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | -| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | -| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | -| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | -| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | -| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | +| 路径 | 主要用途 | 对应场景 | 层级 | 主要触点 | +| --- | --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP001-005, TP016-020, TP038, TP049, TP053, TP058` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | `TP005, TP017-018, TP049, TP051-052, TP058-060, TP062-064` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | `TP019-020, TP028, TP032, TP039, TP045-047` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP018, TP034-039, TP049, TP051-052, TP062-064` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP037-039, TP045-047, TP049, TP052` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP049, TP051-052, TP058-060, TP062-064` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | `TP035-037, TP039, TP044, TP046-047` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | `TP018, TP034-039, TP042-047` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | `TP019-020, TP035-039, TP046-047` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | `TP035-039, TP044, TP046-047, TP061` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP003, TP011, TP049, TP052-053, TP058, TP060-064` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | `TP005, TP017, TP040-041, TP062-063` | 说明: - 不要把当前分支不存在的样例 README 当成固定证据源。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md index b765030c4..58bcc109d 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-01.md @@ -1,5 +1,14 @@ # `01 算子复现部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-018` +- `源码 & 示例类`: `TP034-035, TP038, TP042, TP044` +- `工具`: `TP049, TP051-052` +- `版本`: `TP053, TP058` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP054, TP057, TP059-061` + 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-02.md b/.cursor/skills/ptoas-usability-eval/references/metrics-02.md index 1bcc752ea..8ad84dbf6 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-02.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-02.md @@ -1,5 +1,14 @@ # `02 算子迁移部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017` +- `API / 接口`: `TP019-020, TP032` +- `源码 & 示例类`: `TP035-037, TP039, TP044, TP046-047` +- `工具`: `TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP033, TP061` + 这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md index 496660f68..d347924a6 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,5 +1,14 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017-018` +- `API / 接口`: `TP019-020, TP028, TP032` +- `源码 & 示例类`: `TP034-039, TP042-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP010, TP014-015, TP033` + 这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-05.md b/.cursor/skills/ptoas-usability-eval/references/metrics-05.md index 079682038..3b05aa815 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-05.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-05.md @@ -1,5 +1,14 @@ # `05 特定 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.cursor/skills/ptoas-usability-eval/references/metrics-06.md b/.cursor/skills/ptoas-usability-eval/references/metrics-06.md index 4e24f2f70..1e44532c0 100644 --- a/.cursor/skills/ptoas-usability-eval/references/metrics-06.md +++ b/.cursor/skills/ptoas-usability-eval/references/metrics-06.md @@ -1,5 +1,14 @@ # `06 泛化 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.cursor/skills/ptoas-usability-eval/references/scoring.md b/.cursor/skills/ptoas-usability-eval/references/scoring.md index aacfcf78c..ba3d01d6d 100644 --- a/.cursor/skills/ptoas-usability-eval/references/scoring.md +++ b/.cursor/skills/ptoas-usability-eval/references/scoring.md @@ -8,6 +8,7 @@ - 单项展示时,保留用户原始分制。 - 汇总总分时,再做统一归一化。 +- 场景分只基于本次选中的 `Core/Conditional Touch-Points` 或其 repo 级代理指标计算。 - 默认输出两个总分: - `总分(支撑)` - `总分(实测)` diff --git a/.cursor/skills/ptoas-usability-eval/references/touchpoint-selection.md b/.cursor/skills/ptoas-usability-eval/references/touchpoint-selection.md new file mode 100644 index 000000000..d57a6d79e --- /dev/null +++ b/.cursor/skills/ptoas-usability-eval/references/touchpoint-selection.md @@ -0,0 +1,154 @@ +# PTOAS Touch-Point 选型 + +本文件把用户提供的总触点池裁剪成适合 `hw-native-sys/PTOAS` 的 repo 级评估子集。 + +## 1. 选型原则 + +- PTOAS 是**编译器 / 工具链 / 样例仓库**,不是完整 CANN 产品矩阵,也不是官方镜像分发平台。 +- 默认优先评估这些触点: + - `资料/文档` + - `API/接口` 中与 `CLI / Python 绑定 / PTO IR 手册` 直接相关的子项 + - `源码 & 示例类` + - `工具` + - `版本` 中 repo 内可自证的子项 + - `运行反馈` +- 对需要**产品级生态、仓外对标、跨硬件矩阵、发布渠道运营**的数据,默认不要硬打 repo 分,记 `N/A` 或只做差距说明。 + +## 2. 默认纳入的 Core Touch-Points + +这些触点默认进入 PTOAS repo 级评分。 + +### 2.1 资料/文档 + +- `TP001` 检索命中成功率 +- `TP002` 文档跳转次数 +- `TP003` 多入口可达率 +- `TP004` 单次任务文档跳转浏览率 +- `TP005` 知识渐进式发布 +- `TP008` 文档结构风格一致率 +- `TP009` 概念跨文档冲突数 +- `TP011` 文档、版本时效一致性 +- `TP012` 内/外链有效率 +- `TP013` 文档错误点位密度 +- `TP016` 资料交付件完备率 +- `TP017` 文档场景/内容覆盖缺失率 +- `TP018` quick_start / sample 一次跑通率 + +### 2.2 API / 接口 + +这里只看 PTOAS repo 自己暴露的接口层: +- `CLI`: `ptoas`, `ptobc` +- `Python bindings` +- `PTO IR` 公开手册/Op 语义 + +默认纳入: +- `TP019` 目标接口平均查找检索轮次 +- `TP020` 渐进式复杂披露覆盖度 +- `TP028` 平均入参数 / 参数复杂度 +- `TP032` 接口自解释读懂率 + +### 2.3 源码 & 示例类 + +- `TP034` 示例代码无修改一键编译运行成功率 +- `TP035` 示例检索命中成功率 +- `TP036` 样例覆盖度 +- `TP037` 最小功能实现 Demo 覆盖率 +- `TP038` 命令示例覆盖度 +- `TP039` API 调用样例覆盖率 +- `TP042` 样例代码编译语法错误检出率 +- `TP043` 样例使用废弃 / 过期 API 占比 +- `TP044` 业务代码直接复用改编比例 +- `TP045` 编程模型标准对齐率 +- `TP046` 关键链路显性化率 +- `TP047` 认知理解步数 + +### 2.4 工具 + +- `TP049` 首次安装部署一次性成功率 +- `TP051` 标准任务平均操作步骤数 +- `TP052` 功能 / 场景覆盖率 + +### 2.5 版本 + +只纳入 repo 内可通过 `README / CI / tag / branch / issue template` 自证的部分: +- `TP053` 版本检索命中成功率 +- `TP058` 版本配套关系准确性 + +### 2.6 运行反馈 + +- `TP062` 报错携带环境 / 版本 / 上下文信息完整率 +- `TP063` 报错自带排障建议比例 +- `TP064` 无效冗余信息占比 + +## 3. 条件纳入的 Conditional Touch-Points + +这些触点只有在用户明确要求,或者当前任务确实提供了对应证据时才纳入。 + +### 3.1 文档 / API 条件项 + +- `TP006` FAQ 命中率 +- `TP010` 接口文档模板一致率 +- `TP014` API 文档覆盖率 +- `TP015` 错误码文档化率 +- `TP033` N+2 小版本破坏性接口变更频次 + +### 3.2 示例 / 性能高级项 + +- `TP040` E2E 实战案例覆盖率 +- `TP041` 行业深度调优案例覆盖率 + +### 3.3 版本 / 部署高级项 + +- `TP054` 版本信息完备率 +- `TP057` 版本号规范准确率 +- `TP059` 版本部署命令数 +- `TP060` 开箱部署成功率 +- `TP061` 版本兼容性率 + +说明: +- `TP061` 在 PTOAS 里通常要到 `L4`,并且需要 A3/A5/不同硬件的实测证据。 +- `TP040/TP041` 在 PTOAS 里只有当 `FlashAttention/GQA/FFN` 这类样例被当作准业务案例使用时才适合纳入。 + +## 4. 默认排除的 Excluded Touch-Points + +这些触点默认**不进入** PTOAS repo 级总分,除非用户明确要求做生态级差距研究。 + +### 4.1 产品生态 / 友商对标类 + +- `TP021` API 业务场景覆盖率 +- `TP022` 主流 AI 应用框架 API 支持覆盖率 +- `TP023` 主流 AI 框架 API 支持覆盖率 +- `TP024` API 主流生态调用一致性 +- `TP025` 原子 API 与标杆 API 数量对比一致性 +- `TP026` 迁移修改代码(CUDA -> AscendC) +- `TP027` 原子 API 与标杆 API 行为对比一致性 + +原因:这些指标要求的是**全产品生态**、**仓外框架集成**、**与 CUDA/CANN 大盘对比**,不是 PTOAS 仓库单独可证的事实。 + +### 4.2 不适合 PTOAS repo 形态的项 + +- `TP029` 错误返回一致率 +- `TP030` 最小可用代码行数 +- `TP055` 主流镜像仓支持下载覆盖度 +- `TP056` 典型部署模式支持覆盖度 + +原因: +- PTOAS 不是以统一 runtime C API 为主的库产品,`TP029/TP030` 不适合直接套。 +- PTOAS repo 不是镜像/安装包分发平台,`TP055/TP056` 默认不打 repo 分。 + +## 5. 场景到 Touch-Point 的默认映射 + +| 场景 | 默认 Core Touch-Points | 条件 Touch-Points | +| --- | --- | --- | +| `01 算子复现部署` | `TP001-005, TP008-018, TP034-035, TP038, TP042, TP044, TP049, TP051-053, TP058, TP062-064` | `TP006, TP054, TP057, TP059-061` | +| `02 算子迁移部署` | `TP001-005, TP008-009, TP011, TP013, TP017, TP019-020, TP032, TP035-037, TP039, TP044, TP046-047, TP051-052, TP062-064` | `TP040-041, TP033, TP061` | +| `04 算子基本功能实现` | `TP001-005, TP008-009, TP011, TP013, TP017-020, TP028, TP032, TP034-039, TP042-047, TP049, TP051-052, TP062-064` | `TP006, TP010, TP014-015, TP033` | +| `05 特定 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | +| `06 泛化 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046-047, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | + +## 6. 使用要求 + +- 每次正式评估前,先在输出里给出 `触点选择`。 +- 默认只打 `Core Touch-Points`。 +- `Conditional Touch-Points` 只有在证据存在时才纳入,并明确说明为什么本次纳入。 +- `Excluded Touch-Points` 不进入总分;如果用户追问,可以单独给差距分析,但不要混入 repo 级总分。 diff --git a/.trae/skills/ptoas-usability-eval/README.md b/.trae/skills/ptoas-usability-eval/README.md index 7f56482be..3f8fd8545 100644 --- a/.trae/skills/ptoas-usability-eval/README.md +++ b/.trae/skills/ptoas-usability-eval/README.md @@ -21,6 +21,11 @@ - 默认输出 `总分(支撑)` 和 `总分(实测)` - `未实测/N/A` 不进入总分分母 +当前评估逻辑: +- 先按 `touch-point` 体系选取适用于 PTOAS 的触点 +- 再按 `01/02/04/05/06` 场景评分 +- 默认只把适用的 `Core Touch-Points` 放进 repo 级总分 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/.trae/skills/ptoas-usability-eval/SKILL.md b/.trae/skills/ptoas-usability-eval/SKILL.md index 2407058d5..24cc41525 100644 --- a/.trae/skills/ptoas-usability-eval/SKILL.md +++ b/.trae/skills/ptoas-usability-eval/SKILL.md @@ -16,7 +16,7 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary - `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 - `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 +先读 [references/touchpoint-selection.md](references/touchpoint-selection.md) 选定适用触点,再读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -54,19 +54,20 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 -3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 -6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 -8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 -10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -11. 明确区分: +3. 先读 [references/touchpoint-selection.md](references/touchpoint-selection.md),按场景选定本次的 `Core / Conditional / Excluded` 触点。 +4. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +5. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +6. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +7. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +8. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +9. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +10. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +11. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +12. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 -13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 +13. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +14. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 @@ -84,13 +85,14 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 按下面顺序输出: 1. `评估范围` -2. `评估层级` -3. `总分(支撑)` -4. `总分(实测)` -5. `分场景评分` -6. `覆盖说明` -7. `关键证据` -8. `主要短板` -9. `建议动作` +2. `触点选择` +3. `评估层级` +4. `总分(支撑)` +5. `总分(实测)` +6. `分场景评分` +7. `覆盖说明` +8. `关键证据` +9. `主要短板` +10. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md index e750e2b4c..89b6f1987 100644 --- a/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/.trae/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,25 +2,25 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | 层级 | -| --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | -| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | -| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | -| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | -| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | -| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | -| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | -| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | -| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | +| 路径 | 主要用途 | 对应场景 | 层级 | 主要触点 | +| --- | --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP001-005, TP016-020, TP038, TP049, TP053, TP058` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | `TP005, TP017-018, TP049, TP051-052, TP058-060, TP062-064` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | `TP019-020, TP028, TP032, TP039, TP045-047` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP018, TP034-039, TP049, TP051-052, TP062-064` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP037-039, TP045-047, TP049, TP052` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP049, TP051-052, TP058-060, TP062-064` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | `TP035-037, TP039, TP044, TP046-047` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | `TP018, TP034-039, TP042-047` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | `TP019-020, TP035-039, TP046-047` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | `TP035-039, TP044, TP046-047, TP061` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP003, TP011, TP049, TP052-053, TP058, TP060-064` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | `TP005, TP017, TP040-041, TP062-063` | 说明: - 不要把当前分支不存在的样例 README 当成固定证据源。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-01.md b/.trae/skills/ptoas-usability-eval/references/metrics-01.md index b765030c4..58bcc109d 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-01.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-01.md @@ -1,5 +1,14 @@ # `01 算子复现部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-018` +- `源码 & 示例类`: `TP034-035, TP038, TP042, TP044` +- `工具`: `TP049, TP051-052` +- `版本`: `TP053, TP058` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP054, TP057, TP059-061` + 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-02.md b/.trae/skills/ptoas-usability-eval/references/metrics-02.md index 1bcc752ea..8ad84dbf6 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-02.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-02.md @@ -1,5 +1,14 @@ # `02 算子迁移部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017` +- `API / 接口`: `TP019-020, TP032` +- `源码 & 示例类`: `TP035-037, TP039, TP044, TP046-047` +- `工具`: `TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP033, TP061` + 这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-04.md b/.trae/skills/ptoas-usability-eval/references/metrics-04.md index 496660f68..d347924a6 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-04.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,5 +1,14 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017-018` +- `API / 接口`: `TP019-020, TP028, TP032` +- `源码 & 示例类`: `TP034-039, TP042-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP010, TP014-015, TP033` + 这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-05.md b/.trae/skills/ptoas-usability-eval/references/metrics-05.md index 079682038..3b05aa815 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-05.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-05.md @@ -1,5 +1,14 @@ # `05 特定 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.trae/skills/ptoas-usability-eval/references/metrics-06.md b/.trae/skills/ptoas-usability-eval/references/metrics-06.md index 4e24f2f70..1e44532c0 100644 --- a/.trae/skills/ptoas-usability-eval/references/metrics-06.md +++ b/.trae/skills/ptoas-usability-eval/references/metrics-06.md @@ -1,5 +1,14 @@ # `06 泛化 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/.trae/skills/ptoas-usability-eval/references/scoring.md b/.trae/skills/ptoas-usability-eval/references/scoring.md index aacfcf78c..ba3d01d6d 100644 --- a/.trae/skills/ptoas-usability-eval/references/scoring.md +++ b/.trae/skills/ptoas-usability-eval/references/scoring.md @@ -8,6 +8,7 @@ - 单项展示时,保留用户原始分制。 - 汇总总分时,再做统一归一化。 +- 场景分只基于本次选中的 `Core/Conditional Touch-Points` 或其 repo 级代理指标计算。 - 默认输出两个总分: - `总分(支撑)` - `总分(实测)` diff --git a/.trae/skills/ptoas-usability-eval/references/touchpoint-selection.md b/.trae/skills/ptoas-usability-eval/references/touchpoint-selection.md new file mode 100644 index 000000000..d57a6d79e --- /dev/null +++ b/.trae/skills/ptoas-usability-eval/references/touchpoint-selection.md @@ -0,0 +1,154 @@ +# PTOAS Touch-Point 选型 + +本文件把用户提供的总触点池裁剪成适合 `hw-native-sys/PTOAS` 的 repo 级评估子集。 + +## 1. 选型原则 + +- PTOAS 是**编译器 / 工具链 / 样例仓库**,不是完整 CANN 产品矩阵,也不是官方镜像分发平台。 +- 默认优先评估这些触点: + - `资料/文档` + - `API/接口` 中与 `CLI / Python 绑定 / PTO IR 手册` 直接相关的子项 + - `源码 & 示例类` + - `工具` + - `版本` 中 repo 内可自证的子项 + - `运行反馈` +- 对需要**产品级生态、仓外对标、跨硬件矩阵、发布渠道运营**的数据,默认不要硬打 repo 分,记 `N/A` 或只做差距说明。 + +## 2. 默认纳入的 Core Touch-Points + +这些触点默认进入 PTOAS repo 级评分。 + +### 2.1 资料/文档 + +- `TP001` 检索命中成功率 +- `TP002` 文档跳转次数 +- `TP003` 多入口可达率 +- `TP004` 单次任务文档跳转浏览率 +- `TP005` 知识渐进式发布 +- `TP008` 文档结构风格一致率 +- `TP009` 概念跨文档冲突数 +- `TP011` 文档、版本时效一致性 +- `TP012` 内/外链有效率 +- `TP013` 文档错误点位密度 +- `TP016` 资料交付件完备率 +- `TP017` 文档场景/内容覆盖缺失率 +- `TP018` quick_start / sample 一次跑通率 + +### 2.2 API / 接口 + +这里只看 PTOAS repo 自己暴露的接口层: +- `CLI`: `ptoas`, `ptobc` +- `Python bindings` +- `PTO IR` 公开手册/Op 语义 + +默认纳入: +- `TP019` 目标接口平均查找检索轮次 +- `TP020` 渐进式复杂披露覆盖度 +- `TP028` 平均入参数 / 参数复杂度 +- `TP032` 接口自解释读懂率 + +### 2.3 源码 & 示例类 + +- `TP034` 示例代码无修改一键编译运行成功率 +- `TP035` 示例检索命中成功率 +- `TP036` 样例覆盖度 +- `TP037` 最小功能实现 Demo 覆盖率 +- `TP038` 命令示例覆盖度 +- `TP039` API 调用样例覆盖率 +- `TP042` 样例代码编译语法错误检出率 +- `TP043` 样例使用废弃 / 过期 API 占比 +- `TP044` 业务代码直接复用改编比例 +- `TP045` 编程模型标准对齐率 +- `TP046` 关键链路显性化率 +- `TP047` 认知理解步数 + +### 2.4 工具 + +- `TP049` 首次安装部署一次性成功率 +- `TP051` 标准任务平均操作步骤数 +- `TP052` 功能 / 场景覆盖率 + +### 2.5 版本 + +只纳入 repo 内可通过 `README / CI / tag / branch / issue template` 自证的部分: +- `TP053` 版本检索命中成功率 +- `TP058` 版本配套关系准确性 + +### 2.6 运行反馈 + +- `TP062` 报错携带环境 / 版本 / 上下文信息完整率 +- `TP063` 报错自带排障建议比例 +- `TP064` 无效冗余信息占比 + +## 3. 条件纳入的 Conditional Touch-Points + +这些触点只有在用户明确要求,或者当前任务确实提供了对应证据时才纳入。 + +### 3.1 文档 / API 条件项 + +- `TP006` FAQ 命中率 +- `TP010` 接口文档模板一致率 +- `TP014` API 文档覆盖率 +- `TP015` 错误码文档化率 +- `TP033` N+2 小版本破坏性接口变更频次 + +### 3.2 示例 / 性能高级项 + +- `TP040` E2E 实战案例覆盖率 +- `TP041` 行业深度调优案例覆盖率 + +### 3.3 版本 / 部署高级项 + +- `TP054` 版本信息完备率 +- `TP057` 版本号规范准确率 +- `TP059` 版本部署命令数 +- `TP060` 开箱部署成功率 +- `TP061` 版本兼容性率 + +说明: +- `TP061` 在 PTOAS 里通常要到 `L4`,并且需要 A3/A5/不同硬件的实测证据。 +- `TP040/TP041` 在 PTOAS 里只有当 `FlashAttention/GQA/FFN` 这类样例被当作准业务案例使用时才适合纳入。 + +## 4. 默认排除的 Excluded Touch-Points + +这些触点默认**不进入** PTOAS repo 级总分,除非用户明确要求做生态级差距研究。 + +### 4.1 产品生态 / 友商对标类 + +- `TP021` API 业务场景覆盖率 +- `TP022` 主流 AI 应用框架 API 支持覆盖率 +- `TP023` 主流 AI 框架 API 支持覆盖率 +- `TP024` API 主流生态调用一致性 +- `TP025` 原子 API 与标杆 API 数量对比一致性 +- `TP026` 迁移修改代码(CUDA -> AscendC) +- `TP027` 原子 API 与标杆 API 行为对比一致性 + +原因:这些指标要求的是**全产品生态**、**仓外框架集成**、**与 CUDA/CANN 大盘对比**,不是 PTOAS 仓库单独可证的事实。 + +### 4.2 不适合 PTOAS repo 形态的项 + +- `TP029` 错误返回一致率 +- `TP030` 最小可用代码行数 +- `TP055` 主流镜像仓支持下载覆盖度 +- `TP056` 典型部署模式支持覆盖度 + +原因: +- PTOAS 不是以统一 runtime C API 为主的库产品,`TP029/TP030` 不适合直接套。 +- PTOAS repo 不是镜像/安装包分发平台,`TP055/TP056` 默认不打 repo 分。 + +## 5. 场景到 Touch-Point 的默认映射 + +| 场景 | 默认 Core Touch-Points | 条件 Touch-Points | +| --- | --- | --- | +| `01 算子复现部署` | `TP001-005, TP008-018, TP034-035, TP038, TP042, TP044, TP049, TP051-053, TP058, TP062-064` | `TP006, TP054, TP057, TP059-061` | +| `02 算子迁移部署` | `TP001-005, TP008-009, TP011, TP013, TP017, TP019-020, TP032, TP035-037, TP039, TP044, TP046-047, TP051-052, TP062-064` | `TP040-041, TP033, TP061` | +| `04 算子基本功能实现` | `TP001-005, TP008-009, TP011, TP013, TP017-020, TP028, TP032, TP034-039, TP042-047, TP049, TP051-052, TP062-064` | `TP006, TP010, TP014-015, TP033` | +| `05 特定 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | +| `06 泛化 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046-047, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | + +## 6. 使用要求 + +- 每次正式评估前,先在输出里给出 `触点选择`。 +- 默认只打 `Core Touch-Points`。 +- `Conditional Touch-Points` 只有在证据存在时才纳入,并明确说明为什么本次纳入。 +- `Excluded Touch-Points` 不进入总分;如果用户追问,可以单独给差距分析,但不要混入 repo 级总分。 diff --git a/skills/ptoas-usability-eval/README.md b/skills/ptoas-usability-eval/README.md index 7f56482be..3f8fd8545 100644 --- a/skills/ptoas-usability-eval/README.md +++ b/skills/ptoas-usability-eval/README.md @@ -21,6 +21,11 @@ - 默认输出 `总分(支撑)` 和 `总分(实测)` - `未实测/N/A` 不进入总分分母 +当前评估逻辑: +- 先按 `touch-point` 体系选取适用于 PTOAS 的触点 +- 再按 `01/02/04/05/06` 场景评分 +- 默认只把适用的 `Core Touch-Points` 放进 repo 级总分 + 约定: - `skills/ptoas-usability-eval/` 作为仓库内的通用主副本 - 各客户端目录提供可直接发现的副本,便于不同工具开箱即用 diff --git a/skills/ptoas-usability-eval/SKILL.md b/skills/ptoas-usability-eval/SKILL.md index 2407058d5..24cc41525 100644 --- a/skills/ptoas-usability-eval/SKILL.md +++ b/skills/ptoas-usability-eval/SKILL.md @@ -16,7 +16,7 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary - `06 泛化 shape 性能优化`:纳入,但只评 PTOAS 的 dynamic/valid-shape、多 shape 样例与验证支撑能力。 - `03 builtin 算子定制修改`:默认不纳入量化,标 `N/A`;必要时只做差距说明。 -先读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 +先读 [references/touchpoint-selection.md](references/touchpoint-selection.md) 选定适用触点,再读 [references/scope.md](references/scope.md) 确认各场景的边界和 `未实测/N/A` 规则。 ## 先判层级 @@ -54,19 +54,20 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 1. 先判断用户要的是 `01`、`02`、`04`、`05`、`06` 中哪些场景;未说明时默认 `01`。 2. 再判断本次覆盖层级:`L1/L2/L3/L4`。输出中必须显式写出来。 -3. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 -4. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 -5. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 -6. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 -7. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 -8. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 -9. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 -10. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 -11. 明确区分: +3. 先读 [references/touchpoint-selection.md](references/touchpoint-selection.md),按场景选定本次的 `Core / Conditional / Excluded` 触点。 +4. 从仓库内收集证据,记录每次检索轮次、文档跳转次数、执行命令、耗时、成功/失败结果。 +5. `01` 场景读 [references/metrics-01.md](references/metrics-01.md)。 +6. `02` 场景读 [references/metrics-02.md](references/metrics-02.md)。 +7. `04` 场景读 [references/metrics-04.md](references/metrics-04.md)。 +8. `05` 场景读 [references/metrics-05.md](references/metrics-05.md)。 +9. `06` 场景读 [references/metrics-06.md](references/metrics-06.md)。 +10. 需要汇总总分时,读 [references/scoring.md](references/scoring.md)。 +11. 对每个指标都输出:原始观测值、评分、证据路径、说明。没有实测的数据不要猜,记为 `未实测` 或 `N/A`。 +12. 明确区分: - PTOAS 仓库已提供的能力 - 外部前置条件,例如 LLVM、CANN、`pto-isa`、NPU、驱动/权限、业务 baseline -12. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 -13. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 +13. 若文档描述与实际运行冲突,以实际命令结果为准,并指出冲突位置。 +14. 默认给两个总分:`总分(支撑)` 和 `总分(实测)`。如果用户只要分项,不强制输出总分。 ## 计量规则 @@ -84,13 +85,14 @@ description: Evaluate PTOAS repository usability across scene 01 as the primary 按下面顺序输出: 1. `评估范围` -2. `评估层级` -3. `总分(支撑)` -4. `总分(实测)` -5. `分场景评分` -6. `覆盖说明` -7. `关键证据` -8. `主要短板` -9. `建议动作` +2. `触点选择` +3. `评估层级` +4. `总分(支撑)` +5. `总分(实测)` +6. `分场景评分` +7. `覆盖说明` +8. `关键证据` +9. `主要短板` +10. `建议动作` 如果用户只要简版结论,也要至少保留:场景归类、评估层级、总评、最低分项、证据路径。 diff --git a/skills/ptoas-usability-eval/references/evidence-checklist.md b/skills/ptoas-usability-eval/references/evidence-checklist.md index e750e2b4c..89b6f1987 100644 --- a/skills/ptoas-usability-eval/references/evidence-checklist.md +++ b/skills/ptoas-usability-eval/references/evidence-checklist.md @@ -2,25 +2,25 @@ ## 固定证据入口 -| 路径 | 主要用途 | 对应场景 | 层级 | -| --- | --- | --- | --- | -| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | -| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | -| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | -| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | -| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | -| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | -| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | -| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | -| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | -| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | -| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | -| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | -| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | -| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | +| 路径 | 主要用途 | 对应场景 | 层级 | 主要触点 | +| --- | --- | --- | --- | --- | +| `README.md` | 官方构建、环境变量、CLI、Python 绑定、sample 运行、compile-only/上板验证主入口 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP001-005, TP016-020, TP038, TP049, TP053, TP058` | +| `docs/no_npu_compile_only_guide_zh.md` | 无卡 compile-only 流程、批量验证流程、`pto-isa`/CANN 依赖说明 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3` | `TP005, TP017-018, TP049, TP051-052, TP058-060, TP062-064` | +| `docs/PTO_IR_manual.md` | IR 层级、tile/view/valid-shape、layout、dynamic shape、Level-2/3 语义 | `02`, `04`, `05`, `06` | `L1-L4` | `TP019-020, TP028, TP032, TP039, TP045-047` | +| `test/samples/runop.sh` | 批量样例生成、`ptoas`/`ptobc` 运行、A3/A5 默认参数策略 | `01`, `02`, `04`, `05`, `06` | `L1-L4` | `TP018, TP034-039, TP049, TP051-052, TP062-064` | +| `test/npu_validation/scripts/generate_testcase.py` | 从 `*-pto.cpp` 生成验证工程,观察 golden/compare/兼容层处理 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP037-039, TP045-047, TP049, TP052` | +| `test/npu_validation/scripts/run_remote_npu_validation.sh` | compile-only / sim / npu 运行链路、日志格式、设备与 `pto-isa` 检查 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP049, TP051-052, TP058-060, TP062-064` | +| `test/samples/PyPTOIRParser/README.md` | 来自 pypto `ir_parser` 的 vendored `.pto` 快照说明 | `02` | `L1` | `TP035-037, TP039, TP044, TP046-047` | +| `test/samples/MatMul/` | README 直接引用的基准样例,适合作为 `01` 默认复现模板 | `01`, `04`, `05` | `L1-L4` | `TP018, TP034-039, TP042-047` | +| `test/samples/FlashAttention/` | 特定 shape 性能样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/GQA/` | 特定 shape / attention 相关样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/FFN/` | 特定 shape / 算子组合样例 | `05` | `L1-L4` | `TP035-041, TP044, TP046` | +| `test/samples/SetValidShape/` | dynamic/valid-shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `test/samples/LayoutInference/` | layout 推断相关样例 | `06` | `L1-L4` | `TP019-020, TP035-039, TP046-047` | +| `test/samples/Partition5D/` | 多维 partition / shape 泛化相关样例 | `02`, `06` | `L1-L4` | `TP035-039, TP044, TP046-047, TP061` | +| `test/samples/planmemory/` | alias/planmemory/shape 相关样例 | `06` | `L1-L4` | `TP035-039, TP044, TP046-047` | +| `.github/workflows/ci.yml` | CI 中的 LLVM/PTOAS 构建、lit、sample test、remote validation 参考配置 | `01`, `02`, `04`, `05`, `06` | `L1`, `L3`, `L4` | `TP003, TP011, TP049, TP052-053, TP058, TP060-064` | +| `.github/ISSUE_TEMPLATE/performance_issue.yml` | 性能问题受理模板,可用来评估性能数据/复现要求的完备性 | `05`, `06` | `L1` | `TP005, TP017, TP040-041, TP062-063` | 说明: - 不要把当前分支不存在的样例 README 当成固定证据源。 diff --git a/skills/ptoas-usability-eval/references/metrics-01.md b/skills/ptoas-usability-eval/references/metrics-01.md index b765030c4..58bcc109d 100644 --- a/skills/ptoas-usability-eval/references/metrics-01.md +++ b/skills/ptoas-usability-eval/references/metrics-01.md @@ -1,5 +1,14 @@ # `01 算子复现部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-018` +- `源码 & 示例类`: `TP034-035, TP038, TP042, TP044` +- `工具`: `TP049, TP051-052` +- `版本`: `TP053, TP058` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP054, TP057, TP059-061` + 默认把 PTOAS 看作“从样例或 `.pto` 输入出发,完成构建、编译、compile-only 或上板验证”的工具链仓库。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/skills/ptoas-usability-eval/references/metrics-02.md b/skills/ptoas-usability-eval/references/metrics-02.md index 1bcc752ea..8ad84dbf6 100644 --- a/skills/ptoas-usability-eval/references/metrics-02.md +++ b/skills/ptoas-usability-eval/references/metrics-02.md @@ -1,5 +1,14 @@ # `02 算子迁移部署` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017` +- `API / 接口`: `TP019-020, TP032` +- `源码 & 示例类`: `TP035-037, TP039, TP044, TP046-047` +- `工具`: `TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP033, TP061` + 这里只评估 PTOAS 仓库对“迁移到 PTO IR / PTOAS 工具链”的支撑能力,不把 PTOAS 包装成完整业务算子迁移平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/skills/ptoas-usability-eval/references/metrics-04.md b/skills/ptoas-usability-eval/references/metrics-04.md index 496660f68..d347924a6 100644 --- a/skills/ptoas-usability-eval/references/metrics-04.md +++ b/skills/ptoas-usability-eval/references/metrics-04.md @@ -1,5 +1,14 @@ # `04 算子基本功能实现` 的 PTOAS 子集指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP008-009, TP011, TP013, TP017-018` +- `API / 接口`: `TP019-020, TP028, TP032` +- `源码 & 示例类`: `TP034-039, TP042-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP006, TP010, TP014-015, TP033` + 这里只评估 PTOAS 真正覆盖到的“示例 / 编译 / 验证 / 反馈”链路,不把 PTOAS 当成完整算子研发平台。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/skills/ptoas-usability-eval/references/metrics-05.md b/skills/ptoas-usability-eval/references/metrics-05.md index 079682038..3b05aa815 100644 --- a/skills/ptoas-usability-eval/references/metrics-05.md +++ b/skills/ptoas-usability-eval/references/metrics-05.md @@ -1,5 +1,14 @@ # `05 特定 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“固定 shape / 特定 shape 性能优化”的支撑能力。没有 benchmark baseline 或没有上板实测时,不要硬造性能结论。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/skills/ptoas-usability-eval/references/metrics-06.md b/skills/ptoas-usability-eval/references/metrics-06.md index 4e24f2f70..1e44532c0 100644 --- a/skills/ptoas-usability-eval/references/metrics-06.md +++ b/skills/ptoas-usability-eval/references/metrics-06.md @@ -1,5 +1,14 @@ # `06 泛化 shape 性能优化` 指标 +## 本场景默认选用触点 + +- `资料/文档`: `TP001-005, TP017` +- `API / 接口`: `TP019-020` +- `源码 & 示例类`: `TP035-036, TP039, TP044, TP046-047` +- `工具`: `TP049, TP051-052` +- `运行反馈`: `TP062-064` +- `Conditional`: `TP040-041, TP054, TP061` + 这里只评估 PTOAS 对“多 shape / dynamic shape / valid-shape 场景”的性能优化支撑能力。没有多 shape 基线矩阵时,不要硬造平均/最大收益。 说明:保留用户原始口径,`10 分制` 与 `100 分制` 混用,不强行归一。 diff --git a/skills/ptoas-usability-eval/references/scoring.md b/skills/ptoas-usability-eval/references/scoring.md index aacfcf78c..ba3d01d6d 100644 --- a/skills/ptoas-usability-eval/references/scoring.md +++ b/skills/ptoas-usability-eval/references/scoring.md @@ -8,6 +8,7 @@ - 单项展示时,保留用户原始分制。 - 汇总总分时,再做统一归一化。 +- 场景分只基于本次选中的 `Core/Conditional Touch-Points` 或其 repo 级代理指标计算。 - 默认输出两个总分: - `总分(支撑)` - `总分(实测)` diff --git a/skills/ptoas-usability-eval/references/touchpoint-selection.md b/skills/ptoas-usability-eval/references/touchpoint-selection.md new file mode 100644 index 000000000..d57a6d79e --- /dev/null +++ b/skills/ptoas-usability-eval/references/touchpoint-selection.md @@ -0,0 +1,154 @@ +# PTOAS Touch-Point 选型 + +本文件把用户提供的总触点池裁剪成适合 `hw-native-sys/PTOAS` 的 repo 级评估子集。 + +## 1. 选型原则 + +- PTOAS 是**编译器 / 工具链 / 样例仓库**,不是完整 CANN 产品矩阵,也不是官方镜像分发平台。 +- 默认优先评估这些触点: + - `资料/文档` + - `API/接口` 中与 `CLI / Python 绑定 / PTO IR 手册` 直接相关的子项 + - `源码 & 示例类` + - `工具` + - `版本` 中 repo 内可自证的子项 + - `运行反馈` +- 对需要**产品级生态、仓外对标、跨硬件矩阵、发布渠道运营**的数据,默认不要硬打 repo 分,记 `N/A` 或只做差距说明。 + +## 2. 默认纳入的 Core Touch-Points + +这些触点默认进入 PTOAS repo 级评分。 + +### 2.1 资料/文档 + +- `TP001` 检索命中成功率 +- `TP002` 文档跳转次数 +- `TP003` 多入口可达率 +- `TP004` 单次任务文档跳转浏览率 +- `TP005` 知识渐进式发布 +- `TP008` 文档结构风格一致率 +- `TP009` 概念跨文档冲突数 +- `TP011` 文档、版本时效一致性 +- `TP012` 内/外链有效率 +- `TP013` 文档错误点位密度 +- `TP016` 资料交付件完备率 +- `TP017` 文档场景/内容覆盖缺失率 +- `TP018` quick_start / sample 一次跑通率 + +### 2.2 API / 接口 + +这里只看 PTOAS repo 自己暴露的接口层: +- `CLI`: `ptoas`, `ptobc` +- `Python bindings` +- `PTO IR` 公开手册/Op 语义 + +默认纳入: +- `TP019` 目标接口平均查找检索轮次 +- `TP020` 渐进式复杂披露覆盖度 +- `TP028` 平均入参数 / 参数复杂度 +- `TP032` 接口自解释读懂率 + +### 2.3 源码 & 示例类 + +- `TP034` 示例代码无修改一键编译运行成功率 +- `TP035` 示例检索命中成功率 +- `TP036` 样例覆盖度 +- `TP037` 最小功能实现 Demo 覆盖率 +- `TP038` 命令示例覆盖度 +- `TP039` API 调用样例覆盖率 +- `TP042` 样例代码编译语法错误检出率 +- `TP043` 样例使用废弃 / 过期 API 占比 +- `TP044` 业务代码直接复用改编比例 +- `TP045` 编程模型标准对齐率 +- `TP046` 关键链路显性化率 +- `TP047` 认知理解步数 + +### 2.4 工具 + +- `TP049` 首次安装部署一次性成功率 +- `TP051` 标准任务平均操作步骤数 +- `TP052` 功能 / 场景覆盖率 + +### 2.5 版本 + +只纳入 repo 内可通过 `README / CI / tag / branch / issue template` 自证的部分: +- `TP053` 版本检索命中成功率 +- `TP058` 版本配套关系准确性 + +### 2.6 运行反馈 + +- `TP062` 报错携带环境 / 版本 / 上下文信息完整率 +- `TP063` 报错自带排障建议比例 +- `TP064` 无效冗余信息占比 + +## 3. 条件纳入的 Conditional Touch-Points + +这些触点只有在用户明确要求,或者当前任务确实提供了对应证据时才纳入。 + +### 3.1 文档 / API 条件项 + +- `TP006` FAQ 命中率 +- `TP010` 接口文档模板一致率 +- `TP014` API 文档覆盖率 +- `TP015` 错误码文档化率 +- `TP033` N+2 小版本破坏性接口变更频次 + +### 3.2 示例 / 性能高级项 + +- `TP040` E2E 实战案例覆盖率 +- `TP041` 行业深度调优案例覆盖率 + +### 3.3 版本 / 部署高级项 + +- `TP054` 版本信息完备率 +- `TP057` 版本号规范准确率 +- `TP059` 版本部署命令数 +- `TP060` 开箱部署成功率 +- `TP061` 版本兼容性率 + +说明: +- `TP061` 在 PTOAS 里通常要到 `L4`,并且需要 A3/A5/不同硬件的实测证据。 +- `TP040/TP041` 在 PTOAS 里只有当 `FlashAttention/GQA/FFN` 这类样例被当作准业务案例使用时才适合纳入。 + +## 4. 默认排除的 Excluded Touch-Points + +这些触点默认**不进入** PTOAS repo 级总分,除非用户明确要求做生态级差距研究。 + +### 4.1 产品生态 / 友商对标类 + +- `TP021` API 业务场景覆盖率 +- `TP022` 主流 AI 应用框架 API 支持覆盖率 +- `TP023` 主流 AI 框架 API 支持覆盖率 +- `TP024` API 主流生态调用一致性 +- `TP025` 原子 API 与标杆 API 数量对比一致性 +- `TP026` 迁移修改代码(CUDA -> AscendC) +- `TP027` 原子 API 与标杆 API 行为对比一致性 + +原因:这些指标要求的是**全产品生态**、**仓外框架集成**、**与 CUDA/CANN 大盘对比**,不是 PTOAS 仓库单独可证的事实。 + +### 4.2 不适合 PTOAS repo 形态的项 + +- `TP029` 错误返回一致率 +- `TP030` 最小可用代码行数 +- `TP055` 主流镜像仓支持下载覆盖度 +- `TP056` 典型部署模式支持覆盖度 + +原因: +- PTOAS 不是以统一 runtime C API 为主的库产品,`TP029/TP030` 不适合直接套。 +- PTOAS repo 不是镜像/安装包分发平台,`TP055/TP056` 默认不打 repo 分。 + +## 5. 场景到 Touch-Point 的默认映射 + +| 场景 | 默认 Core Touch-Points | 条件 Touch-Points | +| --- | --- | --- | +| `01 算子复现部署` | `TP001-005, TP008-018, TP034-035, TP038, TP042, TP044, TP049, TP051-053, TP058, TP062-064` | `TP006, TP054, TP057, TP059-061` | +| `02 算子迁移部署` | `TP001-005, TP008-009, TP011, TP013, TP017, TP019-020, TP032, TP035-037, TP039, TP044, TP046-047, TP051-052, TP062-064` | `TP040-041, TP033, TP061` | +| `04 算子基本功能实现` | `TP001-005, TP008-009, TP011, TP013, TP017-020, TP028, TP032, TP034-039, TP042-047, TP049, TP051-052, TP062-064` | `TP006, TP010, TP014-015, TP033` | +| `05 特定 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | +| `06 泛化 shape 性能优化` | `TP001-005, TP017, TP019-020, TP035-036, TP039, TP044, TP046-047, TP049, TP051-052, TP062-064` | `TP040-041, TP054, TP061` | + +## 6. 使用要求 + +- 每次正式评估前,先在输出里给出 `触点选择`。 +- 默认只打 `Core Touch-Points`。 +- `Conditional Touch-Points` 只有在证据存在时才纳入,并明确说明为什么本次纳入。 +- `Excluded Touch-Points` 不进入总分;如果用户追问,可以单独给差距分析,但不要混入 repo 级总分。