调用torch.randn(1, n_mels, 3000).to(device)时报错RuntimeError: CUDA error: device-side assert triggered
调试Whisper时,不管执行什么命令都会报错RuntimeError: CUDA error: device-side assert triggered
问题
这个错误通常意味着CUDA运行时检测到了某些问题,例如尝试访问不存在的内存地址或尝试在CUDA内核中进行非法操作等。可能的原因包括:
-
CUDA设备内存不足,因此无法分配所需的张量。您可以尝试使用更小的张量或释放其他不必要的内存来解决此问题。
-
确保您的PyTorch和CUDA版本兼容。如果它们不兼容,可能会导致设备错误或不一致的行为。
-
如果您在多个GPU上运行程序,可能会出现设备错误。请确保您的程序正确设置了CUDA_VISIBLE_DEVICES环境变量,以指定要使用的GPU设备。
-
可能存在其他硬件或驱动程序问题。您可以尝试重新启动计算机或更新GPU驱动程序来解决问题。
解决
释放cuda内存
-
使用
nvidia-smi
命令查看正在运行的CUDA进程,并使用kill PID
命令终止它们- nvidia-smi后发现没有进程号,但是内存占用很大,如下图
- 改用使用
fuser -v /dev/nvidia*
:
apt-get install fuser
失败,pip install fuser
后仍报错bash: fuser: command not found
改为使用apt-get install psmisc
,psmisc包包括fuser命令,之后可以成功使用。使用kill -9 杀死进程
- 最后检查一下
- nvidia-smi后发现没有进程号,但是内存占用很大,如下图
-
清空缓存
import torch torch.cuda.empty_cache()
原因总结
可能是在跑模型是使用ctrl c强行终止了两次,内存没有释放
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签