Как удаленно подключиться к ноутбукам, управляемым GCP ML Engine/AWS Sagemaker?

GCP наконец выпустила управляемые ноутбуки Jupyter. Я хотел бы иметь возможность взаимодействовать с ноутбуком локально, подключившись к нему. То есть. я использую PyCharm для подключения к внешне настроенному серверу jupyter notebbok, передав его URL и параметр токена.

Вопрос также касается ноутбуков AWS Sagemaker.

5 ответов

AWS изначально не поддерживает SSH-подключение к экземплярам ноутбуков SageMaker, но ничто не мешает вам настроить SSH самостоятельно.

Единственная проблема заключается в том, что эти экземпляры не получают общедоступный IP-адрес, что означает, что вам нужно либо создать обратный прокси (например, с помощью ngrok), либо подключиться к нему через бастионный ящик.

Шаги, чтобы заставить решение ngrok работать:

  • скачать ngrok с curl https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip > ngrok.zip
  • unzip ngrok.zip
  • создать бесплатную учетную запись ngrok, чтобы получить разрешения для туннелей tcp
  • пробег ./ngrok authenticate с вашим токеном
  • начать с ./ngrok tcp 22 > ngrok.log & (и поместит его в фоновый режим)
  • файл журнала будет содержать URL-адрес, чтобы вы знали, куда подключиться
  • Создайте ~/.ssh/authorized_keys файл (в SageMaker) и вставьте свой открытый ключ (вероятно, ~/.ssh/id_rsa.pub с вашего компьютера)
  • ssh, позвонив ssh -p <port_from_ngrok_logfile> ec2-user@0.tcp.ngrok.com (или любой другой хост, который они вам назначат, он будет в ngrok.log)

Если вы хотите автоматизировать его, я предлагаю использовать сценарии конфигурации жизненного цикла.

Еще один хороший трюк - обернуть загрузку, распаковку, аутентификацию и запуск ngrok в некоторый двоичный файл в / usr / bin, чтобы вы могли просто вызвать его из консоли SageMaker, если он умрет.

Это немного слишком долго, чтобы полностью объяснять, как автоматизировать это с помощью сценариев жизненного цикла, но я написал подробное руководство на https://biasandvariance.com/sagemaker-ssh-setup/.

На AWS вы можете использовать AWS Glue для создания конечной точки разработчика, а затем вы создадите оттуда блокнот Sagemaker. Конечная точка разработчика дает вам доступ к вашему Python или Scala spark REPL через ssh, а также позволяет вам туннелировать соединение и доступ из любого другого инструмента, включая PyCharm.

Для PyCharm professional у нас еще более тесная интеграция, позволяющая удаленно отлаживать SFTP-файлы и отлаживать их.

И если вам нужно установить какие-либо зависимости на ноутбуке, кроме того, чтобы делать это непосредственно на ноутбуке, вы всегда можете выбрать new>terminal и у вас будет подключение к этой машине напрямую из среды jupyter, где вы сможете установить все, что захотите.

Существует способ подключения SSH к экземпляру ноутбука Sagemaker без использования стороннего обратного прокси-сервера, такого как ngrok, без настройки бастиона EC2 или использования AWS Systems Manager. Вот как вы можете это сделать.

Предпосылки

  • Используйте свой собственный VPC , а не VPC, управляемый AWS/Sagemaker, для экземпляра ноутбука.
  • Настройте правило входа в группе безопасности экземпляра ноутбука, чтобы разрешить трафик SSH (порт 22 через TCP) .

Как это сделать

  • Создайте конфигурацию сценария жизненного цикла, которая выполняется при запуске экземпляра.
  • Добавьте следующий фрагмент в скрипт жизненного цикла:
      INSTANCE_IP=$(/sbin/ifconfig eth2 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "SSH into the instance using : ssh ec2-user@$INSTANCE_IP" > ~ec2-user/SageMaker/ssh-instructions.txt
  • Добавьте свой публичный SSH-ключ внутрь , либо вручную с помощью терминала пользовательского интерфейса jupyterlab, либо внутри скрипта жизненного цикла выше

Когда ваши пользователи откроют интерфейс Jupyter, они найдут файл, который дает хост и команду для использования: ssh ec2-user@<INSTANCE_IP>

Если вы хотите использовать SSH из локальной среды, вам, вероятно, потребуется подключиться к VPN, которая направляет ваш трафик внутри вашего VPC.

Блокноты платформы AI GCP автоматически создают постоянный URL-адрес, который можно использовать для доступа к блокноту. Это то, что вы искали?

Привет оливковое дерево,

Спасибо за использование Amazon SageMaker.

Вы пробовали CreatePresignedNotebookInstanceUrl для доступа к экземпляру вашего ноутбука с помощью URL?

Мы всегда переоцениваем наши резервы функций на основе запросов клиентов, поэтому мы ценим отзывы об этой функции.

Дайте нам знать, если есть что-то еще, с чем мы можем помочь.

Спасибо,
Нилам