已关闭
[Requirement|需求建议]: WeightQuantPreprocess A16MXF4 支持转置 weight ND 直拷 #3197
马琦钧创建于 17 天前关闭于 16 天前
liuchenghao
17 天前 评论:
17 天前 评论:
【Multica 同步】状态:backlog;说明:本需求已同步至 Multica「CANN 算子开发迁移」项目承接开发(待认领排期),完成后将以 PR 形式回馈社区;详情:AI4ME-237


16 天前 修改了issue 的描述
16 天前 关闭了 issue
16 天前 添加了label:resolved
16 天前 关联了pull request:docs: weight_quant_preprocess 补充 A16F4/A16MXF4 数据流文档与 example
11 天前 将 maqijun 设为负责人
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
一、背景信息 (必填)
weight_quant_preprocess 算子 A16MXF4 数据流(FP4 uint8 紧凑载体,E8M0 scale
{K/32, N},kGroupSize 固定 32)此前仅支持非转置 weight(ND→NZ_C0_16 分形转换),转置 weight 直接返回 ACLNN_ERR_PARAM_INVALID。下游 wqbmmv2 MX kernel 主干已支持 MX FP4 ND 转置输入,preprocess 需配套支持转置 weight 的 ND 直拷透传,打通 MX FP4 转置链路。本需求同时包含 conversion/weight_quant_preprocess 目录 ErrMsg reason 字符串结尾多余句号的集中整改(原 cann/ops-math!5126,已关闭并入)。
二、价值/作用 (必填)
支撑 A16 MXFP4 量化推理场景下转置 weight 的预处理:preprocess 输出 ND 物理透传,可直接衔接 wqbmmv2 MX kernel,端到端打通 torch_npu.npu_weight_quant_batchmatmul 的 MX FP4 转置路径,避免业务侧手工做 ND 直拷。
三、设计方案 (必填)
IsMMA16MXF4DataFlowjudge 拆分为 base + 转置/非转置:转置 weight(末两维严格转置 stride[1,K],打包维沿 K 须 K 为偶数)命中新条目走 ND 直拷(ProcessWeightDirectCopy,按打包维建 UINT8 视图物理透传);非转置维持原 NZ_C0_16 分形转换条目CheckOutSameBase(空指针对称 + out 非 empty + viewShape 一致)与CheckOutSameAsInput(Base + 连续性 + format/dtype/storageShape 全 ==)两层;scale/offset/bias 直拷透传参数的输入侧校验删除,约束下放 wqbmmv2CheckOutWeightDtypeSame(真实场景 NZ 出 dtype 恒等于输入);保留CheckWeightOffsetOptionalNull(无 offset 直拷 process,非空 offset 会被静默丢弃)3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
Aclnn 直调 / PyTorch(torch_npu,配套 Ascend/op-plugin!5803、cann/ops-nn!10133)
3.2 总体设计
3.2.1 算子支持的数据类型
weight:float4_e2m1(uint8 紧凑载体);weightScale:float8_e8m0(uint8 承载);x/y:float16、bfloat16
3.2.2 host侧设计
aclnn 注册表(judge + checks + processes)新增 A16MXFP4 转置 ND 直拷条目,无 infer/tiling 变更
3.2.3 kernel侧设计
无 kernel 变更(host 侧视图转换 + 直拷透传)
3.3 支持硬件
ascend950(DAV_3510)
3.4 算子约束限制
[1,K]),打包维沿 K 须 K 为偶数对应 PR:https://gitcode.com/cann/ops-math/pull/5241