我有一个用于PyTorch的谷歌云深度学习虚拟机映像,它使用SSH连接连接到Jupyter Notebook。如何更改我当前正在做的事情,以便即使我关闭笔记本电脑/暂时断开与互联网的连接,Jupyter 笔记本仍处于活动状态?
目前,在转动我的虚拟机并打开一个 tmux 窗口后,我使用以下命令启动 Jupyter 笔记本及其 SSH 连接:
gcloud compute ssh <my-server-name> -- -L 8080:localhost:8080
此代码取自此处深度学习图像的官方文档:https://cloud.google.com/deep-learning-vm/docs/jupyter
然后,我可以在 localhost:8080 上连接并做我需要做的事情。但是,如果我长时间开始训练模型并需要关闭笔记本电脑,当我重新打开它时,我的 ssh 连接会中断,Jupyter 笔记本会关闭,并且正在训练的模型会中断。
如何使此 Juptyer 笔记本保持活动状态,以便以后能够重新连接到它?
铌。我曾经使用谷歌云浏览器SSH选项,一旦进入服务器,就会启动一个tmux窗口和其中的jupyter笔记本。这很好用,意味着笔记本总是活着的。但是,对于预装了 CUDA 和 Jupyter 的 Google Cloud 映像,这不起作用,我能够连接的唯一方法是通过上述命令。
我以前在 GCP 上也遇到过这个问题,并找到了一种解决此问题的简单方法。一旦你进入计算引擎,运行linuxscreen
命令,你会发现自己在一个虚拟终端中(你可以并行打开许多终端),在这里你会想要运行你长期运行的作业。
开始作业后,使用键从屏幕上分离,键Ctrl+a
然后d
。分离后,可以退出 VM,重新连接到 VM 并运行screen -r
,你会发现作业仍在运行。
当然,您可以使用screen
命令做很多很酷的事情,并鼓励您阅读此处的一些教程。
注意:请确保您的计算引擎实例不是抢占式计算机!
让我知道这是否有帮助!
我认为最好将Jupyter安装为服务器。 因此,即使您断开连接,您的作业也可以继续运行。
您可能还想知道一些事情。
这不是您要查找的多用户服务器。本文档介绍如何使用单个用户运行公共服务器。这只能由想要远程访问其个人计算机的人完成。即便如此,这样做需要彻底了解设置限制和安全影响。如果允许多个用户访问本文档中所述的笔记本服务器,则他们的命令可能会相互冲突、破坏和覆盖。
如果你想要一个多用户服务器,官方的解决方案是JupyterHub。要使用JupyterHub,您需要一个Unix服务器(通常是Linux)运行在网络上用户可以访问的地方。这可能会在公共互联网上运行,但这样做会带来额外的安全问题。