文件最后提交记录最后更新时间
rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Co-authored-by: alfengyuan<2640706467@qq.com> # message auto-generated for no-merge-commit merge: !5055 merge master into master rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ROPE算子支持TND格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2302 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!505518 天前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
修改版权头 Co-authored-by: yayahello<zhaopenglei@hisilicon.com> # message auto-generated for no-merge-commit merge: !3171 merge master into master 修改版权头 Created-by: yayahello Commit-by: yayahello Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 版权声明不标准,修改为标准头 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1100](https://gitcode.com/cann/ops-transformer/issues/1100) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述: See merge request: cann/ops-transformer!31712 个月前
rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Co-authored-by: alfengyuan<2640706467@qq.com> # message auto-generated for no-merge-commit merge: !5055 merge master into master rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ROPE算子支持TND格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2302 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!505518 天前
rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Co-authored-by: alfengyuan<2640706467@qq.com> # message auto-generated for no-merge-commit merge: !5055 merge master into master rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ROPE算子支持TND格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2302 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!505518 天前
fix(rotary_position_embedding): fix uint16 overflow caused by oversized stride on 310p Co-authored-by: yu-xinjie62<yuxinjie1@huawei.com> # message auto-generated for no-merge-commit merge: !2536 merge bugfix/rope_310p into master fix(rotary_position_embedding): fix uint16 overflow caused by oversized stride on 310p Created-by: yu-xinjie62 Commit-by: yu-xinjie62 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 在Ascend 310P平台上,RoPE算子当输入stride参数数值超过uint16类型最大值(65535)时,会发生整数溢出,引发算子计算结果异常、运行崩溃等问题。 算子底层实现中,stride相关参数采用uint16类型进行存储与地址偏移计算;当业务场景下stride数值超出65535时,会发生无符号整数回卷溢出,导致计算逻辑错误,最终引发算子输出异常。 修复方案: 1. 算子逻辑修复:针对Ascend 310P平台,新增stride参数范围校验与溢出防护逻辑,拦截超出uint16取值范围的非法输入,避免异常数值进入底层计算; 2. 文档补充:在算子官方说明资料中,新增Ascend 310P平台下的stride参数取值范围限制条件,明确使用约束。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1392](https://gitcode.com/cann/ops-transformer/issues/1392) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 【功能验证】在310P平台完成全场景测试:uint16合法范围内输入计算正常、临界值(65535)无异常、超范围输入可触发明确报错,无溢出问题; - 【兼容性验证】原有合法输入场景下,算子计算精度、性能无劣化,与修复前结果完全一致; - 【文档验证】补充的限制条件已同步至对应资料,描述准确无歧义,符合算子文档规范。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnRotaryPositionEmbedding.md文档。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!25362 个月前
[aicore]整改 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> # message auto-generated for no-merge-commit merge: !1841 merge master into master [aicore]整改 Created-by: wuxiyuan Commit-by: wuxiyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 编译器内部已经定义了__aicore__,算子侧需要去掉这个标识 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!18412 个月前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Co-authored-by: alfengyuan<2640706467@qq.com> # message auto-generated for no-merge-commit merge: !5055 merge master into master rotary_position_embedding, rotary_position_embedding_grad support TND for Ascend950 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ROPE算子支持TND格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2302 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!505518 天前
README.md

RotaryPositionEmbedding

产品支持情况

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

