文件最后提交记录最后更新时间
V版本资料修改&&rgdr 资料修改 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5636 merge master into master V版本资料修改&&rgdr 资料修改 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 公共资料: V版本资料修改 rgdr 资料修改 qk tensor值域为(-1,1) ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2552 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!56369 天前
renew recurrent_gated_delta_rule docs Co-authored-by: aiyang2<aiyang2@huawei.com> # message auto-generated for no-merge-commit merge: !4306 merge master into master renew recurrent_gated_delta_rule docs Created-by: aiyang4 Commit-by: aiyang2 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新recurrent_gated_delta_rule example文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/1933 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!43061 个月前
recurrent_gated_delta_rule support state non contiguous Co-authored-by: tangyulong6<tangyulong6@huawei.com> # message auto-generated for no-merge-commit merge: !5865 merge rgdr into master recurrent_gated_delta_rule support state non contiguous Created-by: tangyulong6 Commit-by: tangyulong6 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> recurrent_gated_delta_rule支持state前两轴(BlockNum, nv)非连续。A3实现。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 在原有测试用例上叠加state非连续测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!586523 小时前
recurrent_gated_delta_rule support state non contiguous Co-authored-by: tangyulong6<tangyulong6@huawei.com> # message auto-generated for no-merge-commit merge: !5865 merge rgdr into master recurrent_gated_delta_rule support state non contiguous Created-by: tangyulong6 Commit-by: tangyulong6 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> recurrent_gated_delta_rule支持state前两轴(BlockNum, nv)非连续。A3实现。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 在原有测试用例上叠加state非连续测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!586523 小时前
recurrent_gated_delta_rule support state non contiguous Co-authored-by: tangyulong6<tangyulong6@huawei.com> # message auto-generated for no-merge-commit merge: !5865 merge rgdr into master recurrent_gated_delta_rule support state non contiguous Created-by: tangyulong6 Commit-by: tangyulong6 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> recurrent_gated_delta_rule支持state前两轴(BlockNum, nv)非连续。A3实现。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 在原有测试用例上叠加state非连续测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!586523 小时前
fix(gated_delta_rule): rename global test variables to avoid ODR violation in opapi UT Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5747 merge fix/gated-delta-rule-opapi-ut-rename into master fix(gated_delta_rule): rename global test variables to avoid ODR violation in opapi UT Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 recurrent_gated_delta_rule 与 chunk_gated_delta_rule 的 opapi UT 文件中均声明了同名全局变量 test,联合编译时触发 ODR(One Definition Rule)冲突,导致链接失败(multiple definition of test)。 ## 改动 - 将 recurrent_gated_delta_rule opapi UT 中 test 重命名为 rgdr_test - 将 chunk_gated_delta_rule opapi UT 中 test 重命名为 cgdr_test - 变量名带算子缩写前缀,避免不同算子 UT 之间命名冲突,不影响单个算子独立编译行为 ## 关联的Issue #2596 ## 测试 - bash build.sh -u --opapi --ops=recurrent_gated_delta_rule,chunk_gated_delta_rule:42 tests PASSED(chunk 20 recurrent 22) - bash build.sh -u --opapi --ops=recurrent_gated_delta_rule:22 tests PASSED(单独编译不受影响) ## 类型标签 - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!57477 天前
匹配最新cann版本,上线新版本attention/ffn/moe/posembedding算子 Co-authored-by: huangchuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !538 merge master into master 匹配最新cann版本,上线新版本attention/ffn/moe/posembedding算子 Created-by: huang-chuhong Commit-by: huangchuhong Merged-by: cann-robot Description: ## 描述 transformer 同步算子最新开发,涉及attention/ffn/moe/posembedding ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/315 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5385 个月前
doc Tools扫描错误修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !3348 merge master into master doc Tools扫描错误修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools扫描错误修改 See merge request: cann/ops-transformer!33482 个月前
README.md

RecurrentGatedDeltaRule

产品支持情况

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

功能说明

  • 算子功能:完成变步长的Recurrent Gated Delta Rule计算。

  • 计算公式:

    Recurrent Gated Delta Rule(循环门控Delta规则,RGDR)是一种应用于循环神经网络的算子,也被应用于一种线性注意力机制中。 在每个时间步 tt,网络根据当前的输入 qtq_tktk_tvtv_t 和上一个隐藏状态 St−1S_{t-1},计算当前的输出 oto_t 和新的隐藏状态 StS_t。 在这个过程中,门控单元会决定有多少新信息存入隐藏状态,以及有多少旧信息需要被遗忘。

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

    ot:=Stqtdko_t := \frac{S_t q_t}{\sqrt{d_k}}

    其中,St−1,St∈Rdv×dkS_{t-1},S_t \in R^{d_v \times d_k}qt,kt∈Rdkq_t, k_t \in R^{d_k}vt∈Rdvv_t \in R^{d_v}αt∈R\alpha_t \in Rαk∈Rdk\alpha_k \in R^{d_k}βt∈R\beta_t \in Ro∈Rdvo \in R^{d_v}

参数说明

参数名 输入/输出 描述 数据类型 数据格式
query 输入 公式中的q。 BFLOAT16 ND
key 输入 公式中的输入k。 BFLOAT16 ND
value 输入 公式中的输入v。 BFLOAT16 ND
beta 输入 公式中的β。 BFLOAT16 ND
state 输入&输出 状态矩阵,公式中的输入S。 BFLOAT16 ND
g 输入 衰减系数,公式中的α=e^g FLOAT32 ND
gk 输入 衰减系数,公式中的αk=e^gk FLOAT32 ND
out 输出 公式中的o。 BFLOAT16 ND

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_recurrent_gated_delta_rul.cpp 通过aclnnRecurrentGatedDeltaRule调用aclnnRecurrentGatedDeltaRule算子