使用远程服务器跑深度学习代码时的一些心得

type
status
date
slug
summary
tags
category
icon
password
😀
众所周知,很多深度学习代码跑起来的时间特别长,我在使用vscode的ssh插件连接远程服务器跑深度学习任务的时候一旦网络出现问题,终端就会被关闭,任务就会中断,为了能实现远程服务器上深度学习任务的后台运行,我接触到了screen工具,本文将梳理利用screen实现远程服务器上任务后台运行的流程,并介绍watch工具与script工具帮助大家对任务过程与结果进行更好的监控。
 

📝 主要内容

screen

本段部分参考文章:
这个工具是研一时帮老师做一个需要跑很久的实验时康民师兄推荐给我的,非常好用,感谢康民师兄
screen 是一个多任务窗口管理器,允许用户在单个终端窗口中创建多个会话,并在这些会话之间进行切换。它的最大特点是可以将正在运行的会话“脱离”当前的终端窗口,即使用户断开连接或者关闭终端,会话依然保持运行,用户可以在稍后重新连接并继续操作。对于那些需要在后台运行长时间任务的用户来说,screen 提供了极大的便利。
若系统中未安装screen命令,可以
有了screen这个工具后,我们就可以创建一个screen,并进入这个screen,在这个screen中运行自己的任务,这样的话即使本地与服务器的ssh连接断开,这个screen中的任务也不会中止,待我们再次ssh连接到服务器后,切入这个screen即可看到还在正常运行的任务(当然我大部分情况下看到的都是任务的报错),具体操作方式如下:
notion image
可以看到我有4个screen,我们可以选择my_screen进入
notion image
由于这个screen我创建时使用的是
故进来以后可以直接输入python语句
如果我创建时不附带command的话
就是如下效果
notion image
可以在其中直接输入bash命令
下一个问题是,我们该如何从切入的my_screen中切出呢?如果我们需要暂时切出,保留这个screen在后台运行的话,需先按下快捷键
Ctrl + A,再按下D键,即可返回我们切入screen前用的终端,下次需要再次切回的话只需screen -r my_screen即可;如果我们需要关闭这个screen并永不切入它的话,需要先按下快捷键Ctrl + A,再按下:键,输入quit即可,这样之后,screen -ls中将不再有这个screen
需要注意的是,切入my_screen后的终端是不能用滚轮上下浏览的,需要使用快捷键Ctrl + A,再按下[键,即可通过用滚轮移动光标的方式进行翻页,但这太麻烦了,于是我需要一种工具,来帮我把某个终端的输出内容存为txt,作为日志供我查阅,因此,我找到了script工具
screen的操作还有很多,想详细了解可以参考我开头贴的两个链接,另外tmux也是一个类似功能的工具,我并未学习使用过,这两天有空打算了解一下,听说比screen好用

script

这个命令可以帮助我们记录终端的所有输出信息,存为txt文件供查阅
在你需要开始记录时
这样之后,从你执行script ./output_001.txt开始,到输入exit结束,中间所有终端的输出信息(包括结尾的exit)都会被存到./output_001.txt中,就不用在screen中慢慢翻阅了

watch

众所周知,深度学习任务很多时候需要用到显卡,且很多情境下,我们有监控显卡状况的需求
但这两个命令只能是返回某一个时刻GPU的各种情况,基本就是我什么时候想到了要看一眼,就执行一下看一眼,手动轮询的感觉,这太费劲了,于是我就找有没有哪个工具可以反复的执行某个命令,我就找到了watch
这样就可以以一秒为时间间隔,反复执行nvidia-smi命令来实时监控GPU的情况
想结束时Ctrl + C 即可

结语

以上内容均为我科研生活中的积累,难免会有纰漏,请大家指正,有更方便的替代工具也欢迎交流🥰
 
 
Prev
使用VNC实现windows电脑对远程linux服务器的图形化界面安装与控制
Next
这天夜里
Loading...