ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-02-20 16:01:59  阅读:1227  来源: 互联网

标签:visdom 训练 CUDA nohup gpu GPU out


使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化

使用服务器进行远程训练

由于笔者经常需要使用服务器进行训练,且有些模型训练起来需要很长的时间,如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 发布了2 篇原创文章 · 获赞 1 · 访问量 15 私信 关注

标签:visdom,训练,CUDA,nohup,gpu,GPU,out
来源: https://blog.csdn.net/weixin_46233323/article/details/104399179

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有