远程服务器上的后台训练网络,再也不用担心因断网而导致训练间歇性

2023-08-19 1291阅读

最近,在使用实验室服务器的GPU远程训练神经网络时,我使用了服务器中的远程jupyter笔记本。首先,我使用Xshell连接远程服务器,进入conda,激活虚拟环境,然后打开远程jupyter笔记本。当然我这里使用的jupyter笔记本是自己配置的端口号,所以输入的命令是这样的:。使用了服务器中的计算资源,所以一开始用起来还是很方便的。点击开始,很容易打乱做其他事情的思路,所以后来找到了一个方法:服务器后台训练神经网络,即使网络断了,Xshell断了,也没关系。放到后台后,显然就没有这些东西了,回到电脑输入URL端口号,就可以愉快的训练了,不用担心网络中断或者xshell中断到神经网络的训练。

先说一下情况:

最近,在使用实验室服务器的GPU远程训练神经网络时,我使用了服务器中的远程jupyter笔记本。 首先,我使用Xshell连接远程服务器,进入conda,激活虚拟环境,然后打开远程jupyter笔记本。 当然我这里使用的jupyter笔记本是自己配置的端口号(怕和别人冲突),所以输入的命令是这样的:

## 用xshell连接远程服务器, 之后首先激活虚拟环境
conda activate tfenv
## 然后进入tfenv的虚拟环境,我一般在这个虚拟环境中写notebook,做一些实验等, 下面打开远程的jupyter notebook
jupyter notebook --config ~/.jupyter/jpconfig.py

通过上面的第二行代码,我可以远程打开我配置的jupyter笔记本。 由于我单独配置了端口和密码,所以我必须稍后添加那串东西。

这样我回到自己的电脑,打开浏览器,输入服务器的URL:端口号,例如:219.216.65.11:8991,然后就可以打开这个远程jupyter笔记本了。 使用了服务器中的计算资源,所以一开始用起来还是很方便的。

但是使用远程jupyter有一个问题。 实时操作还可以,但是如果我们要训练一个非常复杂的神经网络,我们肯定不能看着它训练。 我们通常让它在那里训练,然后做其他事情。 ,如果此时网络突然断线,xshell将无法连接服务器。 由此带来的问题是,打开的jupyter笔记本的进程将不可用,即服务会中断。 我们的网络因训练而中断。 这个时候即使我们重新连接也是不行的。 毕竟我们的jupyter需要一系列的命令来启动。

这个一直很头疼,因为最近我训练的网络一般需要7-8个小时,而且每次训练3-4个小时,网络就不稳定,如果断线了,之前的努力就白费了,而xshell通过ssh连接,也很容易破解。 对于远程jupyter笔记本来说,这是非常困难的。 虽然我训练的网络设置了断点,但我总不能每次都检查一下什么时候断了,然后重新连接,然后从断点开始。 点击开始,很容易打乱做其他事情的思路,所以后来找到了一个方法:服务器后台训练神经网络,即使网络断了,Xshell断了,也没关系。

我从网上搜索了一些实现上面的方法,比如screen和tmux都比较好用,但是安装的时候发现我不是root,没有权限,所以无法安装,所以我找到了 Linux 附带的另一个。 一个命令:nohup命令,这个解决了我的烦恼,所以我就记录一下这个是怎么使用的,把命令放在后台很简单:

远程服务器上的后台训练网络,再也不用担心因断网而导致训练间歇性

nohup jupyter notebook --config ~/.jupyter/jpconfig.py &

我只需要在打开jupyter Notebook之前添加一个nohup,后面加上一个&,这样这个操作就会放到后台,用jobs -l就可以看到这个过程

在这里插入图片描述

如果你用过jupyter notebook,我们知道输入jupyter notebook后,会输出一串类似这样的东西:

在这里插入图片描述

放到后台后,显然就没有这些东西了,回到电脑输入URL端口号,就可以愉快的训练了,不用担心网络中断或者xshell中断到神经网络的训练。 影响。 这太酷了。

当然,我们要记得在训练结束后关闭这个后台进程,使用的命令是:

kill -9 PID

凯越雨刷器操纵杆都有啥做用_电脑可以做传奇服务器用_用纸箱做捕鸟器

这个PID就是上面的进程号3905。 怎么找到这个? 就是jobs -l 然后看哪个进程号是训练网络的命令,用完就杀掉这个进程。

注意,如果当前的xshell坏了,我们重新连接后,jobs -l命令就不能正常工作了,所以我们必须使用ps ux

即:linux下kill nohup并提交给后台运行的程序

然后介绍一个nohup.out维护管理方法(清除nohup.out),因为我们发现后台运行的jupyter Notebook会输出那些日志,也就是我们平时启动jupyter Notebook的那一串东西放到nohup.out文件中向上。 如果文件过大,那就很烦人了,nohup.out 会自行不断增长。 如果你的服务器硬盘不够强,很容易挂掉应用程序(硬盘没有空间了,可以玩什么都不要传输),但又不能直接删除。 因为直接删除可能会导致应用程序无法打印后续的错误日志。 这个问题在weblogic服务器、jboss服务器等大型中间件中很常见。 这个问题在生产环境中要特别注意。

所以我们有一种方法可以在不停止服务的情况下直接清除nohup.out文件。

两个命令可以在不停止WEB服务的情况下清除nohup.out。

好了,今天的记录到这里就结束了,我从来没有用过screen和tmux,所以写不出什么东西,而且今天的nohup已经被我测试过了,所以就记录一下。

参考博客:

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]