| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: golden-mode NPU 四通路支持(e2e/kernel/aclnn/geir)与 golden 性能采集 Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !504 merge br_bugfix into master feat: golden-mode NPU 四通路支持(e2e/kernel/aclnn/geir)与 golden 性能采集 Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ### PR功能描述 / 为什么需要这个合入**: --golden-mode 新增 NPU:golden 在 NPU 上执行并采集设备性能,四通路(kernel/geir/aclnn/e2e)支持;执行或采集失败自动回落 CPU golden,精度不受影响,性能列如实标注来源。 - **golden device 契约**:声明 device 形参(或 **kwargs)的 golden 收设备字符串("npu:0")自行上板——kernel/geir 函数形与 class 形保持 numpy 入参契约,aclnn/e2e 输入本为 torch 张量由框架 .to(device) 上板;字符串载体(golden="torch.add")由框架转张量上板 - **e2e**:golden 生成迁至 golden.py,设备由 exec_backend 决定(golden_api/插件/同 API 统一跟随);_run_api_on_cpu/_run_api_on_npu 合并为 _run_api - **aclnn**:ACLNN_GOLDEN 字符串载体先解析再进 NPU 闭包;修复 _call_torch_api device 路径 UnboundLocalError;回落结果统一 flatten(裸 Tensor 会切错输出槽位) - **结果新增四列**:golden_device_perf_us/golden_kernel_count/golden_kernel_details/golden_source(XPU 模式同列回填三方 device_us);采集目录随通路 DUT 的 msprof 子目录(msprof/{op,op_api,geir,e2e}/<case>_golden) - **互斥与防护**:no-prof×NPU 互斥(bridge);启动期无卡 fail-fast(has_npu_device);manual 真值优先于 NPU 重算 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes #313, fixes #170, fixes #150 ### 希望检视人员了解: - golden 性能列是**参照实现的设备耗时**,不与被测比快慢:golden 走通用算子(如 torch.add 落 aclnnAdd,带 alpha 标量时后端分派 Axpy),被测为特化实现,被测快于 golden 属预期 - kernel 通路 class 形 golden 为 torch 单语义;tf 载体在 kernel worker 受 torch_npu×TF 同进程段错误限制(环境约束,e2e TF 不受影响) - golden 输出 shape 会被采纳为 kernel 被测输出 buffer 形状,shape 算错表现为被测段 OOB 而非比对失败 - 顺带包含四通路 worker 私有函数统一单下划线(__x→_x)等机械重命名 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 单元测试:2505 passed(npu_golden_runner 回落语义、四通路路由/上板/flatten 契约) - 真机验证(Ascend950PR): - 四通路 NPU/Enable 双模式全 PASS,各形态 golden_source="npu" 且 msprof 采到 kernel 明细 - golden 形态矩阵:torch 原生字符串 / class 形 / 自定义函数 / 输入 TensorList(concat_d)/ 输出 TensorList(split) - -b=release 二进制模式、--warmup=false 对照、e2e TF(GE 分派)、结果 CSV --rerun 兼容 - 回落链路:模拟 NPU 失败 → CPU 回落 PASS(屏显 ERROR + 根因) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - docs/Task_Execution.md:--golden-mode 选项补 NPU - docs/Dump_Debug.md:manual-data 约束补 NPU - .claude/skills/ttk-how-run-test/SKILL.md、.claude/skills/ttk-how-write-plugin/SKILL.md:补 NPU 模式与 golden device 契约 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!504 | 20 天前 | |
feat: 恢复 frameworks 硬件配置段与配置驱动后端探测 Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !429 merge master into master feat: 恢复 frameworks 硬件配置段与配置驱动后端探测 Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: ### 当前PR是否有AI参与: [x] 否 [ ] 是 ### PR功能描述 / 为什么需要这个合入: 恢复 frameworks 硬件配置段与配置驱动的后端探测: 1. **frameworks 硬件配置段**: ttk/config/default.yaml 恢复 frameworks 段(torch.npu profile + xpu/cuda 部署示例注释),loader.py 恢复 get_hardware_config();无 frameworks 段时返回 {},仅 cpu 是合法默认。 2. **配置驱动后端探测**:backend/__init__.py 的 torch 路由从「仅探测 NPU」改回按 frameworks 声明顺序 _probe → _build;torch_lib 决定后端类(npu→NpuTorchBackend、cpu→CpuTorchBackend、其他→XpuTorchBackend),profile 校验 fail-fast(缺 torch_lib 或 profiler 非 builtin/非法 dict 直接报错);cuda 为 torch 原生跳过 import torch_cuda;探测失败告警后回落 CPU;tf 路径不变。 3. **恢复 XpuTorchBackend**:泛型加速卡后端,torch 级 device API 全经 getattr(torch, torch_lib) 派生,支持本地 GPU/加速卡执行。 4. **测试**:新增 test_hw_config.py,扩充 test_probe.py 适配新探测机制。 ### 该PR关联的issue fixes # ### 希望检视人员了解: - 探测顺序 = frameworks 段字典声明顺序;cpu profile 不参与自动探测(仅作兜底)。 - xpu/cuda 示例均在注释中,部署侧通过 ttk.conf.yaml 覆盖生效,不改默认 YAML。 - 实例不缓存,每次 get_backend 新建;三方标杆采集(--golden-mode XPU)仍走 remote,不经本函数。 ## 测试 - pytest tests/core_modules/common/backend/:63 passed, 1 skipped(tf 段 torch_npu._C + tensorflow 共存冲突为既有 skip) - ruff check / ruff format / pre-commit 通过 ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!429 | 24 天前 | |
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 | 15 天前 | |
fix: XPU 三方执行丢弃 self 名输入(aten 单目算子惯例)——bind_params 经 *args 送达 + executor 三相位去 self 过滤 Co-authored-by: FishPotatoChen<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !512 merge fixbug15 into master fix: XPU 三方执行丢弃 self 名输入(aten 单目算子惯例)——bind_params 经 *args 送达 + executor 三相位去 self 过滤 Created-by: FishPotatoChen Commit-by: FishPotatoChen Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ### PR功能描述 / 为什么需要这个合入**: aten 命名惯例下,ACLNN 算子 C 接口的首个输入参数名多为 self(如 aclnnReal(aclTensor *self, aclTensor *out))。TTK 做 XPU 三方校验时输入按参数名发给 xpu-server 按名绑定,但服务端把 self 当特殊名过滤掉了:类形式插件通路(bind_params)中,绑定 __call__ 的签名已无 self,池中 self 名输入本应经 *args 位置送达,却在 leftover 分发处被整体丢弃——既不进 **kwargs(防与实例位冲突,合理),也进不了 *args(与 docstring "use *args to receive it positionally" 的承诺矛盾);无插件的 api 自动解析通路(_invoke_function 三相位)同样全部过滤 self。结果凡输入参数名含 self 的算子(绝大多数 aclnn 算子),XPU 三方执行收不到输入、报 500,cross_check 一律 third_party unavailable,而 NPU 侧执行正常。 修复后 self 名输入按普通输入对待:经 *args 按 C 头文件序位置送达,仅在与实例位冲突(绑定方法 / 未绑定 __init__ 的 **kwargs)时绕行;普通函数签名中的 self 形参视为真实参数名按名绑定;invoke_third_party 补 object.__init__ 守卫防无自定义 __init__ 的插件类被误灌位置参数;_invoke_function 三相位去除 k != "self" 过滤,api 自动解析(如 aclnnAbs→torch.abs)不再丢弃输入。 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes [#419](https://gitcode.com/cann/ops-test-kit/issues/419) [#418](https://gitcode.com/cann/ops-test-kit/issues/418) ### 希望检视人员了解: - self → *args 位置送达本是 !107(8ec73dd)实现的原始语义,后续仓库重构(6fd9eb3)改写 leftover 分发时丢失,并给三相位加上了 k != "self" 过滤——本 PR 恢复并完善该契约,回归来源可查 git 历史。 - executor.py 的改动是**净删 7 处过滤的简化**,不是新增逻辑;torch 内建拒收 self= 关键字但位置收参正常(已实测),三相位 try/except 回退结构不变。 - xpu.py 的 object.__init__ 守卫是 bind_params 改动的必要配套:无自定义 __init__ 的插件类(常见形态)在 object.__init__ 的 *args 收到 self 名输入后 cls(t) 会直接 TypeError,executor 侧本有同款守卫,本次对齐。 - 兼容性:无 self 名输入的既有 spec 插件行为不变(非 self 的 leftover 路由仍为 **kwargs 优先);server 与 client 同源(server import ttk.core_modules.common),已部署的 GPU xpu-server 需整仓重新部署后生效。 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 单测:新增 16 个回归测试(tests/core_modules/common/test_xpu_third_party.py::TestBindParamsSelfNamedInput ×10、tests/remote/test_executor_self_named_input.py ×6),覆盖 *args 位置送达、**kwargs 实例位冲突绕行、__init__ 实例占位不误灌、函数形式真实 self 形参按名绑定等契约;tests/remote + tests/core_modules/common 全量 1110 passed, 4 skipped,无回归。 - 端到端:构造 aclnnReal(spec 模式,类形式 third_party 插件)与 aclnnAbs(api 模式,无插件自动解析)两条 cross_check 用例,修复前均 500(no input received / cannot be parameter-bound from inputs ['self']),修复后 2/2 PASS,xpu_metrics 分别回传 AclnnRealTestSpec / torch.abs;全链路在本机纯 CPU xpu-server(硬件探测 fallback cpu)上验证,无需 GPU 硬件。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!512 | 17 天前 | |
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 天前 | |
代码框架重构 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 个月前 | |
代码框架重构 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 个月前 | |
fix: avoid truncating ASCEND_OPP_PATH (issue #139) Co-authored-by: atlasleong<2235102484@qq.com> # message auto-generated for no-merge-commit merge: !222 merge fix/issue-139-opp-path into master fix: avoid truncating ASCEND_OPP_PATH (issue #139) Created-by: atlasleong Commit-by: atlasleong Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [ ] 否 [x] 是 __1. AI Agent 平台: OpenAI Codex __2. AI 模型: GPT-5 __3. Prompt上下文: 分析并修复 Issue #139 中 ASCEND_OPP_PATH 使用 str.rstrip 导致路径误截断的问题;补充回归测试,并在 CANN 9.0.0 环境中验证。 ### PR功能描述 / 为什么需要这个合入**: str.rstrip("/opp") 会把参数当作字符集合,而不是精确后缀,因此会错误截断以 o 或 p 结尾的合法路径。 本 PR 使用 os.path.normpath 规范化路径,并仅在最后一个路径组件严格等于 opp 时取其父目录。同时补充回归测试,覆盖普通路径名以及 opp 路径有无尾随分隔符的场景。 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes #139 ### 希望检视人员了解: 项目支持 Python 3.8,因此未采用 Python 3.9 才提供的 str.removesuffix。全量非 device/e2e 测试在本地容器收集阶段因缺少可选依赖 torch 和 jinja2 未完成;本次改动相关用例与邻接测试均已通过。 ## 测试 - python -m pytest tests/test_env.py tests/cli/test_kernel_config.py -q: 8 passed - python -m ruff check ttk/_env.py tests/test_env.py: passed - python -m compileall -q ttk tests/test_env.py: passed - CANN 9.0.0 实际环境验证:ASCEND_OPP_PATH=/usr/local/Ascend/cann-9.0.0/opp 正确解析为 /usr/local/Ascend/cann-9.0.0 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!222 | 2 个月前 | |
代码框架重构 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 个月前 | |
fix: 远端通路与解析/校验修复汇总(失效 health 回收、float8 字节序列化、--dev/--devices 组合保留上限、tiling-run 正值校验、整数失败日志保真、E2E 多卡物理设备映射) Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !501 merge br_issue into master fix: 远端通路与解析/校验修复汇总(失效 health 回收、float8 字节序列化、--dev/--devices 组合保留上限、tiling-run 正值校验、整数失败日志保真、E2E 多卡物理设备映射) Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文: ### PR功能描述 / 为什么需要这个合入: 汇总本轮远端通路与参数解析/校验修复,覆盖 7 个 issue: - **同步请求 413 后关闭连接**(ttk/remote/server/xpu_server.py):HTTP/1.1 持久连接上 /v1/sync 超限拒绝未关闭连接,未读 body 会被当作下一条请求解析造成请求/响应错位;413 分支增加 close_connection = True。 - **heartbeat 重启耗尽后回收陈旧健康快照**(ttk/remote/heartbeat_manager.py):HB 子进程连续失败超限放弃重启后,旧的 alive=true 快照仍被调度消费;耗尽分支删除 health 文件,FileNotFoundError 静默、其余 OSError 记 warning。 - **服务端 float8 输出按原始字节序列化**(ttk/remote/server/executor.py):numpy/tf 通路的 float8 自定义 dtype 原样落 NPZ 后客户端回读失败;改为 uint8 字节序列化,语义 dtype 保留在 schema,与 torch 通路及客户端 restore 机制对齐。 - **--dev 与 --devices 组合保留上限语义**(ttk/cli/bridge.py):组合时不再重置 device_count_is_limit,N 为池上限、正选在池内取交集,物理卡不足走压缩告警而非误报错;纯 --devices 正选仍严格报错。 - **tiling_run_time 正数校验**(ttk/switches.py):与 run_time 同款 property 校验(拒绝 bool/非 int/≤0),--tr/--tiling-run=0/-1 在参数阶段拒绝为短错误+退出码 2,消除 tiling 循环 0 次后的 UnboundLocalError。 - **失败日志保留整数原值**(ttk/core_modules/common/comparison/registry.py):int64/uint64 超过 2^53 经 float() 舍入后 Expected/Actual 显示相同;复数与整数改走 str 保留原十进制值,浮点定宽格式不变。 - **E2E 多卡 worker 按请求设备映射**(ttk/core_modules/framework_api/torch/multi_device.py):逻辑 rank 映射 testcase 选中的物理设备(device_ids[rank]),HCCL 仍用逻辑 rank,父进程 lock/grant 与子进程实际执行设备集合对齐。 - **规则基线登记**(scripts/conventions_baseline.json):multi_device worker() 增加 device_ids 形参致 PLR0913 22→24,登记基线。 ### 该PR关联的issue fixes #339, fixes #391, fixes #395, fixes #396, fixes #398, fixes #400, fixes #406 ### 希望检视人员了解: - 均为宿主侧/参数解析路径改动,无需 NPU 复现;其中 5 处与社区 MR(#484/#489/#494/#492/#426)修复方案一致并经整机评审口径核对,#406 与 #396 为本仓库自研最小改法。 - E2E 设备映射(#398)建议合入后补一次真实多卡验证;tiling-run 校验(#396)未新增测试文件,仅按既有 surface pins 与 CLI 探针覆盖。 ## 测试 - python -m pytest tests/cli/test_cli_surface_pins.py tests/cli/test_help_command.py:48 passed - python -m pytest tests/remote/test_xpu_roundtrip_structure.py:4 passed - python -m pytest tests/core_modules/common/comparison/test_compare_log.py tests/core_modules/common/comparison/test_compare_integration.py:34 passed - python -m ttk kernel -i /dev/null --tr=0:短错误、退出码 2 - pre-commit(Ruff/codespell/OAT/架构守护)全绿 ## 文档更新 无接口文档变更(--dev/--devices 组合语义与 docs/Task_Execution.md 既有描述一致)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-test-kit!501 | 23 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 20 天前 | ||
| 24 天前 | ||
| 15 天前 | ||
| 17 天前 | ||
| 16 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 23 天前 |