前言
最近百度开源了用paddle框架实现的用于做语义分割的deeplabv3+模型,正好自己也在做这方面的事情,所以就把模型拿过来跑一下inference,结果是各种采坑,所以记录下来,以后便于查阅!
1、首先需要在Linux上面安装GPU版本的paddle,我用的是pip安装的,感觉docker太麻烦。 安装命令: pip install paddlepaddle-gpu 此命名默认安装的是最新版,如果不想用最新的,在后面指定版本号即可。 不过推荐在虚拟环境里面安装paddlepaddle,创建虚拟环境很简单,这里就不多说了。其实其他深度学习框架也一样,安装在虚拟环境里面,各种包库之间不会造成干扰,提高鲁棒性,也方便管理。
2、执行代码的时候,会报错,大概就是:paddle.fluid.core.EnforceNotMet: Failed to find dynamic library: libcublas.so Please specify its path correctly using following ways:
Method. set environment variable LD_LIBRARY_PATH on Linux or DYLD_LIBRARY_PATH on Mac OS.
For instance, issue command: export LD_LIBRARY_PATH=…
so,问题在于系统找不到 libcublas.so这个库,我们只需要把这个库加进环境变量,即可解决这个问题!
首先执行 locate libcublas.so 这个命令来定位这个文件的位置,
由于我Linux上面装了好多个框架,请忽略那些东西,我们要找的就是跟cuda相关的,所以我们定位到 /usr/local/cuda-9.1/lib64/libcublas.so 这个就是我们要找的环境变量,接下来把它添加在系统变量中即可,即执行命令:echo $LD_LIBRARY_PATH /usr/local/cuda-9.1/lib64/
注意: 我跑的这个demo,默认的GPU环境是9.1的,所以这里指定cuda必须为cuda-9.1,若读者跟我的不一致,改成对应的版本号即可。
此外,如果嫌每次执行都麻烦,也可以把这些命令写进一个sh脚本里面,每次运行的时候直接运行脚本也可以!
最后感谢学锋哥,问题的解决,学锋哥帮了不少忙!