报错 Unable to load any of {libcudnn_ops.so.9.1.0, libcudnn_ops.so.9.1, libcudnn_ops.so.9, libcudnn_ops.so}
表示你的系统无法找到或加载所需的 cuDNN 库文件。这通常是由于 cuDNN 版本不匹配或者 CUDA 和 cuDNN 库没有正确安装导致的。以下是一些解决方案,可以帮助你解决这个问题。
步骤 1: 检查 CUDA 和 cuDNN 的安装
首先,你需要确保 CUDA 和 cuDNN 已正确安装,并且版本是匹配的。
- 检查已安装的 CUDA 版本:
运行以下命令来查看你当前安装的 CUDA 版本:nvcc --version
- 检查已安装的 cuDNN 版本:
进入你的 cuDNN 安装目录,通常路径如下:/usr/local/cuda/include/cudnn.h
然后查找#define CUDNN_MAJOR
和#define CUDNN_MINOR
来确认版本信息。
步骤 2: 安装或更新 cuDNN
如果你没有安装 cuDNN,或者安装的版本不兼容,你需要下载并安装正确版本的 cuDNN。
- 下载 cuDNN:
- 访问 NVIDIA 官方网站。
- 根据你的 CUDA 版本选择合适的 cuDNN 版本。
- 例如,如果你使用 CUDA 11.0,则需要下载与 CUDA 11.0 兼容的 cuDNN 8.x。
- 安装 cuDNN:
解压下载的 cuDNN 文件并安装。假设你下载了.tar
文件,运行以下命令:tar -xzvf cudnn-<version>-linux-x64-v<version>.tgz sudo cp cuda/include/cudnn*.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
- 验证 cuDNN 安装:
使用以下命令确认 cuDNN 是否安装成功:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
步骤 3: 设置环境变量
确保你的系统能够找到正确的库文件,设置 CUDA 和 cuDNN 的环境变量。
- 打开
.bashrc
(或者.zshrc
,如果你使用的是 Zsh)文件:nano ~/.bashrc
- 在文件末尾添加以下环境变量:
export PATH=/usr/local/cuda/bin:$PATH export CUDADIR=/usr/local/cuda export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
- 使更改生效:
source ~/.bashrc
步骤 4: 确认库文件存在
检查系统中是否存在 libcudnn_ops.so
文件。如果文件不存在,尝试重装 cuDNN。
ls /usr/local/cuda/lib64 | grep libcudnn_ops
如果找不到相关文件,可能是安装有问题,或者你的 cuDNN 安装路径不正确。
步骤 5: 确认正确的路径链接
如果库文件仍然找不到,可以尝试为缺失的库文件创建符号链接。
sudo ln -s /usr/local/cuda/lib64/libcudnn_ops.so.8 /usr/local/cuda/lib64/libcudnn_ops.so.9
根据需要调整符号链接的目标,确保指向正确的版本。
步骤 6: 重新启动并测试
重启计算机或重新加载环境设置,然后运行以下命令来验证 CUDA 和 cuDNN 是否正常工作:
nvidia-smi
如果一切正常,CUDA 和 cuDNN 将被正确识别,并且你应该可以继续使用 fast-whisper 环境了。
如果你仍然遇到问题,请确认 CUDA 和 cuDNN 版本完全兼容,或者尝试使用其他版本的 cuDNN,确保与你的系统和库文件要求一致。
发表回复