文件最后提交记录最后更新时间
fix chunk_gated_delta_rule example bug Co-authored-by: tangyulong6<tangyulong6@huawei.com> # message auto-generated for no-merge-commit merge: !5189 merge cgdr-docs into master fix chunk_gated_delta_rule example bug Created-by: tangyulong6 Commit-by: tangyulong6 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!518917 天前
fix chunk_gated_delta_rule example bug Co-authored-by: tangyulong6<tangyulong6@huawei.com> # message auto-generated for no-merge-commit merge: !5189 merge cgdr-docs into master fix chunk_gated_delta_rule example bug Created-by: tangyulong6 Commit-by: tangyulong6 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!518917 天前
Add ChunkGatedDeltaRule Co-authored-by: lilening<lilening@huawei.com> # message auto-generated for no-merge-commit merge: !2821 merge stage1 into master Add ChunkGatedDeltaRule Created-by: lilening Commit-by: lilening Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增算子 ChunkGatedDeltaRule ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1201 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已本地泛化测试验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28211 个月前
common目录整改 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !4870 merge feature/common_dir_fix_v2 into master common目录整改 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 本次修改对 common/ 目录进行整理,分为两个阶段: - **Phase 1**: 将 common/include/kernel/ 重命名为 common/include/op_kernel/ - **Phase 2**: 将 common/include/tiling_base/common/src/tiling_base/ 合并到 common/include/op_host/common/src/op_host/ 相应的 CMake 配置和所有 #include 路径引用已同步更新。 影响范围: - 351 个文件修改(include 路径更新) - 8 个文件重命名(tiling_base → op_host) - 2 个 CMakeLists.txt 修改 + 多个 tests 目录 CMakeLists.txt 更新 ## 关联的Issue Closes #2246 ## 测试 - 编译验证通过:bash build.sh --pkg --soc=ascend910b --ops=all_gather_matmul_v2 -j16 - 编译产物成功生成 .run 包 ## 文档更新 无 ## 类型标签 - [x] ♻️ 重构 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!487022 天前
ChunkGatedDeltaRule算子性能优化 Co-authored-by: lilening<lilening@huawei.com> # message auto-generated for no-merge-commit merge: !3547 merge stage1-new into master ChunkGatedDeltaRule算子性能优化 Created-by: Vivia Commit-by: lilening Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改chunk_gated_delta_rule算子kernel中各阶段输出改为bf16,优化流水 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#2205](https://gitcode.com/cann/ops-transformer/issues/2205) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 联调通过,本地泛化测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!354729 天前
资料 断链问题修复 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !3979 merge master into master 资料 断链问题修复 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 资料 断链问题修复 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!39791 个月前
Add ChunkGatedDeltaRule Co-authored-by: lilening<lilening@huawei.com> # message auto-generated for no-merge-commit merge: !2821 merge stage1 into master Add ChunkGatedDeltaRule Created-by: lilening Commit-by: lilening Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增算子 ChunkGatedDeltaRule ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1201 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已本地泛化测试验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28211 个月前
新增chunk_gated_delta_rule的文档 Co-authored-by: tangyulong6<tangyulong6@huawei.com> # message auto-generated for no-merge-commit merge: !4513 merge cgdr-docs into master 新增chunk_gated_delta_rule的文档 Created-by: tangyulong6 Commit-by: tangyulong6 Merged-by: cann-robot Description: ## 描述 新增chunk_gated_delta_rule算子的文档 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1201 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 attention\chunk_gated_delta_rule/README.md attention\chunk_gated_delta_rule\docs\aclnnChunkGatedDeltaRule.md attention\chunk_gated_delta_rule\examples\test_aclnn_chunk_gated_delta_rule.cpp ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!451322 天前
README.md

