已关闭
[Bug-Report|缺陷反馈]: 拒绝 CIoU 混合输入 dtype #1053
KaranocaVe创建于  16 天前关闭于  11 天前
KaranocaVe
KaranocaVe
16 天前 创建

[Bug-Report|缺陷反馈]: 拒绝 CIoU 混合输入 dtype

问题

CIoU kernel 使用 bboxes 的 dtype 实例化模板,并用该类型读取两个输入。输入注册分别允许
bboxes 和 gtboxes 使用 FLOAT16 或 FLOAT32,但原 dtype 推导只依据 input 0。

当两个输入 shape 都为 [4,8],且 bboxes=FLOAT32、gtboxes=FLOAT16 时,调用会通过前置检查,
随后按 FLOAT32 读取 FLOAT16 的 gtboxes。该输入实际占 64 字节,读取范围为 128 字节,超出输入缓冲区。

重现

调用 CIoU,传入 shape 为 [4,8] 的 FLOAT32 bboxes 和 FLOAT16 gtboxes。

预期与实际

预期在 dispatch 前拒绝 mixed dtype,或明确转换后再执行。实际是前置检查放行,并按 input 0 类型读取 input 1。

影响与规避

该输入组合可能造成设备端越界读、错误结果或 kernel 执行失败。修复前应确保两个输入 dtype 一致。

Validation

Validation

缺陷证据

Host 模型以 shape [4,8] 对比同 dtype 与 mixed dtype:同 dtype 输入读取范围与缓冲区大小一致;
FLOAT32/FLOAT16 mixed 输入的 gtboxes 缓冲区为 64 字节,而 kernel 按 FLOAT32 读取 128 字节,
确认存在越界读取条件。该模型验证了 Host dispatch 和字节范围,不代表真实设备运行结果。

修复与回归覆盖

dtype 一致性检查保留在 InferDataTypeCIoU,在设置输出 dtype 前比较两个输入;按维护者建议移除
tiling 中重复的检查。Host UT 覆盖 FLOAT16/FLOAT16、FLOAT32/FLOAT32 成功,以及
FLOAT32/FLOAT16、FLOAT16/FLOAT32 失败。

验证状态

  • 本次改动的格式、基础 pre-commit 和 OAT 检查通过。
  • 完整目标工程 UT 由最终 PR head 的仓库 CI 验证;不宣称本地真实 NPU 验证。

关联 PR: https://gitcode.com/cann/ops-cv/merge_requests/1773

likedislike
KaranocaVeKaranocaVe
16 天前 关联了pull request:[修复] 拒绝 CIoU 混合输入 dtype
KaranocaVeKaranocaVe
16 天前 修改了issue 的描述
Ssunhao_hw成员
16 天前 将 sunhao_hw 设为负责人
KaranocaVeKaranocaVe
16 天前 issue类型由 任务 改变为 缺陷
KaranocaVe
KaranocaVe
16 天前 评论:

/assign

likedislike
CANN-robotCANN-robot成员
16 天前 将 KaranocaVe 设为负责人
liu-wei
liu-wei成员
16 天前 评论:

您好,感谢反馈!

问题分析

我们基于当前 master(ed2be3ce)核查了该问题,确认属实:experimental 目录下 CIoU 的 InferDataType 与 tiling 均只读取 input 0 的 dtype,kernel entry 以 DTYPE_BBOXES 单一模板实例化并把两个输入都按 GlobalTensor<T> 读取。bboxes=FLOAT32、gtboxes=FLOAT16 的混合 dtype 输入可通过前置校验,kernel 按 FLOAT32 读取 FLOAT16 的 gtboxes buffer,以 [4,8] 为例会读取 128 字节而实际 buffer 仅 64 字节,造成越界读取。

处理方向

您提交的修复 PR #1773 已覆盖该问题:拒绝 bboxes 与 gtboxes 的混合输入 dtype。当前该 PR 处于开放评审状态,后续处理以该 PR 的评审进展为准。

我们会持续跟进。

likedislike
Ssunhao_hw成员
15 天前 关联了pull request:[修复] 校验 CIoU 拒绝混合输入 dtype
KaranocaVeKaranocaVe
13 天前 修改了issue 的描述
sunhao_hw成员
11 天前 评论:

开发者你好,针对该问题的修复已合入,计划关闭此issue,如您有其他问题欢迎打开issue或参与SIG继续讨论

likedislike
Ssunhao_hw成员
11 天前 issue状态由 待办的 改变为 已完成
Ssunhao_hw成员
11 天前 关闭了 issue