已关闭
SwigluMxQuant ACLNN 文档仍把 mxscaleOut 轴长度写成分块数 #6898
KaranocaVe创建于  14 天前关闭于  8 天前
KaranocaVe
KaranocaVe
14 天前 创建

SwigluMxQuant ACLNN 文档仍把 mxscaleOut 轴长度写成分块数

调查范围

仓库:cann/ops-nn。固定源码提交:ae873b119fb5499c41a6893f920171551fb0a197。核对 SwigluMxQuant 的 ACLNN 输出说明、Proto shape 合同、Host InferShape 与 Ascend 950 tiling 输出校验。

问题

quant/swiglu_mx_quant/docs/aclnnSwigluMxQuant.md 将未分组或尾轴量化时的 mxscaleOut axis 维写成 ceil(yAxis / 32) 后偶数补齐,但 mxscaleOut 在末尾还有大小为 2 的维度,用于存放两个相邻 32 元素块的 scale。Proto 与 Host 都将 axis 维推导为 ceil(ceil(yAxis / 32) / 2),随后追加维度 2;文档把块数量当成了轴长度,导致输出 shape 多出一倍。
以 x=[8,128]、activate_dim=-1、axis=-1 为例,SwiGLU 后 yOut=[8,64]。文档公式给出的 axis 块数为 2;Proto 和 Host 的 mxscaleOut shape 为 [8,1,2],axis 维为 1,末尾维 2 保存这两个块的 scale。
调用方若按文档为 mxscaleOut 分配 shape,会与接口合同不符。Ascend 950 tiling 会校验 scale 的 axis 维、其他维度以及末尾维 2,因而此类 shape 会在首段参数处理阶段失败。

修复

修正文档公式,明确 axis 维是每两个 32 元素块对应一个位置,末尾新增大小为 2 的 scale 维;保留 groupIndexOptional 存在且 axis 为非尾轴时的独立公式。

与既有反馈的关系

Issue #5832 和已合入 PR !10341 已处理该算子的其他资料与实现差异,并在 Proto 说明中加入成对 scale 的 shape 公式;但 aclnnSwigluMxQuant.md 输出参数表仍只写“32 元素块数向上取整后偶数补齐”,没有说明 axis 维应为成对后的数量。PR !10931 对应的后续文档检视也未修改这项参数表公式。本次仅修正该表中遗留的 axis 维公式,不重复提交已合入的属性、golden 或其他文档修改。

关联 PR: https://gitcode.com/cann/ops-nn/merge_requests/12285

likedislike
KaranocaVeKaranocaVe
14 天前 关联了pull request:docs(quant): 修正 SwigluMxQuant mxscaleOut axis 维公式
KaranocaVeKaranocaVe
14 天前 修改了issue 的描述
yuning_chenyuning_chen成员
14 天前 将 KaranocaVe 设为负责人
CANN-robotCANN-robot成员
8 天前 关闭了 issue
CANN-robotCANN-robot成员
8 天前 添加了label:resolved