关键词:cuDNN、cuBLAS、CUDA 12、Faster-Whisper、PyTorch、Conda、Linux
1. 背景:项目环境与报错
我在 Ubuntu 22.04 服务器上跑 Faster-Whisper,Python 3.10,官方推荐 CUDA 12。
启动脚本瞬间三连炸:
Could not load library libcudnn_ops_infer.so.8. Error: libcudnn_ops_infer.so.8: cannot open shared object file
Could not load library libcublas.so.12 is not found or cannot be loaded
已放弃 (核心已转储)
2. 错误拆解
报错 | 含义 | 根因 |
---|---|---|
libcudnn_ops_infer.so.8 | cuDNN 8 运行时库缺失 | 没装 / 没放入 LD_LIBRARY_PATH |
libcublas.so.12 | CUDA 12 的 cuBLAS 库缺失 | 同上 |
已放弃 (核心已转储) | 程序因找不到符号而崩溃 | 上述库加载失败,进程被 kill |
3. 排查步骤
3.1 确认 CUDA / Driver
nvidia-smi # Driver 550.x ✅
nvcc --version # release 12.1 ✅
CUDA 12 已就绪,问题聚焦在 cuDNN 和 cuBLAS。
3.2 找库
find /usr -name 'libcudnn_ops_infer.so.8' 2>/dev/null
find /usr -name 'libcublas.so.12' 2>/dev/null
均无结果 → 确实没装。
3.3 检查 Python 环境
conda info --envs # 当前在 sw_test_env
pip list | grep torch # torch 2.2.2+cu121
pip list | grep ctranslate2 # 4.5.1 默认链 cuDNN 9
陷阱:
ctranslate2==4.5.x
默认使用 cuDNN 9,而我系统只有 cuDNN 8,导致不兼容。
4. 修复方案(亲测有效)
✅ 方案 A:一条龙 Conda 安装(最简)
# 进入虚拟环境
conda activate sw_test_env
# 安装 cuDNN 8 与 cuBLAS 12
conda install -c nvidia cudnn=8 libcublas-dev=12
# 降级 ctranslate2 避免 cuDNN 9 冲突
pip install ctranslate2==4.4.0
解释
cudnn=8
提供libcudnn_ops_infer.so.8
libcublas-dev=12
提供libcublas.so.12
ctranslate2==4.4.0
与 cuDNN 8 兼容
✅ 方案 B:系统级手动安装(无 Conda 时用)
# 1. 下载 cuDNN 8 for CUDA 12
wget https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
# 2. 解压并复制
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo ldconfig
# 3. 安装 cuBLAS 12
sudo apt update
sudo apt install libcublas-12-0
# 4. 写入环境变量
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
5. 验证
python - <<'EOF'
import torch, ctypes, os
print("PyTorch CUDA:", torch.cuda.is_available())
print("cuDNN:", torch.backends.cudnn.version())
ctypes.cdll.LoadLibrary("libcublas.so.12")
ctypes.cdll.LoadLibrary("libcudnn_ops_infer.so.8")
print("All good!")
EOF
输出:
PyTorch CUDA: True
cuDNN: 8907
All good!
6. 常见坑汇总
坑 | 说明 |
---|---|
混用 pip & apt 安装的 cuDNN | 路径冲突,优先用 Conda 统一管理 |
-r 大小写 | chmod -R 777 dir ,大写 R 递归 |
把报错当命令 | 报错是程序输出,不是 shell 指令 |
只升级 PyTorch 不升级 cuDNN | 版本不匹配,一定保持 CUDA/cuDNN/PyTorch 三线一致 |
7. 一句话总结
在 Conda 环境下,一条命令解决所有依赖:
conda install -c nvidia cudnn=8 libcublas-dev=12 && pip install ctranslate2==4.4.0
然后放心跑 Whisper,GPU 再也不会 已放弃 (核心已转储)
。