报错 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 已正确安装,并且版本是匹配的。

  1. 检查已安装的 CUDA 版本
    运行以下命令来查看你当前安装的 CUDA 版本:nvcc --version
  2. 检查已安装的 cuDNN 版本
    进入你的 cuDNN 安装目录,通常路径如下:/usr/local/cuda/include/cudnn.h 然后查找 #define CUDNN_MAJOR 和 #define CUDNN_MINOR 来确认版本信息。

步骤 2: 安装或更新 cuDNN

如果你没有安装 cuDNN,或者安装的版本不兼容,你需要下载并安装正确版本的 cuDNN

  1. 下载 cuDNN
    • 访问 NVIDIA 官方网站
    • 根据你的 CUDA 版本选择合适的 cuDNN 版本。
    • 例如,如果你使用 CUDA 11.0,则需要下载与 CUDA 11.0 兼容的 cuDNN 8.x
  2. 安装 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*
  3. 验证 cuDNN 安装
    使用以下命令确认 cuDNN 是否安装成功:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

步骤 3: 设置环境变量

确保你的系统能够找到正确的库文件,设置 CUDA 和 cuDNN 的环境变量。

  1. 打开 .bashrc(或者 .zshrc,如果你使用的是 Zsh)文件:nano ~/.bashrc
  2. 在文件末尾添加以下环境变量:export PATH=/usr/local/cuda/bin:$PATH export CUDADIR=/usr/local/cuda export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  3. 使更改生效: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,确保与你的系统和库文件要求一致。