| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: RmsNormQuantV2/V3新算子按照标准整改 Co-authored-by: liiu-qii<liuqi330@huawei.com> # message auto-generated for no-merge-commit merge: !5393 merge fixRNQ into master fix: RmsNormQuantV2/V3新算子按照标准整改 Created-by: huanghaihong Commit-by: liiu-qii Merged-by: cann-robot Description: ## 描述 修复RmsNormQuantV2和RmsNormQuantV3算子的tiling key不合规问题,将旧的硬编码tiling key(5000/6000)+ 运行时 TILING_KEY_IS()分发方式,迁移到标准的模板化tiling key体系(ASCENDC_TPL_ARGS_DECL + if constexpr编译期分发)。同时对V3算子进行目录结构合规化改造。 ### 改动原因 RmsNormQuantV2/V3算子使用了非标准的tiling key硬编码方式(#define RMSNORMQUANTV2_REGBASE_NORMAL 5000),不符合当前仓库的模板化tiling key规范。V3算子的目录结构(kernel文件未放入arch35/、op_api在op_host下、使用simplified_key.ini配置等)也不符合生产仓标准。 ### 改动方法 **RmsNormQuantV2改造:** - 新增op_kernel/arch35/rms_norm_quant_v2_tiling_key.h,使用ASCENDC_TPL_ARGS_DECL宏声明模板参数(COMPUTE_MODE: FULL_LOAD=0, RECOMPUTE=1) - 新增RmsNormQuantV2TilingKey类,通过GET_TPL_TILING_KEY生成tiling key - 内核函数从extern "C"改为模板函数template <int8_t COMPUTE_MODE> - 内核分发从运行时TILING_KEY_IS()改为if constexpr编译期分发 - REGISTER_TILING_DEFAULT从函数内部移至函数外部 **RmsNormQuantV3合规化:** - 内核文件从op_kernel/rms_norm_quant_v3_apt.cpp迁移至op_kernel/arch35/rms_norm_quant_v3.cpp - 新增op_kernel/CMakeLists.txt,使用add_kernel_sources配置(SIMPLIFIED_KEY=0, AUTO_SYNC=false) - op_api/目录从op_host/op_api/迁移至算子根目录下的op_api/ - 删除op_host/config/ascend950/rms_norm_quant_v3_simplified_key.ini - 移除rms_norm_quant_v3_def.cpp中的ExtendCfgInfo("opFile.value", "rms_norm_quant_v3_apt") - 根CMakeLists.txt改用add_modules_sources宏,声明芯片类型和tiling目录 - 从ascendc_config.json中移除RmsNormQuantV3条目(改由CMake管理) - op_graph/rms_norm_quant_v3_proto.h中y1/y2输出dtype补充int4类型 **测试更新:** - V2 tiling单测中tiling key期望值从5000/6000更新为0/1 - V3 kernel单测文件重命名并更新为模板化调用方式 - V3 aclnn单测迁移至tests/ut/op_api/目录 ## 关联的Issue 关联Issue #2969 ## 测试 - 更新了RmsNormQuantV2 tiling单元测试,验证新tiling key值(FULL_LOAD=0, RECOMPUTE=1) - 更新了RmsNormQuantV3 kernel单元测试,适配模板化内核调用 - 迁移并更新了RmsNormQuantV3 aclnn单元测试 ## 文档更新 - 更新了op_graph/rms_norm_quant_v3_proto.h中的接口注释,y1/y2输出新增int4类型说明 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5393 | 2 个月前 | |
fix: RmsNormQuantV2/V3新算子按照标准整改 Co-authored-by: liiu-qii<liuqi330@huawei.com> # message auto-generated for no-merge-commit merge: !5393 merge fixRNQ into master fix: RmsNormQuantV2/V3新算子按照标准整改 Created-by: huanghaihong Commit-by: liiu-qii Merged-by: cann-robot Description: ## 描述 修复RmsNormQuantV2和RmsNormQuantV3算子的tiling key不合规问题,将旧的硬编码tiling key(5000/6000)+ 运行时 TILING_KEY_IS()分发方式,迁移到标准的模板化tiling key体系(ASCENDC_TPL_ARGS_DECL + if constexpr编译期分发)。同时对V3算子进行目录结构合规化改造。 ### 改动原因 RmsNormQuantV2/V3算子使用了非标准的tiling key硬编码方式(#define RMSNORMQUANTV2_REGBASE_NORMAL 5000),不符合当前仓库的模板化tiling key规范。V3算子的目录结构(kernel文件未放入arch35/、op_api在op_host下、使用simplified_key.ini配置等)也不符合生产仓标准。 ### 改动方法 **RmsNormQuantV2改造:** - 新增op_kernel/arch35/rms_norm_quant_v2_tiling_key.h,使用ASCENDC_TPL_ARGS_DECL宏声明模板参数(COMPUTE_MODE: FULL_LOAD=0, RECOMPUTE=1) - 新增RmsNormQuantV2TilingKey类,通过GET_TPL_TILING_KEY生成tiling key - 内核函数从extern "C"改为模板函数template <int8_t COMPUTE_MODE> - 内核分发从运行时TILING_KEY_IS()改为if constexpr编译期分发 - REGISTER_TILING_DEFAULT从函数内部移至函数外部 **RmsNormQuantV3合规化:** - 内核文件从op_kernel/rms_norm_quant_v3_apt.cpp迁移至op_kernel/arch35/rms_norm_quant_v3.cpp - 新增op_kernel/CMakeLists.txt,使用add_kernel_sources配置(SIMPLIFIED_KEY=0, AUTO_SYNC=false) - op_api/目录从op_host/op_api/迁移至算子根目录下的op_api/ - 删除op_host/config/ascend950/rms_norm_quant_v3_simplified_key.ini - 移除rms_norm_quant_v3_def.cpp中的ExtendCfgInfo("opFile.value", "rms_norm_quant_v3_apt") - 根CMakeLists.txt改用add_modules_sources宏,声明芯片类型和tiling目录 - 从ascendc_config.json中移除RmsNormQuantV3条目(改由CMake管理) - op_graph/rms_norm_quant_v3_proto.h中y1/y2输出dtype补充int4类型 **测试更新:** - V2 tiling单测中tiling key期望值从5000/6000更新为0/1 - V3 kernel单测文件重命名并更新为模板化调用方式 - V3 aclnn单测迁移至tests/ut/op_api/目录 ## 关联的Issue 关联Issue #2969 ## 测试 - 更新了RmsNormQuantV2 tiling单元测试,验证新tiling key值(FULL_LOAD=0, RECOMPUTE=1) - 更新了RmsNormQuantV3 kernel单元测试,适配模板化内核调用 - 迁移并更新了RmsNormQuantV3 aclnn单元测试 ## 文档更新 - 更新了op_graph/rms_norm_quant_v3_proto.h中的接口注释,y1/y2输出新增int4类型说明 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5393 | 2 个月前 | |
feat: 新增RmsNormQuantV3算子,支持在RmsNormQuantV2基础上增加rstd输出 Co-authored-by: huanghaihong12138<huanghaihong4@huawei.com> # message auto-generated for no-merge-commit merge: !4871 merge RNQ into master feat: 新增RmsNormQuantV3算子,支持在RmsNormQuantV2基础上增加rstd输出 Created-by: huanghaihong Commit-by: huanghaihong12138 Merged-by: cann-robot Description: ## 描述 盘古训练场景:本PR新增RmsNormQuantV3算子,并同步支持RmsNormQuantV2算子基础上增加rstd(归一化标准差倒数)输出能力。 ### 改动原因 RmsNormQuantV2算子在执行RmsNorm+Quantize融合计算时,不支持输出中间计算产生的rstd值。在大模型训练/推理场景中,下游算子可能需要rstd用于反向传播或其他计算,需要新增此输出能力。 ### 改动方法 **1. 新增RmsNormQuantV3算子** - 完整实现包括:OpDef定义、Tiling策略、InferShape推导、Kernel实现、aclnn两段式API、op_graph原型 - 支持Ascend 950平台,输入数据类型支持FLOAT16/BF16/FLOAT32,输出量化类型支持INT8/INT4/FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,rstd输出固定为FLOAT32 - 新增 output_rstd属性控制是否输出有效rstd - V3 Tiling层复用V2的基础设施(RmsNormQuantV2CompileInfo),通过rstdFlag标志区分行为 **2. RmsNormQuantV2算子增强** - Host侧:新增rstdFlag字段和output_rstd属性读取;新增CheckOutputShape()校验rstd维度合法性;新增rstd的dtype校验(必须为FLOAT32) - Kernel侧(full_load & recompute路径):新增rstdGm GlobalTensor、outQueueRstd输出队列;在Compute流程中根据rstdFlag将rstd值通过DataCopyPad输出到GM - 重构tiling数据结构定义,从rms_norm_quant_v2_tiling.h迁移到独立的rms_norm_quant_v2_tiling_data.h,便于V3复用 **3. 文档与配置更新** - 新增docs/aclnnRmsNormQuantV3.md API文档 - 更新op_list.md和op_api_list.md注册新算子 - 更新ascendc_config.json二进制配置 ## 关联的Issue 关联Issue #2869 ## 测试 - 新增V3算子UT测试:tiling测试、infershape测试、aclnn接口测试、kernel测试 - V2算子ttk、fuzz维护用例测试Pass - V3算子ttk泛化用例、Fuzz门槛用例Pass ## 文档更新 - 新增 norm/rms_norm_quant_v3/docs/aclnnRmsNormQuantV3.md 完整API文档 - 新增 norm/rms_norm_quant_v3/README.md 算子说明 - 更新 docs/zh/op_list.md 和 docs/zh/op_api_list.md 注册RmsNormQuantV3 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!4871 | 2 个月前 | |
feat: 新增RmsNormQuantV3算子,支持在RmsNormQuantV2基础上增加rstd输出 Co-authored-by: huanghaihong12138<huanghaihong4@huawei.com> # message auto-generated for no-merge-commit merge: !4871 merge RNQ into master feat: 新增RmsNormQuantV3算子,支持在RmsNormQuantV2基础上增加rstd输出 Created-by: huanghaihong Commit-by: huanghaihong12138 Merged-by: cann-robot Description: ## 描述 盘古训练场景:本PR新增RmsNormQuantV3算子,并同步支持RmsNormQuantV2算子基础上增加rstd(归一化标准差倒数)输出能力。 ### 改动原因 RmsNormQuantV2算子在执行RmsNorm+Quantize融合计算时,不支持输出中间计算产生的rstd值。在大模型训练/推理场景中,下游算子可能需要rstd用于反向传播或其他计算,需要新增此输出能力。 ### 改动方法 **1. 新增RmsNormQuantV3算子** - 完整实现包括:OpDef定义、Tiling策略、InferShape推导、Kernel实现、aclnn两段式API、op_graph原型 - 支持Ascend 950平台,输入数据类型支持FLOAT16/BF16/FLOAT32,输出量化类型支持INT8/INT4/FLOAT8_E4M3FN/FLOAT8_E5M2/HIFLOAT8,rstd输出固定为FLOAT32 - 新增 output_rstd属性控制是否输出有效rstd - V3 Tiling层复用V2的基础设施(RmsNormQuantV2CompileInfo),通过rstdFlag标志区分行为 **2. RmsNormQuantV2算子增强** - Host侧:新增rstdFlag字段和output_rstd属性读取;新增CheckOutputShape()校验rstd维度合法性;新增rstd的dtype校验(必须为FLOAT32) - Kernel侧(full_load & recompute路径):新增rstdGm GlobalTensor、outQueueRstd输出队列;在Compute流程中根据rstdFlag将rstd值通过DataCopyPad输出到GM - 重构tiling数据结构定义,从rms_norm_quant_v2_tiling.h迁移到独立的rms_norm_quant_v2_tiling_data.h,便于V3复用 **3. 文档与配置更新** - 新增docs/aclnnRmsNormQuantV3.md API文档 - 更新op_list.md和op_api_list.md注册新算子 - 更新ascendc_config.json二进制配置 ## 关联的Issue 关联Issue #2869 ## 测试 - 新增V3算子UT测试:tiling测试、infershape测试、aclnn接口测试、kernel测试 - V2算子ttk、fuzz维护用例测试Pass - V3算子ttk泛化用例、Fuzz门槛用例Pass ## 文档更新 - 新增 norm/rms_norm_quant_v3/docs/aclnnRmsNormQuantV3.md 完整API文档 - 新增 norm/rms_norm_quant_v3/README.md 算子说明 - 更新 docs/zh/op_list.md 和 docs/zh/op_api_list.md 注册RmsNormQuantV3 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!4871 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |