本文旨在记录利用MobaXterm连接实验室远程服务器的流程、注意事项以及环境配置过程。
目录
目录
2、因网络断联后,重新连接发现之前的pycharm仍在后台运行,且连接不上其图形界面
一、流程
1、下载MobaXterm
2、创建SSH session
3、输入远程服务器的相关信息
4、连接即可使用(注意要创建自己的用户)
二、注意事项
1、文主亲测如果在session设置中选择了用Gnome desktop而不是Interactive shell的话,虽然连接之后可以使用服务器的图形化界面,但是会非常非常卡,考虑可能是服务器配置或本机网速的问题,因此建议可以先尝试一下Gnome desktop,如果很卡的话还是老老实实使用Interactive shell命令行界面吧;
2、连接上实验室服务器后建议创建自己的用户,这样可以保护自己以及其它同学的数据和环境。
三、环境配置
因为文主主要使用服务器跑深度学习,所以以下配置一些深度学习所需环境。
1、安装pycharm
使用命令行安装pycharm社区版的命令如下,学自pycharm官网Download PyCharm: Python IDE for Professional Developers by JetBrains
sudo snap install pycharm-community --classic
(插一句,snap命令的一些相关信息可参考ubuntu——snap使用介绍 - 简书 (jianshu.com),snap的相关历史可参考为什么Ubuntu的Snap是不受欢迎的 - 腾讯云开发者社区-腾讯云 (tencent.com))
命令行启动pycharm的命令
pycharm-community
PS:这里更推荐使用vscode作为编程的IDE,主要原因在于用命令行界面启动pycharm后,该终端就无法输入其它命令了,这就影响到了后面提到的tmux的使用,从而导致当因为网络问题于远程服务器断联时,之前正在运行的pycharm可能也会断掉。vscode的安装和使用见我的另一篇文章。
2、安装anaconda
写在前面,之前我本机的Ubuntu是用的anaconda,但是这次在服务器上用anaconda配pytorch环境的时候,直接conda install pytorch的对应版本一直环境检验不通过,考虑可能是因为这次我用的cuda11.7??而在清华源上下载合适的pytorch版本并手动安装后,再对环境进行新的安装包或卸载包,总是会自动把我装的版本替换掉,导致环境不可用。所以我考虑用miniconda替换掉anaconda,这样其初始包比较少,应该环境检验比较容易通过。
安装anaconda的命令:(具体的版本可在网址中选择合适的)
第一步下载安装文件
wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh
第二步将下载好的sh文件移动到想安装的位置,之后在该位置打开终端输入
bash Anaconda3-2022.10-Linux-x86_64.sh
之后按照提示一步步进行安装,可参考链接 ;需要注意最后一步建议选yes,这样省去了手动添加环境变量的麻烦,参考链接;如果不希望每次开机就自动启动base环境,可使用以下命令禁止该操作
conda config --set auto_activate_base false
这里补充一下,由于我使用的是实验室的服务器,在装完anaconda之后提醒我需要重启shell来使得之前设置的环境变量生效,但是由于有其他人也在用服务器,所以不能重启整个系统,此时我在mobaxterm的命令行模式下尝试了很多方法都不行,最后采取的方法是用mobaxterm的图形化界面,在其中打开了一个终端,输入source ~/.bashrc后重新回到命令行模式下,发现此时就可以了。
3、安装miniconda
安装miniconda的命令:(具体的版本可在网址中选择合适的)
第一步下载安装文件
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
第二步将下载好的sh文件移动到想安装的位置,之后在该位置打开终端输入
bash Miniconda3-latest-Linux-x86_64.sh
之后按照提示一步步进行安装,可参考链接 ;需要注意最后一步建议选yes,这样省去了手动添加环境变量的麻烦,参考链接;如果不希望每次开机就自动启动base环境,可使用以下命令禁止该操作
conda config --set auto_activate_base false
这里补充一下,由于我使用的是实验室的服务器,在装完anaconda之后提醒我需要重启shell来使得之前设置的环境变量生效,但是由于有其他人也在用服务器,所以不能重启整个系统,此时我在mobaxterm的命令行模式下尝试了很多方法都不行,最后采取的方法是用mobaxterm的图形化界面,在其中打开了一个终端,输入source ~/.bashrc后重新回到命令行模式下,发现此时就可以了。
4、安装pytorch
由于anaconda和服务器显卡的nvidia驱动已经安装过了,所以从安装nvidia驱动对应的cuda开始。
安装显卡驱动对应的cuda:
先通过命令nvidia-smi确定本机所装nvidia驱动支持的cuda版本,所安装的版本号只要不超过CUDA Version的值即可;
确定好版本之后到cuda官网寻找安装命令,我这里选择runfile的安装方式,按照官网的指引进行安装,安装过程中到这一步的时候把Driver勾选掉,因为之前已经安装过驱动了;
安装完成后,cuda会提醒把它添加到环境变量中,因此打开用户目录的.bashrc文件,在文件末尾添加以下内容,之后终端输入source ~/.bashrc使其生效;
export CUDA_HOME=/usr/local/cuda-11.7
export PATH=$PATH:/usr/local/cuda-11.7/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64
最后,终端输入 nvcc -V 检查cuda是否安装成功,显示如下内容即可。
如果想要卸载cuda:To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.7/bin
安装cudnn:
直接在官网下载cudnn for CUDA11.x的tar包或者复制网址在终端里用wget下载;
解压以后进入所在文件夹,终端执行以下命令即可完成。
sudo cp include/cudnn.h /usr/local/cuda/include
sudo cp lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
安装pytorch:
直接在官网找对应版本的pytorch安装命令,然后用miniconda创建一个python3.8的新环境安装即可。之前用anaconda配的python3.7的环境一直conda install检测不通过,这次miniconda创建的python3.8的新环境却可以了,考虑有可能是python版本或者anaconda自带包太多的问题。如果国外的源实在太慢,可以考虑到清华源上找到对应版本的pytorch和torchvision下载下来(或者conda换源然后再输入官网的安装命令试一下?这种办法我没试过),然后用conda的本地包安装命令安装,但是实测下来这种方法安装的包可能会在之后的conda环境更新时被conda自动替换为其它版本,会导致系环境不可用,因此并不推荐。
5、安装tmux
tmux主要是防止在跑训练的过程中本机突然断网或者断电导致远程连接断开、进而训练中止的情况;使用tmux可以创建脱离本机而独立在远程服务器中执行命令的终端会话。
tmux安装命令:
apt-get install tmux
tmux的使用:参考链接Tmux 使用教程 - 阮一峰的网络日志 (ruanyifeng.com)
- 新建会话
tmux new -s 会话名
- 在 Tmux 窗口运行所需的程序
- 按下快捷键
Ctrl+b d
或输入tmux detach将会话分离- 利用tmux ls查询已有会话和其名称
- 重新连接到会话
tmux attach-session -t 编号/会话名
若想要杀死会话,则可在会话中输入exit或直接在终端中输入tmux kill-session -t 编号/会话名
四、一些常用的命令
1、ps:查询后台进程
常用ps aux查询正在运行的后台进程,其它使用见链接,用kill -9 PID(PID是用户名后的那个数字)可以杀死后台进程
可用 | grep 来抓取部分信息
五、一些常见问题解决
1、MobaXterm中使用方向键会输出2468
导致原因:MobaXterm与搜狗输入法冲突
解决方案:切换其它输入法即可
2、因网络断联后,重新连接发现之前的pycharm仍在后台运行,且连接不上其图形界面
通过 ps aux | grep pycharm找到pycharm对应的进程和PID号
通过kill -9 pycharm的PID 命令杀死该进程(因为据chatgpt所说,貌似没法做到通过纯命令行界面连接上服务器一个后台运行程序的图形界面)
之后重新开启pycharm即可