PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.08k stars 5.55k forks source link

The third-party dynamic library (cufft64_120.dll;cufft64_12.dll;cufft64_10.dll) that Paddle depends on is not configured correctly. (error code is 126) #57347

Open young1lin opened 1 year ago

young1lin commented 1 year ago

请提出你的问题 Please ask your question

问题描述

请问这个使用到 PaddleSpeech ->做语音识别 -> 调用 PaddlePadlle -> 缺少 cufft64_120.ddl 等第三方库。是正常现象吗?我最开始是 CUDA 12.2 我怕和官网的版本不一样,卸载后又装了一遍 12.0。这个 ddl 压根就没有,只有 cufft64_11.dllcufftw64_11.dll 这两个。应该是做音频识别,需要做快速傅里叶变化调用这个识别音频频谱,识别文字之类的吧?这个版本的内容是哪来的呢?我看这个版本号的定义是变量,通过变量去更改的版本号。

我已经用 Google 和 https://claude.ai/ 搜过了,压根就没有这些 DDL 文件,cufft64_120.dll;cufft64_12.dll;cufft64_10.dll,是不是 PaddlePaddle 版本的内容有问题呢。

版本

Soft Version
Python 3.9.13
PaddlePaddle-GPU 2.5.1.post120
paddlespeech 1.4.1
CUDA 12.0

为什么不是 Python 3.11,因为 PaddleSpeech 有一个包 paddle speech audio 那不支持 3.11,最多到 3.9,不然就会找不到合适的版本。

报错内容

Traceback (most recent call last):
  File "C:\PythonProject\voice-clone\t.py", line 4, in <module>
    result = asr(audio_file="zh.wav")
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddlespeech\cli\utils.py", line 328, in _warpper
    return executor_func(self, *args, **kwargs)
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddlespeech\cli\asr\infer.py", line 510, in __call__
    self.preprocess(model, audio_file)
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddlespeech\cli\asr\infer.py", line 275, in preprocess
    audio = preprocessing(audio, **preprocess_args)
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddlespeech\audio\transform\transformation.py", line 147, in __call__
    xs = [func(x, **_kwargs) for x in xs]
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddlespeech\audio\transform\transformation.py", line 147, in <listcomp>
    xs = [func(x, **_kwargs) for x in xs]
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddlespeech\audio\transform\spectrogram.py", line 372, in __call__
    mat = kaldi.fbank(
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddleaudio\compliance\kaldi.py", line 472, in fbank
    spectrum = paddle.fft.rfft(strided_input).abs()
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddle\fft.py", line 335, in rfft
    return fft_r2c(x, n, axis, norm, forward=True, onesided=True, name=name)
  File "C:\Users\young1lin\AppData\Local\Programs\Python\Python39\lib\site-packages\paddle\fft.py", line 1472, in fft_r2c
    out = _C_ops.fft_r2c(x, axes, norm, forward, onesided)
RuntimeError: (PreconditionNotMet) The third-party dynamic library (cufft64_120.dll;cufft64_12.dll;cufft64_10.dll) that Paddle depends on is not configured correctly. (error code is 126)
  Suggestions:
  1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
  2. Configure third-party dynamic library environment variables as follows:
  - Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...`
  - Windows: set PATH by `set PATH=XXX; (at ..\paddle\phi\backends\dynload\dynamic_loader.cc:301)

如果看着麻烦,我下面是截的图。 pPWVXHU.png

pPWVOBT.png

kangguangli commented 1 year ago

从这里的报错看,有两种可能:

  1. 检查下你的环境变量 PATH 是否包含了指向 cufft*.dll的路径,可以把PATH的值打印下贴在这里
  2. Paddle对cuda12的支持可能不够完善,可以回退到cuda11试试
2691441790 commented 5 months ago

一样的问题,都是按照官方的版本装的,2024/4 还没解决 win11 cuda 12.0 cudnn 8.9.1 paddlespeech==1.2.0 paddleaudio==1.0.1 paddlepaddle-gpu==2.6.1.post120

报错如下: RuntimeError: (PreconditionNotMet) The third-party dynamic library (cufft64_120.dll;cufft64_12.dll;cufft64_10.dll) that Paddle depends on is not configured correctly. (error code is 126) Suggestions:

  1. Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
  2. Configure third-party dynamic library environment variables as follows:
    • Linux: set LD_LIBRARY_PATH by export LD_LIBRARY_PATH=...
    • Windows: set PATH by `set PATH=XXX; (at ..\paddle\phi\backends\dynload\dynamic_loader.cc:312)
kangguangli commented 5 months ago

@2691441790 可以贴下以下几个命令的结果吗?顺便确认下对应路径是否存在cufft*.dll?

  1. echo $LD_LIBRARY_PATH
  2. echo $PATH
  3. ldd libpaddle.so
2691441790 commented 5 months ago

@kangguangli 感觉您的命令像是linux的,我是win11 image image cufft*.dll 和楼主的最后一个图片一样

kangguangli commented 5 months ago

这可能是2.6对cuda版本支持的问题,但是我没有可以复现的环境。接下来你能尝试下看看develop版本的paddle是否可以解决此问题吗?既然你的cuda版本是12.0,那么用下面的命令试试: python -m pip install paddlepaddle-gpu==0.0.0.post120 -f https://www.paddlepaddle.org.cn/whl/linux/gpu/develop.html

2691441790 commented 5 months ago

@kangguangli 试过了,然后重装了paddlespeech和paddleaudio,还是一样的问题。 他一开始会报错ImportError: cannot import name 'check_argument_types' from 'typeguard',我按照https://github.com/PaddlePaddle/PaddleSpeech/issues/3051这篇文章将typeguard版本降低为2.13.3,就会报楼主的错。

kangguangli commented 5 months ago

@xuxinyi389 麻烦帮忙看下这个问题

2691441790 commented 5 months ago

@kangguangli 我重新安装了其他版本可以运行了,应该是paddlespeech和paddleaudio的版本低了,我之前是按照官方文档装的 paddlespeech==1.2.0 paddleaudio==1.0.1(https://aistudio.baidu.com/modelsdetail/25?modelId=25), 建议官方做好版本对应说明,分享一下我现在的环境:CUDA11.7.0 cuDNN v8.4.1 paddlepaddle-gpu==2.4.2.post117 paddleaudio==1.1.0 paddlespeech==1.4.1 参考的这个链接: https://github.com/PaddlePaddle/PaddleSpeech/issues/3442

kangguangli commented 5 months ago

好的,感谢您的分享和反馈。

xuxinyi389 commented 5 months ago

应该是CUDA12.X的特有问题,可以尝试拉取明天最新的develop包尝试下