已关闭
[Documentation|文档反馈]: aclnnMlaPreprocess 文档示例与参数约束不一致问题 #4639
HKFLYE创建于  28 天前关闭于  26 天前
HKFLYE
HKFLYE
28 天前 创建

Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.

Document Link(文档链接)

https://gitcode.com/HuangKun8682/ops-transformer-personal/blob/personal_fix_doc_problem/attention/mla_preprocess/docs/aclnnMlaPreprocess.md

Issues Section(问题文档片段)

  1. 算子名称拼写错误:
    // 调用acaclnnMlaPreprocess第一段接口
    LOG_PRINT("acaclnnMlaPreprocessGetWorkspaceSize failed. ERROR: %d\n", ret);

// 调用acaclnnMlaPreprocess第二段接口
LOG_PRINT("acaclnnMlaPreprocess failed. ERROR: %d\n", ret);

  1. ReadFile 失败时错误返回成功:
template<typename T>
bool ReadFile(...)
{
    std::ifstream file(filePath, std::ios::binary);
    if (!file.is_open()) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // ...

    if (file.read(...)) {
    } else {
        std::cerr << "读取文件失败" << std::endl;
        return 1;
    }

    return true;
}
  1. qNopeScale 示例 shape 与参数说明不一致

std::vector<int64_t> qNopeScaleShape = {headNum};

  1. qRopeDim 和 kRopeDim 示例值不符合约束

int64_t qRopeDim = 0;
int64_t kRopeDim = 0;

Existing Issues(存在的问题)

1. 算子名称拼写错误

问题片段:

// 调用acaclnnMlaPreprocess第一段接口
LOG_PRINT("acaclnnMlaPreprocessGetWorkspaceSize failed. ERROR: %d\n", ret);

// 调用acaclnnMlaPreprocess第二段接口
LOG_PRINT("acaclnnMlaPreprocess failed. ERROR: %d\n", ret);

问题描述:

示例代码的接口调用注释和失败日志中,将 aclnnMlaPreprocess 多次误写为 acaclnnMlaPreprocess,多出了 ac 前缀。错误名称会误导开发者进行接口搜索和日志排障。

2. ReadFile 失败时错误返回成功

问题片段:

template<typename T>
bool ReadFile(...)
{
    std::ifstream file(filePath, std::ios::binary);
    if (!file.is_open()) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    // ...

    if (file.read(...)) {
    } else {
        std::cerr << "读取文件失败" << std::endl;
        return 1;
    }

    return true;
}

问题描述:

ReadFile 的返回类型为 bool,但文件打开失败和读取失败时均返回 1。1 会被隐式转换为 true,导致文件读取失败被错误报告为成功,后续可能继续使用未正确初始化的数据。

3. qNopeScale 示例 shape 与参数说明不一致

参数说明:

qNopeScale shape:[1]

问题片段:

std::vector<int64_t> qNopeScaleShape = {headNum};

问题描述:

参数说明要求 qNopeScale 的 shape 为 [1],但示例使用 {headNum}。当 headNum = 32 时,实际构造的是 [32]。开发者照抄示例可能触发 shape 校验失败。

4. qRopeDim 和 kRopeDim 示例值不符合约束

参数说明:

qRopeDim:预留参数,目前只支持64。
kRopeDim:预留参数,目前只支持64。

问题片段:

int64_t qRopeDim = 0;
int64_t kRopeDim = 0;

问题描述:

文档明确说明 qRopeDim 和 kRopeDim 目前仅支持 64,但示例均传入 0。示例与接口约束冲突,可能导致参数校验失败或 RoPE 计算异常。

5. wdqDim 示例值不符合约束

参数说明:

wdqDim:预留参数,目前只支持1536。

问题片段:

int64_t wdqDim = 128;

问题描述:

文档说明 wdqDim 目前仅支持 1536,但示例传入 128。开发者照抄示例时可能触发参数校验失败,导致示例无法正常运行。

6. workspaceSize 来源接口名称错误

问题片段:

在Device侧申请的workspace大小,由第一段接口
aclnnBatchMatMulGetWorkspaceSize获取。

问题描述:

当前文档对应的算子是 aclnnMlaPreprocess,其第一段接口应为 aclnnMlaPreprocessGetWorkspaceSize。此处错误引用了 aclnnBatchMatMulGetWorkspaceSize,属于跨文档复制后遗漏修改,会误导开发者查找错误接口。

7. deScale0 数据类型描述前后不一致

问题片段:

使用说明:input输入dtype为FLOAT16支持INT64,
输入BFLOAT16时支持FLOAT。

数据类型:INT32、FLOAT

示例代码:

CreateAclTensorND(
    deScale0Shape,
    &deScale0DeviceAddr,
    &deScale0HostAddr,
    aclDataType::ACL_INT64,
    &deScale0);

问题描述:

deScale0 的数据类型列填写为 INT32、FLOAT,但使用说明明确指出 FLOAT16 输入对应 INT64,示例代码也使用 ACL_INT64。三处描述不一致,数据类型列应为 INT64、FLOAT。开发者按原类型表构造 INT32 Tensor 时可能触发参数校验失败。

likedislike
HKFLYEHKFLYE
28 天前 关联了pull request:【Docs】修复 aclnnMlaPreprocess 文档示例及参数描述错误
HKFLYE
HKFLYE
28 天前 评论:

/assign

likedislike
CANN-robotCANN-robot成员
28 天前 将 HuangKun8682 设为负责人
CANN-robotCANN-robot成员
26 天前 关闭了 issue
CANN-robotCANN-robot成员
26 天前 添加了label:resolved