ChunkGatedDeltaRule

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT ×
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:完成chunk版的Gated Delta Rule计算。

  • 计算公式:

    Gated Delta Rule(门控Delta规则,GDR)是一种应用于循环神经网络的算子,也被应用于一种线性注意力机制中。在每个时间步 tt,GDR根据当前的输入 qtq_tktk_tvtv_t、上一个隐藏状态 St−1S_{t-1}、衰减系数 αt\alpha_t 以及更新强度 βt\beta_t,计算当前的注意力输出 oto_t 和新的隐藏状态 StS_t,其计算公式如下:

    St:=St−1(αt(I−βtktktT))+βtvtktT=αtSt−1+βt(vt−αtSt−1kt)ktTS_t := S_{t-1}(\alpha_t(I - \beta_t k_t k_t^T)) + \beta_t v_t k_t^T = \alpha_t S_{t-1} + \beta_t (v_t - \alpha_t S_{t-1}k_t)k_t^T

    ot:=St(qt⋅scale)o_t := S_t (q_t \cdot scale)

    其中,St−1,St∈RDv×DkS_{t-1},S_t \in \mathbb{R}^{D_v \times D_k}qt,kt∈RDkq_t, k_t \in \mathbb{R}^{D_k}vt∈RDvv_t \in \mathbb{R}^{D_v}αt∈R\alpha_t \in \mathbb{R}βt∈R\beta_t \in \mathbb{R}ot∈RDvo_t \in \mathbb{R}^{D_v}

    Chunked Gated Delta Rule是GDR的chunk版实现(参考论文),它通过将输入序列切块,实现了一定的并行效果,在长上下文场景其计算效率相对Recurrent Gated Delta Rule更高,适用于prefill阶段。输入一个长度为L的序列,该算子可以计算出每一步的输出 ot,t∈{1,2,..,L}o_t, t \in \{1, 2, .., L\} 以及最终的状态矩阵 SLS_L

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
query 输入 公式中的q。 BFLOAT16 ND
key 输入 公式中的输入k。 BFLOAT16 ND
value 输入 公式中的输入v。 BFLOAT16 ND
beta 输入 公式中的β。 BFLOAT16 ND
initial_state 输入 初始状态矩阵,公式中的输入S_0。 BFLOAT16 ND
actual_seq_lengths 输入 每个batch的序列长度。 INT32 ND
g 输入 衰减系数,公式中的α=e^g FLOAT32 ND
out 输出 每一步的attention结果,公式中的o_t。 BFLOAT16 ND
final_state 输出 最终的状态矩阵,公式中的S_L。 BFLOAT16 ND
scale_value 可选属性 query的缩放因子,公式中的scale。默认为1.0 FLOAT -

约束说明

  • 为方便理解后续排布格式(如 BNSD、TND 等),统一说明各缩写维度含义:

    • B:输入样本批量大小(Batch)。
    • T:设 LiL_i 为第 ii 个序列长度,则 T=∑iBLiT=\sum_i^B L_i 表示累积序列长度。
    • Nk:Query 和 Key 头数。
    • Nv:Value 头数。
    • Dk:Query 和 Key 隐藏层维度。
    • Dv:Value 隐藏层维度。
  • 当前仅支持 TND 布局:

    • query、key 形状:(T,Nk,Dk)(T, Nk, Dk)
    • value、out 形状:(T,Nv,Dv)(T, Nv, Dv)
    • beta、g 形状:(T,Nv)(T, Nv)
    • actual_seq_lengths 形状:(B,)(B,)
    • initial_state、final_state 形状:(B,Nv,Dv,Dk)(B, Nv, Dv, Dk)

    维度需满足以下约束:

    • 0<Nv≤64,0<Nk≤640 \lt Nv \le 64,0 \lt Nk \le 64,且 Nv mod Nk=0Nv \bmod Nk = 0
    • 0<Dv≤128,0<Dk≤1280 \lt Dv \le 128,0 \lt Dk \le 128
    • B>0,T>0B \gt 0,T \gt 0
  • 受算法数值特性限制,需满足以下取值约束,否则易出现数值溢出、精度异常:

    • 张量元素:0<query<10 < \text{query} < 1
    • 张量元素:0<key<10 < \text{key} < 1
    • 张量元素:g<0g < 0
    • 张量元素:0<beta<10 < \text{beta} < 1

调用说明

调用方式 样例代码 说明
aclnn test_aclnn_chunk_gated_delta_rul.cpp 通过aclnnChunkGatedDeltaRule调用aclnnChunkGatedDeltaRule算子