| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(act_ulq_clamp_max_grad): 注册 Host UT 构建链、修正样例与 README 约束 Co-authored-by: zhou-liang1027<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !12025 merge fix/act_ulq_clamp_max_grad-ut-example-rank into master fix(act_ulq_clamp_max_grad): 注册 Host UT 构建链、修正样例与 README 约束 Created-by: zhou-liang1027 Commit-by: zhou-liang1027 Merged-by: cann-robot Description: ## 描述 fix(act_ulq_clamp_max_grad): 注册 Host UT 构建链、修正样例与 README 约束 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/7318 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12025 | 3 天前 | |
feat: 增加 ascend350 平台支持(22 个算子) Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !11038 merge adapt-ascend350 into master feat: 增加 ascend350 平台支持(22 个算子) Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 为 22 个算子增加 ascend350(arch35)平台支持,并将 Threshold 的 aclnn 接口 SocVersion BF16 判断重构为 NpuArch 判断。 算子列表(22 个): - activation: Relu6D、SoftplusGrad、Threshold - index: InplaceUpdate、ScatterNonAliasingAdd、SparseSegmentSumGrad - loss: SmoothL1Loss、SmoothL1LossGrad - norm: LpNormUpdate - optim: FusedMulApplyMomentum、FusedMulApplyMomentumExtern、SparseApplyAdadelta、SparseApplyFtrl、SparseApplyFtrlV2、SparseApplyProximalAdagrad、SparseApplyRMSProp - pooling: Dilation2D - quant: ActULQClampMaxGrad、ActULQClampMinGrad、ActsULQInputGrad、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis 改动内容: 1. CMakeLists:SUPPORT_COMPUTE_UNIT 追加 ascend350,SUPPORT_TILING_DIR 追加 arch35; 2. op_host/*_def.cpp:追加 AICore().AddConfig("ascend350", ...); 3. op_kernel/CMakeLists:COMPUTE_UNITS 追加 ascend350; 4. 3 个算子复制 op_host/config/ascend950/*.json 到 ascend350/(ScatterNonAliasingAdd、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis); 5. Threshold op_api/aclnn_threshold.cpp:GetDtypeSupportList 的 SocVersion 判断重构为 NpuArch 判断。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6131 ## 测试 <!--TODO--> ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11038 | 10 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
feat: 增加 ascend350 平台支持(22 个算子) Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !11038 merge adapt-ascend350 into master feat: 增加 ascend350 平台支持(22 个算子) Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 为 22 个算子增加 ascend350(arch35)平台支持,并将 Threshold 的 aclnn 接口 SocVersion BF16 判断重构为 NpuArch 判断。 算子列表(22 个): - activation: Relu6D、SoftplusGrad、Threshold - index: InplaceUpdate、ScatterNonAliasingAdd、SparseSegmentSumGrad - loss: SmoothL1Loss、SmoothL1LossGrad - norm: LpNormUpdate - optim: FusedMulApplyMomentum、FusedMulApplyMomentumExtern、SparseApplyAdadelta、SparseApplyFtrl、SparseApplyFtrlV2、SparseApplyProximalAdagrad、SparseApplyRMSProp - pooling: Dilation2D - quant: ActULQClampMaxGrad、ActULQClampMinGrad、ActsULQInputGrad、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis 改动内容: 1. CMakeLists:SUPPORT_COMPUTE_UNIT 追加 ascend350,SUPPORT_TILING_DIR 追加 arch35; 2. op_host/*_def.cpp:追加 AICore().AddConfig("ascend350", ...); 3. op_kernel/CMakeLists:COMPUTE_UNITS 追加 ascend350; 4. 3 个算子复制 op_host/config/ascend950/*.json 到 ascend350/(ScatterNonAliasingAdd、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis); 5. Threshold op_api/aclnn_threshold.cpp:GetDtypeSupportList 的 SocVersion 判断重构为 NpuArch 判断。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6131 ## 测试 <!--TODO--> ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11038 | 10 天前 | |
新增4个HiFloat4量化算子 Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !12451 merge hif4_quant into master 新增4个HiFloat4量化算子 Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 (对应 HEAD 提交 feat: 拆分新增4个HiFloat4量化算子,共改动 120 个文件,+14755)新增 4 个 **HiFloat4(HiF4)量化**算子。4 个算子均基于 HiFloat4(S1P2,4-bit)三层缩放架构(Block Scale Ea / Sub-block Scale Eb / Micro-block Scale Ec),目标平台为 ascend960dt。 主要改动如下: 1. **新增 4 个 HiFloat4 量化算子** - aclnnAntiHiF4Quant(AntiHiF4Quant):将 HiF4(S1P2)量化数据按三层缩放因子(Ea/Eb/Ec)反量化为 FP16/BF16,按 scale shape 自动判定 PER_CHANNEL / PER_HEAD 模式。 - aclnnDynamicHiF4Quant(DynamicHiF4Quant):沿指定 axis 按 Block=64 / Sub-block=8 / Micro-block=4 三层缩放的在线动态量化,继承 DynamicMxQuant 架构。 - aclnnDynamicBlockHiF4Quant(DynamicBlockHiF4Quant):同时沿 -1、-2 轴按 64×64 基本块(Sub-block 8×8、Micro-block 4×4)三层缩放动态量化,分别输出 -1/-2 轴的 scale1、scale2。 - aclnnGroupedDynamicHiF4Quant(GroupedDynamicHiF4Quant):按 group_index 分组、组内按 64 元素为一块的三层缩放动态量化。 - 每个算子均包含:op_api(aclnn 对外接口 + 内部 l0op 接口)、op_graph(proto)、op_host(def / infershape / arch35 tiling,含 tail 与 not_tail 分支)、op_kernel(arch35 内核,含 common / tail / not_tail / struct / tilingdata)、docs(aclnn API 文档)、examples/arch92、tests/ut(op_host 的 infershape/tiling + op_kernel)、README,以及 op_host/config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini。 - 算子原型使用 ge::DT_HIFLOAT4 / DT_HIFLOAT4_SCALE,并在 *_def.cpp 中注册 ascend960dt。 ## 关联的Issue 无。 ## 测试 - 新增各算子 op_host UT(infershape、tiling)与 op_kernel UT。 - 新增各算子的 aclnn 示例(examples/arch92/test_aclnn_*_hi_f4_quant.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12451 | 8 天前 | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 8 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 10 天前 | |
算子插件迁移 Co-authored-by: welt_lester<songlizhe1@h-partners.com> Co-authored-by: x00842564<xuyanke@huawei.com> # message auto-generated for no-merge-commit merge: !8474 merge master into master 算子插件迁移 Created-by: welt_lester Commit-by: x00842564;welt_lester Merged-by: cann-robot Description: ## 描述 落实issue #4279,将adaptive_avg_pool2d、adaptive_max_pool2d、ascend_anti_quant、ascend_dequant、ascend_quant、batch_mat_mul_v3、batch_norm、celu_v2、instance_norm_v3、ascend_quant、log_softmax_v2、mat_mul_v3、unique_with_counts_and_sorting这13个算子对应的插件从common\src\framework迁出到各自算子目录新建的\framework目录下。 ## 关联的Issue [Bug-Report|缺陷反馈]: 有对应算子的插件不应该放到公共目录 [#4279](https://gitcode.com/cann/ops-nn/issues/4279) ## 测试 compile、本地验证build通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(算子插件归属迁移,落实 #4279 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8474 | 2 个月前 | |
nn仓121回合主线黄迁蓝 Co-authored-by: qq_52874943<gaomingyuan3@h-partners.com> # message auto-generated for no-merge-commit merge: !10361 merge master into master nn仓121回合主线黄迁蓝 Created-by: qq_52874943 Commit-by: qq_52874943 Merged-by: cann-robot Description: ## 描述 本 PR 为 Erfinv 算子新增 ascend960DT 平台的支持,包括新增该平台下的算子内核二进制配置、在算子定义中注册 ascend960DT 配置,并将该平台加入算子二进制编译配置的 compute_units 列表,使 Erfinv 算子能够在 ascend960DT 上编译运行。 ## 关联的Issue 关联Issue[#6917](https://gitcode.com/cann/ops-nn/issues/6917) ## 测试 本地已完成新精度对比与性能测试,通过静态检查、蓝区冒烟、算子ST以及算子二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10361 | 8 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
fix(ascend_requant): 初始化 MultiCopyParams.constantValue 消除未初始化读 Co-authored-by: rsj007<renshuojian@huawei.com> # message auto-generated for no-merge-commit merge: !12718 merge master into master fix(ascend_requant): 初始化 MultiCopyParams.constantValue 消除未初始化读 Created-by: rsj007 Commit-by: rsj007 Merged-by: cann-robot Description: ## 描述 初始化 MultiCopyParams.constantValue 消除未初始化读 ## 关联的Issue https://gitcode.com/wangyueting/changwei_liuyi/issues/183 ## 测试 obp、david冒烟, mssanitizer测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12718 | 2 天前 | |
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 10 天前 | |
feat: dequant_situ_quant BF16/FP16 路径放开可选 group_index Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !12440 merge feat/dequant-situ-quant-group-index into master feat: dequant_situ_quant BF16/FP16 路径放开可选 group_index Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 ### 背景 dequant_situ_quant 的接口里已经注册了可选输入 group_index(INT64,一维张量,长度为专家数,每个元素是对应专家的行数,各专家的行在输入中连续排布)。kernel 拿到它可以按专家分段处理:只计算实际存在的行,段外没有对应的行,输出保持为 0。 目前只有 INT32 输入路径能使用 group_index,BF16/FP16 路径被三处检查挡住: 1. op_host/dequant_situ_quant_tiling.cpp 的 CheckInputShapesBF16():"group_index must be absent for bfloat16/float16 x"; 2. op_kernel/dequant_situ_quant.h 的 Process():非 INT32 dtype 不进入分组循环,且 groupIndexGm_ 的 GlobalBuffer 绑定写在 INT32 专属代码块内; 3. torch_extension/csrc/dequant_situ_quant.cpp 的 TORCH_CHECK 同样禁止。 实际部署中恰恰是 BF16 路径需要它。MoE 推理在 allgather 通信形态下,routed GMM 的输出缓冲按最坏情况分配(假设所有专家的行都落在本卡),输入为 BF16;实际被路由到本卡的行只占一小部分,其余为必须保持为零的填充行。没有 group_index 时 kernel 需要扫描全部行(填充行也要执行"读计数-判零-跳过");有 group_index 时可以直接按段跳过。 量级参考(Kimi-K3 W4A8,896 个专家,EP64): - decode:每卡缓冲 [896, 6144],实际有效行通常 1~2 行; - prefill(2048 token 的 chunk):展开为 [33664, 6144],实际有效行约 500 行。 同一改动已在 vllm-ascend main 合入(PR #17570)并完成生产验证;本 MR 将该实现回馈到 CANN ops-nn 上游。排期为 CANN 9.3.0 交付,本 PR 目标是提前对齐 issue 需求。 ### 改动方法 - tiling:CheckInputShapesBF16()(BF16 与 FP16 共用)改为接受可选 group_index,校验规则与 INT32 路径一致(非空一维、weight_scale/bias 的形状须与专家数匹配);expertNum/hasGroupIndex 按实际值写入 tiling 数据,不再写死 1/0; - kernel:groupIndexGm_ 的绑定移出到公共路径,删除非 INT32 的早退分支,分组循环(计数 clamp 与段外跳过)对 BF16/FP16 生效,逻辑与 INT32 路径相同; - torch_extension:删除 BF16/FP16 传入 group_index 的 TORCH_CHECK; - docs / proto:接口约束文档同步放开; - UT:新增 4 个 tiling 用例(见"测试");经典 TILING_DATA_FIELD_DEF 生成的 TilingData 类不是扁平内存布局(实测成员偏移与字段序号不对应),字段断言对序列化缓冲按 uint32 词流匹配期望值序列,做法与 dequant_swiglu_quant 的 UT 相同。 ## 关联的Issue Fixes #6270 ## 测试 - pre-commit 全钩子通过(含 clang-format / codespell / OAT 合规扫描); - Ascend 910B 真机 bash build.sh --pkg --ops=dequant_situ_quant --soc=ascend910b 构建通过; - op_host UT 9/9 通过,其中: - 原有 5 个用例(int8 static/dynamic、int32 dynamic、infershape ×2)全部不变通过; - 新增 4 个:tiling_bf16_dynamic_group(BF16 + group_index,tiling key 40000,expertNum=16 / hasGroupIndex=1 写入正确)、tiling_bf16_dynamic_no_group(BF16 无 group_index 回归,key 40000,expertNum=1 / hasGroupIndex=0)、tiling_fp16_dynamic_group(FP16 + group_index,key 50000)、tiling_bf16_dynamic_group_invalid_rank(2-D group_index 被正确拒绝); - 同一改动在 vllm-ascend 侧的实测数据(PR #17570):kernel 输入 [33664, 6144](526 行有效)耗时 1587µs → 40µs;8k 输入 1k 输出端到端 TTFT 20.7s → 11.5s(−44%),TPOT 145.2ms → 127.6ms;serving decode 单算子 p50 65.3µs → 42.2µs。 ## TTK 精度验证补充 在 Ascend 910B3 + CANN 9.2.0 环境下,按 TTK kernel 模式对本 MR 分支(commit 1772b077)构建的算子包做了随机精度回归,**13 个边界用例全部通过**(PASS 率 100%,dyn/bin 双模式一致)。 **命令**:python3 -m ttk kernel -i dsq_cases.csv -b release --plugin golden.py --seed 20261021 --run 1(固定种子,可复现) ### 用例覆盖 | 用例 | 输入 | group_index | 覆盖点 | | -------------------------------- | ----------------- | -------------- | ------------------------------------------------------------ | | dsq_bf16_group_896_sparse | [896,6144] bf16 | K=14,计数 0~60 | decode 生产形状,稀疏计数 | | dsq_bf16_group_33664_prefill | [33664,6144] bf16 | K=14,0~2400 | prefill 生产形状,含大量死尾行 | | dsq_bf16_group_7296_mixed | [7296,6144] bf16 | K=14,0~700 | 死尾 + 计数钳制混合 | | dsq_bf16_group_clamp_896 | [896,6144] bf16 | K=14,3000~4000 | 单专家计数即超总行数 → 恒走钳制分支 | | dsq_bf16_nogroup_528 | [528,6144] bf16 | 无 | BF16 无 group 基线回归 | | dsq_fp16_group_896_sparse | [896,6144] fp16 | K=14,0~60 | FP16 + group(tiling key 50000) | | dsq_fp16_nogroup_528 | [528,6144] fp16 | 无 | FP16 基线回归 | | dsq_bf16_group_default_attrs_896 | [896,6144] bf16 | K=14 | 默认属性 beta=4.0 / linear_beta=25.0(覆盖 Situ beta 缩放 + up 软限幅全公式) | | dsq_bf16_group_small_64 | [64,128] bf16 | K=8 | 小形状 | | dsq_bf16_group_k896_decode | [896,6144] bf16 | K=896,计数 0~2 | 生产 decode 真实专家数(896),稀疏计数 | | dsq_bf16_group_act_right_896 | [896,6144] bf16 | K=14 | activate_left=False(gate/up 对半交换分支) | | dsq_bf16_group_narrow_cols | [256,200] bf16 | K=8 | H=100 非 32 倍数,覆盖列 padding 掩码路径 | | dsq_bf16_group_zero_counts | [128,256] bf16 | K=8,计数全 0 | active=0 极端全死尾(输出保持缓冲初始值) | ### 判据与 golden - y(int8):quant 判据(逐元素 |diff| ≤ 1,超差元素比例 0); - y_scale(float32):mix_tolerance,rtol=1e-5; - golden 参考实现按 kernel 源码逐行对照编写(beta·tanh(gate/beta)·sigmoid(gate)、linear_beta>0 时 up 软限幅、per-row absmax/127 动态量化、scale=0 时仅本地 inv 置 1);group_index 的分段连续/计数≤0 跳过/超剩余钳制语义与 kernel Process() 组循环一致; - 死尾行校验的是"kernel 不写任何数据"(输出缓冲按非零值初始化,kernel 若误写会被立即捕获),比校验零值更严格。 ### 结果 | Total | PASS | FAIL | PassRate | | ----- | ---- | ---- | -------- | | 13 | 13 | 0 | 100% | **精度余量**:即使在最严格的逐位比对(binary_equal)下,三个大形状用例的不一致元素也仅 1~14 个(总元素数 1.6M~103M),且全部 |diff| = 1 —— 来自 round(x/scale) 在 .5 边界的取整方向差(浮点末位 1 ulp 差异使商跳到相邻整数格,属实现固有自由度);y_scale 与参考实现最大差 5.6e-9(float32 1 ulp 量级)。 测试脚本(golden.py / dsq_cases.csv)见附件,可直接复跑。 --- ## 规模化精度回归(按《昇腾算子精度标准 2.1》L1 级) 在上述边界用例之外,按精度标准 L1 级(重要算子,LLM-MoE 路径)要求追加规模化随机回归: | 标准要求 | 实现 | | ----------------------------------------------------- | ------------------------------------------------------------ | | 用例规模 ≥10,000 | 10,000 条(bf16 / fp16 各 5,000;有 group 7,000 / 无 group 3,000) | | 均匀分布 30% / 小值域均匀 10% / 离群点 20% / 正态 40% | 均匀与小值域按用例值域实现;离群点以宽域均匀 [−5000,5000] 近似(TTK 无逐元素 0.1%×1000 注入原语,大 scale/饱和数值面等效);正态为截断正态(μ∈[−75,75]、σ∈[1,25] 多组) | | 每种 dtype ≥700 | bf16 / fp16 各 5,000 | | 维度值按 (15,16) 步长泛化 | rows/H 覆盖 {1,15,16,31,32,…,2048},含奇数 H(列 padding 路径);K∈{1,2,8,14,16,64,128,896};计数覆盖稀疏/混合/钳制/全零 | | Attr 组合遍历 | activate_left × beta{1.0,4.0} × linear_beta{0,25} 随机组合 | | 输出总元素 ≥100 万 | 约 4.8 亿,远超要求 | | 比对:量化类整型输出绝对误差 ≤1 | y(int8) = quant 判据;y_scale(float32) = mix_tolerance rtol 1e-5 | **结果**:10,000 / 10,000 通过。首跑 9,998 直接通过;2 条(fp16,无共同失败模式)失败经查为 TTK 框架 warmup 辅助内核注册竞态(rts_interface.py 的 warmup.o 注册,发生在算子执行之前,该用例自身的编译/tiling 记录均正常),同条件单独复跑均 PASS(dyn/bin 双模式 100.0%)——**算子侧 0 失败**。 ## 文档更新 随本 PR 同步更新(均为放开 BF16/FLOAT16 路径约束,与实现一致): - docs/aclnnDequantSituQuant.md:约束节 BF16/FLOAT16 行; - docs/torchapi_dequant_situ_quant.md:输入约束表 BF16/FLOAT16 行,group_index 从禁止列移到可选列,并补充参数语义; - op_graph/dequant_situ_quant_proto.h:约束注释同步。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [] AI辅助编写 See merge request: cann/ops-nn!12440 | 7 天前 | |
fix(dequant_swiglu_quant): 修复无group_index时swiglu_mode 1/2/3被静默按mode0计算 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !12598 merge fix/dequant-swiglu-quant-variant-mode-no-group into master fix(dequant_swiglu_quant): 修复无group_index时swiglu_mode 1/2/3被静默按mode0计算 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 描述 修复 A2(910b) 上 aclnnDequantSwigluQuantV2 **不传 group_index 时 swiglu_mode 1/2/3 被静默按 mode 0 计算**的缺陷(clamp_limit/glu_alpha/glu_bias 全部丢失,无任何报错)。 根因:变体 SwiGLU 适配仅覆盖 Dsk 路径(group 场景),无 group 时路由至通用 tiling(SwiGluTilingData 链路),该链路无 mode 参数管道,性能内核硬编码标准 swiglu。 改动(最小化,不改共享 tiling struct、不改 mode0 热路径): 1. DskTiling::IsCapable:无 group 且 mode≠0 且 x 为 int32/bf16 时路由至 Dsk 路径(Base kernel 已实现变体模式分支);mode0 仍走通用 tiling,保留性能分支不回退; 2. GetShapeAttrsInfoInner:移除无 group 时跳过 shape 解析的提前返回(原 gate 致 inDimx/inDimy 未初始化、blockDim=0,该路径此前从不服务无 group 场景); 3. Base kernel Process():CreateOffsetLocalTensor 提前至 no-group 分支 return 前,修复 mode1 gather 偏移表未创建导致的 UB 越界; 4. 内核 bf16 段补齐 WITHOUT_GROUP 3 个 QS 分支,支持 bf16 无 group 变体模式; 5. 通用 tiling 对 fp16 x + mode≠0 显式拒绝(无对应内核分支,原为静默错算); 6. 无 group + mode≠0 + bias / 静态量化组合显式拒绝(无对应内核分支,原为静默错算或模糊报错)。 ## 关联的Issue Fixes #7225 ## 测试 910B3 实测(fp32 golden 按 aclnnDequantSwigluQuantV2 文档公式),共 33 用例全部通过: - int32 x:no-group/group × mode0~3 全矩阵 × {H1024, H2048},int8 一致率 100%(修复前 no-group mode1/2/3 为 24%~67%); - 泛化:奇 token(T=33)/单行(T=1)/大 shape(H3072)/mode2(alpha=1, bias=0) 均 100%; - bf16 x:no-group/group × mode0~3 全矩阵 100%(no-group mode≠0 为本次新增能力); - fp16 x:mode0 100% 无回归;mode≠0 显式报错(负向); - 负向用例(无 group+bias+mode2、静态量化、尾维非 64 对齐、fp16+mode≠0)均正确显式拒绝; - mode0 原 tiling 路径无回归,性能无劣化。 ## 文档更新 无(接口语义与 aclnnDequantSwigluQuantV2.md 现有文档一致,本次使实现对齐文档)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12598 | 5 天前 | |
批量修改ws=0 Co-authored-by: ligen<ligen75@h-partners.com> # message auto-generated for no-merge-commit merge: !11512 merge master into master 批量修改ws=0 Created-by: ligen75 Commit-by: ligen Merged-by: cann-robot Description: ## 描述 批量修改算子的系统workspace大小 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5482 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 自验通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11512 | 17 天前 | |
新增4个HiFloat4量化算子 Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !12451 merge hif4_quant into master 新增4个HiFloat4量化算子 Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 (对应 HEAD 提交 feat: 拆分新增4个HiFloat4量化算子,共改动 120 个文件,+14755)新增 4 个 **HiFloat4(HiF4)量化**算子。4 个算子均基于 HiFloat4(S1P2,4-bit)三层缩放架构(Block Scale Ea / Sub-block Scale Eb / Micro-block Scale Ec),目标平台为 ascend960dt。 主要改动如下: 1. **新增 4 个 HiFloat4 量化算子** - aclnnAntiHiF4Quant(AntiHiF4Quant):将 HiF4(S1P2)量化数据按三层缩放因子(Ea/Eb/Ec)反量化为 FP16/BF16,按 scale shape 自动判定 PER_CHANNEL / PER_HEAD 模式。 - aclnnDynamicHiF4Quant(DynamicHiF4Quant):沿指定 axis 按 Block=64 / Sub-block=8 / Micro-block=4 三层缩放的在线动态量化,继承 DynamicMxQuant 架构。 - aclnnDynamicBlockHiF4Quant(DynamicBlockHiF4Quant):同时沿 -1、-2 轴按 64×64 基本块(Sub-block 8×8、Micro-block 4×4)三层缩放动态量化,分别输出 -1/-2 轴的 scale1、scale2。 - aclnnGroupedDynamicHiF4Quant(GroupedDynamicHiF4Quant):按 group_index 分组、组内按 64 元素为一块的三层缩放动态量化。 - 每个算子均包含:op_api(aclnn 对外接口 + 内部 l0op 接口)、op_graph(proto)、op_host(def / infershape / arch35 tiling,含 tail 与 not_tail 分支)、op_kernel(arch35 内核,含 common / tail / not_tail / struct / tilingdata)、docs(aclnn API 文档)、examples/arch92、tests/ut(op_host 的 infershape/tiling + op_kernel)、README,以及 op_host/config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini。 - 算子原型使用 ge::DT_HIFLOAT4 / DT_HIFLOAT4_SCALE,并在 *_def.cpp 中注册 ascend960dt。 ## 关联的Issue 无。 ## 测试 - 新增各算子 op_host UT(infershape、tiling)与 op_kernel UT。 - 新增各算子的 aclnn 示例(examples/arch92/test_aclnn_*_hi_f4_quant.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12451 | 8 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 10 天前 | |
新增4个HiFloat4量化算子 Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !12451 merge hif4_quant into master 新增4个HiFloat4量化算子 Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 (对应 HEAD 提交 feat: 拆分新增4个HiFloat4量化算子,共改动 120 个文件,+14755)新增 4 个 **HiFloat4(HiF4)量化**算子。4 个算子均基于 HiFloat4(S1P2,4-bit)三层缩放架构(Block Scale Ea / Sub-block Scale Eb / Micro-block Scale Ec),目标平台为 ascend960dt。 主要改动如下: 1. **新增 4 个 HiFloat4 量化算子** - aclnnAntiHiF4Quant(AntiHiF4Quant):将 HiF4(S1P2)量化数据按三层缩放因子(Ea/Eb/Ec)反量化为 FP16/BF16,按 scale shape 自动判定 PER_CHANNEL / PER_HEAD 模式。 - aclnnDynamicHiF4Quant(DynamicHiF4Quant):沿指定 axis 按 Block=64 / Sub-block=8 / Micro-block=4 三层缩放的在线动态量化,继承 DynamicMxQuant 架构。 - aclnnDynamicBlockHiF4Quant(DynamicBlockHiF4Quant):同时沿 -1、-2 轴按 64×64 基本块(Sub-block 8×8、Micro-block 4×4)三层缩放动态量化,分别输出 -1/-2 轴的 scale1、scale2。 - aclnnGroupedDynamicHiF4Quant(GroupedDynamicHiF4Quant):按 group_index 分组、组内按 64 元素为一块的三层缩放动态量化。 - 每个算子均包含:op_api(aclnn 对外接口 + 内部 l0op 接口)、op_graph(proto)、op_host(def / infershape / arch35 tiling,含 tail 与 not_tail 分支)、op_kernel(arch35 内核,含 common / tail / not_tail / struct / tilingdata)、docs(aclnn API 文档)、examples/arch92、tests/ut(op_host 的 infershape/tiling + op_kernel)、README,以及 op_host/config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini。 - 算子原型使用 ge::DT_HIFLOAT4 / DT_HIFLOAT4_SCALE,并在 *_def.cpp 中注册 ascend960dt。 ## 关联的Issue 无。 ## 测试 - 新增各算子 op_host UT(infershape、tiling)与 op_kernel UT。 - 新增各算子的 aclnn 示例(examples/arch92/test_aclnn_*_hi_f4_quant.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12451 | 8 天前 | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 8 天前 | |
修复 DynamicMxQuantWithDualAxisV2 的 dstTypeMax 校验 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12425 merge fix/2026-10-17-ops-nn-dynamic-mx-quant-dual-axis-v2-dst-type-max-contract-01 into master 修复 DynamicMxQuantWithDualAxisV2 的 dstTypeMax 校验 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # 修复 DynamicMxQuantWithDualAxisV2 的 dstTypeMax 校验 ## 描述 dstTypeMax 允许为 0 或 [6, 12],非零值仅适用于 FLOAT4_E2M1 与 scaleAlg=2。Host 校验目前会接受 NaN,也未拒绝其他非零值组合。本次补丁拒绝非有限值,并限制非零值的目标类型和算法组合。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug 修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## AI/Agent 生成声明 - [x] AI 辅助编写 ## 验证 - 补丁在固定源码提交和当前 master 均通过适用性检查;目标仓库的单文件 clang-format pre-commit 检查通过。 - 未运行 NPU 构建或设备测试,设备运行结果尚未验证。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6988 See merge request: cann/ops-nn!12425 | 3 天前 | |
fix(dynamic_quant): 空输入时非空scale/offset回填0 Co-authored-by: cuijie25<cuijie24@h-partners.com> # message auto-generated for no-merge-commit merge: !12572 merge fix/issue-6605-dynamic-quant-empty-x into master fix(dynamic_quant): 空输入时非空scale/offset回填0 Created-by: cuijie25 Commit-by: cuijie25 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnnDynamicQuant(V1/V2/V3/V4 共用实现)在 x/y/scale 任一为空 Tensor 时早退返回成功,但不写任何输出。当 x=[M,0] 而 scale=[M] 非空(pertoken,即 Issue 上报场景)、scale 恒为 [1](pertensor)或 x=[0,K] 而 scale=[K](perchannel)时,非空 scaleOut/offsetOut 残留调用方未初始化内存(实测哨兵值原样残留,PTA 侧表现为 NaN 污染下游,详见关联 Issue)。资料 quant/dynamic_quant/docs/aclnnDynamicQuant.md 声明 x/yOut/scaleOut 均支持空 Tensor,且该组合能通过全部参数校验。 修改内容: 1. 早退分支对非空 scale/offset 用 l0op::Fill 回填 0(AllocScalar → ConvertToTensor → l0op::Fill → ViewCopy,写法对齐仓内先例 loss/binary_cross_entropy),全空时维持原早退;回填值 0 与 kernel 对全零行产出的 scale=0 一致。 2. *workspaceSize = 0 改为 uniqueExecutor->GetWorkspaceSize()(回填任务需要 workspace)。 3. UT 补充两例:x=[2,0] + 非空 scale=[2](回填路径)、x=[0,4] 全空(早退路径)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6605](https://gitcode.com/cann/ops-nn/issues/6605) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. UT:A2(910B3)环境 bash build.sh -u --opapi --ops=dynamic_quant -j8,16/16 全部通过(V1 8 例含新增 2 例 + V3 8 例)。 2. 实卡验证(A2 / 910B3,内置 CANN 9.1.0 基线 vs 打补丁 vendor 包,哨兵值法:scale/offset 预填 123): - V1 pertoken x=[2,0]:基线 scale={123,123}(复现缺陷)→ 修复后 scale={0,0}; - V2 非对称 x=[2,0]:基线 scale/offset 双残留 123 → 修复后双 {0,0}; - V1 正常 x=[2,4]:修复前后 scale={4/127, 8/127} 一致,无回归; - V1 全空 x=[0,4]:修复前后均返回成功,早退语义保留。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无。资料已声明支持空 Tensor,本次是代码对齐资料,无需更新文档。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12572 | 6 天前 | |
fix: 修复 10 算子 TTK golden 参考实现的输出 dtype 与 fp64 精度处理缺陷 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !11042 merge goldenMod into master fix: 修复 10 算子 TTK golden 参考实现的输出 dtype 与 fp64 精度处理缺陷 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 本 MR 修正 loss / norm / optim / quant 共 10 个算子的 TTK golden 参考实现( <算子>/tests/assets/golden.py),使 golden 严格按用例声明的输出 dtype(output_dtypes)生成真值,并在 TTK Promote 提供 fp64 时保留 fp64 计算精度。仅修改测试参考实现(纯 Python,numpy/torch 计算),不涉及 kernel / op_host 代码。 ### 改动原因 1. **忽略用例声明的输出 dtype(output_dtypes)**:次级输出被硬编码为 float32,不看声明。典型如 norm/deep_norm/tests/assets/golden.py:旧实现 _compute_deep_norm 直接将 mean/rstd 强制 .to(torch.float32),deep_norm_golden 只从 output_dtypes[2] 取 y 的 dtype,output_dtypes[0]/[1](mean/rstd 声明)被忽略;norm/batch_norm3_d、norm/batch_norm3_d_grad、norm/batch_norm_grad_ext2 的 batch_mean/saved_var/saved_rstd/dscale/doffset、optim/apply_adam_w_quant 的 absmax_m/absmax_v、quant/dynamic_quant_update_scatter(_v2) 的 scale/offset 同样被强制 float32。 2. **把 TTK Promote 的 fp64 精度截回 fp32**:golden 内部一律经 astype(np.float32) / .to(torch.float32)(_to_f32 / _to_torch_float32 / _to_numpy_float32 及一系列 dtype=np.float32 的归约助手),TTK Promote 送入的 fp64 输入被降为 fp32,cross_check 真值被截回 fp32(修复后代码注释对应 "retaining fp64 (TTK Promote) so the true value is not cut back to fp32")。 ### 改动方法 - **统一计算 dtype 入口**:_to_f32 → _to_compute(apply_adam_w_quant / apply_came_part4)、_to_torch_float32/_to_numpy_float32 → _to_torch_compute/_to_numpy_compute(deep_norm_grad)、_to_torch(x, dtype=float32) 改为保持输入自身 dtype(dynamic_quant_update_scatter)。语义:fp64 原样保留,fp16/bf16 提升到 fp32。 - **归约/累加助手改为输入 dtype 驱动**:batch_norm3_d_grad / batch_norm_grad_ext2 的 _sum_fp32、_sum_seq_fp32、_binary_fold_sum、_ra_split_r_channel_sum、_sum_pairwise_fp32、_chunk32_pair_channel_sum、_chunk_channel_sum、_ascend_like_channel_sum 由 np.float32 改为 x.dtype;deep_norm_grad 的 _reduce_sum_vl、_reduce_sum_regbase(_1d)、_reduce_sum_rows、_reduce_sum_rows_fp64 改为 values.dtype 驱动;新增 _compute_dtype() 判定(fp64 输入 → 全程 fp64,否则 fp32)。 - **按声明输出 dtype 生成输出**:新增 _output_dtype(kwargs, index, default) 从 TTK 传入的 output_dtypes 取声明 dtype(缺省 float32)。应用于 mean/rstd(deep_norm、deep_norm_grad)、batch_mean/saved_var/saved_rstd(batch_norm3_d)、dscale/doffset(batch_norm3_d_grad、batch_norm_grad_ext2)、dbeta/dgamma(deep_norm_grad)、absmax_m/absmax_v(apply_adam_w_quant,改为保持计算 dtype)、scale(dynamic_quant_update_scatter,改用 var_scale 实际 dtype)、out_scale/out_offset(_v2,保持原 dtype,去掉 np.float32 强制转换)。 - **常量与超参对齐计算 dtype**:apply_adam_w_quant 的 one/lr/beta1/beta2/weight_decay/eps/gnorm_scale、dynamic_quant_update_scatter 的 QUANT_MAX、_v2 的 INT4_SCALE_RANGE/INT4_QUANT_MAX/QUANT_EPSILON、batch_norm*_grad 的 reduce_count/epsilon 标量等改用 compute dtype。 - **cosine_embedding_loss**:计算 dtype 用 torch.promote_types(torch.float32, a.dtype) 并再与声明输出 dtype 提升;整数输入经 _to_compute_tensor 提升到计算 dtype;归约不再强制 dtype=torch.float32;reduction 结果按 out_dtype 输出。 - **batch_norm3_d**:__spec__ / __golden__ 增加算子名别名 batch_norm3_d(原仅注册 batch_norm3d)。 - **apply_came_part4**:_dtype_of 支持 float64;customize_inputs 增加 **kwargs 并使返回顺序与函数签名一致(sum_r 移至 sum_u_rc 之后);移除 __input__ 注册。 - **dynamic_quant_update_scatter / _v2**:_compute_dtype 由输入与声明输出 dtype 联合提升;量化写回不再经 np.float32 截断。 | # | 算子 | 文件 | +/− | |---|------|------|-----| | 1 | loss/cosine_embedding_loss | tests/assets/golden.py | +54/−18 | | 2 | norm/batch_norm3_d | tests/assets/golden.py | +36/−6 | | 3 | norm/batch_norm3_d_grad | tests/assets/golden.py | +53/−29 | | 4 | norm/batch_norm_grad_ext2 | tests/assets/golden.py | +53/−29 | | 5 | norm/deep_norm | tests/assets/golden.py | +7/−3 | | 6 | norm/deep_norm_grad | tests/assets/golden.py | +82/−55 | | 7 | optim/apply_adam_w_quant | tests/assets/golden.py | +45/−19 | | 8 | optim/apply_came_part4 | tests/assets/golden.py | +29/−21 | | 9 | quant/dynamic_quant_update_scatter | tests/assets/golden.py | +41/−10 | | 10 | quant/dynamic_quant_update_scatter_v2 | tests/assets/golden.py | +30/−13 | | | **合计** | **10 个文件** | **+430/−203** | ## 关联的Issue - #6449 ## 测试 本 MR 仅修改 TTK golden 参考实现(纯 Python,numpy/torch 计算,无 kernel / op_host 代码变更),建议按仓库 TTK ST 流程验证(需 Linux + CANN + Ascend 环境): bash cd /path/to/ops-test-kit REPO=/path/to/ops-nn # 仓内已提供用例的 3 个算子 python3 -m ttk kernel -i "$REPO/norm/deep_norm/tests/st/arch35/ttk_kernel_deep_norm_generalization.csv" \ --plugin "$REPO/norm/deep_norm/tests/assets/golden.py" python3 -m ttk kernel -i "$REPO/quant/dynamic_quant_update_scatter/tests/st/arch35/ttk_kernel_dynamic_quant_update_scatter_st.csv" \ --plugin "$REPO/quant/dynamic_quant_update_scatter/tests/assets/golden.py" python3 -m ttk kernel -i "$REPO/quant/dynamic_quant_update_scatter_v2/tests/st/arch35/ttk_kernel_dynamic_quant_update_scatter_v2_st.csv" \ --plugin "$REPO/quant/dynamic_quant_update_scatter_v2/tests/assets/golden.py" 检查点: - 各输出 dtype 与用例 output_dtypes 声明一致(如 deep_norm fp16 用例 ('float32','float32','float16')); - fp64 Promote 用例的 cross_check 真值保持 fp64,不被截回 fp32; - 既有 float16/bfloat16 用例的容差与判定不变。 ## 文档更新 本 MR 未包含文档修改。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11042 | 19 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
fake_quant_with_min_max_args算子精度提升 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !12808 merge dev_quant into master fake_quant_with_min_max_args算子精度提升 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fake_quant_with_min_max_args算子精度提升 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/wangyueting/changwei_liuyi/issues/84 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码实现优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12808 | 2 天前 | |
fix(fake_quant_with_min_max_args_gradient): 长尾算子加固 Co-authored-by: CherryRanH<ranhe2@huawei.com> # message auto-generated for no-merge-commit merge: !12662 merge long_tail2 into master fix(fake_quant_with_min_max_args_gradient): 长尾算子加固 Created-by: CherryRanH Commit-by: CherryRanH Merged-by: cann-robot Description: ## 描述 对 fake_quant_with_min_max_args_gradient 算子进行 host 侧门禁补强并补齐测试资产。 **代码加固**: - infershape:新增 rank≤8、输入 dtype(仅 FLOAT32)、属性语义校验(min/max 有限、min<max、num_bits∈[2,16]) - tiling:gradients/x 跨输入 shape 一致性校验、totalLen 逐维乘法防溢出、CalcNudge 退化(scale 下溢/上溢致 NaN/Inf)显式拒绝 - CalcTiling:baseLen 改 64(VL) 对齐,消除无掩码满向量加载的本地缓冲越界;空张量路径纳入同一 UB 预算 - golden:TF spec golden 按 TF API 签名以 6 位置实参接收(修 TypeError);_TfCompetitor 兼容 x/inputs 双派发名 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/7339 ## 测试 **UT**:op_host UT 32/32 通过 **TTK ST 验证**: - kernel L0:**206/206 PASS**(precision 全部走 cross_check 三方比对;perf、memory_oob 全 PASS) - kernel L2(异常注入 16 例):**16/16 达到预期门禁拒绝**——dtype 非法×5、gradients/x shape 不一致×3、num_bits 越界×3、min=NaN / max=+Inf×2(编译期属性语义拒绝)、rank 越界×1、totalLen 溢出×1(框架 shape 守卫拦截);全程无崩溃、无越界(memory_oob 16/16 PASS) - geir L0(复用 kernel L0 用例集):**206/206 PASS** - 三方比对(cross_check L1:mare≤5 / mere≤1.5 / rmse≤1.5):third_party 为 tf.quantization.fake_quant_with_min_max_args_gradient(TF 2.16.1 端点),412 例(kernel 206 + geir 206)全部通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12662 | 1 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
fix(fake_quant_with_min_max_vars_gradient): def 输出名与CANN原型对齐 Co-authored-by: zhoulong50_hw<zhoulong50@huawei.com> # message auto-generated for no-merge-commit merge: !11925 merge fix/fake_quant_with_min_max_vars_gradient-align-builtin-io into master fix(fake_quant_with_min_max_vars_gradient): def 输出名与CANN原型对齐 Created-by: zhoulong50_hw Commit-by: zhoulong50_hw Merged-by: cann-robot Description: ## 描述 将fake_quant_with_min_max_vars_gradient的输出数据命名改为与原型仓一致,使geir通路能正常执行。 ## 关联的Issue [fake_quant_with_min_max_vars_gradient的geir通路有问题](https://gitcode.com/cann/ops-nn/issues/6689) ## 测试 算子二级冒烟通过,geir通路已可以正常跑通。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11925 | 14 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
修复 GroupedDynamicBlockQuant 对标量 group_list 的 InferShape 推导 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12427 merge fix/grouped-dynamic-block-quant-infershape-rank0-guard into master 修复 GroupedDynamicBlockQuant 对标量 group_list 的 InferShape 推导 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # 修复 GroupedDynamicBlockQuant 对标量 group_list 的 InferShape 推导 GroupedDynamicBlockQuant 要求 group_list 为一维张量,但 Host InferShape 在读取 dim 0 前未检查秩。传入 rank-0 shape 时,InferShape 会将该维度误当作组数并返回成功,生成错误的 scale shape。补丁在读取维度前增加秩校验,并增加标量输入回归用例;有效的一维输入保持现有推导行为。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6990 See merge request: cann/ops-nn!12427 | 5 天前 | |
新增4个HiFloat4量化算子 Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !12451 merge hif4_quant into master 新增4个HiFloat4量化算子 Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 (对应 HEAD 提交 feat: 拆分新增4个HiFloat4量化算子,共改动 120 个文件,+14755)新增 4 个 **HiFloat4(HiF4)量化**算子。4 个算子均基于 HiFloat4(S1P2,4-bit)三层缩放架构(Block Scale Ea / Sub-block Scale Eb / Micro-block Scale Ec),目标平台为 ascend960dt。 主要改动如下: 1. **新增 4 个 HiFloat4 量化算子** - aclnnAntiHiF4Quant(AntiHiF4Quant):将 HiF4(S1P2)量化数据按三层缩放因子(Ea/Eb/Ec)反量化为 FP16/BF16,按 scale shape 自动判定 PER_CHANNEL / PER_HEAD 模式。 - aclnnDynamicHiF4Quant(DynamicHiF4Quant):沿指定 axis 按 Block=64 / Sub-block=8 / Micro-block=4 三层缩放的在线动态量化,继承 DynamicMxQuant 架构。 - aclnnDynamicBlockHiF4Quant(DynamicBlockHiF4Quant):同时沿 -1、-2 轴按 64×64 基本块(Sub-block 8×8、Micro-block 4×4)三层缩放动态量化,分别输出 -1/-2 轴的 scale1、scale2。 - aclnnGroupedDynamicHiF4Quant(GroupedDynamicHiF4Quant):按 group_index 分组、组内按 64 元素为一块的三层缩放动态量化。 - 每个算子均包含:op_api(aclnn 对外接口 + 内部 l0op 接口)、op_graph(proto)、op_host(def / infershape / arch35 tiling,含 tail 与 not_tail 分支)、op_kernel(arch35 内核,含 common / tail / not_tail / struct / tilingdata)、docs(aclnn API 文档)、examples/arch92、tests/ut(op_host 的 infershape/tiling + op_kernel)、README,以及 op_host/config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini。 - 算子原型使用 ge::DT_HIFLOAT4 / DT_HIFLOAT4_SCALE,并在 *_def.cpp 中注册 ascend960dt。 ## 关联的Issue 无。 ## 测试 - 新增各算子 op_host UT(infershape、tiling)与 op_kernel UT。 - 新增各算子的 aclnn 示例(examples/arch92/test_aclnn_*_hi_f4_quant.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12451 | 8 天前 | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 8 天前 | |
feat(loss/quant/norm): 四算子接入 ascend960dt 平台 + cross_entropy pre-allocation Co-authored-by: zoujiamin<zoujiamin1@huawei.com> # message auto-generated for no-merge-commit merge: !11745 merge squash/960dt-one-commit into master feat(loss/quant/norm): 四算子接入 ascend960dt 平台 + cross_entropy pre-allocation Created-by: zoujiamin123 Commit-by: zoujiamin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->CrossEntropySumExpAndIndexLogit在960上开启pre-allocation优化、SigmoidCrossEntropyWithLogitsGradV2、Renorm、GroupedDynamicMxQuantWithDualAxis 三个个算子接入 ascend960dt 平台 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->https://gitcode.com/cann/ops-nn/issues/7021 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->全量st测试通过、冒烟验证无问题 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11745 | 8 天前 | |
docs: 将 GroupedQuantMax 文档原型及参数表的 y、amax 类型同步为 const aclTensor* Co-authored-by: Ethan_Zou<tianjun.zou@foxmail.com> # message auto-generated for no-merge-commit merge: !11847 merge docs/b6-nn-grouped-quant-max-const-outputs-20261013 into master docs: 将 GroupedQuantMax 文档原型及参数表的 y、amax 类型同步为 const aclTensor* Created-by: Ethan_Zou Commit-by: Ethan_Zou Merged-by: cann-robot Description: ## 描述 将 GroupedQuantMax 文档原型及参数表的 y、amax 类型同步为 const aclTensor*。 GroupedQuantMax 文档将 y 和 amax 写为 aclTensor*,同目录公开头文件与实现均接受 const aclTensor*。参数表也重复了不一致的类型;按文档声明包装函数/函数指针时与真实 ABI 不符。输出属性表示写入张量存储,不代表 aclTensor 元数据指针必须可变。 ## 关联的Issue Fixes #6583 ## 测试 从最终 Markdown 提取 1 个接口声明,与同目录/对应公开头文件编译为同一 C 链接翻译单元;干净基线 1 项均因 conflicting types 失败,修复后 1 项 C++17 -fsyntax-only 全部通过。未生成库或执行设备算子。 以本 case 干净基线执行适用 pre-commit hooks 与 diff --check 通过。 本地无 NPU;本次只验证文档与真实 Host 行为,不执行设备算子、Kernel UT 或性能测试。提交后评论 /compile。 ## 文档更新 文档修改详见本 PR 文件列表;仅修正文档,使用已有实现及实际编译/解析验证。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 由 AI 辅助定位、修改及验证,Ethan_Zou 提交;本 PR 仅一个 commit。 ## AI 参与 使用 OpenAI Codex(GPT-6 系列)审查代码与文档,在 Host 侧复现、核对已有报告并准备修复。提交者账号为 Ethan_Zou。 See merge request: cann/ops-nn!11847 | 9 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 10 天前 | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 8 天前 | |
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 10 天前 | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 8 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 个月前 | |
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 10 天前 | |
sbmqwda support v121 Co-authored-by: oah28<wujiahao37@huawei.com> # message auto-generated for no-merge-commit merge: !11749 merge sbmqwda into master sbmqwda support v121 Created-by: oah28 Commit-by: oah28 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本变更为 SwigluBackwardMxQuantWithDualAxis(SwiGLU 反向 MX 量化双轴算子)增加 ascend960dt(v121)硬件平台支持。核心改动是在算子定义、编译配置与二进制配置中注册 ascend960dt,并新增该平台对应的算子二进制接口描述配置,覆盖多种输入/输出数据类型组合。 主要改动 新增 ascend960dt 平台二进制配置: 新增 swiglu_backward_mx_quant_with_dual_axis_binary.json,定义 8 个 bin_filename(如 SwigluBackwardMxQuantWithDualAxis_bf16toe4m3、_fp16toe2m1、_bf16toe5m2 等),输入 x/y_grad(bfloat16 或 float16)、可选 group_index(int64),输出 y1_out/y2_out(float8_e4m3fn、float4_e2m1、float4_e1m2、float8_e5m2)与 mxscale1_out/mxscale2_out(float8_e8m0),并声明 dst_dtype、scale_alg、round_mode、activate_left、max_dtype_value 等属性。 新增简化 Key 配置: 新增 swiglu_backward_mx_quant_with_dual_axis_simplified_key.ini,为 [SwigluBackwardMxQuantWithDualAxis] 设置 default=0。 算子定义注册新平台: 在 swiglu_backward_mx_quant_with_dual_axis_def.cpp 中通过 this->AICore().AddConfig("ascend960dt", aicoreConfig) 为算子新增 ascend960dt 配置。 编译配置纳入新平台: 在 scripts/kernel/binary_config/ascendc_config.json 中新增 SwigluBackwardMxQuantWithDualAxis 条目,compute_units 包含 ascend950 与 ascend960dt,并为 ascend960dt 配置 --cce-no-dcache-flush 编译选项。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#7062](https://gitcode.com/cann/ops-nn/issues/7062) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 测试,冒烟通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11749 | 7 天前 | |
docs(quant): 修正 SwigluMxQuant mxscaleOut axis 维公式 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12285 merge fix/2026-10-16-ops-nn-swiglu-mxscaleout-shape-doc into master docs(quant): 修正 SwigluMxQuant mxscaleOut axis 维公式 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # docs(quant): 修正 SwigluMxQuant mxscaleOut axis 维公式 aclnnSwigluMxQuant 输出参数表仍将 mxscaleOut 的 axis 维描述为 ceil(yAxis/32) 后做偶数补齐,实际把块数当成了 shape 维长度。Proto、Host InferShape 和 tiling 校验使用 ceil(ceil(yAxis/32)/2),并在末尾增加大小为 2 的维度存放相邻两个 32 元素块的 scale。修正参数表中的 axis 维公式,并补充 group 且 axis 为非尾轴时的 shape 规则。 Issue [#5832](https://gitcode.com/cann/ops-nn/issues/5832) 和已合入 PR [!10341](https://gitcode.com/cann/ops-nn/merge_requests/10341) 已修正该算子的其他属性、shape 与 golden 描述;该 PR 的 Proto 说明已记录成对 scale 维,但 ACLNN 输出参数表仍保留块数公式。本次仅更正该参数表。 验证:固定样例 x=[8,128] 推导 yOut=[8,64]、mxscaleOut=[8,1,2];与 Proto、Host 和 tiling shape 合同一致。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6898 See merge request: cann/ops-nn!12285 | 3 天前 | |
feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !11923 merge 1009 into master feat: loss/optim/activation/index/quant/conv 34个算子适配ascend960dt Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 ### 改动原因 v121(ascend960dt/DAV_9201)平台算子适配:责任田内 34 个算子需要在 ascend960dt 平台提供支持。 ### 改动方法(注册级适配为主,2 个算子特殊处理) - **注册链路(全部 34 个算子)**: *_def.cpp 追加 AddConfig("ascend960dt");新增 op_host/config/ascend960dt/(binary.json 与 ascend950 对齐 + simplified_key.ini);算子级 CMakeLists(SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR)与 op_kernel/CMakeLists(COMPUTE_UNITS)追加 ascend960dt 编译目标,修复 960dt 二进制编译时 tiling 库缺失问题(NLLLoss Jenkins 报错根因);ascendc_config.json 追加对应条目 - **apply_ftrl(特例)**:kernel/tiling 整体换用 v121 参考实现(旧式类实现 + 按 dtype 的 tiling key),替换 master 的 atvoss DAG/ElementwiseSch 实现(atvoss 框架未在 960dt 验证) - **deformable_offsets(_grad)**:kernel 零改动,仅注册级适配 - **swiglu_mx_quant(_with_dual_axis)**:入口溢出模式保存/恢复的 #if __NPU_ARCH__ == 3510 扩展为 3510 || 9201;swiglu_mx_quant_with_dual_axis kernel 体内溢出模式置位同步扩展,保证 960dt 数值行为与 950 一致 - **binary_cross_entropy_grad 等 6 算子**:kernel 由 atvoss 纯模板覆盖为 RegBase 写法(v121 参考,Reg:: 命名约定) 涉及算子(34):loss 19 个(binary_cross_entropy(_grad)、cross_entropy_loss(_grad)、ctc_loss_v2(_grad)、kl_div_loss_grad、l1_loss_grad、l2_loss、lp_loss、mse_loss(_grad)、nll_loss(_grad)、sigmoid_cross_entropy_with_logits、smooth_l1_loss_v2(_grad_v2)、softmax/sparse_softmax_cross_entropy_with_logits)、optim 11 个(apply_adam(_d/_w/_w_v2)、apply_adagrad_d、apply_gradient_descent、apply_ftrl、adam_apply_one(_with_decay/_assign))、index 1 个(unique_consecutive)、conv 2 个(deformable_offsets(_grad))、quant 2 个(swiglu_mx_quant(_with_dual_axis)) ## 关联的Issue - #6806 ## 测试 - bash build.sh --pkg --soc=ascend950 --jit --ops=<34算子> 编译出包通过 - ttk(Ascend950PR_9579)精度回归:每算子小规模用例分块串行执行,34/34 全 PASS(precision/perf/oob),950 零回归 - ascend960dt 二进制编译需 Jenkins 环境验证(本地工具链 ASC_VALID_SOC_LIST 不含 960dt) ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11923 | 9 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
fix: 整改10个quant类算子非法使用的错误码 Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !12860 merge fix-quant-error-code-batch3 into master fix: 整改10个quant类算子非法使用的错误码 Created-by: gcw_mJtIrnnZ Commit-by: gcw_mJtIrnnZ Merged-by: cann-robot Description: ## 描述 E9****替换为正式结构化错误码,进行整改。 ## 关联的Issue 关联Issue [#7487](https://gitcode.com/cann/ops-nn/issues/7487) ## 测试 通过UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12860 | 1 天前 | |
[BugFix] 修复 aclnnTurboQuant 参数校验缺失 Co-authored-by: chen-weipeng12<chenweipeng12@huawei.com> # message auto-generated for no-merge-commit merge: !12536 merge fix/turboquant-aclnn-param-check-master into master [BugFix] 修复 aclnnTurboQuant 参数校验缺失 Created-by: chen-weipeng12 Commit-by: chen-weipeng12 Merged-by: cann-robot Description: ## 问题与影响 aclnnTurboQuant 存在两类参数校验缺陷(#7100 / #7101): 1. **输出 shape 不校验**(#7100):y/scale 的声明 shape 从不与推导结果比对。以 latent={2,512}、y={2,128} 为例,首段仍返回 ACLNN_SUCCESS,内核按推导的 {2,256} 写出,越过声明范围 256B;scale={1} 同理越界 2B。越界仍落在调用方分配的缓冲区内,mssanitizer 无法发现。 2. **非法输入 shape 返回码错误**(#7101):latent rank≠2、headDim≠512、centroids 长度≠16 等违规落入 infershape/tiling 后以 561002 内部错误返回,而接口文档将其归类为参数非法(161002)。dtype 违规则能正确返回 161002。 ## 根因 turbo_quant 没有手写 op_api wrapper(op_host/op_api 为空),自动生成的两段式接口只按 op_def 检查 dtype;输出 tensor 的 shape 校验与输入 shape 的前置检查全部缺失。同类缺陷先例:aclnnFastLayerNorm #5614(已修,13dd09642b)。 ## 修改内容 按仓内手写 wrapper 规范(参照 dynamic_quant / swish_v2 / #5614 的修复方式)新增: - op_host/op_api/aclnn_turbo_quant.cpp/.h:CheckNotNull/CheckDtype/CheckShape —— latent 必须为 2 维且 headDim=512,centroids 必须为 {16},y 必须为 {numTokens, headDim/2},scale 必须为 {numTokens};非法参数在首段返回 161002,内核不再启动,越界写入随之消除。空 tensor(numTokens=0)直接成功返回。 - op_host/op_api/turbo_quant.cpp/.h:l0 层实现,输出经 AllocTensor 产出后 ViewCopy 回调用方张量。 - op_host/CMakeLists.txt:ACLNNTYPE aclnn → aclnn_exclude(手写 wrapper 代替自动生成)。 - tests/ut/op_host/op_api/:新增 20 个 op_api UT(合法基线、空 token、全部非法 shape/dtype/负 numTokens 用例,断言 ACLNN_ERR_PARAM_INVALID)。 含检视意见修复(l0 层 AllocTensor 判空、numTokens 非负校验)。共 8 个文件(+618/-2),仅包含实现、UT 与 CMake 接线。 ## 验证 Atlas 910B4 + CANN 9.2.0(从本提交构建并隔离安装 turbo_quant 自定义算子包,实机验证): - #7101 复现程序 8 个非法输入用例:修复前全部 561002,修复后全部 161002 - #7100 复现程序(y 声明 {2,128}、scale 声明 {1},越界区 canary 0xA5):修复前首段 rc=0、canary 被改写 256B/2B;修复后首段返回 161002、内核未启动、canary 0 字节改动 - 合法路径数值等价:y(512B)+scale 输出修复前后逐字节一致(l0 层 AllocTensor→ViewCopy 与原直写路径对比) - op_api UT 20/20 通过;ophost UT 回归(tiling/infershape)23/23 通过 ## 风险与兼容性 修改只收紧非法参数的校验。合法 shape、dtype 约束、空 tensor、正常计算路径保持现有行为(输出数值逐字节一致)。此前被错误接受的非法输出 shape 现在返回 161002,符合接口文档契约。master 与 9.2.0 分支的 turbo_quant 代码逐字节相同,本修复双分支通用(9.2.0 同内容 PR 随后提交)。 ## AI 辅助说明 本变更在 AI 辅助下完成缺陷分析、代码修改、测试补齐和验证编排,最终代码、测试范围和验证结果均由提交者复核。 Closes #7100 Closes #7101 See merge request: cann/ops-nn!12536 | 6 天前 | |
feat: 新增 WtsARQ 算子(AMCT QAT 权重自适应范围伪量化,GE IR 图模式,arch35 RegBase) Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !11140 merge master into master feat: 新增 WtsARQ 算子(AMCT QAT 权重自适应范围伪量化,GE IR 图模式,arch35 RegBase) Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 新增 WtsARQ(Weights Adaptive Range Quantization)算子,用于 AMCT 量化感知训练(QAT)场景:根据输入权重 w 及其量化范围下界 w_min、上界 w_max 自适应计算量化 scale,对 w 做 round-to-nearest(half-to-even)伪量化到 int8 栅格后再反量化回浮点,输出 y。 - 交付形态:GE IR 图模式算子(REG_OP 注册),无 aclnn 接口;TensorFlow 前端经框架插件(framework/wts_arq_tf_plugin.cpp)映射为同一 IR 后调用 - 硬件平台:arch35(Ascend 950 / DAV_3510),RegBase kernel 实现 - 输入:w(float16/float32,ND,rank 0~8)、w_min、w_max(dtype 与 w 一致,受限广播) - 输出:y(shape/dtype 与 w 相同) - 属性:num_bits(int64,仅支持 8)、offset_flag(bool,默认 false) 计算流程:范围修正(w_min=min(w_min,0)、w_max=max(w_max,0))→ scale 计算(offset_flag=false 时 max(|w_min|/128, w_max/127);true 时 w_max/255 - w_min/255)→ 除零保护(scale < float32 eps 取 1.0)→ 伪量化 q=clamp(rint(w/scale)+offset, -128, 127)-offset → 反量化 y=q*scale。 实现要点: - op_host:算子定义(wts_arq_def.cpp)、InferShape(wts_arq_infershape.cpp,支持动态 shape/rank 与受限广播校验)、arch35 tiling(wts_arq_tiling.cpp,动态多核切分、受限广播拷贝策略) - op_kernel:arch35 RegBase kernel(wts_arq_kernel.h,fp32 寄存器级计算链) - op_graph:GE IR 算子注册(wts_arq_proto.h) - config:ascend950 binary.json(float16/float32 两个二进制) - 文档:README.md + docs/zh/op_list.md 算子列表登记 ## 关联的Issue #6254 ## 测试 - 单元测试:tests/ut/op_host/arch35/test_wts_arq_tiling.cpp(tiling)、tests/ut/op_host/test_wts_arq_infershape.cpp(infershape) - 精度验证:tests/assets/golden.py 生成 golden 数据对比 - 示例:examples/test_geir_wts_arq.cpp(GE IR 图模式调用示例) ## 文档更新 - 新增 quant/wts_arq/README.md(功能说明、参数说明、约束说明、调用说明) - 更新 docs/zh/op_list.md(新增 wts_arq 算子条目) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11140 | 1 个月前 | |
torch_extension API文档新增产品型号标签 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8233 merge master into master torch_extension API文档新增产品型号标签 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. torchapi_*.md增加产品型号标签注释 2. 中文png改为英文文件名 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4551](https://gitcode.com/cann/ops-nn/issues/4551) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已自验 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> torchapi_*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8233 | 2 个月前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !366 merge license6 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!366 | 10 个月前 | |
refactor(swiglu_group_grad): 迁移至 activation 目录 Co-authored-by: ZhouChuping<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !9329 merge refactor/swiglu-group-grad-to-activation into master refactor(swiglu_group_grad): 迁移至 activation 目录 Created-by: qq_52056150 Commit-by: ZhouChuping Merged-by: cann-robot Description: ## 描述 迁移swiglu_group_grad至 activation 目录 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5285 ## 测试 本地进行了白盒、门槛用例的验证,共200条用例无功能性问题,线上进行了david冒烟无异常。 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 更新路径 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移算子至新目录 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9329 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 天前 | ||
| 10 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 2 个月前 | ||
| 8 天前 | ||
| 1 天前 | ||
| 2 天前 | ||
| 10 天前 | ||
| 7 天前 | ||
| 5 天前 | ||
| 17 天前 | ||
| 8 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 19 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 个月前 | ||
| 2 天前 | ||
| 1 天前 | ||
| 1 个月前 | ||
| 14 天前 | ||
| 1 个月前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 5 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 7 天前 | ||
| 3 天前 | ||
| 9 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 10 个月前 | ||
| 2 个月前 |