Использование Jupyter/TensorBoard в любом облаке с помощью одной команды

Использование Jupyter/TensorBoard в любом облаке с помощью одной команды

27 апреля 2022 г.

Использование итерации Terraform Provider для индивидуального машинного обучения и обработки данных на AWS, Azure, GCP и K8s


Jupyter, TensorFlow/Keras и TensorBoard широко используются во многих проектах по науке о данных и машинному обучению. К сожалению, есть две основные болевые точки, с которыми часто сталкиваются как ученые, так и инженеры:


  • Установка и обслуживание всего программного стека (включая драйверы графического процессора и зависимости) сложны и отнимают много времени, и

  • Вы ограничены оборудованием, которым владеете (ноутбук или настольный компьютер).

В некоторых случаях обходные пути для этих проблем включают бесплатную службу Binder, а также основанную на блокноте Google Colab. /), но оба имеют свои строгие ограничения на ресурсы (ЦП, ГП, ОЗУ, дисковое хранилище и даже время безотказной работы).


Вместо этого в этом кратком руководстве рассказывается, как развернуть готовый к машинному обучению сервер Jupyter и синхронизировать результаты с вашим предпочтительным поставщиком облачных вычислений. Всего 3 требования:


  1. Загрузите инструмент командной строки terraform и попрощайтесь с ClickOps (бесплатно),

  1. Получите учетную запись ngrok для удобства переадресации портов (бесплатно) и

  1. Конечно, иметь облачные учетные данные! (AWS, Azure, GCP или Kubernetes.)

⚙ Нет ClickOps? Тогда покажи мне код…


Чтобы получить красивое рабочее пространство Jupyter, как на изображении выше, загрузите сопутствующий код из прилагаемого [репозитория GitHub] (https://github.com/iterative/blog-tpi-jupyter#readme):


``` ударить


клон git https://github.com/iterative/blog-tpi-jupyter


cd блог-tpi-jupyter


terraform init # Установка локальных зависимостей


Если хотите, взгляните на файл main.tf — он содержит все параметры конфигурации, которые вам могут понадобиться, например индивидуальные спецификации оборудования и торги по спотовым ценам. По умолчанию используется экземпляр AWS EC2 G4 (с графическим процессором NVIDIA Tesla T4 16 ГБ общей стоимостью около 0,15 доллара США в час на момент написания статьи). ). Далее нам понадобятся некоторые переменные окружения:


``` ударить


export NGROK_TOKEN="..." # Зарегистрируйтесь бесплатно на https://ngrok.com


export TF_LOG_PROVIDER=INFO # (необязательно) Увеличить детализацию


export AWS_ACCESS_KEY_ID="..." # предполагается облачный провайдер AWS


экспортировать AWS_SECRET_ACCESS_KEY="..."


См. [документы по аутентификации] (https://registry.terraform.io/providers/iterative/iterative/latest/docs/guides/authentication) для других облачных провайдеров.


Теперь время для магии! 🎩


``` ударить


применить терраформ


За всего несколько минут ⏱ эта простая команда:


  • создает корзину облачного хранилища,

  • загружает ваш локальный «общий» рабочий каталог в корзину,

  • создает группу автоматического масштабирования, которая, в свою очередь, предоставляет желаемый экземпляр ускоренных вычислений,

  • устанавливает программный стек машинного обучения (драйверы CUDA, Python и TensorFlow/Keras) на инстанс и

  • обслуживает Jupyter Lab, Notebook и TensorBoard через туннель ngrok.

Чтобы просмотреть журналы (включая URL-адреса сервера) в любой момент, просто запустите:


``` ударить


обновление терраформы


⏳ Если URL-адреса в нижней части вывода пусты (urls = []), экземпляр еще не готов. Подождите несколько минут, прежде чем снова запустить terraform Refresh. В итоге вы увидите:


```javascript


Выходы:


URL = [


"Лаборатория Jupyter: https://8c62-54-173-120-3.ngrok.io/lab?token=...",


"Блокнот Jupyter: https://8c62-54-173-120-3.ngrok.io/tree?token=...",


«TensorBoard: https://6d52-54-173-120-3.ngrok.io»,


Стек машинного обучения JupyterLab и TensorBoard размещен на резервном и автоматически перезапускающемся экземпляре графического процессора AWS EC2


Наконец, закончив эксперименты, загрузите «общий» рабочий каталог, удалите облачное хранилище и завершите работу облачного экземпляра с помощью одной простой команды:


``` ударить


терраформировать уничтожить


Но почему?


Он использует [Terraform Provider Iterative (TPI)] (https://github.com/iterative/terraform-provider-iterative/) под капотом. У TPI есть несколько явных преимуществ:


💰 Низкая стоимость: используйте существующие цены предпочитаемого вами облачного провайдера, включая посекундную оплату по запросу и оптовые скидки.


🔄 Автовосстановление: спотовые/вытесняемые инстансы дешевы, но ненадежны. TPI надежно и автоматически повторно порождает такие прерванные экземпляры, кэшируя и восстанавливая рабочий каталог в облаке, даже когда вы не в сети.


👓 Пользовательская спецификация: полный контроль над требованиями к оборудованию и программному обеспечению с помощью одного конфигурационного файла main.tf — включая компьютер типы (ЦП, ГП, ОЗУ, хранилище) и изображения.


TL;резюме DR


Вы можете самостоятельно предоставлять аппаратные и программные среды DS и ML в облаке с помощью TPI.


⚡️ Это проще, чем вы думаете:


``` ударить


клон git https://github.com/iterative/blog-tpi-jupyter


cd блог-tpi-jupyter


export NGROK_TOKEN="..." # Зарегистрируйтесь бесплатно на https://ngrok.com


export TF_LOG_PROVIDER=INFO # (необязательно) Увеличить детализацию


terraform init # Установка локальных зависимостей


terraform apply # Создать облачные ресурсы и загрузить «общий» рабочий каталог


terraform refresh # Получить URL-адреса Jupyter и TensorBoard (повторить, если пусто)


Нажмите на печатные URL-адреса и получайте удовольствие!


Когда закончите, загрузите «общий» рабочий каталог и отключите облачные ресурсы:


терраформировать уничтожить




Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE