一次 GPU 推理踩坑实录 —— 从 `libcudnn_ops_infer.so.8` 到 `libcublas.so.12` 的完整排障笔记

关键词: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.8cuDNN 8 运行时库缺失没装 / 没放入 LD_LIBRARY_PATH
libcublas.so.12CUDA 12 的 cuBLAS 库缺失同上
已放弃 (核心已转储)程序因找不到符号而崩溃上述库加载失败,进程被 kill

3. 排查步骤

3.1 确认 CUDA / Driver

nvidia-smi        # Driver 550.x  ✅
nvcc --version    # release 12.1   ✅

CUDA 12 已就绪,问题聚焦在 cuDNNcuBLAS

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 再也不会 已放弃 (核心已转储)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从零开始学习人工智能

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值