已合并
feat(rt2): V2执行器增加用户输入buffer大小校验 #4557
wuzheng创建于 8月25日
feat(rt2): V2执行器增加用户输入buffer大小校验 #4557
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 wuzheng 的贡献)atomgit-bot
8月25日 评论:
8月25日 评论:
变更摘要
本 PR 以 V1 DavinciModel::CheckUserAndModelSize 为参照,为 V2 执行器 ModelV2Executor::Execute 新增用户输入 tensor buffer 大小校验;同时伴随一批 OM2 模型打包/解析格式的调整(op_attr.json 序列化结构重构、model_meta.json 动态 shape 元数据改为 dynamic_dims/gears 结构、OM2 归档版本升级与目录结构调整等),并同步更新相关 UT 用例。
主要改动
- 新增
CheckUserInputSize输入大小校验: 在runtime/v2/core/model_v2_executor.cc的匿名命名空间新增CheckUserInputSize函数,于Execute中CheckTensors之后、SpecifyInputs之前调用;动态 shape 输入(ModelIoDesc::GetSize() == 0)自动跳过;当user_size + 64 < expected_size时报PARAM_INVALID(错误码 E13025,与 V1 对齐),而当user_size > expected_size时仅打印 WARNING 不阻断执行。 op_attr.json序列化结构重构:Om2DebugInfo::op_attr_map(map 嵌套结构)替换为op_attr_json字符串,序列化端将属性写为{"type": "...", "value": [...]}结构化 JSON(如LIST_STRING类型直接存数组),om2_model_executor.cc端通过ParseOpAttrJsonToMapInternal按type/value重新解析;op_attr.json归档路径由data/model_%s/debug/迁移到data/model_%s/op_attr.json。model_meta.json动态 shape 元数据重构: 顶层dynamic_batch_info/dynamic_output_shape/dynamic_type/user_designate_shape_order字段合并为嵌套的dynamic_dims结构(内部按gears数组组织每个动态档位的inputs/outputs);origin_input_dims更名为origin_shape;并移除root_graph_name字段及其在Om2ModelMeta结构中的定义。- OM2 归档版本升级与目录调整:
OM2_ARCHIVE_VERSION_VALUE由"0"升级为"1.0",内核文件目录由data/kernels_%s/调整为data/kernels/;SerializeManifest中model_num尝试转为整数、失败时回退为字符串,并以缩进美化输出manifest.json。 - 测试用例同步更新: 适配新版路径/字段名的既有 ST/UT 用例,新增覆盖
CheckUserInputSize四个分支(buffer 过小、动态 shape 跳过、buffer 偏大告警、对齐容差内)的 UT 用例,以及dynamic_dims/gears序列化、非法model_num回退等新增用例。


不准确?
atomgit-bot
8月25日 评论:
8月25日 评论:
8月25日 添加了label:stat/needs-squash
8月25日 添加了label:cann-cla/yes
此处折叠了481条消息 查看更多
yangyongqiang
25 天前 评论:
25 天前 评论:
/approve


25 天前 添加了label:approved
25 天前 合入了pull request
Pull Request
描述
参考 V1 DavinciModel::CheckUserAndModelSize 校验逻辑,在 V2 ModelV2Executor::Execute 中新增 CheckUserInputSize 函数,在 SpecifyInputs 之前校验用户输入 tensor buffer 大小是否满足模型期望。
变更类型
变更内容
CheckUserInputSize函数(匿名命名空间),在Execute中CheckTensors之后调用ModelIoDesc::GetSize() == 0)自动跳过校验user_size + 64 < expected_size时报错PARAM_INVALID(E13025),与 V1 对齐user_size > expected_size时打印 WARNING 但不阻断执行核对清单