本人的环境:ssh连接的服务器下+linux系统+conda环境下安装的python,并且我的gcc是最新版本(可以在进japan里面下载。http://www.gnu.org/software/gcc/mirrors.html)
*注意:由于每个人的配置不一样,所以我提供的方法仅供参考
如果不能解决,建议去 https://github.com/PaddlePaddle/Paddle/issues,或者去google查找解决方案
查看paddlepaddle是否安装成功
import paddle.fluid as fluid
fluid.install_check.run_check()
1.import paddle出现
batch = batch.batch行出现问题 name ‘batch’ is not defined
解决方法:如果是安装旧版的paddlepaddle,可以尝试安装最新版本paddlepaddle,并且确保自己的cuda版本和安装的需求是一样的。
cuda版本查看:nvidia-smi
2.TensorRt dynamic library(libnvinfer.so) that paddle depends on is not…
这是个warning,如果不用到paddle interference就可以忽略,再次运行就消失
3.Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
如果和我一样是conda环境下装的python,就用conda安装最新稳定版的版本(注意cuda版本)
4.Original Error is: (PreconditionNotMet) The third-party dynamic library (lib
和3的解决方法一样
5.cannot import name ‘monkey_patch_math_varbase’ from 'paddle.fluid.dygraph’
和3的解决方法一样
paddleDetection安装问题
如果在github clone太慢,报超时等错误,去下面网址clone
具体是在terminal中输入如下代码
# 克隆PaddleDetection仓库
cd <path/to/clone/PaddleDetection>
git clone https://github.com/PaddlePaddle/PaddleDetection.git
6.paddledetection安装问题:ImportError: libSM.so.6: cannot open shared object file: No such file or directory
apt-get install libsm6
类似的importError解决方法也一样,不行就在csdn搜一下安装哪个
7.在安装paddlepaddle或paddledetection过程中缺少一些库的情况下,如上面的libsm,如果出现该问题:files list file for package ‘xxd’ is missing final newline E: Sub-process /u
解决方法:在当前linux目录下创建一个fix.py文件,然后将下列代码放入,然后终端执行 python fix.py
import os
dpkg_path = '/var/lib/dpkg/info/'
paths = os.listdir(dpkg_path)
for path in paths:
path = dpkg_path + path
f = open(path, 'a+')
data = f.read()
if len(data) > 1 and data[-1:] != '\n':
f.write('\n')
print
'added newline character to:', path
f.close()
#用于解决xxd问题
8.Errors were encountered while processing:
grub-efi-amd64-signed
E: Sub-process /usr/bin/dpkg returned an error code (1)
linux终端执行下列代码:
apt-get remove --purge grub*
apt-get install grub-efi
当然在解决了上面7和8问题后,就可以安装缺少的库了,我记得是直接,如果不对就按照错误去百度如何下载
apt-get install libsm.so
~后续问题有解决了的再更新,包括只能在一张卡上跑**(已更新)**
Your Paddle Fluid is installed successfully ONLY for SINGLE GPU or CPU!
不能MULTY
以及老旧paddle版本的安装问题等
如果在运行后发现
import paddle.fluid as fluid
fluid.install_check.run_check()
9.老版本paddle的安装问题,如果提示can’t connect libcudnn.so 之类的这些链接库,导致只能在single GPU or CPU 或者single上都不能跑的
Original Error is: (PreconditionNotMet) The third-party dynamic library (libnccl.so) that Paddle depends on is not configured correctly. (error code is libnccl.so: cannot open shared object file: No such file or directory)
Suggestions:
- Check if the third-party dynamic library (e.g. CUDA, CUDNN) is installed correctly and its version is matched with paddlepaddle you installed.
- 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/paddle/fluid/platform/dynload/dynamic_loader.cc:285)
如果是在服务器上进行安装,可能每个人的端口是被docker分开的,所以本地的cudnn动态链接库就不在系统目录里,所以就要去docker里面复制出来到我们的系统目录下。
首先用find ~ -name “libcudnn.so” 或者 locate libcudnn.so 找到其位置
如:/var/lib/docker/overlay2/fe9c1bc0ea133d7234a2aff757804134fc1eddadc04c32aa0fc6d50c84101d01/diff/usr/lib/x86_64-linux-gnu/libcudnn.so.7.6.5
一定要是到7.6.5的最后一条
然后cd /usr/lib 到存放库的位置,输入ls查看文件目录,如果你要存放的库,如libcudnn.so有以下红色的文件,则先删除, rm libcudnn.so
然后再把libcudnn.so.7.6.5用cp指令放入我们系统目录/usr/lib中
cp /var/lib/docker/overlay2/fe9c1bc0ea133d7234a2aff757804134fc1eddadc04c32aa0fc6d50c84101d01/diff/usr/lib/x86_64-linux-gnu/libcudnn.so.7.6.5 ./libcudnn.so
该指令即把libcudnn.so.7.6.5以名字为libcudnn.so放入/usr/lib中,即可解决
如果还有这样的库无法找到,则重复上述操作。
最后是PaddleDetection的问题
如果出现:
ModuleNotFoundError: No module named ‘paddle.io’
或
No module named ‘paddle.utils.download’
就是PaddleDetection版本和paddlepaddle版本不匹配,比如paddledetection2.0要求2.0.0以上的paddlepaddle,则如果安装了paddlepaddle1.8.4就会报上述错误,解决方法是去github选择满足的版本重装PaddleDetection即可解决。