已关闭
[Bug]: npu_kv_rmsnorm_rope_cache_v2算子函数化实现有问题,导致图模式下,该算子存在精度问题 #350
yurongkun创建于  8月4日关闭于  9月8日
yurongkun
yurongkun
8月4日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

例如:
- 操作系统 
- 昇腾硬件信息 950
- CANN软件版本 9.2.0
- 安装的对应软件版本 torch 2.10.0  py312

🐛 问题描述

` char *cache_mode_ptr = const_cast<char *>(cache_mode.data());

    aclDataType k_Cache_Type = at_npu::native::OpPreparation::convert_to_acl_data_type(k_cache.scalar_type());
    aclDataType ckv_Cache_Type = at_npu::native::OpPreparation::convert_to_acl_data_type(ckv_cache.scalar_type());

    aclDataType k_cache_acltype = k_cache_dtype.has_value() ? c10_npu::GetAclDataType(k_cache_dtype.value()) : k_Cache_Type;
    aclDataType ckv_cache_acltype = ckv_cache_dtype.has_value() ? c10_npu::GetAclDataType(ckv_cache_dtype.value()) : ckv_Cache_Type;

    TensorWrapper k_cache_wrapper = {k_cache, k_cache_acltype};
    TensorWrapper ckv_cache_wrapper = {ckv_cache, ckv_cache_acltype};

    at::Tensor k_rope = npu_preparation::apply_tensor_without_format(k_rope_shape, kv.options());
    at::Tensor c_kv = npu_preparation::apply_tensor_without_format(c_kv_shape, kv.options());

    at::Tensor k_cache_inplace = k_cache.clone();
    at::Tensor ckv_cache_inplace = ckv_cache.clone();

    if (exec_v2_flag) {
        // V2 : v is ignored in V1
        EXEC_NPU_NO_FORMAT_CHECK_CMD(aclnnKvRmsNormRopeCacheV2, kv, gamma, cos, sin, index, k_cache_wrapper, ckv_cache_wrapper,
                                     k_rope_scale, c_kv_scale, k_rope_offset, c_kv_offset, v_tsr_opt, epsilon, cache_mode_ptr,
                                     is_output_kv, k_rope, c_kv);
    } else {
        // Compatibility for CANN supports only V1
        EXEC_NPU_NO_FORMAT_CHECK_CMD(aclnnKvRmsNormRopeCache, kv, gamma, cos, sin, index, k_cache_wrapper, ckv_cache_wrapper,
                                     k_rope_scale, c_kv_scale, k_rope_offset, c_kv_offset, epsilon, cache_mode_ptr,
                                     is_output_kv, k_rope, c_kv);
    }

    return std::tie(k_rope, c_kv, k_cache_inplace, ckv_cache_inplace);
}`    k_cache/ckv_cache  clone操作使用有误,请修改下

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
ascend-robotascend-robot成员
8月4日 添加了label:bug
Thaurissan
Thaurissan成员
8月4日 评论:

/assign

likedislike
ascend-robotascend-robot成员
8月4日 将 Thaurissan 设为负责人
ThaurissanThaurissan成员
8月4日 关联了pull request:[BugFix] fix v2_func wraps bug
ThaurissanThaurissan成员
9月7日 关联了pull request:[BugFix] 修复npu_kv_rmsnorm_rope_cache_v2_functional wraps bug
ThaurissanThaurissan成员
9月8日 issue状态由 TODO 改变为 DONE
ThaurissanThaurissan成员
9月8日 关闭了 issue
ascend-robotascend-robot成员
9月8日 添加了label:resolved
Thaurissan
Thaurissan成员
9月8日 评论:

修复PR已合入master,issue关闭。

likedislike