一文明白使用nohup将服务器训练程序后台运行不关闭+随时通过查看训练情况输出与visdom可视化

Odetta ·
更新时间:2024-11-10
· 965 次阅读

使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化使用服务器进行远程训练nohup指令和查看输出缺省输出文件的写法指定输出文件的写法和CUDA一起用实时查看out配合visdom使用 使用服务器进行远程训练

由于笔者经常需要使用服务器进行训练,且有些模型训练起来需要很长的时间,如Mask模型,故经常需要长期跑程序。由于我使用的是ssh登录,因此断网或者退出账号时程序就会被kill。总结了以下常用的远程训练指令,帮你可以不间断的训练模型,并且随时可以查看模型可视化结果。

nohup指令和查看输出

nohup 是 no hang up 的缩写,就是不挂断的意思。

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

在缺省情况下程序的所有输出都被重定向到一个名为nohup.out的文件中。

缺省输出文件的写法 nohup python3 -W ignore -m xxx.py

在这种写法下,所有输出被保存到该目录的nohup.out内,且实时读写,如图,使用ls查看该文件夹下的文件。
在这里插入图片描述

指定输出文件的写法 nohup python -u xxx.py > my_out_file.txt 2>&1 &

就会将xxx.py的输出全部存到my_out_file.txt里

和CUDA一起用

有一台服务器,服务器上有多块儿GPU可以供使用,但此时只希望使用第2块和第4块GPU,但是我们希望代码能看到的仍然是有两块GPU,分别编号为0,1,这个时候我们可以使用环境变量CUDA_VISIBLE_DEVICES来解决这个问题。
比如

CUDA_VISIBLE_DEVICES=1 只有编号为1的GPU对程序是可见的,在代码中gpu[0]指的就是这块儿GPU CUDA_VISIBLE_DEVICES=0,2,3 只有编号为0,2,3的GPU对程序是可见的,在代码中gpu[0]指的是第0块儿,gpu[1]指的是第2块儿,gpu[2]指的是第3块儿 CUDA_VISIBLE_DEVICES=2,0,3 只有编号为0,2,3的GPU对程序是可见的,但是在代码中gpu[0]指的是第2块儿,gpu[1]指的是第0块儿,gpu[2]指的是第3块儿

CUDA指令在前

CUDA_VISIBLE_DEVICES=1 nohup python3 -W ignore -m xxx.py 实时查看out

使用vim nohup.out查看该文件。
为了实时查看输出,在文件内使用 Shift + G的组合键快速跳到文件末尾。
跳到指定行:直接:+数字

配合visdom使用

有时我们会使用visdom将训练结果可视化,但是登出系统会自动把visdom也关闭,影响查看效果,因此可以直接使用nohup打开visdom,这样即使登出服务器,下次登入也可以在指定端口上访问可视化结果。

nohup python -m visdom.server
作者:Haorui.L



后台运行 服务器 运行 输出 训练 程序 关闭 nohup

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章