已合并
feat(rt2): V2执行器增加用户输入buffer大小校验 #4557
feat(rt2): V2执行器增加用户输入buffer大小校验 #4557
已合并
wuzheng创建于 8月25日
wuzheng成员
8月25日

Pull Request

描述

参考 V1 DavinciModel::CheckUserAndModelSize 校验逻辑,在 V2 ModelV2Executor::Execute 中新增 CheckUserInputSize 函数,在 SpecifyInputs 之前校验用户输入 tensor buffer 大小是否满足模型期望。

变更类型

变更内容

  • 新增 CheckUserInputSize 函数(匿名命名空间),在 Execute 中 CheckTensors 之后调用
  • 动态 shape 输入(ModelIoDesc::GetSize() == 0)自动跳过校验
  • user_size + 64 < expected_size 时报错 PARAM_INVALID(E13025),与 V1 对齐
  • user_size > expected_size 时打印 WARNING 但不阻断执行
  • 新增 4 个 UT 用例覆盖所有校验分支

核对清单

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 wuzheng 的贡献)
Wwuzheng成员
8月25日 创建了 pull request,commit bb105d4d
atomgit-bot
atomgit-bot
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 回退等新增用例。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月25日 评论:

代码审查

✅ 未发现问题

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

/approve

likedislike
CANN-robotCANN-robot成员
25 天前 添加了label:approved
CANN-robotCANN-robot成员
25 天前 合入了pull request
Wwuzheng成员
24 天前 删除了关联的issue:[Bug-Report|缺陷反馈]:aclDataBuffer 声明长度小于 OM 输入需求时GE读取到有效范围外数据
Wwuzheng成员
24 天前 关联了issue:[Bug-Report|缺陷反馈]: TransposeWithShapeCheck 目标 shape 校验失败后仍返回成功