Как удаленно подключиться к ноутбукам, управляемым 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?
Мы всегда переоцениваем наши резервы функций на основе запросов клиентов, поэтому мы ценим отзывы об этой функции.
Дайте нам знать, если есть что-то еще, с чем мы можем помочь.
Спасибо,
Нилам