已合并
fix: WeightQuantPreprocess A16MXF4 支持转置 weight ND 直拷 #5803
马琦钧创建于 8月31日
fix: WeightQuantPreprocess A16MXF4 支持转置 weight ND 直拷 #5803
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 马琦钧 的贡献)atomgit-bot
8月31日 评论:
8月31日 评论:
变更摘要
本 PR 为 npu_weight_quant_preprocess 的 A16F4(FP4,uint8 紧凑载体)路径放开转置 weight 支持:转置视图改为 ND 直拷透传(outWeight 保持输入 sizes/strides,物理透传),非转置仍走 NZ_C0_16 转换,接口参数不变。pergroup(per-group scale [G, N])与 MX(E8M0 scale {K/32, N},kGroupSize=32)两条数据流均支持,MX 转置 ND 输出可直接衔接 npu_weight_quant_batchmatmul(wqbmmv2 MX kernel 支持 ND 转置输入)。
主要改动
judge_mm_a16f4_pergroup放开转置判定:judge_mm_a16f4_nz_pergroup更名为judge_mm_a16f4_pergroup,去掉!is_transpose_certain_two_dims(ctx.weight, 0)限制,ctx.is_weight_trans改为按实际 stride(is_transpose_certain_two_dims)判定,转置时走 ND 直拷而非仅 NZ 转换judge_mm_a16f4_mx同步放开转置:移除!is_transpose_certain_two_dims限制,MX 转置 weight 改为 ND 直拷透传,可衔接 wqbmmv2 的 MX FP4 ND 转置输入prepare_out_weight_a16w4统一转置内部分流:prepare_out_weight_a16s4更名为prepare_out_weight_a16w4(INT4/FP4 共用),转置时调用prepare_out_weight_nd直拷、非转置时调用prepare_out_weight_nz_a16w4做 NZ 转换;MX 数据流条目的 prepare 从prepare_out_weight_nz_a16w4切换为该内部分流版本- 注释引用同步修正:
judge_mm_a16s4_per_channel、judge_mm_a16s4_per_group及数据流配置表中两处注释里的prepare_out_weight_a16s4引用更新为prepare_out_weight_a16w4


不准确?
AtlasAccount
8月31日 评论:
8月31日 评论:
atomgit-bot
8月31日 评论:
8月31日 评论:
8月31日 添加了label:ascend-cla/yes
此处折叠了381条消息 查看更多
AtlasAccount
14 天前 评论:
14 天前 评论:
流水线 PR-pipeline_op-plugin#3673 [ commitID:023f638f ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | Build_master_ARM | ✅ COMPLETED | >>> |
| Build_v2_7_1_ARM | ✅ COMPLETED | >>> | |
| Build_v2_9_0_ARM | ✅ COMPLETED | >>> | |
| Build_v2_10_0_ARM | ✅ COMPLETED | >>> | |
| Build_v2_11_0_ARM | ✅ COMPLETED | >>> | |
| Build_v2_12_0_ARM | ✅ COMPLETED | >>> | |
| Build_master_x86 | ✅ COMPLETED | >>> | |
| Build_v2_7_1_x86 | ✅ COMPLETED | >>> | |
| Build_v2_9_0_x86 | ✅ COMPLETED | >>> | |
| Build_v2_10_0_x86 | ✅ COMPLETED | >>> | |
| Build_v2_11_0_x86 | ✅ COMPLETED | >>> | |
| Build_v2_12_0_x86 | ✅ COMPLETED | >>> | |
| 恶意代码检查 | Antipoison | ✅ COMPLETED | >>> |
| 编码安全与规范检查 | codecheck_pre-commit | ✅ COMPLETED | >>> |
| pre-commit | ✅ COMPLETED | >>> | |
| 开源片段检查 | SCA | ✅ COMPLETED | >>> |
| Only_doc_commit | Only_doc_commit | ✅ COMPLETED | >>> |
| 开发者测试 | UT_master_ARM_01 | ✅ COMPLETED | >>> |
| UT_master_ARM_02 | ✅ COMPLETED | >>> | |
| UT_v2_7_1_ARM | ✅ COMPLETED | >>> | |
| UT_v2_9_0_ARM | ✅ COMPLETED | >>> | |
| UT_v2_10_0_ARM | ✅ COMPLETED | >>> | |
| UT_v2_11_0_ARM | ✅ COMPLETED | >>> | |
| UT_v2_12_0_ARM | ✅ COMPLETED | >>> | |
| UT_212_ARM_cpp | ✅ COMPLETED | >>> | |
| 流水线 | PR-pipeline_op-plugin | ✅ COMPLETED | >>> |
- compile : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


14 天前 关闭了关联的issue
14 天前 合入了pull request
ascend-robot
14 天前 评论:
14 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


ascend-robot
14 天前 评论:
14 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


WeightQuantPreprocess A16MXF4 转置 weight ND 直拷支持
概述
配合 ops-math 侧 aclnn 能力(https://gitcode.com/cann/ops-math/pull/5241 ),torch 侧
npu_weight_quant_preprocess放开 A16 MXFP4(FP4 uint8 紧凑载体,E8M0 scale{K/32, N},kGroupSize=32)转置 weight:转置视图走 ND 直拷透传(outWeight 保持输入 sizes/strides,物理透传),可直接衔接npu_weight_quant_batchmatmul(wqbmmv2 已支持 MX FP4 ND 转置输入);非转置仍走 NZ_C0_8 转换。接口参数不变。pergroup(A16F4 per-group)维持不支持转置:judge 仍要求非转置 weight(pergroup FP4 ND 无下游 wqbmmv2 支持)。
主要修改
judge_mm_a16f4_mx去掉!is_transpose_certain_two_dims限制,ctx.is_weight_trans改为按实际 stride 判定;MX 条目 prepare 从固定prepare_out_weight_nz_a16w4改为prepare_out_weight_a16w4内部分流(转置 → ND 直拷,非转置 → NZ 转换)prepare_out_weight_nd/weight_scale/weight_offset/bias)输出统一别名输入(共享 storage 与 view,aclnn 直拷路径同址无拷贝),移除check_strides_envelopeprepare_out_weight_a16s4更名prepare_out_weight_a16w4(INT4/FP4 共用的转置分流),同步修正注释引用is_transpose_last_two_dims,还原倍率按载体位宽(int32/float 载体 ×8,uint8 载体 ×2);标注at::kByte即 uint8is_transpose_certain_two_dims与主线保持一致,本迭代不涉及npu_weight_quant_preprocess补充 MM_A16F4(pergroup)/MM_MX_A16F4 数据流说明与调用示例,数据类型统一 torch/torch_npu 前缀验证(Ascend950PR 实测)
npu_weight_quant_batchmatmul,对 CPU float64 golden 比对均 0/4096 mismatch(max_rel 4.8e-4,fp16 正常舍入),两条链路 NPU 输出逐位一致test_npu_weight_quant_preprocess_a16mxf4_trans_nd用例(转置 ND 直拷透传 + format 断言)关联