使用SSH连接远端服务器训练

1. 租用机器

DeepShare平台:https://gpu.deepshare.net/home

选择一个有你需要环境的机器

image-20201023045041163

先租用CPU上传代码,配置环境,再转换为GPU以节省资费(质押可以不花费DBC,可以一直白嫖Linux环境)

image-20201023045215184

租用CPU(至少30G空间)

image-20201023045444903

支付订单(支付完要点击已支付)

image-20201023045823511

2. 使用CPU容器配置环境

根据收到的邮件信息,连接服务器(终端),jupyter(没啥用开着吧)和网盘(用于传输文件,可能会比pycharm传输快)

打开网盘,将压缩后的工程文件上传到网盘

image-20201023050328268

连接终端,可以使用conda命令查看环境和包

image-20201023050712212

连接一下jupyter

image-20201023052123465

输入命令,找一下路径

image-20201023052218916

显然我们刚刚把文件放在上一级目录了,后面就可以用终端操作了

先解压文件

image-20201023052433313

打开pycharm

然后创建一个远端python解释器

image-20201023052756759

配置SSH,然后测试一下,没有问题就确认

image-20201023051533564

对应到邮件信息:

image-20201023051437095

根据邮件设置python解释器在服务器的路径,并且设置工程映射路径

image-20201023053036027

也可以看一下远端是否同步工程文件(配置SSH解释器的同时会自动生成deployment配置)

屏幕快照 2020-10-23 下午05.31.34 上午

然后就可以使用CPU跑一下代码看看代码有没有问题啦(batch不能太大,内存只有3G,超过会杀进程,没有问题就行)

若有时候发现同步有问题,即没有你上传的文件,需要删除所有配置然后从头来一遍,我也不知道是什么bug

3. 转用GPU容器训练模型

开启GPU

image-20201023053727776

支付订单(时间尽量久一点,多了可以退,少了也能续)

image-20201023053903258

然后就可以在终端查询到GPU信息了,使用命令 watch -n1 nvidia-smi

image-20201023054642212

再转回pycharm训练即可

batch设置为12就把8G的显卡塞满了,可怕

image-20201023055255165

image-20201023055241584

4. 监控训练进程

使用tensorboard,输入命令 tensorboard --logdir=./runs(注意,一定要登陆服务器后进行,不然就是憨批)

image-20201023070716113

再打开邮件中的tensorboard网址即可(我就失败了,打不开,也可以选择隔一段时间从服务器下载even文件在本地打开)

5. 挂后台训练

睡了一觉发现pycharm挂掉了(电脑休眠断网)

调试用pycharm,训练直接在screen挂后台训练

使用screen命令后台运行,不要在pycharm里面训练

使用命令 screen -ls 查看当前所有任务

使用命令 screen -S session_name 创建一个新的后台

image-20201023103938130

attached表示已经连接上后台

使用命令 exit 退出并删去当前后台

使用命令 screen -d session_name 与目标后台脱离连接

使用命令 screen -r session_name 与目标后台建立连接

建立后台并且attached之后,直接在命令行运行python文件。之后再输入命令 screen -d session_name 与当前后台脱离(如果当前程序一直在print可以打开另外一个终端输入脱离命令)。

现在就算断连,服务器也不会停止训练了。(建议先脱离连接再建立连接,无论之前有没有attached,都先脱离一下再连接,不然程序容易没有跑在后台)

下次连接输入命令 screen -r session_name 连接后台,就可以看到当前程序运行了

image-20201023104823473