| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[QFA][Mxfp8] support FD Co-authored-by: shen_weiling<shenweiling@huawei.com> # message auto-generated for no-merge-commit merge: !12275 merge master into master [QFA][Mxfp8] support FD Created-by: shen_weiling Commit-by: shen_weiling Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> qfa Mxfp8 支持FD ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/5508 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> rdv已过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12275 | 9 天前 | |
feat(fa): flash_attn新增templateId模板参数并统一CV_RATIO架构感知 Co-authored-by: leiqingji<leiqingji@h-partners.com> # message auto-generated for no-merge-commit merge: !11248 merge feat/flash_attn_templateid into master feat(fa): flash_attn新增templateId模板参数并统一CV_RATIO架构感知 Created-by: leiqingji Commit-by: leiqingji Merged-by: cann-robot Description: ## 描述 flash_attn 引入 templateId 模板参数,将 DN/ND 模板选择从 kernel 内编译期推导改为 host 侧 tiling key 下发;同时将 CV_RATIO 统一为架构感知定义,消除各处硬编码。 ## 改动 - tiling key 新增第 5 参数 TemplateId(0=ND,1=DN):host 侧 UpdateTilingKeyTemplateId 按"无 mask 且 config∈{0,2,6}"选 DN 并同步置 dnFlag_ 供 workspace 分配;kernel 侧 if constexpr(templateId == FA_Template_DN) 分发两套模板;SEL 分两段实例化(ND 全组合 192 个,DN 仅无 mask×config{0,2,6} 共 32 个),行为与原 EnableSoftmaxDn 推导一致 - const_def.h 新增架构感知 CV_RATIO(__NPU_ARCH__==5102/9201 为 1,其余为 2);消除同 TU 重定义冲突;Align 升级 constexpr 支持 buffer 编译期定容(对存量运行时调用透明) - FD block 的 UB BASE 偏移改为由 kernel 侧传入(VecFaBlockType::UB_MM_RES_TOTAL_BYTES),消除 FD/FA 两侧对 mmRes 区域大小的重复推导(原 FD 用 dVBaseSize、FA 用 dBaseSize 判断份数,D≠DV 时会漂移) - vec block 的 softmax sum/max/exp 与 lseOut buffer 按 mBaseSize/CV_RATIO 推导定容(覆盖 actVecMSize×fp32 块对齐的最坏用量);actVecMSize 计算去除硬编码 2 - FaTilingInfo 默认 npuArch_ 改为 DAV_RESV 哨兵值,避免未解析时误判为 3510 ## 关联的Issue #4944 ## 测试 - bash build.sh --pkg --soc=ascend950 --ops=flash_attn 全量编译通过(224 变体×2 dtype,产物核验 ND=192 + DN=32,DN 均为无 mask×config∈{0,2,6}) - --tiling_key=67108864,67239936 定点编译通过 - 全量编译通过(公共头 CV_RATIO/Align 变更跨算子回归) ## 类型标签 - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11248 | 20 天前 | |
MicroAPI替换为Reg(attention) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !11128 merge fix_3 into master MicroAPI替换为Reg(attention) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 关联的Issue 关联Issue https://gitcode.com/cann/ops-transformer/issues/4908 ## 描述 CANN 头文件中 MicroAPI 是 Reg 命名空间的别名(impl/basic_api/kernel_macros.h 中定义 namespace MicroAPI = Reg;,仅在 __NPU_ARCH__ 为 3510/5102/3003/3113 时生效)。随着 CANN 版本演进,官方推荐直接使用 Reg 命名空间。 本 PR 将 attention 目录算子源码中的 MicroAPI 统一替换为 Reg(共 191 个文件),包括: - MicroAPI::RegTensor → Reg::RegTensor、MicroAPI::DataCopy → Reg::DataCopy 等 API 调用 - using namespace MicroAPI; → using namespace Reg; - namespace MicroAPI = AscendC::MicroAPI; → namespace Reg = AscendC::Reg; ### 提交结构(两笔) | 提交 | 内容 | |---|---| | 第1笔 | 纯文本替换 MicroAPI → Reg(191 文件,12443 增/12443 删,逐行校验一一对应) | | 第2笔 | git pc HEAD~1 补查后 pre-commit 自动修复(clang-format 因 Reg 缩短行宽对 126 个文件重排,2993 增/3818 删) | ### 改动说明 - **纯文本等价替换**,不改变任何计算逻辑和函数签名;第2笔仅为 clang-format 空白重排,无语义变化 - 替换代码位于 arch35/arch38 路径或 __NPU_ARCH__ == 3510 宏保护内,仅 A5(及 Regbase 新核心)生效;A2/A3(arch22,Membase API)不受影响 - examples、experimental 目录不在本次范围;mc2 已提 #11112;moe/gmm/mhc/posembedding/ffn 后续提交;mamba 待 UT 修复后单独提交 ### 验证 - 逐行脚本校验:第1笔 diff 中 removed/added 行数一致,且每对行满足 新行 == 旧行.replace('MicroAPI', 'Reg') - pre-commit 全量 hook 收敛(trailing-whitespace / EOF / clang-format 均 Passed) - OAT 合规扫描 191 个文件全部通过(bash scripts/oat_check.sh All checks passed) - 语义等价性由 CANN 头文件中的命名空间别名定义保证 See merge request: cann/ops-transformer!11128 | 26 天前 | |
MicroAPI替换为Reg(attention) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !11128 merge fix_3 into master MicroAPI替换为Reg(attention) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 关联的Issue 关联Issue https://gitcode.com/cann/ops-transformer/issues/4908 ## 描述 CANN 头文件中 MicroAPI 是 Reg 命名空间的别名(impl/basic_api/kernel_macros.h 中定义 namespace MicroAPI = Reg;,仅在 __NPU_ARCH__ 为 3510/5102/3003/3113 时生效)。随着 CANN 版本演进,官方推荐直接使用 Reg 命名空间。 本 PR 将 attention 目录算子源码中的 MicroAPI 统一替换为 Reg(共 191 个文件),包括: - MicroAPI::RegTensor → Reg::RegTensor、MicroAPI::DataCopy → Reg::DataCopy 等 API 调用 - using namespace MicroAPI; → using namespace Reg; - namespace MicroAPI = AscendC::MicroAPI; → namespace Reg = AscendC::Reg; ### 提交结构(两笔) | 提交 | 内容 | |---|---| | 第1笔 | 纯文本替换 MicroAPI → Reg(191 文件,12443 增/12443 删,逐行校验一一对应) | | 第2笔 | git pc HEAD~1 补查后 pre-commit 自动修复(clang-format 因 Reg 缩短行宽对 126 个文件重排,2993 增/3818 删) | ### 改动说明 - **纯文本等价替换**,不改变任何计算逻辑和函数签名;第2笔仅为 clang-format 空白重排,无语义变化 - 替换代码位于 arch35/arch38 路径或 __NPU_ARCH__ == 3510 宏保护内,仅 A5(及 Regbase 新核心)生效;A2/A3(arch22,Membase API)不受影响 - examples、experimental 目录不在本次范围;mc2 已提 #11112;moe/gmm/mhc/posembedding/ffn 后续提交;mamba 待 UT 修复后单独提交 ### 验证 - 逐行脚本校验:第1笔 diff 中 removed/added 行数一致,且每对行满足 新行 == 旧行.replace('MicroAPI', 'Reg') - pre-commit 全量 hook 收敛(trailing-whitespace / EOF / clang-format 均 Passed) - OAT 合规扫描 191 个文件全部通过(bash scripts/oat_check.sh All checks passed) - 语义等价性由 CANN 头文件中的命名空间别名定义保证 See merge request: cann/ops-transformer!11128 | 26 天前 | |
MicroAPI替换为Reg(attention) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !11128 merge fix_3 into master MicroAPI替换为Reg(attention) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 关联的Issue 关联Issue https://gitcode.com/cann/ops-transformer/issues/4908 ## 描述 CANN 头文件中 MicroAPI 是 Reg 命名空间的别名(impl/basic_api/kernel_macros.h 中定义 namespace MicroAPI = Reg;,仅在 __NPU_ARCH__ 为 3510/5102/3003/3113 时生效)。随着 CANN 版本演进,官方推荐直接使用 Reg 命名空间。 本 PR 将 attention 目录算子源码中的 MicroAPI 统一替换为 Reg(共 191 个文件),包括: - MicroAPI::RegTensor → Reg::RegTensor、MicroAPI::DataCopy → Reg::DataCopy 等 API 调用 - using namespace MicroAPI; → using namespace Reg; - namespace MicroAPI = AscendC::MicroAPI; → namespace Reg = AscendC::Reg; ### 提交结构(两笔) | 提交 | 内容 | |---|---| | 第1笔 | 纯文本替换 MicroAPI → Reg(191 文件,12443 增/12443 删,逐行校验一一对应) | | 第2笔 | git pc HEAD~1 补查后 pre-commit 自动修复(clang-format 因 Reg 缩短行宽对 126 个文件重排,2993 增/3818 删) | ### 改动说明 - **纯文本等价替换**,不改变任何计算逻辑和函数签名;第2笔仅为 clang-format 空白重排,无语义变化 - 替换代码位于 arch35/arch38 路径或 __NPU_ARCH__ == 3510 宏保护内,仅 A5(及 Regbase 新核心)生效;A2/A3(arch22,Membase API)不受影响 - examples、experimental 目录不在本次范围;mc2 已提 #11112;moe/gmm/mhc/posembedding/ffn 后续提交;mamba 待 UT 修复后单独提交 ### 验证 - 逐行脚本校验:第1笔 diff 中 removed/added 行数一致,且每对行满足 新行 == 旧行.replace('MicroAPI', 'Reg') - pre-commit 全量 hook 收敛(trailing-whitespace / EOF / clang-format 均 Passed) - OAT 合规扫描 191 个文件全部通过(bash scripts/oat_check.sh All checks passed) - 语义等价性由 CANN 头文件中的命名空间别名定义保证 See merge request: cann/ops-transformer!11128 | 26 天前 | |
完成(attention 其余 / mc2 / posembedding)重名头文件整改 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10238 merge clear_last_h_attn into master 完成(attention 其余 / mc2 / posembedding)重名头文件整改 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按仓内重名头文件规范,完成 **生产侧其余**( attention 除 chunk_kda_fwd 外 / mc2 / posembedding)剩余同名头整改,消除该范围内单仓 basename 冲突。 **方法**:对照 clear-repeat-h 仓内规则,优先只改内部/次要副本(保留对外公开名与主路径原名),并同步更新 #include、\file、必要 include guard,以及 classify_rule.yaml 中已改名路径。无业务逻辑与格式化变更。include 按路径解析,避免改到 3rdparty/catlass、FIA/QFA 自己的 base_checker.h。 ### 仓内分类规则(clear-repeat-h) 对每个重名头文件,先判断 **内容是否相同**、**是否对外/包间头文件**,再套用: | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 1.1 | 内容不同,均为内部头文件 | 是 | 建议加模块前缀 / arch 后缀改名 | | 1.2 | 内容相同,均为内部头文件 | 是 | 只保留一份;**改 include 路径,禁止软链接**(本批对 arch 等同内容组改为 *_archXX.h 消歧,不删文件,避免相对 include 误解析) | | 1.3 | 部分内部、部分对外/包间 | 是 | **只改内部** 那份 | | 1.4 | 内容相同,均为对外/包间 | 否(兼容期) | 可用软链接保留多路径 | | 1.5 | 内容不同,均为对外/包间 | 兼容期内可暂缓 | 兼容期结束后改名 | | 1.6 | 其他 | 原则上不允许重名 | 特例需评审 | **原则**:除 1.4 外,单仓内原则上不允许重名头文件。 本分支实际用到:**1.1**、**1.2(同内容改 arch / 算子后缀,不删文件)**、**1.3(只改 examples 内部副本)**。 ### 本批不整改(兼容期 / 产物) | 文件 | 规则 | 说明 | |------|------|------| | 两份对外 aclnn_rotary_position_embedding.h | 1.4 | 内容相同且均为对外公开;只改 examples 内部副本为 *_example.h | | aclnn_fused_infer_attention_score_v4.h | 1.4 | 均为对外,兼容期不改 | | aclnn_all_gather_matmul_v2.h、aclnn_nsa_compress_attention_infer.h | 1.5 | 均为对外且内容不同,兼容期暂缓 | | aclnn_common.h | — | torch_extension / build 产物,不改 | ### 范围与结果 | 范围 | 本分支状态 | |------|------------| | attention/(除 chunk_kda_fwd)checkers / BSA TLA / FIA arch / common/pse 等 | 完成 | | mc2/3rd、mc2/matmul_all_reduce | 完成 | | posembedding examples(1.3) | 完成 | | classify_rule.yaml 路径同步 | 完成 | ### 命名约定 | 场景 | 约定 | |------|------| | arch 分档 | *_arch22.h / *_arch35.h / *_arch38.h | | flash_attn / sparse_flash_mla checkers | *_flash_attn.h / *_sparse_flash_mla.h | | BSA TLA | *_bsa.hpp | | 跨组件 mc2 3rd | mc2_3rd_* | | 1.3 examples aclnn | 保留 op_api 对外名;examples → *_example.h | ### 本分支变更统计(相对 50d31a480) | 项 | 数量 | |----|-----:| | rename | 36 | | 修改(含 include / \file / guard / yaml) | 82 | | **合计** | **118**(118 files changed, 241 insertions(+), 241 deletions(-)) | 主要目录(按变更文件数): | 目录 | 约计 | |------|-----:| | attention/common | 30 | | attention/sparse_flash_mla | 20 | | attention/block_sparse_attention | 19 | | attention/flash_attn | 18 | | attention/fused_infer_attention_score | 14 | | mc2/matmul_all_reduce、mc2/3rd | 4 + 3 | | posembedding examples、classify_rule.yaml、若干 grad / sparse 入口 | 余量 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10238 | 1 个月前 | |
FIA 伪量化 PA 场景支持 kv 及 kv_scale 0 轴 1 轴非连续 Co-authored-by: Junren6415<joestranberg99@gmail.com> # message auto-generated for no-merge-commit merge: !10263 merge dev_noncontinue into master FIA 伪量化 PA 场景支持 kv 及 kv_scale 0 轴 1 轴非连续 Created-by: Junren6415 Commit-by: Junren6415 Merged-by: cann-robot Description: ## 描述 推理场景(FusedInferAttentionScore)的伪量化 PA(PageAttention)目前要求 KV cache 及其反量化参数必须以连续布局传入。实际部署中,KV cache 是多轮写入的长驻tensor,随着预算调度、显存整理,用户侧很容易拿到带 padding 的非连续视图;反量化 scale/offset 也常是同一块物理内存上切出来的非连续切片。此前这些非连续输入要么被框架强制拷贝成连续(多一次全量数据搬运),要么直接不可用,与长 cache、大 batch 的推理成本诉求相悖。 本 PR 让 FIA 伪量化 PA 场景接受非连续输入,用户传入的 stride 会被完整保留并送达到 kernel 侧用于寻址,免除强制连续化带来的拷贝: - **KV cache(INT8/INT4)**:支持 BNBD、BBH、NZ 三种 PA 布局在 0/1 轴非连续,kernel 按 stride 跳过 padding 直接寻址 - **反量化 scale/offset**:在 per-token-pa(mode4)/ per-token-head-pa(mode5)两种模式下支持非连续,且 scale 与 offset 各自持有独立 stride 通道,二者可以不同布局 - **场景约束**:非 PA 场景、mode0-3 的 scale/offset 无 Bn 轴,非连续输入会被 checker 明确拦截并给出可读的报错,不会静默走错数据 其中 INT4 以 INT32 打包存储,口径转换阶段 stride 会被重算成连续值导致非连续信息丢失,本 PR 一并修复,保证 INT4 的非连续 stride 与 shape 同口径送达。 ## 关联的Issue 关联 issue #4720 ## 测试 - 新增 STC 用例 35 个:覆盖 INT8/INT4/FP8E4M3 三种 dtype × mode0-5 × BNBD/BBH/NZ 布局,含 FlashDecode 长序列场景,以及 scale 与 offset 各自独立非连续的交叉验证用例 - 全量 STC 结果:33 passed / 2 failed(2 个失败为测试框架对特定 error case 报错形态的既有识别缺陷,与本特性无关,历史分支上即如此) - 所有参与精度比对的用例 max_err=0(非连续 actual 与连续 reference 逐位一致) - 补充验证“连续 KV + 非连续 scale/offset”组合:stride 送达 tiling 层、checker 按 mode/轴规则放行,精度逐位一致 - 连续基线回归:原有连续路径行为无变化 ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10263 | 29 天前 | |
pre-commit修复attention目录.h/.hpp历史格式问题(第1批) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !4878 merge compile into master pre-commit修复attention目录.h/.hpp历史格式问题(第1批) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 关联的Issue 关联Issue https://gitcode.com/cann/ops-transformer/issues/4850 ## 描述 对仓内算子源码提前做 pre-commit 历史格式问题清理,为后续功能改动(如 Regbase API 替换等)扫清钩子障碍,避免后续 PR 因格式问题被大面积格式化污染 diff。 处理方式: find <目录> -type f \( -name '*.h' -o -name '*.hpp' \) | xargs pre-commit run --files,多轮执行直到所有 hook 收敛(无 Failed / 无自动修复)。 修复内容(仅格式,不改任何代码语义): - 尾随空白(trailing whitespace) - 文件末尾换行(end of file) - clang-format 代码重排(换行、缩进、对齐,遵循仓内 .clang-format) ### 排除范围(不做格式化) - *_def.cpp 算子定义文件(排版由开发者自行维护,另见 PR #11041) - */op_api/aclnn*.h、*/op_graph/*_proto.h、*/op_host/op_api/aclnn*.h 接口/原型头文件(排版由开发者自行维护) - mamba/ 目录(该目录 causal_conv1d 算子 UT 上游基线存在失败,见 Issue #4840,本批不涉及) - examples/、experimental/ 目录 ### PR 拆分说明 全仓 .h/.hpp 清理共 2362 个文件,按场景目录拆分为 6 个 PR(分支不同、内容互不重叠,可独立 review 合入): | PR | 分支 | 范围 | |---|---|---| | #4878 | compile | attention 第1批(按算子字母序前段) | | #10422 | graph | attention 第2批(按算子字母序中段) | | #9331 | test | attention 第3批(按算子字母序后段) | | #10991 | fix | mc2 | | #11020 | fix_2 | moe、gmm | | #11021 | fix_3 | posembedding、mhc、ffn、common、tests、torch_extension | ## 测试 - 纯格式化改动:不改变任何代码语义,逐文件 diff 均为空白/换行/clang-format 重排 - pre-commit 全量 hook 收敛验证:多轮执行后 trailing-whitespace / end-of-file-fixer / clang-format 均 Passed - 建议合入前对相关算子做一次编译验证 See merge request: cann/ops-transformer!4878 | 27 天前 | |
完成(attention 其余 / mc2 / posembedding)重名头文件整改 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10238 merge clear_last_h_attn into master 完成(attention 其余 / mc2 / posembedding)重名头文件整改 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按仓内重名头文件规范,完成 **生产侧其余**( attention 除 chunk_kda_fwd 外 / mc2 / posembedding)剩余同名头整改,消除该范围内单仓 basename 冲突。 **方法**:对照 clear-repeat-h 仓内规则,优先只改内部/次要副本(保留对外公开名与主路径原名),并同步更新 #include、\file、必要 include guard,以及 classify_rule.yaml 中已改名路径。无业务逻辑与格式化变更。include 按路径解析,避免改到 3rdparty/catlass、FIA/QFA 自己的 base_checker.h。 ### 仓内分类规则(clear-repeat-h) 对每个重名头文件,先判断 **内容是否相同**、**是否对外/包间头文件**,再套用: | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 1.1 | 内容不同,均为内部头文件 | 是 | 建议加模块前缀 / arch 后缀改名 | | 1.2 | 内容相同,均为内部头文件 | 是 | 只保留一份;**改 include 路径,禁止软链接**(本批对 arch 等同内容组改为 *_archXX.h 消歧,不删文件,避免相对 include 误解析) | | 1.3 | 部分内部、部分对外/包间 | 是 | **只改内部** 那份 | | 1.4 | 内容相同,均为对外/包间 | 否(兼容期) | 可用软链接保留多路径 | | 1.5 | 内容不同,均为对外/包间 | 兼容期内可暂缓 | 兼容期结束后改名 | | 1.6 | 其他 | 原则上不允许重名 | 特例需评审 | **原则**:除 1.4 外,单仓内原则上不允许重名头文件。 本分支实际用到:**1.1**、**1.2(同内容改 arch / 算子后缀,不删文件)**、**1.3(只改 examples 内部副本)**。 ### 本批不整改(兼容期 / 产物) | 文件 | 规则 | 说明 | |------|------|------| | 两份对外 aclnn_rotary_position_embedding.h | 1.4 | 内容相同且均为对外公开;只改 examples 内部副本为 *_example.h | | aclnn_fused_infer_attention_score_v4.h | 1.4 | 均为对外,兼容期不改 | | aclnn_all_gather_matmul_v2.h、aclnn_nsa_compress_attention_infer.h | 1.5 | 均为对外且内容不同,兼容期暂缓 | | aclnn_common.h | — | torch_extension / build 产物,不改 | ### 范围与结果 | 范围 | 本分支状态 | |------|------------| | attention/(除 chunk_kda_fwd)checkers / BSA TLA / FIA arch / common/pse 等 | 完成 | | mc2/3rd、mc2/matmul_all_reduce | 完成 | | posembedding examples(1.3) | 完成 | | classify_rule.yaml 路径同步 | 完成 | ### 命名约定 | 场景 | 约定 | |------|------| | arch 分档 | *_arch22.h / *_arch35.h / *_arch38.h | | flash_attn / sparse_flash_mla checkers | *_flash_attn.h / *_sparse_flash_mla.h | | BSA TLA | *_bsa.hpp | | 跨组件 mc2 3rd | mc2_3rd_* | | 1.3 examples aclnn | 保留 op_api 对外名;examples → *_example.h | ### 本分支变更统计(相对 50d31a480) | 项 | 数量 | |----|-----:| | rename | 36 | | 修改(含 include / \file / guard / yaml) | 82 | | **合计** | **118**(118 files changed, 241 insertions(+), 241 deletions(-)) | 主要目录(按变更文件数): | 目录 | 约计 | |------|-----:| | attention/common | 30 | | attention/sparse_flash_mla | 20 | | attention/block_sparse_attention | 19 | | attention/flash_attn | 18 | | attention/fused_infer_attention_score | 14 | | mc2/matmul_all_reduce、mc2/3rd | 4 + 3 | | posembedding examples、classify_rule.yaml、若干 grad / sparse 入口 | 余量 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10238 | 1 个月前 | |
FIA 伪量化 PA 场景支持 kv 及 kv_scale 0 轴 1 轴非连续 Co-authored-by: Junren6415<joestranberg99@gmail.com> # message auto-generated for no-merge-commit merge: !10263 merge dev_noncontinue into master FIA 伪量化 PA 场景支持 kv 及 kv_scale 0 轴 1 轴非连续 Created-by: Junren6415 Commit-by: Junren6415 Merged-by: cann-robot Description: ## 描述 推理场景(FusedInferAttentionScore)的伪量化 PA(PageAttention)目前要求 KV cache 及其反量化参数必须以连续布局传入。实际部署中,KV cache 是多轮写入的长驻tensor,随着预算调度、显存整理,用户侧很容易拿到带 padding 的非连续视图;反量化 scale/offset 也常是同一块物理内存上切出来的非连续切片。此前这些非连续输入要么被框架强制拷贝成连续(多一次全量数据搬运),要么直接不可用,与长 cache、大 batch 的推理成本诉求相悖。 本 PR 让 FIA 伪量化 PA 场景接受非连续输入,用户传入的 stride 会被完整保留并送达到 kernel 侧用于寻址,免除强制连续化带来的拷贝: - **KV cache(INT8/INT4)**:支持 BNBD、BBH、NZ 三种 PA 布局在 0/1 轴非连续,kernel 按 stride 跳过 padding 直接寻址 - **反量化 scale/offset**:在 per-token-pa(mode4)/ per-token-head-pa(mode5)两种模式下支持非连续,且 scale 与 offset 各自持有独立 stride 通道,二者可以不同布局 - **场景约束**:非 PA 场景、mode0-3 的 scale/offset 无 Bn 轴,非连续输入会被 checker 明确拦截并给出可读的报错,不会静默走错数据 其中 INT4 以 INT32 打包存储,口径转换阶段 stride 会被重算成连续值导致非连续信息丢失,本 PR 一并修复,保证 INT4 的非连续 stride 与 shape 同口径送达。 ## 关联的Issue 关联 issue #4720 ## 测试 - 新增 STC 用例 35 个:覆盖 INT8/INT4/FP8E4M3 三种 dtype × mode0-5 × BNBD/BBH/NZ 布局,含 FlashDecode 长序列场景,以及 scale 与 offset 各自独立非连续的交叉验证用例 - 全量 STC 结果:33 passed / 2 failed(2 个失败为测试框架对特定 error case 报错形态的既有识别缺陷,与本特性无关,历史分支上即如此) - 所有参与精度比对的用例 max_err=0(非连续 actual 与连续 reference 逐位一致) - 补充验证“连续 KV + 非连续 scale/offset”组合:stride 送达 tiling 层、checker 按 mode/轴规则放行,精度逐位一致 - 连续基线回归:原有连续路径行为无变化 ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10263 | 29 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 天前 | ||
| 20 天前 | ||
| 26 天前 | ||
| 26 天前 | ||
| 26 天前 | ||
| 1 个月前 | ||
| 29 天前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 29 天前 |