[环境配置]给远端服务器配置tensorflow环境

前情提要

个人需要跑一个基于Tensorflow的py代码,之前都是在PC上运行但是使用多主体的强化学习时,迭代到1600左右就不动了,考虑到实验室还有服务器资源,遂想将tf、anaconda、conda等环境配置到远端服务器上。在此记录

目标是:

1.在PC的pycharm上能查看远端服务器的资源并进行交互;

2.能通过PC的pycharm,使用远端服务器的资源运行使用tensorflow-gpu的python代码。

首先澄清一下

SSH可以视作一个连接远端服务器的工具,平时在cmd中用ssh相关指令完成使用

1.使pycharm与远端服务器建立连接

经好友hd指点,相比于用cmd连接远端服务器,pycharm可以用小文件夹的形式查看服务器的内容,避免了频繁使用ls命令的麻烦,如下图是连接远端服务器后的文件结构,还是蛮方便的

[环境配置]给远端服务器配置tensorflow环境_第1张图片 图1 pycharm中的远端服务器文件结构

这部分要做的工作主要有三:

1.询问服务器端口号、type、port,并向服务器的管理员申请一个用户名及密码

比如这样:用户名:rgs;密码:************。域名:***.***.***.***;type:ssh;Port: 22

2.在pycharm上进行连接远端服务器的设置

https://blog.csdn.net/yeler082/article/details/83818771,可参考这篇文章,这步还是没什么坑的。

到这里已经可以出现图1中的内容了,但是无法通过命令行与远端服务器交互

3.安装ssh以实现通过命令行与远端服务器交互

https://blog.csdn.net/k_young1997/article/details/90314229,参考这篇文章,没有安装的过程就是解压一个文件夹然后配置一下环境就好了。

验证是否成功:进入cmd,输入

ssh 用户名@远端服务器的域名 -p 22

 出现下图可见已经连接上了远端服务器

[环境配置]给远端服务器配置tensorflow环境_第2张图片

# 查看系统版本:
uname -a
# 查看Nvidia显卡信息
nvidia-smi

执行过上述步骤后,在pycharm中,通过下方的Terminial栏也可以与远端服务器通过命令行交互了

[环境配置]给远端服务器配置tensorflow环境_第3张图片

2.在远端服务器上配置tensorflow环境

现在我们相当于有了一台新电脑,这真的不一定是个令人开心的事,因为配置环境是真真令人头痛,这里我们打算安装Anaconda、conda、tensorflow,python我在pc上配置的是3.5,能运行大部分代码,所以也python版本打算选择3.5(然而实际选了3.66)。

2.1.安装python版本控制软件Anaconda

1.Anaconda中,我们可以创建不同版本的python环境,所以Anaconda的版本是和其所支持的python的版本挂钩的。这里列出一个Anaconda和python版本对应关系表(转自这篇博文)

[环境配置]给远端服务器配置tensorflow环境_第4张图片

  • 首先解释一下上表。 anaconda在每次发布新版本的时候都会给python3和python2都发布一个包,版本号是一样的。
  • 表格中,python版本号下方的离它最近的anaconda包就是包含它的版本。
  • 举个例子,假设你想安装python2.7.14,在表格中找到它,它下方的三个anaconda包(anaconda2-5.0.1、5.1.0、5.2.0)都包含python2.7.14;
  • 假设你想安装python3.6.5,在表格中找到它,它下方的anaconda3-5.2.0就是你需要下载的包;
  • 假设你想安装python3.7.0,在表格中找到它,它下方的anaconda3-5.3.0或5.3.1就是你需要下载的包;

友人提到Anaconda版本向下兼容,因此打算从https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=A下载最新的版本Anaconda3-2020.02-Linux-x86_64.sh

2.https://blog.csdn.net/zxxxiazai/article/details/102780990,参考这篇博文完成Anaconda的安装。

为后续方便,将pc上传文件到远端服务器的方法copy一下

[环境配置]给远端服务器配置tensorflow环境_第5张图片

问题(-sh: 2: conda: not found/-sh: 3: source: not found)

 在文件夹目录下已经出现了anaconda3但是输入conda显示

-sh: 2: conda: not found

之后我按照conda: not found作为关键字去查找,以为是环境变量没有配置好,但是按照网上教程修改环境变量后,使用source执行的时候,却出现了

-sh: 2: source: not found

