Closed
[Bug-Report|缺陷反馈]: allto_allv_quant_grouped_mat_mul DAV_3510 放行 ep=256 与 GMM 数组 128 上限自相矛盾,MX 主路径 ep=256 必失败 #5482
liuhanwen8Add on  Sep 20Closed at  Sep 30
liuhanwen8
liuhanwen8
Sep 20 Create

问题描述

allto_allv_quant_grouped_mat_mul 在 DAV_3510(Ascend 950 系列)上,属性校验放行 epWorldSize=256 档位,但 MX 主路径 tiling 中 gmmGroupNum 受 Mc2GroupedMatmul::MAX_TENSOR_CONT = 128 硬上限约束,二者自相矛盾:合法输入(如 e_=1、ep=256,e_×ep=256≤256 可通过全部属性校验)下 gmmGroupNum=256 > 128,SetInputParams 必然返回 GRAPH_FAILED,新宣称支持的 ep256 场景在 fp8/fp4 主路径 100% 失败。

影响范围

  • 仓库/文件(master @ 8c49f3c 核实,与报告基线一致):
    • mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/allto_allv_quant_grouped_mat_mul_tiling_base.cpp L177-179(ep 档位放行)
    • mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/arch35/allto_allv_mx_quant_grouped_mat_mul_tiling.cpp L585-591(gmmGroupNum 上限检查 + mList 写入)
    • mc2/3rd/grouped_matmul/op_tiling/mc2_grouped_matmul_host_util.h L114(constexpr uint16_t MAX_TENSOR_CONT = 128)
    • mc2/3rd/grouped_matmul/op_tiling/mc2_grouped_matmul_tiling.h L58/L176-178(mList_[128] 数组定义)
  • 接口:allto_allv_quant_grouped_mat_mul(MX/fp8/fp4 主路径,DAV_3510)
  • 模式:FP-B01 族(放行不可用档位)

源码证据

  1. ep 档位校验放行 256(allto_allv_quant_grouped_mat_mul_tiling_base.cpp:177-179):
if (ascendcPlatform.GetCurNpuArch() == Ops::Base::DAV_3510) {
    epWorldSizeValueList = {2,  4,  8,   16,
                            32, 64, 128, 256}; // epWorldSize value only support 2, 4, 8, 16, 32, 64, 128, 256
}
  1. MX 主路径 gmmGroupNum 硬上限(allto_allv_mx_quant_grouped_mat_mul_tiling.cpp:585-591):
OP_TILING_CHECK(gmmGroupNum_ > optiling::Mc2GroupedMatmul::MAX_TENSOR_CONT,
                ...,
                return ge::GRAPH_FAILED);
for (uint32_t i = 0; i < gmmGroupNum_; i++) { mList_[i] = static_cast<int32_t>(M); }
  1. 数组上限定义:mc2_grouped_matmul_host_util.h:114 constexpr uint16_t MAX_TENSOR_CONT = 128;;mc2_grouped_matmul_tiling.h:58 TILING_DATA_FIELD_DEF_ARR(int32_t, 128, mList); // 128 :MAX_TENSOR_CONT。

问题机理(推导链)

  • 合法输入 e_=1、ep=256:通过全部属性校验(含 ep 档位 256)→ gmmGroupNum = e_×ep = 256 > 128 → SetInputParams 返回 GRAPH_FAILED → 整个 tiling 失败,ep256 主路径必失败;
  • ep≤128 组合目前"恰好能用":CalcExpertNum(allto_allv_quant_grouped_mat_mul_tiling_common.h:94-97)的 upperByArray = GMM_ARRAY_MAX_NUM / epWorldSize 压制 expertNum,使 gmmGroupNum ≤ 128;但 ep=256 时 128/256=0,压制失效;
  • 若「ep256」语义仅指总专家数 256、ep 实际 ≤128,则问题退化为「256 档位被放行却不可用」的一致性缺陷(失败报错信息难定位)——两定性均成立,排除误报。

触发条件与风险评估

  • 触发:DAV_3510 上配置 epWorldSize=256 的量化 grouped matmul 主路径(新发布能力场景);
  • 主会话已独立复验校验链实读,置信度高;最终失败表现建议 NPU 实测确认;
  • 严重度:属新发布能力直接不可用,建议按 S2 复评(初评 S2×O1 → 中,考虑升档)。

修复建议(三选一或组合)

  1. CalcExpertNum 增加保护性上限:expertNum × epWorldSize ≤ 128,超限提前报参数错误(报错可定位);
  2. 或扩容 mList/kList/nList 数组至 ≥ e_max × ep_max,并同步 kernel 侧结构体;
  3. 或暂不放行 256 档位(从 epWorldSizeValueList 移除),文档注明上限,待扩容后再放开。

备注

本报告为静态源码推演结论(master @ 8c49f3c,关键行号已逐一实读核实),欢迎维护者复核。

likedislike
weihao18Collaborators
Sep 20 Comments:

/assign @tgwsakiko_

likedislike
CANN-robotCANN-robotCollaborators
Sep 20 Assign tgwsakiko_ as responsible person
CANN-robotCANN-robotCollaborators
Sep 30 Close issue
CANN-robotCANN-robotCollaborators
Sep 30 Added label: resolved
周云飞
周云飞Collaborators
26 days ago Comments:

PR #12952已合入master,实际diff将DAV_3510 MX路径GMM数组可用上限从128扩大为256,并将mList填充截断至数组容量;注释说明SPLIT_M+singleW时kernel仅读取mList/kList/nList第0项、每组M来自运行时groupList。固定快照仍有gmmGroupNum超过GMM_ARRAY_MAX_NUM才失败的检查,常量为256。因此旧报告基于128上限的静态推导已被实现改动覆盖;未在950执行ep256用例。

源码依据:源码位置1、源码位置2
关联PR:#12952(已合入 master;GMM_ARRAY_MAX_NUM从128扩为256;MX tiling按SPLIT_M+singleW读取方式截断mList填充,同时修复V2 executor的ret/指针保护。)
本次仅核验源码与关联差分,未复跑原场景;具体安装版本是否包含变更需以其源码版本区分。

likedislike