skills/ascend-transformer-boost/skills/atb-csv-testcase-generator/SKILL.md
ATB CSV 测试用例生成技能。当用户需要为 ATB 算子创建 CSV 格式的泛化测试用例时调用此技能。 覆盖:正例设计、反例设计、性能测试用例、CSV 格式规范。
npx skillsauth add Ascend/agent-skills atb-csv-testcase-generatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
此技能用于为 ATB 算子生成 CSV 格式的泛化测试用例,支持正例、反例和性能测试用例设计。
在以下情况下调用此技能:
| 类型 | 说明 | 数量建议 | |------|------|----------| | 正例 | 验证正常功能,覆盖典型场景 | 5-15 个 | | 反例 | 覆盖所有参数校验分支 | 10-20 个 | | 性能测试 | 大小 shape 性能验证 | 5-10 个 |
tests/apitest/opstest/csv/ 目录下有丰富的参考用例TestType 列填写 Performance 即为性能测试ExpectedError 列填写错误类型,如 NO_ERROR、I:ERROR_INVALID_TENSOR_DIM 等包含主流模型的常见 shape:
CaseNum|CaseName|OpName|OpParam|InNum|InDType|InFormat|InShape|OutNum|OutDType|OutFormat|OutShape|DataGenType|DataGenRange|InTensorFile|OutTensorFile|TestType|TestLevel|FromModel|SocVersion|ExpectedError
1 |XxxBase |XxxOperation|{"param":0}|1|float16|nd|128,4096|2|int8;float|nd;nd|128,2048;128|customize|-100,100;|||||||Ascend910B;Ascend950|NO_ERROR
</details>
<details>
<summary>反例设计原则(点击展开)</summary>
# 只支持 float16/bf16,不支持 int64
SwigluQuantErrorDtypeInt64|SwigluQuantOperation|{"quantType":0}|1|int64|nd|128,4096|...|I:ERROR_INVALID_TENSOR_INI_MATCH
# dimNum 必须为 2
SwigluQuantErrorDimNum|SwigluQuantOperation|{"quantType":0}|1|float16|nd|128,4096,1|...|I:ERROR_INVALID_TENSOR_DIM_NUM
# hidden_size 必须能被 2 整除
SwigluQuantErrorHiddenSizeOdd|SwigluQuantOperation|{"quantType":0}|1|float16|nd|128,4097|...|I:ERROR_INVALID_TENSOR_DIM
# quantType 只能为 0
SwigluQuantErrorParam|SwigluQuantOperation|{"quantType":1}|1|float16|nd|128,4096|...|C:ERROR_INVALID_PARAM
# UB 上限检查
SwigluQuantErrorHiddenSizeTooLarge|SwigluQuantOperation|{"quantType":0}|1|float16|nd|5,15714|...|I:ERROR_INVALID_TENSOR_DIM
| 校验类型 | ExpectedError | 覆盖场景 |
|----------|--------------|----------|
| 数据类型 | I:ERROR_INVALID_TENSOR_INI_MATCH | int64, int32, float32, bool |
| 数据格式 | I:ERROR_INVALID_TENSOR_INI_MATCH | fractal_z, ncdhw 等 |
| 维度数量 | I:ERROR_INVALID_TENSOR_DIM_NUM | 1D, 3D, 4D |
| 维度值 | I:ERROR_INVALID_TENSOR_DIM | 0, 奇数, 超限 |
| 参数校验 | C:ERROR_INVALID_PARAM | 非法参数值 |
| 输出 Shape | S:ERROR_INVALID_TENSOR_DIM | shape 不匹配 |
| UB 边界 | I:ERROR_INVALID_TENSOR_DIM | hidden_size 过大 |
# 大 shape
SwigluQuantPerformanceLarge|SwigluQuantOperation|{"quantType":0}|1|float16|nd|2048,16384|...|Performance|Ascend910B;Ascend950|NO_ERROR
# 中 shape
SwigluQuantPerformanceMedium|SwigluQuantOperation|{"quantType":0}|1|float16|nd|512,8192|...|Performance|Ascend910B;Ascend950|NO_ERROR
# 小 shape
SwigluQuantPerformanceSmall|SwigluQuantOperation|{"quantType":0}|1|float16|nd|64,256|...|Performance|Ascend910B;Ascend950|NO_ERROR
# bf16 性能
SwigluQuantPerformanceBf16|SwigluQuantOperation|{"quantType":0}|1|bf16|nd|1024,8192|...|Performance|Ascend910B;Ascend950|NO_ERROR
# hidden_size 边界
SwigluQuantPerformanceHidden4096|SwigluQuantOperation|{"quantType":0}|1|float16|nd|256,8192|...|Performance|Ascend910B;Ascend950|NO_ERROR
</details>
<details>
<summary>CSV 格式规范(点击展开)</summary>
| 列号 | 名称 | 说明 |
|------|------|------|
| 1 | CaseNum | 用例编号 |
| 2 | CaseName | 用例名称 |
| 3 | OpName | 算子名称(如 SwigluQuantOperation) |
| 4 | OpParam | JSON 格式参数字符串 |
| 5 | InNum | 输入张量数量 |
| 6 | InDType | 输入数据类型(分号分隔) |
| 7 | InFormat | 输入数据格式(分号分隔) |
| 8 | InShape | 输入形状(分号分隔) |
| 9 | OutNum | 输出张量数量 |
| 10 | OutDType | 输出数据类型 |
| 11 | OutFormat | 输出数据格式 |
| 12 | OutShape | 输出形状 |
| 13 | DataGenType | 数据生成类型(通常为 customize) |
| 14 | DataGenRange | 数据生成范围 |
| 15 | InTensorFile | 输入张量文件(空) |
| 16 | OutTensorFile | 输出张量文件(空) |
| 17 | TestType | 测试类型(空或 Performance) |
| 18 | TestLevel | 测试级别(空) |
| 19 | FromModel | 来源模型(空) |
| 20 | SocVersion | 目标 SoC(如 Ascend910B、Ascend950。多个设备用 ; 分隔:Ascend910B;Ascend950) |
| 21 | ExpectedError | 期望错误(NO_ERROR 或错误类型) |
在 CSV 中使用 data_generation.py 支持的数据类型名称:
| 实际类型 | CSV 中使用 |
|----------|-----------|
| float32 | float |
| float16 | float16 或 half |
| bfloat16 | bf16 或 bfloat16 |
| int8 | int8 或 char |
| int32 | int32 或 int |
| int64 | int64 或 long |
| 错误类型 | 说明 | 触发场景 |
|----------|------|----------|
| NO_ERROR | 无错误,正例预期 | 正常执行 |
| I:ERROR_INVALID_TENSOR_INI_MATCH | 张量初始化不匹配 | dtype/format 错误 |
| I:ERROR_INVALID_TENSOR_DIM_NUM | 维度数量错误 | dimNum 不符合预期 |
| I:ERROR_INVALID_TENSOR_DIM | 维度值错误 | 维度值超限/无效 |
| C:ERROR_INVALID_PARAM | 参数错误 | 非法参数值 |
| S:ERROR_INVALID_TENSOR_DIM | 输出 Shape 错误 | 输出 tensor shape 不匹配 |
设计 CSV 测试用例时,必须同时覆盖 Ascend910B 和 Ascend950 设备。
| 情况 | SocVersion | 说明 |
|------|-----------|------|
| 910B 和 950 完全一致(场景/约束/dtype/format 均相同) | Ascend910B;Ascend950 | 合并为一条用例 |
| 910B 和 950 存在任何差异 | 分两条,各写各自 SocVersion | 必须分离 |
| 差异类型 | 示例 | 处理方式 | |---------|------|---------| | dtype 支持不同 | 910B 支持 bf16,950 不支持 | 分两条:910B bf16 / 950 用其他 dtype | | format 支持不同 | 910B 支持 ND,950 仅支持 ND_TRANSPOSE | 分两条,各自指定合法 format | | 参数约束不同 | 910B quantType=0,1;950 quantType=0 | 分两条,各自合法/非法参数 | | 维度限制不同 | 910B hidden_size≤31424;950 hidden_size≤32768 | 正向/边界分别设计 | | ExpectedError 不同 | 同一非法输入,910B 报 ERROR_A,950 报 ERROR_B | 分两条,各自 ExpectedError | | 性能基准不同 | 910B 和 950 性能预期不同 | 分两条,各自 Performance |
Ascend910B;Ascend950{OpName}{场景}910B / {OpName}{场景}950 便于区分注意:实际运行测试时仅执行 Ascend910B 用例(当前测试环境限制)。Ascend950 用例由用户在 950 设备上手动验证。
执行此技能前,必须从用户处获取以下路径:
<ATB_REPO_PATH>: ATB 仓库路径(如 {your working path}ascend-transformer-boost)从用户或官方文档获取算子的:
# 查看参数校验
cat <ATB_REPO_PATH>/src/ops/ops_infer/<op_name>/<op_name>_operation.cpp
# 查找 ERROR_INVALID_* 分支
grep -n "ERROR_INVALID" <ATB_REPO_PATH>/src/ops/ops_infer/<op_name>/<op_name>_operation.cpp
覆盖:
覆盖所有校验分支:
覆盖:
⚠️ 必须产出两个独立 CSV 文件,不可合并为一个:
# 创建功能用 CSV(正例 + 反例)
touch <ATB_REPO_PATH>/tests/apitest/opstest/csv/<op_name>_func.csv
# 创建性能用 CSV(性能用例)
touch <ATB_REPO_PATH>/tests/apitest/opstest/csv/<op_name>_perf.csv
# 可选:创建合并全量文件
touch <ATB_REPO_PATH>/tests/apitest/opstest/csv/<op_name>_test.csv
| 文件 | 内容 | TestType 列 | 用途 |
|------|------|------------|------|
| {op}_func.csv | 所有 TestType 非 Performance 的用例(正例+反例) | 空或 Function | Phase 5a 前台快速验证 |
| {op}_perf.csv | 所有 TestType=Performance 的用例 | Performance | Phase 5a 后台 subagent 运行 |
| {op}_test.csv | 全部用例(func + perf 合并) | 混合 | 全量参考 / Phase 5b 全量回归 |
-t 1(默认),秒级完成_func.csv 和 _perf.csv 各有独立完整 header(21 列)⚠️ 强制步骤 — Gate 2 之前必须执行
CSV 文件创建后,必须调用 superpowers:requesting-code-review agent 进行评审,不可跳过。
评审内容:
| 评审维度 | 检查内容 |
|---------|---------|
| 完整度 | 正例/反例/性能是否覆盖所有必要场景 |
| 正确性 | OpParam JSON 是否与设计文档参数映射一致 |
| Shape 一致性 | InShape/OutShape 是否与 ACLNN 接口约束一致 |
| 设备分离 | 910B/950 差异场景是否正确分离 SocVersion |
| 格式规范 | 21 列、| 分隔符、数据类型名称 |
评审输入:
*_replacement_design.md)评审通过标准:
ERROR_INVALID_* 分支评审问题修复后,方可进入 Gate 2 用户确认。
source <CANN_PATH>/set_env.sh
source <ATB_REPO_PATH>/output/atb/set_env.sh --cxx_abi=1
cd <ATB_REPO_PATH>/tests/framework/python/CsvOpsTestTool
python3 atb_csv_ops_test.py -i <CSV_FILE_PATH>
<details>
<summary>苏格拉底式提问模板(点击展开)</summary>
在开始编写前,确认以下问题:
算子接口:
已有参考:
特殊约束:
## CSV 测试用例设计
### 算子信息
- **算子名称**: XxxOperation
- **接口规格**: [简述]
### 正例列表 (N 个)
| CaseName | InShape | OutShape | 说明 |
|----------|---------|----------|------|
| XxxBase | 128,4096 | 128,2048 | 基例 |
| ... | ... | ... | ... |
### 反例列表 (M 个)
| CaseName | ErrorType | 覆盖分支 |
|----------|-----------|----------|
| XxxErrorDtype | ERROR_INVALID_TENSOR_INI_MATCH | dtype 校验 |
| ... | ... | ... |
### 性能测试列表 (P 个)
| CaseName | InShape | 说明 |
|----------|---------|------|
| XxxPerfLarge | 2048,16384 | 大 shape |
| ... | ... | ... |
### 统计
- 正例: N 个
- 反例: M 个
- 性能测试: P 个
- 总计: N+M+P 个
### 保存路径
- **功能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv`(正例+反例)
- **性能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv`(性能用例)
- **合并 CSV**(可选): `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_test.csv`
- **备份/预览**: `{WORKING_DIR}/`
⚠️ 强制检查点 - 不可跳过
CSV 用例设计完成后,必须等待用户确认后方可进入实际迁移阶段。
保存 CSV: 将生成的 CSV 用例保存至 ATB 仓库目录
{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv(正例+反例){ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv(性能用例){ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_test.csv准备确认清单: 供用户逐项确认
## CSV 用例确认 - {OpName}
### 待确认文件
- **功能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv`(正例 X 个 + 反例 Y 个)
- **性能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv`(性能 Z 个)
### 确认检查表
| 检查项 | 说明 | 用户确认 |
|--------|------|----------|
| 正例覆盖典型场景 | 包含 float16/bf16 基础用例,主流模型常见 shape | [ ] |
| 反例覆盖所有校验分支 | 覆盖所有 ERROR_INVALID_* 类型 | [ ] |
| 性能测试覆盖大小 shape | 包含大/中/小 shape 测试 | [ ] |
| CSV 已拆分为双文件 | `_func.csv` 和 `_perf.csv` 各自独立 | [ ] |
| CSV 格式符合规范 | 列数=21,分隔符=|,无多余空格 | [ ] |
| 数据类型名称正确 | 使用 data_generation.py 支持的名称 | [ ] |
| ExpectedError 类型正确 | 与参数校验逻辑匹配 | [ ] |
| 可进入实际迁移阶段 | CSV 用例已通过审查 | [ ] |
### 确认方式
- **通过**: 回复 "确认通过" 或逐项打勾确认
- **修改**: 指出具体问题,返回修改后重新确认
### 后续步骤
确认通过后,将进入 Phase 3: 实际迁移阶段
- 下一步调用: `atb-aclnn-operator-migration`
**⚠️ 未收到用户确认前,禁止进入实际迁移阶段**
我已生成 {OpName} 算子的 CSV 测试用例,已拆分为两个独立文件,请确认以下内容:
📄 **功能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv`
- 正例: N 个
- 反例: M 个
📄 **性能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv`
- 性能测试: P 个
Phase 5a 测试时将分两步:
1. 前台跑 _func.csv(秒级完成)
2. 后台 subagent 逐个跑 _perf.csv(避免 OOM)
请检查:
1. 正例是否覆盖了所有典型场景和数据类型?
2. 反例是否覆盖了所有参数校验分支?
3. 性能测试的 shape 选择是否合理?
4. CSV 拆分是否正确(正例/反例在 _func,性能在 _perf)?
回复 "确认通过" 进入实际迁移阶段,或指出需要修改的地方。
<details>
<summary>保存路径规范(点击展开)</summary>
| 文件类型 | 路径 | 说明 |
|----------|------|------|
| 功能 CSV | {ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv | 正例+反例,Phase 5a 前台跑 |
| 性能 CSV | {ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv | 性能用例,Phase 5a 后台 subagent 跑 |
| 合并 CSV(可选) | {ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_test.csv | 全量参考
变量说明:
ATB_REPO_PATH: ATB 仓库路径WORKING_DIR: working_files 目录op_name: 算子名称小写(如 {xxx}quant)⚠️ 执行后填写:技能执行完成后,参照下方格式填写实际执行结果。
| 步骤 | 检查点描述 | 状态 | |------|-----------|------| | - | 正例设计完成 | ✅ PASS / ❌ FAIL / ⏭️ SKIP | | - | 反例设计完成 | ✅ PASS / ❌ FAIL / ⏭️ SKIP | | - | 性能测试设计完成 | ✅ PASS / ❌ FAIL / ⏭️ SKIP | | - | CSV 文件已创建(双文件) | ✅ PASS / ❌ FAIL / ⏭️ SKIP | | - | CSV 已拆分为 _func.csv 和 _perf.csv | ✅ PASS / ❌ FAIL / ⏭️ SKIP | | - | 用户已确认 CSV 用例 ⭐ | ⬜ 待确认 |
VERDICT: ✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILED / ⏭️ SKIPPED
| 等级 | 检查点 | 问题描述 | 建议 | |------|--------|---------|------| | 🔴 CRITICAL | - | - | - | | 🟡 WARNING | - | - | - |
testing
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
tools
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
development
编译 ATB (Ascend Transformer Boost) 测试框架。当用户需要编译 ATB 测试框架、 运行 CSV 测试、或构建 atb_test_framework 时调用。支持全量编译(含第三方依赖克隆与源替换) 和增量编译两种模式。需在 Docker 容器内配合 CANN 环境执行。
databases
ATB OPS→ACLNN 迁移标准化工作流主模板。整合前置学习、设计文档生成、CSV用例设计、 实际迁移、编译验证、测试验证全流程,提供明确的阶段 Gates 和用户确认机制。