设置CUDA后OpenAI Whisper仍用CPU,报内存不足错误求助
解决OpenAI Whisper指定GPU仍触发CPU内存不足问题
一、先确认模型是否真的加载到GPU
打印设备分配情况,排查模型和张量的实际运行设备:
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自身的设备分配逻辑。直接通过
load_model指定GPU:
删掉单独的torch.cuda.init()调用,改用Whisper原生参数指定设备:model = whisper.load_model("base", device="cuda")
二、排查Anaconda环境的库冲突
验证PyTorch的CUDA可用性:
运行以下代码确认CUDA是否真的能被调用:print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.version.cuda)如果输出
False,说明即使安装了cu117版本的PyTorch,系统可能缺少对应CUDA驱动,或者环境中混入了CPU版PyTorch依赖。清理冲突依赖:
检查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
三、优化转录时的内存占用
降低模型精度或分块处理音频:
大音频文件的预处理阶段可能占用大量CPU内存,可尝试:- 用半精度加载模型:
model = whisper.load_model("base", device="cuda", dtype=torch.float16) - 分块处理长音频:
result = model.transcribe("long_audio.wav", chunk_length=30)
- 用半精度加载模型:
重启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
相关产品推荐
相关产品推荐

