调用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内存

  1. 使用nvidia-smi命令查看正在运行的CUDA进程,并使用kill PID命令终止它们

    • nvidia-smi后发现没有进程号,但是内存占用很大,如下图
      image
    • 改用使用fuser -v /dev/nvidia*:
      apt-get install fuser失败,pip install fuser后仍报错 bash: fuser: command not found
      改为使用apt-get install psmisc,psmisc包包括fuser命令,之后可以成功使用。使用kill -9 杀死进程
      image
    • 最后检查一下
      image
  2. 清空缓存

    import torch
    torch.cuda.empty_cache()
    

原因总结

可能是在跑模型是使用ctrl c强行终止了两次,内存没有释放

posted @   不要肥宅  阅读(2068)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示