模型训练时报错RuntimeError: aclnnFlashAttentionScoreGetWorkspaceSize call failed, please check!

1 系统环境

  • 硬件环境(Ascend/GPU/CPU): Ascend
  • MindSpore版本: mindspore=2.4.1
  • 执行模式(PyNative/ Graph):不限
  • Python版本: Python=3.9
  • 操作系统平台: Ubuntu 22.04

2 报错信息

2.1 问题描述

使用同样的环境和数据,一直正常训练,但是会偶尔出现一次刚开始训练就报错。

2.2 报错信息

RuntimeError: aclnnFlashAttentionScoreGetWorkspaceSize call failed, please check!

---------------------------------------------------- - Ascend Error Message: ---------------------------------------------------- EZ1001: 2024-12-04-17:18:01.039.553 Pad InferShape failed.[THREAD:57246] TraceBack (most recent call last): op[PadV3], paddings_contiguous is nullptr![FUNC:PadV3Infershape][FILE:pad_v3.cc][LINE:46][THREAD:57246] infer shape fail, [-1][THREAD:57246] Infer Shape failed.[THREAD:57246] Pad InferShape failed.[THREAD:57246] (Please search "CANN Common Error Analysis" at https://www.mindspore.cn for error code description) ---------------------------------------------------- - C++ Call Stack: (For framework developers) ---------------------------------------------------- mindspore/ccsrc/plugin/device/ascend/kernel/opapi/aclnn/flash_attention_score_aclnn_kernel.h:51 operator()

3 根因分析

根据下面报错信息分析,应该是环境中有缓存之类的影响,所以导致拉起训练时报错。

RuntimeError: aclnnFlashAttentionScoreGetWorkspaceSize call failed, please check!

4 解决方案

之前训练可以正常进行,这说明脚本是没有问题的,那么剩下的问题就应该是环境起了变化造成了报错。

大概是以下原因,首先是之前正常训练之后,保存了训练号后的模型权重文件,这些文件占用了内存,造成了本次拉起训练时出现了报错,那么这种情况可以清除掉之前保存的权重文件;还有可能是环境中还存在其他正在运行的脚本,可以使用ps

aux命令进行查看,如果存在别的进程,可以先kill掉再尝试拉起本次训练。