ATB CSV Tester(atb-csv-tester)是 ATB Skills 中的一个测试技能,用于运行 ATB(Ascend Transformer Boost)CSV 格式的测试用例,验证算子正确性。
用途
该技能适用于以下场景:运行 ATB CSV 测试(如 linear.csv);验证已迁移算子的正确性;在 CANN 环境下执行算子级别功能测试。
前置条件
使用前需要满足:CANN 环境已安装并 source;ATB 测试框架已编译(存在 libatb_test_framework.so);ATB 源码仓库已克隆。同时必须从用户处获取两个路径:CANN 安装路径(如 /usr/local/Ascend/ascend-toolkit/latest)和 ATB 仓库路径;路径无效时应立即停止并报错。
主要能力与规则
当前测试环境仅支持 Ascend910B 设备,执行时仅运行 SocVersion 包含 Ascend910B 的用例。若 910B 与 950 在 dtype 支持、format 支持、参数约束、维度限制、ExpectedError 或性能基准方面存在差异,必须拆分为独立用例并各自指定 SocVersion,严禁将存在功能差异的用例合并。
测试运行策略方面,atb_csv_ops_test.py 会根据 TestType 列决定运行次数:Performance 类型实际次数为 400(若 -t 小于 400 则回退为 400),其他类型为 -t 指定次数(默认 1)。性能测试前 200 次迭代跳过精度统计,从第 201 次开始累积。正例、反例建议使用默认 1 次;性能测试建议使用默认 400 次。
Phase 5a 分为两步:Step 1 在前台运行功能 CSV(正例+反例),不指定 -t;Step 2 使用后台 subagent 逐个以 -n N:N 运行性能 CSV,避免多个性能用例同时加载导致 OOM。Phase 5b 为全量回归,要求枚举所有与目标算子相关的 CSV(精确匹配 {op_name}.csv、前缀匹配 {op_name}_*.csv)并逐个运行,全部通过后才能进入 Phase 6 交付;任一失败则阻断。
执行方式
进入 Docker 容器后,依次 source CANN 环境和 ATB 输出环境,验证测试框架存在。运行 CSV 测试可使用技能脚本: bash <SKILLS_DIR>/atb-csv-tester/scripts/run-csv-tests.sh --atb-repo-path <ATB_REPO_PATH> --csv-file <CSV_FILE_PATH> --case-range <CASE_RANGE> 或手动执行: cd <ATB_REPO_PATH>/tests/framework/python/CsvOpsTestTool python3 atb_csv_ops_test.py -i <CSV_FILE_PATH> 若测试框架未编译,需先执行 bash scripts/build.sh testframework 并 source output/atb/set_env.sh。
CSV 文件格式
CSV 测试文件使用管道符(|)作为分隔符。常用列包括:第 1 列 CaseNum(用例编号)、第 3 列 OpName(算子名称)、第 4 列 OpParam(JSON 格式参数)、第 21 列 ExpectedError(期望错误类型,如 NO_ERROR)。
适用场景与限制
适用于 Ascend910B 环境下的 ATB 算子功能与性能验证。限制包括:当前仅支持 Ascend910B 设备;950 兼容性需在 Ascend950 设备上手动运行相同命令验证;性能测试迭代次数固定较高,减少迭代需修改 TestType,但会跳过性能阈值检查;性能用例需逐个运行以避免 OOM。