怎么用实验室的工作站?——VScode远程开发调试

2022/02/23 PyTorch 共 3886 字,约 12 分钟

事实证明,实验室虽然给每个人配了3060,但是本菜菜的研究生环境至今还是没完全装好——GPT和一些NLP模型跑得没问题,但是最近跑CV模型——YOLO不停报错,正在崩溃中😭(后来发现是显存不够,把batch size改小)。实验室的GPU工作站也得学会用,经过学长的推荐,还是打算用VScode连服务器。在连服务器之前,记得先找实验室的负责人创建用户密码。下面就是本小白的配置过程:

安装VScode

这一步难度为0,我猜大家电脑里基本都已经安装了吧。现在VScode上的插件很多,我的想法还是把VScode当作一个编辑器,可以尝试装$\LaTeX$和Markdown以及Jupyter notebook之类,不要安装太多插件当IDE用,主要是我本人比较崇尚简单轻量。

安装Remote Development插件+配置SSH

我的电脑是Mac,本身自带ssh,实验室的Windows电脑(windows10自带powershell无需安装,其他系统安装openssh)。Windows电脑的远程配置和Mac原理一样,都差不多,可以看参考链接,和Mac电脑的步骤基本只有路径不同。需要注意的是,我有两台电脑都想要远程登录服务器,那么我只需要将两台电脑的公钥都添加到authorized_keys文件中。

参考:VSCode远程开发配置教程Macbook Air配置vscode+remote sshcentos配置ssh免密码登录后仍要输入密码的解决方法windows vscode远程连接linux服务器

Remote Development插件安装后会将所有你需要的远程开发的插件都安装上,包括Remote SSH。

为了让我们不要每次连接服务器都输入密码,我们需要配置ssh公钥和私钥。首先在本地电脑Terminal下生成密钥:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa-remote-ssh

注意生成密钥的过程中可以不设passphrase,之前设过一次在后续过程中报过错,简单起见可以直接不设。这时可以看到~/.ssh下生成了id_rsa-remote-sshid_rsa-remote-ssh.pub两个文件,前者是本地密钥,后者是要上传到服务器的公钥。

在本地更改~/.ssh/config文件,将此文件加上(下方的注释只是解释,不要放上去):

Host XXXX   //Host名,设置好以后可以直接用ssh XXXX连接
  User XXX			//用户名
  HostName XXXXXXXX   //服务器地址
  IdentityFile ~/.ssh/id_rsa-remote-ssh   //本地ssh文件

用ssh登录目标服务器,在~/.ssh目录下新建文件authorized_keys。将id_rsa-remote-ssh.pub的内容用cat命令打开,复制粘贴到authorized_keys里(我用的vim)。找到服务器端的/etc/ssh/sshd_config文件去掉PubkeyAuthentication前的注释#号。然后重启远程服务器的ssh服务:

sudo systemctl restart sshd.service

接下来再登录应该不需要密码,如果还需要(本人遇到这样的事情),那么进行以下操作:

查看系统日志:

tail /var/log/secure -n 20

以上命令可能需要权限,就加sudo就行。

可以看到最后20行的日志,如果其中有对我们自己的登录信息:Authentication refused: bad ownership or modes for file,那么我们需要修改权限:

chmod g-w/home/yingzhang
chmod 700 /home/yingzhang/.ssh
chmod 600 /home/yingzhang/.ssh/authorized_keys

再进行登录就可以免密了。这个可以用Terminal check out一下,如果成功设置,那么不管在VScode上登录还是在Terminal上ssh登录都是免密的。

在远程服务器安装插件

登录远程服务器后会发现可以选择将插件安装在远程服务器上。我觉得可以不用专门安装,在你使用的过程中VScode会弹出提示推荐你安装哪些插件,包括Python,Jupyter notebook等,这里只介绍我觉得很好用一定要安装的插件:SFTP。

参考:VSCode SFTP插件详细使用介绍

SFTP可以让你的本地代码和服务器代码同步。不需要再将文件传来传去。需要你在本地安装SFTP插件(注意是liximomo的版本),然后用VScode打开你想要同步的文件夹,用cmd+shift+P输入SFTP:CONFIG,可以以此编辑sftp.json。我的配置如下:

{
    "name": "3090",        		//服务器名字,随便取
    "host": "##.##.##.##",		//服务器ip地址
    "protocol": "sftp",
    "port": 22,
    "username": "#########",	//用户名
    "remotePath": "/home/######/Signature-Verification_System_using_YOLOv5-and-CycleGAN",  //远程服务器上的路径
    "password": "######",		//密码
    "uploadOnSave": true,
    "syncMode": "update",
    "watcher": {"files": "/*", "autoUpload": true, "autoDelete": true},
    "ignore": ["/.vscode"]
}

配置好以后可以在本地文件处右键,选择local—>remote可以向服务器上传文件夹。

配置远程服务器环境

想要在远程服务器上跑深度学习,还需要配置。我们可以先检查一下服务器的GPU型号和有几块GPU:

nvidia-smi -L

接下来我们检查一下是否已经安装了cuda已经cuda版本:

nvcc -V

我的情况是已经安装了cuda11.4,GPU是一块3090大家共用。接下来检查一下自己的用户文件夹下有没有conda文件夹,如果没有可以肯定当前没有装conda(我的情况),接下来还是要装conda,我试了一下不装conda直接开始运行项目代码会报一些意想不到的错,主要原因就是PyTorch,Python,cuda以及显卡版本都有可能相互不适配。conda装了以后就很舒服很方便了。

参考:服务器配置——3090对应cuda和torch安装

miniconda是conda的轻量版本,我们先装上miniconda:

wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

chmod 777 Miniconda3-latest-Linux-x86_64.sh #给执行权限

bash Miniconda3-latest-Linux-x86_64.sh #运行

cd ./home/用户名/miniconda3/bin

chmod 777 activate

. ./activate #激活conda环境

conda config --add channels bioconda

conda config --add channels conda-forge #添加频道

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/  #这四条是添加channel

###下一步添加环境变量,否则conda不能运行!!(这个命令也是常见添加环境变量的命令)
###我的安装情况是没有加,因为打开~/.bashrc发现已经自动加上了。

vim ~/.bashrc

export PATH=$PATH:/home/用户名/miniconda3/bin  #根据实际路径确定

export PATH=$PATH:/home/user2/miniconda3/bin (这是我的命令)

source ~/.bashrc #保存更改

因为已经安装了cuda,接下来我们要安装PyTorch,去PyTorch官网看看,发现最近的版本1.10适配是cuda11.3,所以装一个1.10可以了:

conda create -n torch1.10 python=3.8  # 创建了一个Python3.8的环境,环境名torch1.10

conda activate torch1.10 #进入虚拟环境

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

亲测这个环境跑代码是没有问题的。

screen命令:保证代码在后台运行不会断开

TBC-labml:用手机看服务器上的深度学习进程

Github:labml

文档信息

Search

    Table of Contents