这时候我发现可能是一些更底层的部分出了问题。然后发现在conda出现问题后,我在终端的方向键无法调出历史记录,而是显示“^[[A”之类的鬼话,因此将目光放在了如何解决方向键的问题或许更好。

查找资料后发现

[环境配置]给远端服务器配置tensorflow环境_第6张图片

不巧的是,chsh和usermod都需要权限我并没有,本以为又gg了,突然看到这篇博文说经常输入“bash”命令不厌其烦,因此尝试在命令行输入bash,emm,之后可以使用conda了,另外该博文所述方法经过我尝试有用,可以在进去shell的时候就以bash的状态进入。

[环境配置]给远端服务器配置tensorflow环境_第7张图片

2.2.安装显卡驱动程序CUDA

WIN中点击电脑属性修改环境变量的操作,在Linux中就是需要对profile文件进行修改。

如果需要用到GPU的话,就需要进行CUDA的安装。

这部分可以参考https://blog.csdn.net/bryant_meng/article/details/78559907,但是需要注意的是,文章中一般配置环境都是使用如下语句的:

vim /etc/profile

其中“/etc”说明是在根目录下的etc文件夹,对其中profile文件内容进行修改,若修改了对整个服务器的用户均生效。我们一般是没有这个权限的。相对应的,在我们的“/home/用户名”,也就是自己的文件夹下其实也有一个profile,在那里进行修改就可以啦

需要提醒的是,如果你的服务器中已经有人用过GPU的tf的话,那CUDA应该已经安装好了,你可以在/usr/local/里面看一下有没有,如果有的话,那么再按照本节列的参考教程将路径输入到/home/你的用户名下的profile中即可。

2.3.设置pycharm的远端解释器以及上传自己的文件到远端服务器

这部分目前我也没遇到啥坑,按照这篇博文就好https://www.cnblogs.com/sddai/p/9648211.html

 

这之后若遇到问题,请继续本文阅读。

问题1:ImportError: libcudnn.so.6 

是这样,安装完anaconda等环境之后,我在python中试了一下调用tf,发现没事就溜之大吉了,下午在pycharm上跑代码的时候发现tf版本不对,然后卸了tf2安装了tf1.3,之后出现了俩情况,

1.在远端服务器命令行import tf报错

ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

 这里需要注意一下,这个报错信息基本上都是lib打头的,搜百度的时候别弄混了。如果你出现这个错误,说明是cudnn没安装对,要注意版本号的对应,解决方法如下:

要下载合适的版本

https://developer.nvidia.com/rdp/cudnn-download (官网)
cudnn-8.0-linux-x64-v5.1.tgz(不兼容)

解决方案:
cudnn-8.0-linux-x64-v6.0.tgz(兼容)
http://download.csdn.net/download/guotong1988/9918527

或者在百度云盘下载,链接:http://pan.baidu.com/s/1dFs8o4D 密码:a0da

tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz  # 解压,会自动生成一个cuda文件夹

解压后是cuda文件夹(经友人tl提醒,需要注意下面的语句中,cd到的cuda并非是真正的cuda,而是cudnn压缩包解压后生成的那个文件夹)

下面要将cudnn解压后的文件夹(cuda)中的cudnn.h和libcudnn复制到真正的cuda所在的文件夹(代码中该文件夹的名称为cuda-8.0)中

cd cuda
cp include/cudnn.h /home/user_name/cuda-8.0/include
cp lib64/libcudnn.* /home/user_name/cuda-8.0/lib64

CUDNN安装完成,查看下版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

此处来自这篇博客

 完成上述步骤后,在远端服务器的终端就可以正常import tensorflow啦!!

问题2:ImportError:libcusolver.so.8.0: cannot open shared object file: No such file or directory

solution:

修改你自己文件夹下的bashrc文件

vim ~/.bashrc

,加上如下内容

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/home/用户名/cuda-8.0(这里可能需要修改)/lib64
export CUDA_HOME=/home/用户名/cuda-8.0(这里可能需要修改)

,之后激活命令

source ~/.bashrc

问题3:此时若在pycharm上home还是无法正常运行

pycharm的Run -> Edit Configurations 

Environment variables中添加: 

LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64 (需修改到你的cuda的lib64的路径)
# 比如我的为:/home/rgs/cuda-8.0/lib64

搞定了!!!哭了!!!

[环境配置]给远端服务器配置tensorflow环境_第8张图片

 

 

 

 

 

你可能感兴趣的:(强化学习,环境配置,环境配置,远端服务器)