做深度学习有一段时间了,看了一些论文,跑了一些代码,挖了不少坑,也填了不少坑。在这里先总结一下在服务器上跑深度学习代码时常用的一些操作吧。如何连上远程服务器
连上服务器
首先,当然得是要用自己的PC连接上服务器。如果你的PC是linux系统,那么可以直接通过ssh指令进行远程访问,这里不详细说明。接下来我们主要说PC是windows上的操作。首先,我们要下一个用于ssh连接的工具,个人推荐的是Xshell。其打开后的界面如下图所示:
然后我们依次文件->新建得到下图:
按图中红色字操作,注意一下,以上的应用场景主要是在你的PC和你的服务器是在同一个局域网下的(通俗说连的是同一个wifi),如果不在同一个局域网下,本文不做叙述。
确定之后,会弹出一个会话框,选中你新建的会话名称然后点击连接,就会让你先输入你在服务器上的用户名和密码,确定之后显示如下界面就表示连接成功了。
服务器与本地电脑之间传输文件
如果想往服务器上传文件,可以点击下图红色方框中的按钮。
得到
左侧是本地文件,右侧是服务器文件,两边文件拖动就可以实现文件互传了。真的很方便。
如何让代码在后台运行
由于实验室的网实在是不稳定,所以经常遇到跑了好几个小时的代码快要出结果的时候却断网了,导致与服务器的连接中断,代码也就自然而然的停止运行了(至于其中的具体原因可以自行百度)。这点真的让人很苦恼。同时,当你的ssh在执行一个代码时,你如果不新建一个连接,你在这个连接中是无法干其他的事情的,这一点也很不好。于是,考虑可以把代码放到服务器后台运行。
第一种 nohup
最开始的做法是
$ nohup python test.py
这样执行的时候会将代码放在服务器后台执行,你的终端是看不到运行过程的,期间运行的结果(代码运行过程中打印出来的)会在一个生成的nohup.out文件中保存。
第二种 screen
后来接触到了screen命令,觉得着实好用,在这里极力推荐。
可以简单的认为用这个命令你可以为不同的任务开不同的窗口,这个窗口之间是可以切换的,同时,窗口和你的会话连接基本上没有任何区别,这样你可以在开一个连接的时候同时干多件事情,并且在终端看得到运行过程的同时而不会由于断网而导致代码停止运行。其常用命令如下:
screen -S name #创建一个窗口,并且为这个窗口命名
$screen -S yolo
当你执行完以上命令后,就会自动跳入名为yolo的窗口,在这个窗口里可以干你想干的事情。
当