文件最后提交记录最后更新时间
[FAG] hifp8 add dtype intercept Co-authored-by: Kenny_Ke<kejunchun2@huawei.com> # message auto-generated for no-merge-commit merge: !5472 merge master into master [FAG] hifp8 add dtype intercept Created-by: Kenny_Ke Commit-by: Kenny_Ke Merged-by: cann-robot Description: ## 描述 - 这个pr涉及两个修改点,一个是fag算子fp8场景新增填关于dtype的拦截场景,还有关于FAG算子文档中对950芯片的支持。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!547214 天前
update FA/FAG Co-authored-by: huanyongben<huanyongben1@hisilicon.com> # message auto-generated for no-merge-commit merge: !856 merge master into master update FA/FAG Created-by: huanyongben Commit-by: huanyongben Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!8564 个月前
[FAG] sink add protection Co-authored-by: Kenny_Ke<kejunchun2@huawei.com> # message auto-generated for no-merge-commit merge: !4562 merge kjctmp into master [FAG] sink add protection Created-by: Kenny_Ke Commit-by: Kenny_Ke Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!45621 个月前
FlashAttentionScore算子补充proto文件 Co-authored-by: 镜心<wangyungfei@h-partners.com> # message auto-generated for no-merge-commit merge: !2998 merge proto into master FlashAttentionScore算子补充proto文件 Created-by: mirror-center Commit-by: 镜心 Merged-by: cann-robot Description: ## 描述 FlashAttentionScore算子对应GEIR迁移到transformer仓 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!29982 个月前
【bugfix】FlashAttentionScoreGrad bn模板D=72且s1!=s2场景精度修复 Co-authored-by: caihualilili<liangfuzhan@h-partners.com> # message auto-generated for no-merge-commit merge: !6053 merge fag_bn_precision_fix into master 【bugfix】FlashAttentionScoreGrad bn模板D=72且s1!=s2场景精度修复 Created-by: caihualilili Commit-by: caihualilili Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次PR主要是修复FlashAttentionScoreGrad算子走入BN模板时,s1!=s2且D=72引起的精度错误 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#2761](https://gitcode.com/cann/ops-transformer/issues/2761) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 精度验证结果(类型为bf16,标杆为cpu) ![image.png](https://raw.gitcode.com/user-images/assets/7673863/ff05944a-6936-4ed5-8f69-3e6db9eff098/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!60534 天前
fp32确定性计算问题修复 Co-authored-by: dai-yuwen<daiyuwen1@huawei.com> # message auto-generated for no-merge-commit merge: !6127 merge deter_error into master fp32确定性计算问题修复 Created-by: dai-yuwen Commit-by: dai-yuwen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fp32确定性计算问题修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2797](https://gitcode.com/cann/ops-transformer/issues/2797) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 算子二级冒烟、泛化测试已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!61273 天前
[FAG] fix old deter perf Co-authored-by: Kenny_Ke<kejunchun2@huawei.com> # message auto-generated for no-merge-commit merge: !5690 merge master into master [FAG] fix old deter perf Created-by: Kenny_Ke Commit-by: Kenny_Ke Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!56905 天前
更新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 个月前
FA & Floyd资料修改 Co-authored-by: 镜心<wangyungfei@h-partners.com> # message auto-generated for no-merge-commit merge: !4274 merge link_doc into master FA & Floyd资料修改 Created-by: mirror-center Commit-by: 镜心 Merged-by: cann-robot Description: ## 描述 修改涉及两个Markdown文档。首先,将FlashAttentionScoreGrad算子调用说明中的接口链接从aclnnFlashAttentionScoreGrad修正为aclnnFlashAttentionScoreGradV2。其次,在FusedFloydAttention算子文档中,将输入参数scaleValue重命名为scaleValueOptional,将输出参数softmaxMax和softmaxSum分别重命名为softmaxMaxOut和softmaxSumOut,并将获取workspace大小的接口引用从aclnnFlashAttentionScoreGetWorkspaceSize更新为aclnnFusedFloydAttentionGetWorkspaceSize。所有修改均为文档内容修正,不涉及代码逻辑变更。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!42741 个月前
README.md

FlashAttentionScoreGrad

产品支持情况

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

