已合并
feat: 自定义算子 AnnotatedArgsOp 地址刷新接口 Python 化 #4254
feat: 自定义算子 AnnotatedArgsOp 地址刷新接口 Python 化 #4254
已合并
shangdf创建于 16 天前
shangdf成员
16 天前

Pull Request

描述

完成 AnnotatedArgsOp 地址刷新接口 Python 化。本 PR 仅保留核心实现与测试:

  • Python 自定义算子通过 schema-bound declare_launch_args 生成 AnnotatedArgs TaskDef。
  • 提供 AnnotatedArgsContext、Tensor、workspace、kernel args builder 等 Python 包装,覆盖作用域、签名校验、异常转换和 builder 消费语义。
  • 编译期把最终选定的参数刷新方式写入 OpDesc 属性 _custom_task_args_mode;模型加载时以该显式模式为准。没有该属性的旧 OM 才使用 registry 查询和 args_format 兼容兜底。
  • Python custom-op bridge C ABI 保持 v1;模型运行期只消费序列化模式和 TaskDef,不回调 Python。
  • 提供显式 CustomTaskArgsMode,编译期记录最终刷新方式,运行期优先按该模式选择路径并兼容老 OM。
  • 补充 Python、native binding、compiler builder 和静态模型加载路径的 UT/ST。

资料和可运行 example 已拆分至 PR 4316,本 PR 最终 diff 不再包含 docs/examples/

本 PR 直接复用 develop 已合入的两个前置任务,不再重复实现:

  • append_input / append_output 使用 input/output 实例平铺 index。
  • workspace 使用两阶段申请及 task plan 缓存,后续任务物化复用缓存,不重复调用声明 callback。

变更类型

关联 Issue

无。

验证结果

  • 最新 develop 增量编译:ut_libge_multiparts_utestgraph_engine_test 构建通过。
  • pre-commit:全部通过(clang-format、ruff、codespell、OAT 等)。
  • C++ UT:2653 passed, 8 skipped
  • Python UT:651 passed, 1 skipped
  • Python AnnotatedArgs ST:5/5 通过,包含真实 Python -> pybind -> C++ callback 链路及异常分支校验。
  • ASAN 定向用例:1/1 通过。
  • build_fwk.sh 在 ASAN LD_PRELOAD 环境下的子进程 gcc 探测通过。
  • 功能开发阶段已使用拆分前的相同核心实现和 example 完成 910B3 两轮真实 NPU 地址刷新验证;example 后续验证由 PR 4316 承载。

核对清单

本轮检视修复

  • 增加稳定序列化枚举 CustomTaskArgsMode,显式区分 NoneAnnotatedArgsUpdateCallback,保留旧 OM 兼容路径。
  • 恢复原有不可调用方法的注册行为,避免无关语义变化。
  • bridge ABI 保持 v1,统一 context import,签名校验函数改名为 _validate_args_signature
  • 移除通用 engine/known-shape 文档中的 Python 特例及过程性文档;长期资料和 example 已拆分到 PR 4316。
  • input/output instance index 越界异常输出实际索引和实例数量,并由端到端 Python callback 用例覆盖。
  • 修复 ASAN 环境下 gcc 子进程继承 LD_PRELOAD 导致 Python CI 在 pytest 前退出的问题。
  • 同步最新 develop 的 Python 自定义算子原型类型定义和 workspace 两阶段申请逻辑,PR 冲突已消除。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 shangdf 的贡献)
Sshangdf成员
16 天前 创建了 pull request,commit 64633775
CANN-robotCANN-robot成员
16 天前 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
16 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
16 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/ge hugo111, 张德鹏, kobemini (3/2) 张德鹏 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

shangdf, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robot成员
16 天前 将yangyongqiang0606,kobemini,tangqunzhang,xchu42,hugo111,lining23666,fu-jun2,depeng1994,wqtshg_wt,peiyang,shengnan666,zhangfan_hanq,zhanj,zhujingjing,Mexyy,wangxiaotian995,stevenaw0,yuht9设为评审人
此处折叠了273条消息 查看更多
hugo111成员
9 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
9 天前 添加了label:lgtm
张德鹏成员
9 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9 天前 添加了label:approved
CANN-robotCANN-robot成员
9 天前 合入了pull request