跳到主要内容

后台运行

很多用户问到诸如此类的问题:「我自己的机器关机是否影响训练」,「关掉浏览器训练会不会停止」...

统一回复:实例的运行状态和你的电脑状态没有任何关系。

但有时候我们在刷新页面后,感觉代码「好像」没有在运行了,这是为什么呢?

使用 Notebook 运行程序#

如果你使用 Notebook 运行代码,在刷新页面后,Notebook 看起来像是没有在运行;但实际上你刷新页面的动作,并不会停止 Notebook 的运行状态,只是「清空」了 Notebook 自己的状态(也就是你浏览器的状态),这会导致所有的动态输出将会停止。

例如你之前使用 tqdm 监控进度条,或是直接 print 来监控训练日志,本来这些进度条和日志本来在不断地被更新,所以你可以知道程序在运行,但刷新页面后,这些进度条或日志不再更新了,所以你可能认为训练似乎被停止了,但其实是因为你的浏览器状态被清理掉了,Notebook 没有办法恢复之前的状态,但 Notebook 的运行状态是没有变化的。

因此,如果你「仅依赖 Notebook 的输出」来获取训练的结果,那么风险是很大的,你的网络一旦出现问题,或不小心刷新了页面,都将使你无法获得训练的结果。

success

好的习惯是将重要的输出内容写到文件里面,也即是我们通常说的「日志文件」,这样无论页面状态怎么变化,你都可以通过查看文件的方式来获得输出的内容。

使用终端运行程序#

你可能会使用终端来运行程序,例如 python train.py 的形式,那么推荐使用 tmux 软件将整个终端挂在后台执行,这样无论你的 SSH 客户端用的是什么,连接状态是否断开,都不会影响到程序的运行。当然,打日志依然是一个很好的选择。