| Files | Last commit | Last update |
|---|---|---|
fix(aclnn): STATUS 行内存检查格统一 kernel 口径,UNKNOWN 不再显示 FAIL Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !535 merge br_issue into master fix(aclnn): STATUS 行内存检查格统一 kernel 口径,UNKNOWN 不再显示 FAIL Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ### PR功能描述 / 为什么需要这个合入**: aclnn 通路收尾表 STATUS 行的内存检查格原按 oob == "PASS" 判定,非 PASS 一律渲染为 FAIL。aclnn 尚未实现 workspace OOB 检查,prof_result.oob 恒为默认值 "UNKNOWN"(未跑 profiling 时干脆缺失),导致每条用例 STATUS 行的内存检查恒为 FAIL,与原始列 UNKNOWN、汇总行 PASS、退出码 0 自相矛盾,日志自动验收据此把未执行的检查当成内存越界失败。 本 PR 与 kernel 通路口径统一:新增 _memory_check_status(),仅明确含 FAIL 的越界结论判 FAIL,UNKNOWN/缺失视为 PASS(对齐 kernel KernelExecuteResult.oob_status 语义);原始值列仍如实显示 UNKNOWN,不改退出码与汇总逻辑。 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes [#412](https://gitcode.com/cann/ops-test-kit/issues/412) 关联 PR:https://gitcode.com/cann/ops-test-kit/pulls/514 ### 希望检视人员了解: - 与 [#514](https://gitcode.com/cann/ops-test-kit/pulls/514)(NUAA_wqy)方案差异:514 为三态(未检查显示 UNKNOWN),本 PR 按现有 kernel 口径收敛为二态(未检查归 PASS),两条路可二选一评审。 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 改动仅收尾表打印逻辑,未新增单测。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!535 | 17 days ago | |
feat(onnx): 实现onnx通路 Co-authored-by: FishPotatoChen<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !526 merge onnx_dev into master feat(onnx): 实现onnx通路 Created-by: FishPotatoChen Commit-by: FishPotatoChen Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ### PR功能描述 / 为什么需要这个合入**: E2E 模式新增 **onnx 域(ONNX 通路)**:CSV 用例以 api_name = onnx.<OpType> 声明单算子,TTK 自动组装单算子 ONNX 模型,经 atc 离线编译为 .om 后在 NPU 上经 aclmdl 执行,补齐「ONNX 模型解析 → atc ONNX 插件转换 → 离线模型装载执行」引擎层链路的测试覆盖。至此 TTK 四种测试模式对应的昇腾技术栈层级中,引擎层在 GEIR / ACLNN 之外补上 ONNX(atc→om)一列。 核心设计与能力: - **执行链路**:CSV (onnx.<OpType>) → 框架检测路由 OnnxAdapter → 参数解析(onnx.defs schema 单源,环境注册表即权威)→ 输入生成(numpy 直通,无框架 tensor)→ model_builder 组装单算子 ModelProto → atc 离线编译 .om → NPU aclmdl 执行 → 复用既有比对 / dump / 结果列体系 - **同构参照 Golden**:Golden 腿与被测腿共用同一份组模产物(同一模型字节),由 CPU 侧 onnx ReferenceEvaluator 参照计算 - **无框架依赖**:onnx worker 进程仅预载 numpy + onnx,无需安装 torch / tensorflow / torch_npu(子树零 torch/tf import,由 test_structure 钉住) - **om 会话缓存**:结构键(算子+输入形态+属性+soc+dev_id)→ OmSession 进程级 LRU;「数组身份 → 内容指纹」双层判定防脏命中;缓存键含 atc ONNX 插件指纹,CANN 升级/重装后自动失效 - **用例面**:复用 E2E 全量 23 列 CSV 字段;支持 Variadic 输入/输出、Optional 输入尾部省略、6 种属性类型(INT/FLOAT/STRING/INTS/FLOATS/STRINGS);不支持项(动态 shape、动态输出元数、布局列、控制流算子等)均在解析/建模期显式报错,不静默降级 - **配套重构/新增**:ttk/utilities/dtypes.py 重构并新增 ONNX_DTYPE_MAP 全量 dtype 映射;新增 ttk/utilities/mx_quant.py(BFP16/FP16/FP32 → MX dtype 量化,纯算法模块) - om 恒为静态图(eager ≡ 静态图),不支持动态 shape 与 aclgraph 模式 主要新增模块:ttk/core_modules/framework_api/onnx/(model_builder / om_compiler / param_extractor / runner / runtime)、ttk/core_modules/common/backend/onnx_backend.py、ttk/utilities/mx_quant.py;示例用例 examples/case_store/e2e/onnx_cases.csv。 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes [#433](https://gitcode.com/cann/ops-test-kit/issues/433) ### 希望检视人员了解: - onnx 域与 torch/tf 域互斥:同一 CSV 不得混域(框架检测拒绝),按域分文件存放 - 环境约束:onnx ≥ 1.13(Golden 依赖 ReferenceEvaluator)且 onnx.defs.onnx_opset_version() ≤ 18(对齐 CANN atc ONNX 插件注册上限,CANN 9.2.x 配套 onnx 1.13.x);onnx 域额外依赖 CANN 的 atc 与 libascendcl - --backend cpu 不适用于 onnx 域被测腿(om 执行必须经 NPU),CPU 侧仅用于 Golden 与输入生成 - om 编译缓存放于仓库根 onnx_cache/<op_type>/,已加入 .gitignore - NonZero / TopK 等输出 shape 数据依赖的算子属通路边界(ONNX_DYNAMIC_OUTPUT_UNSUPPORTED),建议改用 kernel/aclnn 模式覆盖 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - **单元测试**(本仓库全量新增/回归,均通过): - tests/core_modules/framework_api/onnx/(model_builder / om_compiler / param_extractor / runner / runtime / routing / golden / e2e 冒烟)+ dtypes + mx_quant + structure:189 passed, 2 skipped(skip 为环境缺 tensorflow / en-dtypes,与本改动无关) - tests/core_modules/framework_api/ 全量回归 + tests/core_modules/common/test_instance_base.py:523 passed, 32 skipped(skip 为非基线 torch 版本钉死项与缺包项,与本改动无关) - **真机执行**:Ascend910_9362 双卡环境,python3 -m ttk e2e -i examples/case_store/e2e/onnx_cases.csv,6/6 用例全部 PASS(100%),覆盖 Add/Concat/Split/Gemm/Transpose/MatMul(bf16) 等 f32/f16/bf16/f64 dtype ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 新增 docs/Operator_Test_Guides/ONNX_Test_Guide.md(ONNX 算子测试指南:环境准备、用例编写、关键约定、属性类型速查、FAQ) - 更新 README.md / README-EN.md(通路架构图、依赖说明、onnx 域快速上手命令、测试通路表) - 更新 AGENTS.md / CLAUDE.md(架构层级与技能索引补充 onnx 域) - 更新 docs/FAQ/faq_guide.md(新增「ONNX 通路问题」章节 5 条 FAQ) - 更新 docs/Operator_Test_Guides/E2E_Case_Writing.md、E2E_Test_Guide.md 及 docs/ 下相关文档(Task_Execution / Test_Case_Generation / Dump_Debug / Performance_Testing / XPU_Cross_Check / NPUSim / Offline_Data_Prepare / Deterministic_Compute) - 更新 .claude/skills/ 四个技能文档(run-test / write-case / write-plugin / diagnose) - 更新 examples/case_store/e2e/README.md 并新增 examples/case_store/e2e/onnx_cases.csv ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!526 | 16 days ago | |
fix(framework_api): record actual output shapes for eager/graph comparisons Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !536 merge fix/framework-api-output-shapes into master fix(framework_api): record actual output shapes for eager/graph comparisons Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: Closes #464 ## 问题 函数式框架 API(torch eager/graph、TF)的用例不声明 output_tensor_indexes,比较通过后结果行 precision_metrics 只有 {standard:'binary_equal', pass:True},与空数组恒等捷径(precheck 都空→PASS)完全同形;下游验证平台无法区分真实比较与空捷径,只能把整条通路保守归为"未度量"(实测 BitwiseAnd torch/tf 通路 38+76+33 例全部 PASS 但比较完成统计为 0)。 ## 修复 - FrameworkApiReturnStructure 新增 output_shapes 列:记录实际产出/被比较张量形状(按输出序,None 表示输出缺失,不构成非空证据) - evaluate_eager_precision / evaluate_graph_precision 在比较入口记录 result_nps / graph_nps 真实形状(首次记录,graph 仅在无记录时补充) ## 验证 - 形状元组经 CSV 序列化后可被 ast.literal_eval 还原并满足下游非空输出判定(round-trip 实测) - tests/core_modules/framework_api 全量 460 passed, 32 skipped(环境相关) ## 关联 对应下游工作流侧消费缺陷:cannbot-test/CannbotHarness 大用例/统计口径问题(见该仓 #146 同期验证记录)。 See merge request: cann/ops-test-kit!536 | 16 days ago | |
feat(geir): --run 轮数透传图执行段,性能聚合取跨轮 median Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !525 merge master into master feat(geir): --run 轮数透传图执行段,性能聚合取跨轮 median Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [] 否 [x] 是 __1. AI Agent 平台: OpenCode CLI __2. AI 模型: GLM-5.3 __3. Prompt上下文 : ### PR功能描述 / 为什么需要这个合入**: GEIR 通路 --run 执行轮数透传 + 性能统计口径对齐 为什么需要这个改动 - GEIR 通路此前将 --run 门控在 --dl 1 下(run_count = run_time if deterministic else 1):默认模式每用例仅执行 1 次,--run N 被静默忽略,与 kernel/aclnn/e2e 三通路的无条件透传行为不一致 - 用户需要 --run N 直接决定图执行轮数,并获得稳态性能统计(多轮采样),而不是只拿到单次(或 dl=1 时的末轮)数值 改动内容 执行段(ttk/core_modules/geir/execute.py) - run_count = switches.run_time 无条件透传:--run N 直接决定常驻 serve 子进程的逐轮执行次数(默认 3);--dl 1 时多轮照常兼做轮间 MD5 一致性校验,确定性语义不变 - 性能聚合从“末轮覆盖”改为跨轮 median:逐轮 _run_once_serve 的 msprof Task Duration(轮内任务级 median)入样 perf_samples,跨轮再取 median;prof 无数据轮次(None)不入样 - 首轮剔除与 kernel/aclnn 同口径:run > 1 时第 0 轮(含图编译/装载冷启动)不进性能窗口,--run 1 采单次(冷启动口径)。合并上游 serve 改造时确定:一次性子进程时代“每轮全新进程、冷热等价、无需剔除”的依据在常驻进程模型下不再成立 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes # ### 希望检视人员了解: ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 新增 TestExecuteGraphRunCount 6 项单测:dl=0 轮数透传、单轮冷启动口径、dl=1 逐轮 MD5 PASS、轮间输入 bin 重写次数、None 轮不入样、全 None 保持占位 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - docs/Performance_Testing.md:geir 采集说明、采集次数表、稳态性能速查行按新口径更新 - docs/Operator_Test_Guides/GEIR_Test_Guide.md:--run 参数说明与示例更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!525 | 17 days ago | |
feat: spec.describe 参数化用例组装 + batch 一致性声明样本比对增强 Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !517 merge br_issue into master feat: spec.describe 参数化用例组装 + batch 一致性声明样本比对增强 Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [ ] 否 [x] 是 __1. AI Agent 平台: OpenCode CLI __2. AI 模型: cannbot/deepseek-v4-pro __3. Prompt上下文 : TTK AGENTS.md + ttk-how-* skills ### PR功能描述 / 为什么需要这个合入**: 本 PR 合入三块改动: 1. spec.describe 参数化用例组装(d6d527e) 多输入算子(如 sparse_flash_mla 18 输入)可用 B/S1/N1/D 等抽象参数列替代逐张量形状声明: - CSV 形状/类型字段任一缺省时,框架收集未识别列为 params 调 spec.describe(params) - 契约:describe 只返回 {"shapes": ..., "dtypes": ...} 两 key,四通路各自映射: kernel/geir → input_shapes/input_dtypes;aclnn/e2e → tensor_view_shapes/tensor_dtypes (aclnn 的 shapes 按 API 参数列表含输出槽位) - 缺啥补啥:CSV 显式声明的字段优先不覆盖;两者都声明过则不触发 describe - 失败语义:DESCRIBE_FAILED / DESCRIBE_RESULT_NOT_DICT / DESCRIBE_MISSING_SHAPES - 配套:SpecResolver.resolve_describe;E2E tensor_view_shapes/tensor_dtypes 缺省 (); factory 未识别列提示更新;参数收集走受限 eval(数字/容器类型化,裸词退回字符串) 2. batch 一致性内置声明样本比对(127cec9) - worker 按声明 relation 切片直切 output 0,逐样本 MD5,以 (api_name, seed, 切片长度) 为 key 回传 - 主进程 cleanup 按 key 跨用例分组、同 key hash 集合基数判定;支持样本跨用例换序(reorder)对齐与多 API 隔离 - Spec.tolerance 支持 isclose/close(rtol/atol/ptol,优先级保持 CSV legacy > Spec > dtype 分档);清理无调用者的 backward CPU golden 死代码 3. batch 一致性结果 CSV 重写后重开句柄(f2003df) - os.replace 后旧句柄指向已 unlink 的 inode,重开结果 CSV 避免后续写入静默丢失 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes # ### 希望检视人员了解: - describe 契约刻意收敛为 shapes/dtypes 两 key:attributes、output_tensor_indexes、输出形状等仍由 CSV 列提供,框架不替算子猜输出语义 - E2E 缺失 tensor_view_shapes/tensor_dtypes 列的行为从"整批解析报错"变为"逐行判无效或 describe 回填" ## 测试 - 新增 21 个 describe 单测(参数收集类型化、四通路映射、门控与缺啥补啥、CSV 优先不覆盖、失败语义、factory 通路)+ batch 比对相关测试更新 - 相关套件 450+ 用例通过;ruff 与 pre-commit 门禁全绿 - 真机 --validate:sparse_flash_mla 的 e2e / aclnn 参数化 CSV 均 1 valid ## 文档更新 - docs/Test_Case_Generation.md 新增「参数化用例(describe)」章节 - ttk/core_modules/common/plugin/README.md describe 契约说明 - .claude/skills/ttk-how-write-plugin/SKILL.md 属性表更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!517 | 17 days ago | |
代码框架重构 Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !393 merge master into master 代码框架重构 Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [ ] 否 [x] 是 __1. AI Agent 平台: opencode(CLI 编程助手) __2. AI 模型: GLM(CANNBot/glm-5.3) __3. Prompt上下文 : 本仓 AGENTS.md + TTK 重构任务卡。AI 辅助范围:upstream 同步冲突解决、主线修复移植(bind_params)、测试治理 review、文档链接核查、本 PR 描述整理 ### PR功能描述 / 为什么需要这个合入**: TTK 代码框架重构(15 笔提交、583 文件,按主题组织,可分批 reviewing),核心目标:**分层归位、公开面收口、测试体系治理、主线同步**。 **一、目录与分层重组** - common 层域建设(W4-W15):utilities/switches/process/dump/comparison/result/plugin/testcase/backend/xpu/profiler/instance 归位为 ttk/core_modules/common/* 单份契约代码 - 四通路目录重组与清场(W16-W20):kernel/aclnn/framework_api/geir 换基,tests/ 目录树与 ttk/ 同构 **二、公开面收口** - scripts/common_public_surface.json 公开面名单 + pre-commit「ttk refactor guard」守护 - kernel/aclnn 公开面收口;mc2→hccl 改名;CLI 参数面治理(args_to_switches 四通路必经收口、--core-limit 统一解析) **三、模型与共性件上提** - Tensor 槽模型落地(声明/运行时槽位统一)、输入/golden 共性件上提 - 动态槽(-1)物化、参数级可变性上提、batch 一致性框架化、E2E 框架子目录化/编排步骤化 - W21-W24 扩展:设备状态泛化、E2E backward 一期、XPU 三方 golden、ttk-prof2case 技能(profiling 报告转用例) **四、GEIR/E2E 专项深化** - GEIR:manual-data 落盘口径统一与时序对齐、轮间一致性 MD5、模板 Data/Const 防重定义宏守卫 - E2E:-b/golden/mutability/xpu/open 后置系列改造、forkserver 预载框架感知修复(torch/TF libstdc++ 弱符号冲突)、eager 逐轮可变槽载体下沉 Backend.stage_mutable_rounds **五、主线同步(upstream/master e3fb50a + 9e74ae6)** - rebase 解决 6 处冲突(含 3 处文件迁移形态的 modify/delete 冲突、1 处双方同构修复) - **语义缺口补齐**:主线 e3fb50a bind_params 前序可选参数缺省占位修复(防后续参数左移错位——alpha 落 gamma 槽)移植至重构后 ttk/core_modules/common/xpu.py 单份契约 + TestBindParams 回归测试 - geir 模板 Data/Const OPS_PROTO_DEF_* 防重定义宏守卫(9e74ae6 同构合入) **六、测试体系治理(tests/common + utilities/remote/cli/config)** - 错位用例归位:framework_api/kernel 域(test_simple_param_extractor、test_super_kernel 拆分、test_xpu_perf_collect 拆分、test_e2e_simulator_backend) - 私有接口直调转公开入口 30+ 用例:compare_with_hooks / args_to_switches / TestcaseBase.validate / get_comparison().compare() - 重复与不可达用例清理、命名修复(testgenerate/testformat 两处缺下划线) - 白盒保留项均有归类(调度状态机/规则单元/parity 对拍/pins 守卫,公开路径需进程编排或活服务端) ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes #305 ### 希望检视人员了解: - 大 PR(583 文件),建议按提交主题分批 reviewing(15 笔提交各自独立成篇) - review 收尾阶段 3 笔已 squash 为单笔(含主线同步与测试治理),历史已 force-push 整理 - 重构设计文档(TTK_Refactoring_Design 等 20 篇)按计划本地化,未随 PR 入库;行为基线见 scripts/refactor_baseline.json ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 全量单测:**2731 passed / 3 skipped(环境相关)/ 1 xfailed** - pre-commit 全绿:ruff check + ruff format + ttk refactor guard + codespell + OAT 合规检查 - 专项验证:主线 bind_params 错位场景实测(省略前序可选参数 gamma 时槽位对齐、无左移) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - README/README-EN、docs/ 40+ 篇随代码同步(Operator_Test_Guides/NPUSim/Task_Execution/Test_Case_Generation/FAQ 等) - 文档命名英文化(msdebug适配方法指南.md → msdebug_guide.md);全仓 markdown 链接有效性核查(79 文件、含外部 URL 逐个验证,0 失效) - .claude/skills 五技能文档(含新增 ttk-prof2case:profiling 报告转用例) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码框架重构(分层归位/公开面收口/测试治理 + 主线同步) See merge request: cann/ops-test-kit!393 | 1 month ago |
| Files | Last commit | Last update |
|---|---|---|
| 17 days ago | ||
| 16 days ago | ||
| 16 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 1 month ago |