已关闭
ApplyAdamV2 缺省可选输入时 InferShape 拒绝合法图 #6572
KaranocaVe创建于 16 天前关闭于 14 天前
yuning_chen
16 天前 评论:
16 天前 评论:
16 天前 将 zhuzemao 设为负责人
yuning_chen
16 天前 评论:
16 天前 评论:
您好,问题已收到,当前 @zhuzemao 正在处理中。


16 天前 修改了issue 的描述
16 天前 关联了pull request:ApplyAdamV2 缺省可选输入时 InferShape 拒绝合法图
16 天前 修改了issue 的描述
zhuzemao
14 天前 评论:
14 天前 评论:
你好,该问题后续由 @yourealize 继续跟踪


14 天前 关闭了 issue
14 天前 添加了label:resolved
KaranocaVe
7 天前 评论:
7 天前 评论:
@yourealize 您好,这个 Issue 对应的修复已经合入:https://gitcode.com/cann/ops-nn/merge_requests/11904
开发者计划反馈,Issue 需要有 Accepted 标签才能计入积分,仅关闭或标记 resolved 还不够。目前这条 Issue 尚未标记 Accepted,麻烦您结合问题和已合入的修复复核一下;确认符合受理条件后,帮忙补上 Accepted 标签。
感谢您的支持!


ApplyAdamV2 缺省可选输入时 InferShape 拒绝合法图
现象
ApplyAdamV2的 IR 原型和 OpDef 都将max_grad_norm、step_size声明为可选输入。README 还说明 mBART 模式未提供step_size时使用lr。但当前 InferShape 按运行时扁平输入下标读取这些输入:缺省可选输入会使其后的输入向前移动,原型下标不再对应运行时下标,校验会把后续必需输入错认成可选输入,或对越界输入拿到空指针并返回GRAPH_FAILED。触发条件与影响
构造 ApplyAdamV2 图时省略
max_grad_norm(标准 Adam 和 mBART 模式均可),或在 mBART 模式省略step_size,其余必需输入合法且标量形状一致。根据接口声明,这些图应可继续进行形状推导;当前实现却可能在 InferShape 阶段失败,阻断合法图的构建或编译。根因与修复
InferShape 将 IR 原型索引传给
GetInputShape(),该接口按运行时输入位置取值。修复使用GetRequiredInputShape()按 IR 索引读取必需输入;对max_grad_norm和 mBART 模式的step_size使用GetOptionalInputShape(),仅在输入实际存在时校验其标量形状。新增 UT 覆盖 mBART 同时省略两个可选输入的场景。证据
cann/ops-nncommitae873b119fb5499c41a6893f920171551fb0a197。optim/apply_adam_v2/op_graph/apply_adam_v2_proto.h与optim/apply_adam_v2/op_host/apply_adam_v2_def.cpp将两个输入标为可选。optim/apply_adam_v2/README.md记载 mBART 缺省step_size时使用lr。metadef/inc/external/exe_graph/runtime/infer_shape_context.h说明 optional shape 缺省时返回空指针,并提供按 IR 索引读取必需输入的接口。Validation
验证记录
cann/ops-nn,commitae873b119fb5499c41a6893f920171551fb0a197。fix.patch可应用于当前master,git apply --check通过。optim/apply_adam_v2/op_host/apply_adam_v2_infershape.cpp和optim/apply_adam_v2/tests/ut/op_host/test_apply_adam_v2_infershape.cpp执行pre-commit 4.6.2 run --files ...。空白、文件结尾、冲突标记、私钥、大文件、clang-formatv18.1.8、codespellv2.4.1 和 OAT (oat-py1.0.3) 检查全部通过;YAML、JSON 和 Python hooks 因文件类型未运行。optional_inputs_can_be_omitted,覆盖 mBART 模式同时缺省max_grad_norm和step_size。未在本地编译或运行 UT,交由 PR CI 验证。关联 PR: https://gitcode.com/cann/ops-nn/merge_requests/11904