[环境配置]给远端服务器配置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.youkuaiyun.com/yeler082/article/details/83818771,可参考这篇文章,这步还是没什么坑的。

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

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

https://blog.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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中,尝试进行修改后报错信息发生改变,但还是没能解决问题,遂考虑重装

 

### 如何在Linux上配置AutoDL环境 #### 创建Conda虚拟环境 为了确保Python版本和其他依赖项的一致性和隔离性,在Linux环境中建议使用Anaconda来管理软件包和环境。对于特定于PyTorch的需求,可以创建一个新的名为`pytorch`的环境并指定Python版本为3.9.18[^1]。 ```bash conda create -n pytorch python=3.9.18 ``` 激活新创建的环境: ```bash conda activate pytorch ``` #### 安装TensorFlow-GPU及其依赖库 如果目标是在Linux上的AutoDL环境中部署带有GPU支持的TensorFlow,则需先准备CUDA Toolkit以及cuDNN SDK。具体来说,当安装`tensorflow-gpu==2.0.0`时,应该匹配相应的CUDA 10.0 和 cuDNN 7.6.5 版本[^3]。下载对应的安装文件后按照官方指南完成安装流程。 - 下载CUDA工具包:`cuda_10.0.130_410.48_linux.run` 接着通过pip命令安装TensorFlow GPU版: ```bash pip install tensorflow-gpu==2.0.0 ``` #### 远程开发设置 为了让开发者能够在本地IDE(如PyCharm)中高效工作的同时利用远程服务器的强大计算资源,需要建立SSH连接以便传输代码文件并通过SFTP协议同步项目目录结构;另外还需配置好能够调用远端解释器执行程序的能力[^2]。 ##### PyCharm中的SSH/SFTP配置 - **SFTP配置**: 打开Settings/Preferences对话框,导航至Build, Execution, Deployment -> Deployment选项卡下新增一个SFTP连接条目。 - **上传本地工程到服务端**: 利用了上述定义好的Deployment configuration之后就可以方便地把整个工程项目推送到云端实例上了。 - **设定Remote Interpreter**: 同样进入Settings/Preferences窗口内找到Project: <your_project_name> -> Python Interpreter节点,点击齿轮图标选择Add...-> SSH Interpreter 来指向已搭建完毕的目标机器上的Python解析引擎路径。 ##### 访问远程终端 除了图形界面操作外,有时也需要直接操控命令行来进行更底层的任务处理或是调试问题所在。此时可以在PyCharm里开启Terminal标签页输入如下ssh指令实现快速切换至远程shell会话模式: ```bash ssh username@remote_host_ip_address ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值