【问题标题】:Can't keep SSH connection to VM using gcloud-sdk无法使用 gcloud-sdk 保持与 VM 的 SSH 连接
【发布时间】:2019-08-19 16:04:33
【问题描述】:

我有一个用于 PyTorch 的谷歌云深度学习虚拟机映像,它使用 SSH 连接来连接到上面的 Jupyter Notebook。如何更改当前正在执行的操作,以使 Jupyter Notebook 即使在我关闭笔记本电脑/暂时断开互联网连接时也能保持活动状态?

目前在打开我的虚拟机并打开一个 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 Notebook 被关闭,我正在训练的模型被中断。

我怎样才能让这个 Juptyer Notebook 保持活动状态并能够在以后重新连接到它?

注意。我曾经使用 Google Cloud 浏览器 SSH 选项,一旦在服务器中启动一个 tmux 窗口和其中的 jupyter notebook。这很好用,意味着笔记本总是活着的。但是,对于预装了 CUDA 和 Jupyter 的 Google Cloud 映像,这不起作用,我能够连接的唯一方法是通过上述命令。

【问题讨论】:

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


【解决方案1】:

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

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

这不是您要查找的多用户服务器。本文档描述了如何使用单个用户运行公共服务器。这只能由希望远程访问其个人计算机的人来完成。即便如此,这样做也需要彻底了解设置限制和安全隐患。如果您允许多个用户按照本文档中的说明访问笔记本服务器,他们的命令可能会相互冲突、破坏和覆盖。

如果你想要一个多用户服务器,官方的解决方案是 JupyterHub。要使用 JupyterHub,您需要一个 Unix 服务器(通常是 Linux)运行在网络上您的用户可以访问的某个地方。这可能会在公共互联网上运行,但这样做会带来额外的安全问题。

【讨论】:

    【解决方案2】:

    我之前在 GCP 上也遇到过这个问题,并找到了一种简单的方法来解决这个问题。一旦你 ssh'd 进入计算引擎,运行 linux screen 命令,你会发现自己在一个虚拟终端中(你可以并行打开许多终端),在这里你会想要运行你的长时间运行的工作。

    一旦你开始工作,使用键Ctrl+a然后d从屏幕上分离。分离后,您可以退出虚拟机,重新连接到虚拟机并运行screen -r,您会发现您的作业仍在运行。

    当然,您可以使用screen 命令做很多很酷的事情,并鼓励您阅读here 找到的一些教程。

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

    如果这有帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2021-01-15
      相关资源
      最近更新 更多