无法使用gcloud-sdk保持与虚拟机的SSH连接

时间:2019-03-28 19:06:06

标签: google-cloud-platform google-compute-engine google-cloud-sdk

我有一个用于PyTorch的Google云深度学习虚拟机映像,该映像使用SSH连接来连接到Jupyter Notebook上。如何更改当前正在执行的操作,以使即使我关闭笔记本电脑/暂时断开互联网连接时,Jupyter笔记本电脑仍能正常运行?

当前,在打开虚拟机并打开tmux窗口后,我使用以下命令启动Jupyter Notebook及其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笔记本电脑处于活动状态并在以后能够重新连接到它?

NB。我曾经使用Google Cloud浏览器SSH选项,并在服务器中启动tmux窗口和其中的jupyter笔记本。这很好用,这意味着笔记本电脑一直都在运行。但是,在预装了CUDA和Jupyter的Google Cloud映像中,此操作不起作用,并且我能够连接的唯一方法是通过上述命令。

2 个答案:

答案 0 :(得分:1)

我之前在GCP上也遇到过这个问题,并找到了解决此问题的简单方法。进入计算引擎后,运行linux screen命令,您将发现自己在虚拟终端中(可以并行打开许多终端),在这里您将需要长期运行工作。

开始工作后,先使用键盘上的键Ctrl+ad从屏幕上分离。分离后,您可以退出VM,重新连接到VM并运行screen -r,您会发现作业仍在运行。

当然,您可以使用screen命令来做很多很酷的事情,并且会鼓励您阅读here中发现的一些教程。

注意:请确保您的Compute Engine实例不是可抢占式计算机!

让我知道这是否有帮助!

答案 1 :(得分:0)

我认为最好安装Jupyter as server 。这样即使断开连接您的工作也可以继续运行。

您可能还想知道一些事情。

  

这不是您要查找的多用户服务器。本文档介绍如何与一个用户一起运行公共服务器。仅应由想要远程访问其个人计算机的人来完成。即使这样,也需要对设置限制和安全隐患有透彻的了解。如果您允许多个用户访问本文档中描述的笔记本服务器,则他们的命令可能会冲突,相互干扰并相互覆盖。

     

如果您要使用多用户服务器,则官方解决方案是JupyterHub。要使用JupyterHub,您需要一个Unix服务器(通常为Linux),该服务器运行在网络上用户可访问的位置。这可能会在公共Internet上运行,但这样做会带来其他安全问题。