根据文章 Ubuntu16.04 部署 TensorFlow2-GPU版本(虚拟环境)部署完之后,就开始了我的训练之旅,训练了一天发现!!为什么我的训练过程这么慢!!
于是,我使用下面命令查看了一下:
nvidia-smi
发现我的GPU并没有被占用....
于是我查看了一下训练日志,满屏幕的:
Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No sudch file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.0/lib64:
但是我明明已经使用conda install 命令安装了cuda 和cudnn
可是这个的提示是我该目录找不到对应安装文件,也没有问题。
于是!在虚拟环境中添加临时环境变量LD_LIBRARY_PATH迫在眉睫
为了确认一下是不是这个问题,运行下面命令:
- source activate tf2 # tf2为虚拟环境名称
- echo $LD_LIBRARY_PATH # 查看当前环境的环境变量
运行结果的确是:
/usr/local/cuda-10.0/lib64
所以,我们可以通过在激活虚拟环境时,顺便更改变量LD_LIBRARY_PATH,步骤如下:
1. 查看虚拟环境路径:
echo $CONDA_PREFIX
2. 在该路径下新建下列文件,目的是为了我们在使用 activate/deactivate 命令激活/退出虚拟环境时,可以自动运行activate.d/env_vars.sh或deactivate.d/env_vars.sh
- cd $CONDA_PREFIX
- mkdir -p ./etc/conda/activate.d
- mkdir -p ./etc/conda/deactivate.d
- touch ./etc/conda/activate.d/env_vars.sh
- touch ./etc/conda/deactivate.d/env_vars.sh
3. 编辑文件 activate.d/env_vars.sh
- export OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
- export LD_LIBRARY_PATH=anaconda3/envs/tf2/lib64 # 此处tf2为虚拟环境名称
- # anaconda3/envs/..为虚拟环境的路径
4. 编辑文件 dectivate.d/env_vars.sh
- export LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH}
- unset OLD_LD_LIBRARY_PATH
5. 退出环境
source deactivate tf2 # tf2为虚拟环境名称
6. 重新进入环境,检查是否正确
- source activate tf2
- echo $LD_LIBRARY_PATH
此时结果已经变成了我们在步骤3中设置的环境变量路径,设置完毕.