功能说明

  • 算子功能:执行单路旋转位置编码计算。

  • 计算公式

    • Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品:

    (1)half模式(mode等于0):

    x1=x[...,:x.shape[−1]//2]x1 = x[..., : x.shape[-1] // 2]

    x2=x[...,x.shape[−1]//2:]x2 = x[..., x.shape[-1] // 2 :]

    x_rotate=torch.cat((−x2,x1),dim=−1)x\_rotate = torch.cat((-x2, x1), dim=-1)

    y=x∗cos+x_rotate∗siny = x * cos + x\_rotate * sin

    (2)interleave模式(mode等于1):

    x1=x[...,::2].view(−1,1)x1 = x[..., ::2].view(-1, 1)

    x2=x[...,1::2].view(−1,1)x2 = x[..., 1::2].view(-1, 1)

    x_rotate=torch.cat((−x2,x1),dim=−1).view(x.shape[0],x.shape[1],x.shape[2],x.shape[3])x\_rotate = torch.cat((-x2, x1), dim=-1).view(x.shape[0], x.shape[1], x.shape[2], x.shape[3])

    y=x∗cos+x_rotate∗siny = x * cos + x\_rotate * sin

    • Ascend 950PR/Ascend 950DT:

    (3)quarter模式(mode等于2):

    x1=x[...,:x.shape[−1]//4]x1 = x[..., : x.shape[-1] // 4]

    x2=x[...,x.shape[−1]//4:x.shape[−1]//2]x2 = x[..., x.shape[-1] // 4 : x.shape[-1] // 2]

    x3=x[...,x.shape[−1]//2:x.shape[−1]//4∗3]x3 = x[..., x.shape[-1] // 2 : x.shape[-1] // 4 * 3]

    x4=x[...,x.shape[−1]//4∗3:]x4 = x[..., x.shape[-1] // 4 * 3 :]

    x_rotate=torch.cat((−x2,x1,−x4,x3),dim=−1)x\_rotate = torch.cat((-x2, x1, -x4, x3), dim=-1)

    y=x∗cos+x_rotate∗siny = x * cos + x\_rotate * sin

    (4)interleave-half模式(mode等于3),该模式会先将奇数位的输入抽取到前半部分,将偶数位的输入抽取到后半部分,再进行half处理:

    x1=x[...,::2]x1 = x[..., ::2]

    x2=x[...,1::2]x2 = x[..., 1::2]

    x_part1=torch.cat((x1,x2),dim=−1)x\_part1 = torch.cat((x1, x2), dim=-1)

    x_part2=torch.cat((−x2,x1),dim=−1)x\_part2 = torch.cat((-x2, x1), dim=-1)

    y=x_part1∗cos+x_part2∗siny = x\_part1 * cos + x\_part2 * sin

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 公式中的x,待执行旋转位置编码的张量。 BFLOAT16、FLOAT16、FLOAT32 ND
cos 输入 公式中的cos,参与计算的位置编码张量。 BFLOAT16、FLOAT16、FLOAT32 ND
sin 输入 公式中的sin,参与计算的位置编码张量。 BFLOAT16、FLOAT16、FLOAT32 ND
mode 输入 公式中的旋转模式。 INT64 -
out 输出 公式中的y,旋转位置编码结果张量。 BFLOAT16、FLOAT16、FLOAT32 ND
  • Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。

约束说明

  • Ascend 950PR/Ascend 950DT: 输入张量x支持BNSD、BSND、SBND、TND排布。各参数的shape约束可以描述如下:

    • 输入张量x、cos、sin及输出张量y的最后一维大小必须相同,且小于等于1024。对于half、interleave和interleave-half模式,最后一维必须能被2整除,对于quarter模式,最后一维必须能被4整除。
    • 输入张量x和输出张量y的shape必须完全相同。
    • 输入张量cos和sin的shape必须完全相同,cos和sin的shape需要与x满足broadcast关系,且广播后的shape必须等于x的shape。
    • 当x为TND时,cos、sin支持T1D、TND。
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品:

    输入张量x支持BNSD、BSND、SBND排布。 输入张量x、cos、sin及输出张量y的D维度大小必须相同,满足D<896,且必须为2的倍数。 输入张量x和输出张量y的shape必须完全相同。 输入张量cos和sin的shape必须完全相同.

    • half模式:
      • B,N < 1000;
      • 当x为BNSD时,cos、sin支持11SD、B1SD、BNSD
      • 当x为BSND时,cos、sin支持1S1D、BS1D、BSND
      • 当x为SBND时,cos、sin支持S11D、SB1D、SBND
    • interleave模式:
      • B * N < 1000
      • 当x为BNSD时,cos、sin支持11SD
      • 当x为BSND时,cos、sin支持1S1D
      • 当x为SBND时,cos、sin支持S11D

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_rotary_position_embedding 通过aclnnRotaryPositionEmbedding接口方式调用RotaryPositionEmbedding算子。