功能说明

  • 算子功能:训练场景下计算注意力的反向输出,即FlashAttentionScore的反向计算:

    • pseType=1时,需要先add再mul。
    • pseType≠1时,需要先mul再add。
  • 计算公式:

    已知注意力的正向计算公式为:

    • pseType=1时,公式如下:

      Y=Dropout(Softmax(Mask(QKT+psed),atten_mask),keep_prob)VY=Dropout(Softmax(Mask(\frac{QK^T+pse}{\sqrt{d}}),atten\_mask),keep\_prob)V

    • pseType≠1时,公式如下:

      Y=Dropout(Softmax(Mask(QKTd+pse),atten_mask),keep_prob)VY=Dropout(Softmax(Mask(\frac{QK^T}{\sqrt{d}}+pse),atten\_mask),keep\_prob)V

    为方便表达,以变量SSPP表示计算公式:

    S=Mask(QKTd+pse),atten_maskS=Mask(\frac{QK^T}{\sqrt{d}}+pse),atten\_mask

    P=Dropout(Softmax(S),keep_prob)P=Dropout(Softmax(S),keep\_prob)

    Y=PVY=PV

    则注意力的反向计算公式为:

    dV=PTdYdV=P^TdY

    dQ=((dS)∗K)ddQ=\frac{((dS)*K)}{\sqrt{d}}

    dK=((dS)T∗Q)ddK=\frac{((dS)^T*Q)}{\sqrt{d}}

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
query 输入 公式中的输入Q。 FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT16、BFLOAT16、FLOAT32 ND
key 输入 公式中的输入K。 FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT16、BFLOAT16、FLOAT32 ND
value 输入 公式中的输入V。 FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT16、BFLOAT16、FLOAT32 ND
dy 输入 公式中的输入dY。 FLOAT8_E5M2、FLOAT8_E4M3FN、FLOAT16、BFLOAT16、FLOAT32 ND
pseShiftOptional 可选输入 公式中的pse,表示位置编码。 BFLOAT16、FLOAT16、FLOAT ND
dropMaskOptional 可选输入 公式中的Dropout,表示数据丢弃掩码。取值为1代表保留该数据,为0代表丢弃该数据。 UINT8 ND
attenMaskOptional 可选输入 公式中的atten_mask,表示注意力掩码,取值为1代表该位不参与计算(不生效),为0代表该位参与计算。 BOOL、UINT8 ND
scaleValue 可选属性
  • 公式中的scale,表示缩放系数,作为计算流中Muls的scalar值。
  • 默认值为1.0。
DOUBLE -
keepProb 可选属性
  • 公式中的keep_prob,表示数据需要保留的概率。
  • 默认值为1.0。
DOUBLE -
dqOut 输出 公式中的dQ,表示query的梯度。 FLOAT16、BFLOAT16、FLOAT32 ND
dkOut 输出 公式中的dK,表示key的梯度。 FLOAT16、BFLOAT16、FLOAT32 ND
dvOut 输出 公式中的dV,表示value的梯度。 FLOAT16、BFLOAT16、FLOAT32 ND
  • Atlas A2 训练产品:不支持FLOAT8_E5M2、FLOAT8_E4M3FN。
  • Atlas A3 训练产品:不支持FLOAT8_E5M2、FLOAT8_E4M3FN。

约束说明

  • 输入query、key、value、pseShiftOptional的数据类型必须一致。
  • 输入query、key、value、dy的input_layout必须一致。
  • 关于数据shape的约束,以inputLayout的BSND、BNSD为例(BSH、SBH下H=N*D),其中:
    • B:取值范围为1~2M。当prefixOptional的时候B最大支持2K。
    • N:取值范围为1~256。
    • S:取值范围为1~1M。
    • D:
      • Atlas A2 训练系列产品:取值范围为1~512。
      • Atlas A3 训练系列产品:取值范围为1~512。
      • Ascend 950PR/Ascend 950DT:取值范围为1~768。
  • keepProb的取值范围为(0, 1]。
  • 部分场景下,如果计算量过大可能会导致算子执行超时(aicore error类型报错,errorStr为:timeout or trap error),此时建议做轴切分处理,注:这里的计算量会受B、S、N、D等参数的影响,值越大计算量越大。
  • pseType为2或3的时候,当前只支持Sq和Skv等长。

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_flash_attention_score_grad_v2 非TND场景,通过aclnnFlashAttentionScoreGradV2接口方式调用FlashAttentionGrad算子。

参考资源