无法使用 gcloud-sdk 保持与 VM 的 SSH 连接

Can't keep SSH connection to VM using gcloud-sdk

我有一个用于 PyTorch 的 google 云深度学习虚拟机映像,它使用 SSH 连接连接到上面的 Jupyter 笔记本。我怎样才能改变我目前正在做的事情,以便即使我关闭 laptop/temporarily 断开与互联网的连接,Jupyter Notebook 仍然存在?

当前,在打开我的 VM 并打开 tmux 之后 window 我使用以下命令启动 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 云浏览器 SSH 选项,一旦在服务器中启动 tmux window 和其中的 jupyter notebook。这非常有效,意味着笔记本始终处于活动状态。但是,对于预装了 CUDA 和 Jupyter 的 Google 云映像,这不起作用,我能够连接的唯一方法是通过上述命令。

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

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

This is not the multi-user server you are looking for. This document describes how you can run a public server with a single user. This should only be done by someone who wants remote access to their personal machine. Even so, doing this requires a thorough understanding of the set-ups limitations and security implications. If you allow multiple users to access a notebook server as it is described in this document, their commands may collide, clobber and overwrite each other.

If you want a multi-user server, the official solution is JupyterHub. To use JupyterHub, you need a Unix server (typically Linux) running somewhere that is accessible to your users on a network. This may run over the public internet, but doing so introduces additional security concerns.

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

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

当然,您可以使用 screen 命令做很多很酷的事情,并鼓励您阅读 here.

中的一些教程

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

如果有帮助请告诉我!