文件最后提交记录最后更新时间
add fused operator RotaryStride Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !2888 merge feat/dev-RotaryStride into master add fused operator RotaryStride Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增带跨步的旋转位置编码算子RotaryStride ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1207](https://gitcode.com/cann/ops-transformer/issues/1207) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了BF16和FP16输入下和CPU的精度对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28881 个月前
add fused operator RotaryStride Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !2888 merge feat/dev-RotaryStride into master add fused operator RotaryStride Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增带跨步的旋转位置编码算子RotaryStride ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1207](https://gitcode.com/cann/ops-transformer/issues/1207) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了BF16和FP16输入下和CPU的精度对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28881 个月前
add fused operator RotaryStride Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !2888 merge feat/dev-RotaryStride into master add fused operator RotaryStride Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增带跨步的旋转位置编码算子RotaryStride ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1207](https://gitcode.com/cann/ops-transformer/issues/1207) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了BF16和FP16输入下和CPU的精度对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28881 个月前
add fused operator RotaryStride Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !2888 merge feat/dev-RotaryStride into master add fused operator RotaryStride Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增带跨步的旋转位置编码算子RotaryStride ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1207](https://gitcode.com/cann/ops-transformer/issues/1207) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了BF16和FP16输入下和CPU的精度对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28881 个月前
add fused operator RotaryStride Co-authored-by: slj02<songlijie1@huawei.com> # message auto-generated for no-merge-commit merge: !2888 merge feat/dev-RotaryStride into master add fused operator RotaryStride Created-by: slj02 Commit-by: slj02 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增带跨步的旋转位置编码算子RotaryStride ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1207](https://gitcode.com/cann/ops-transformer/issues/1207) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本中测试了BF16和FP16输入下和CPU的精度对比 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> PR中包含一个README.md新增 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!28881 个月前
README.md

算子名称:RotaryStride

产品支持情况

产品 是否支持
Atlas A2 训练系列产品

功能说明

  • 算子功能:带跨步的位置编码。
  • 计算公式:

    ymi=xmicos⁡(mθi)−xmi+1sin⁡(mθi)ymi+1=xmisin⁡(mθi)+xmi+1cos⁡(mθi)y_m^{i} = x_m^{i} \cos(m\theta_i) - x_m^{i+1} \sin(m\theta_i) \\ y_m^{i+1} = x_m^{i} \sin(m\theta_i) + x_m^{i+1} \cos(m\theta_i)

  • 在基本RoPE位置编码的基础上,追加了跨步功能。输入是shape为(Batch, Seqlen, Headnum, Stride)的张量,Stride为跨步大小,仅计算Stride的后head_dim维。head_dim为实际需要计算旋转位置编码的维度大小,Stride大于等于head_dim。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
blockDim 输入 AI CORE的数量,比如:Ascend910B是40。 int64_t -
in 输入 公式中的输入张量x,shape为 (B, S, N, stride) BFLOAT16/HALF ND
sin 输入 公式中的输入张量sin,shape为 (MaxS, D),MaxS指最大序列长度 FLOAT ND
cos 输入 公式中的输入张量x,shape为 (MaxS, D),MaxS指最大序列长度 FLOAT ND
out 输入 公式中的输出张量y,shape为 (B, S, N, stride) BFLOAT16/HALF ND
gbD 输入 head_dim维度的大小 int64_t -

约束说明

  • x/y 仅支持BFLOAT16/HAFL类型。
  • stride >= head_dim。

调用说明

torch.ops.npu_ops_transformer_ext.rotary_stride(blockDim, in, sin, cos, out, gbD)