You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置CUDA后OpenAI Whisper仍用CPU,报内存不足错误求助

解决OpenAI Whisper指定GPU仍触发CPU内存不足问题

一、先确认模型是否真的加载到GPU

  1. 打印设备分配情况,排查模型和张量的实际运行设备:

    import torch
    import whisper
    
    model = whisper.load_model("base")
    print(f"Model device: {next(model.parameters()).device}")
    # 加载音频后检查预处理张量的设备
    audio = whisper.load_audio("your_audio.wav")
    audio = whisper.pad_or_trim(audio)
    mel = whisper.log_mel_spectrogram(audio).to(model.device)
    print(f"Mel spectrogram device: {mel.device}")
    

    如果输出不是cuda:0,说明模型没正确加载到GPU,手动调用torch.cuda.init()可能干扰了Whisper自身的设备分配逻辑。

  2. 直接通过load_model指定GPU:
    删掉单独的torch.cuda.init()调用,改用Whisper原生参数指定设备:

    model = whisper.load_model("base", device="cuda")
    

二、排查Anaconda环境的库冲突

  1. 验证PyTorch的CUDA可用性:
    运行以下代码确认CUDA是否真的能被调用:

    print(torch.cuda.is_available())
    print(torch.cuda.device_count())
    print(torch.version.cuda)
    

    如果输出False,说明即使安装了cu117版本的PyTorch,系统可能缺少对应CUDA驱动,或者环境中混入了CPU版PyTorch依赖。

  2. 清理冲突依赖:
    检查conda包列表,若存在torch-cpu这类CPU版依赖,卸载后重新安装对应CUDA版本的PyTorch:

    conda remove torch-cpu
    conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
    

三、优化转录时的内存占用

  1. 降低模型精度或分块处理音频:
    大音频文件的预处理阶段可能占用大量CPU内存,可尝试:

    • 用半精度加载模型:
      model = whisper.load_model("base", device="cuda", dtype=torch.float16)
      
    • 分块处理长音频:
      result = model.transcribe("long_audio.wav", chunk_length=30)
      
  2. 重启Jupyter内核:
    Jupyter反复运行代码容易残留内存泄漏,重启内核后重新执行代码,避免旧的CPU张量占用内存。

四、正确的GPU加速代码示例

无需额外初始化CUDA,直接按以下方式编写:

import whisper

# 指定GPU设备+半精度加载模型
model = whisper.load_model("base", device="cuda", dtype=torch.float16)
# 自动使用GPU完成转录
result = model.transcribe("your_audio.wav", chunk_length=30)
print(result["text"])

内容的提问来源于stack exchange,提问作者thisintheway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:22:44