| Files | Last commit | Last update |
|---|---|---|
fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6802 merge mm into master fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 修正 maximum_grad / minimum_grad 测试资产(tests/assets/golden.py 三方标杆与 *_e2e.py e2e 通路)中浮点反向的实现与计时口径。 ### 改动原因 - 旧实现浮点路径每次调用裸起 tf.GradientTape,前向(maximum/minimum 与 Mul)随反向一同进入执行与计时窗口,GPU 三方标杆采集的 device_us 并非纯反向耗时,与 NPU 侧 e2e 通路口径不对称。 - 旧 e2e 实现为规避 npu_device 动态图 GE 会话模型缓存按算子节点名复用导致的常量串台问题,每次调用都以唯一 name_scope 强制 graph_id 错开,代价是每次调用重新编译,同签名用例无法共享已编译图。 ### 改动方法 - **golden.py(三方标杆)**:浮点路径改为 tf.function 包裹的 tape 反向,只返回梯度,前向为死代码被剪除,计时窗口纯反向;int32 无梯度定义,抽出手拼分支(GreaterEqual/LessEqual + SelectV2×2 + Sum,与 golden 同口径)。 - **\*_e2e.py(e2e 通路)**:浮点路径改为 tf.function 包裹的 tape 反向且只返回梯度,NPU 执行纯反向链(融合后 te_maximumgrad/te_minimumgrad + te_reducesum),与 GPU 侧标杆口径对称;tf.function 按 (shape,dtype) 签名缓存 concrete function,同签名共享编译图(输入为 placeholder,无常量串台),跨签名 trace 时以 _TRACE_SEQ 唯一化 name_scope 错开 graph_id;int32 保留手拼路径。 - numpy golden(kernel/geir 通路 oracle)与精度判据(binary_equal、三比值)不变;融合规则的 gradient_tape scope 检查按名字分段匹配,前缀不影响。 ## 关联的Issue - #4204 ## 测试 - 变更仅涉及 tests/assets 测试资产,不改动算子实现(op_host/op_kernel/op_graph)。 - 验证方式:复用进程批跑 maximum_grad / minimum_grad 的 e2e 用例,确认浮点 golden 三比值 cross_check 通过、int32 binary_equal 通过、device_us 采集正常且同签名用例不重复触发编译。 ## 文档更新 - 无(不涉及 README / docs 变更)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6802 | 12 days ago | |
fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6802 merge mm into master fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 修正 maximum_grad / minimum_grad 测试资产(tests/assets/golden.py 三方标杆与 *_e2e.py e2e 通路)中浮点反向的实现与计时口径。 ### 改动原因 - 旧实现浮点路径每次调用裸起 tf.GradientTape,前向(maximum/minimum 与 Mul)随反向一同进入执行与计时窗口,GPU 三方标杆采集的 device_us 并非纯反向耗时,与 NPU 侧 e2e 通路口径不对称。 - 旧 e2e 实现为规避 npu_device 动态图 GE 会话模型缓存按算子节点名复用导致的常量串台问题,每次调用都以唯一 name_scope 强制 graph_id 错开,代价是每次调用重新编译,同签名用例无法共享已编译图。 ### 改动方法 - **golden.py(三方标杆)**:浮点路径改为 tf.function 包裹的 tape 反向,只返回梯度,前向为死代码被剪除,计时窗口纯反向;int32 无梯度定义,抽出手拼分支(GreaterEqual/LessEqual + SelectV2×2 + Sum,与 golden 同口径)。 - **\*_e2e.py(e2e 通路)**:浮点路径改为 tf.function 包裹的 tape 反向且只返回梯度,NPU 执行纯反向链(融合后 te_maximumgrad/te_minimumgrad + te_reducesum),与 GPU 侧标杆口径对称;tf.function 按 (shape,dtype) 签名缓存 concrete function,同签名共享编译图(输入为 placeholder,无常量串台),跨签名 trace 时以 _TRACE_SEQ 唯一化 name_scope 错开 graph_id;int32 保留手拼路径。 - numpy golden(kernel/geir 通路 oracle)与精度判据(binary_equal、三比值)不变;融合规则的 gradient_tape scope 检查按名字分段匹配,前缀不影响。 ## 关联的Issue - #4204 ## 测试 - 变更仅涉及 tests/assets 测试资产,不改动算子实现(op_host/op_kernel/op_graph)。 - 验证方式:复用进程批跑 maximum_grad / minimum_grad 的 e2e 用例,确认浮点 golden 三比值 cross_check 通过、int32 binary_equal 通过、device_us 采集正常且同签名用例不重复触发编译。 ## 文档更新 - 无(不涉及 README / docs 变更)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6802 | 12 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 12 days ago | ||
| 12 days ago |