Не удается сохранить SSH-соединение с виртуальной машиной с помощью gcloud-sdk

У меня есть образ виртуальной машины Google Cloud Deep Learning для 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 в рабочем состоянии и иметь возможность повторно подключиться к нему позже?

NB. Раньше я использовал опцию SSH для браузера Google Cloud, и как только на сервере запускал окно tmux и блокнот jupyter внутри него. Это отлично сработало и означало, что ноутбук всегда был жив. Однако с образами Google Cloud с предустановленными CUDA и Jupyter это не работает, и единственный способ, которым я смог подключиться, - это выполнить указанную выше команду.


person tbrick    schedule 28.03.2019    source источник
comment
Может, поможет следующее? forum.fast.ai/t/reconnect- to-jupyter-notebook-while-training /   -  person Kolban    schedule 29.03.2019
comment
Возможно также ... stackoverflow.com/questions/45835971/   -  person Kolban    schedule 29.03.2019


Ответы (2)


Я сталкивался с этой проблемой раньше и в GCP, и нашел простой способ решить эту проблему. После того, как вы подключили ssh к вычислительному механизму, запустите команду linux screen, и вы окажетесь в виртуальном терминале (вы можете открыть несколько терминалов параллельно), и именно здесь вы захотите выполнить свою длительную работу.

После того, как вы начали работу, отсоединитесь от экрана, используя клавиши Ctrl+a, а затем d. После отсоединения вы можете выйти из виртуальной машины, повторно подключиться к виртуальной машине и запустить screen -r, и вы обнаружите, что ваше задание все еще выполняется.

Конечно, вы можете делать много интересных вещей с помощью команды screen и рекомендовали бы вам прочитать некоторые из найденных руководств здесь.

ПРИМЕЧАНИЕ. Убедитесь, что ваш экземпляр Compute Engine не является машиной с приоритетной загрузкой!

Позвольте мне знать, если это помогает!

person Haris Nadeem    schedule 03.04.2019

Я думаю, что лучше установить Jupyter в качестве сервера. так что ваша работа может продолжаться даже после отключения.

Есть кое-что, что вам тоже может быть интересно узнать.

Это не тот многопользовательский сервер, который вам нужен. В этом документе описывается, как можно запустить общедоступный сервер с одним пользователем. Это должно быть сделано только тем, кому нужен удаленный доступ к своей личной машине. Даже в этом случае для этого требуется глубокое понимание ограничений настройки и последствий для безопасности. Если вы разрешите нескольким пользователям получить доступ к серверу ноутбука, как описано в этом документе, их команды могут конфликтовать, сбивать и перезаписывать друг друга.

Если вам нужен многопользовательский сервер, официальное решение - JupyterHub. Чтобы использовать JupyterHub, вам нужен сервер Unix (обычно Linux), работающий где-то, доступный для ваших пользователей в сети. Это может происходить через общедоступный Интернет, но при этом возникают дополнительные проблемы безопасности.

person howie    schedule 03.04.2019