问题出现得很突然,日志倒是留得挺全。把 faster-whisper 1.0.3 部署到一台没有 NVIDIA 卡的 Linux 容器里,初始化 WhisperModel 时抛 RuntimeError: Library libcublas.so.12 is not found or cannot be loaded,明明 device 已经设成 cpu。

刚开始盯着「CUDA_HOME 指向了一个空的目录,库搜索路径被覆盖」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。CTranslate2 默认按 CUDA 版本加载运行库。还有一种是容器里没装 nvidia-cublas-cu12 这类 pip 轮子。

少数情况下是镜像里装的是 CUDA 11 的库,与包要求的 12 不匹配。

上来先确认 CTranslate2 实际编译的 CUDA 版本

python -c "import ctranslate2;print(ctranslate2.__version__, ctranslate2.get_cuda_device_count())"

装匹配的 cuBLAS 轮子补齐运行库

pip install nvidia-cublas-cu12==12.4.5.8 nvidia-cudnn-cu12==9.1.0.70

显式指定 cpu 并用 int8 跑一次小文件验证

python -c "from faster_whisper import WhisperModel;m=WhisperModel('tiny',device='cpu',compute_type='int8');print([s.text for s in m.transcribe('a.wav')[0]])"

剩下的就是把库路径写进启动脚本避免下次再丢

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(python -c "import nvidia.cublas.lib,os;print(os.path.dirname(nvidia.cublas.lib.__file__))")

改完先别撤,确认这几项。初始化不再抛库缺失,1 分钟音频能完整转出文本,进程显存占用为零,日志里库版本与包要求一致。

补一句。faster-whisper 即使在 CPU 上也会尝试加载 CUDA 运行库,容器镜像精简过度就会踩这个坑,装轮子比改源码靠谱。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189