| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: add ONNX Python operator callback Co-authored-by: gentle-knight<522025150054@smail.nju.edu.cn> # message auto-generated for no-merge-commit merge: !4543 merge feat/onnx-plugin-python-pr3-stack into develop feat: add ONNX Python operator callback Created-by: gentle-knight Commit-by: gentle-knight Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 实现 ONNX Plugin Python 化 PR3:将 Python parse_operator(source, target) 接入 GE 已有的 ParseParamsByOperatorFn。PR2(#4455)已合入 cann/ge 的 develop,本分支已重基到最新基线 f3c3a50d5,当前 PR 相对 develop 仅包含一个 PR3 代码 commit,便于独立检视和最终合入。 实现复用现有 ONNX parser、OpRegistry、Python bridge loader 和 ge.graph.Operator ctypes/C API:source 在 callback 期间只读,target 可写并支持属性和动态端口注册;新增 Operator.get_attr 薄封装;保留 parse_node 兼容行为。不新增 onnx_node.py、第二套 loader/registry 或 runtime 链路。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新(设计记录在本地分析文档维护,未纳入代码 PR) ## 关联的Issue 关联 PR #4455(PR2,已合入 develop)。 ## 如何测试 1. Python PR3 相关 UT:python_onnx_plugin_registry_test.py、python_onnx_plugin_bridge_test.py、python_onnx_plugin_objects_test.py,共 47 个用例通过。 2. ruff check、ruff format --check、clang-format --dry-run --Werror 和 git diff --check 通过。 3. 本地 ge_python_onnx_plugin_bridge 和 graph_wrapper 编译链接通过。 4. GitCode 流水线 1080934 已通过(compile、static-check、UT、ST、coverage)。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了所有规定,包括但不限于 commit message 格式和无效 commit 的合并 ## 其他信息 PR3 唯一代码 commit:4c282de59。相对 develop 的代码增量为 357 行新增、27 行删除(15 个文件);不包含 PR2、文档或 hfqx 内容。 See merge request: cann/ge!4543 | 11 天前 | |
feat: 接入ONNX Plugin Python bridge到真实ParseParamsFn Co-authored-by: gentle-knight<522025150054@smail.nju.edu.cn> # message auto-generated for no-merge-commit merge: !4455 merge feat/onnx-plugin-python-pr2-bridge into develop feat: 接入ONNX Plugin Python bridge到真实ParseParamsFn Created-by: gentle-knight Commit-by: gentle-knight Merged-by: cann-robot Description: ## 描述 在PR1(#4421 native bindings)基础上,以独立bridge SO完成Python descriptor/registry到parser真实ParseParamsFn的闭环。 PR2新增内容: - 新增 ge_python_onnx_plugin_bridge独立SO,复用现有loader/registry/OpRegistrationTbe/OpRegistry,不新增第二套注册表或扫描器 - PrepareBeforeParse在C++插件初始化成功后、ASCEND_CUSTOM_OPP_PATH非空时按需dlopen bridge - bridge以py::cast(NodeProto*, reference)借用parser已有对象构造native OnnxNode,不取得所有权 - ge::Operator地址作为ctypes借用句柄传入Python callback,callback结束后失效 - callback返回None映射SUCCESS,返回非None映射PARAM_INVALID,Python异常映射FAILED - OpRegistry使用已有完整(target, origin_type)键检查保持C++优先,Python不覆盖已有C++注册 - 删除Python bridge UT中的SimpleNamespace测试接缝,改为C++ parser UT直接构造真实ge::onnx::NodeProto - 新增成功/异常/非None返回/C++优先四类场景测试 不包含ParseParamsByOperatorFn、ParseOpToGraphFn、ParseSubgraph、ES子图构图、Tensor/TensorDesc/DataType、通用PluginContext。 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue 依赖PR1 #4421(native bindings),当前为stacked PR。 ## 如何测试 1. 编译ge_python_onnx_plugin_bridge和fmk_onnx_parser目标 2. 编译ut_parser并运行OnnxPythonPluginBridge测试用例 3. 设置ASCEND_CUSTOM_OPP_PATH指向测试Python插件,验证真实ONNX parser闭环 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 工作代码约221行,测试代码约168行,未超出PR2预算 - bridge为独立SO,不进入graph_metadef,不向Python暴露protobuf指针 - 未修改生产native OnnxNode模块,未增加测试工厂 - 本地编译通过:ge_python_onnx_plugin_bridge、fmk_onnx_parser、ut_parser - pre-commit全部通过 See merge request: cann/ge!4455 | 12 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 11 天前 | ||
| 12 天前 |