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

目录

目录

目录

前情提要

首先澄清一下

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

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

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

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

2.2.安装显卡驱动程序CUDA

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

问题1:ImportError: libcudnn.so.6 

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

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

ex 问题4:anaconda创建虚拟环境时显示An unexpected error has occurred. Conda has prepared the above report

ex 问题5:输入已经成功使用过一段时间anaconda,新建环境并安装ptorch后,conda失效并显示下述信息:


前情提要

个人需要跑一个基于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命令的麻烦,如下图是连接远端服务器后的文件结构,还是蛮方便的

图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

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

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

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

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版本对应关系表(转自这篇博文

  • 首先解释一下上表。 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一下

问题(-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”之类的鬼话,因此将目光放在了如何解决方向键的问题或许更好。

查找资料后发现

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

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

 

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

3 如何使用服务器上已经存在的CUDA

首先了解一下服务器上的CUDA的安装路径

我们这边是安装在

/usr/local/

下。

之后尝试修改个人目录下的 .bashrc ,将cuda相关的内容,改成服务器的CUDA的安装路径

export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64
export CUDA_HOME=/usr/local/cuda-10.1

尝试nvcc -V,不行,还是显示8.0

修改个人目录下的 .profile 为:

export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH

可以了!

坑汇总

问题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

搞定了!!!哭了!!!

ex 问题4:anaconda创建虚拟环境时显示An unexpected error has occurred. Conda has prepared the above report

网上有很多种说法:如没翻墙、网络连接有问题等,这里给出的解决方案为在不翻墙的前提下,更换清华源,具体操作如下:

在根目录下找到.condarc文件,这个文件可以直接对其编辑,其内容为调用anaconda时访问的源网址,我们将其channels设置如下:

channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/
show_channel_urls: true
report_errors: true

以上内容参考自Anaconda建立新的环境,出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url ...... 解决过程

若无法解决,可以尝试  下述命令

conda clean -i

功能为 Remove index cache.

ex 问题5:输入已经成功使用过一段时间anaconda,新建环境并安装ptorch后,conda失效并显示下述信息:

rgs@server-bd2:~$ conda
-sh: /home/rgs/anaconda3/bin/conda: No such file or directory

首先说我的解决方案:重装anaconda,有安装包得前提下仅需要一行命令且选择原先的安装位置,会保留之前的anaconda虚拟环境

若按照本博客进行,其安装包名为 Anaconda3-2020.02-Linux-x86_64.sh,在该文件目录下执行bash命令安装,-u表示覆盖已有的应用文件(保留虚拟环境),命令如下:

 bash Anaconda3-2020.02-Linux-x86_64.sh -u

p.s.最开始报错后尝试通过修改路径解决这个问题,但无论是.bashrc还是.profile中都没有看到报错信息中的那个路径( /home/rgs/anaconda3/bin/conda),后参考博文后发现该路径是在anaconda/etc/profile.d/conda.sh中,尝试进行修改后报错信息发生改变,但还是没能解决问题,遂考虑重装

 

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值