Использование Jupyter/TensorBoard в любом облаке с помощью одной команды
27 апреля 2022 г.Использование итерации Terraform Provider для индивидуального машинного обучения и обработки данных на AWS, Azure, GCP и K8s
Jupyter, TensorFlow/Keras и TensorBoard широко используются во многих проектах по науке о данных и машинному обучению. К сожалению, есть две основные болевые точки, с которыми часто сталкиваются как ученые, так и инженеры:
- Установка и обслуживание всего программного стека (включая драйверы графического процессора и зависимости) сложны и отнимают много времени, и
- Вы ограничены оборудованием, которым владеете (ноутбук или настольный компьютер).
В некоторых случаях обходные пути для этих проблем включают бесплатную службу Binder, а также основанную на блокноте Google Colab. /), но оба имеют свои строгие ограничения на ресурсы (ЦП, ГП, ОЗУ, дисковое хранилище и даже время безотказной работы).
Вместо этого в этом кратком руководстве рассказывается, как развернуть готовый к машинному обучению сервер Jupyter и синхронизировать результаты с вашим предпочтительным поставщиком облачных вычислений. Всего 3 требования:
- Получите учетную запись ngrok для удобства переадресации портов (бесплатно) и
- Конечно, иметь облачные учетные данные! (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»,
Наконец, закончив эксперименты, загрузите «общий» рабочий каталог, удалите облачное хранилище и завершите работу облачного экземпляра с помощью одной простой команды:
``` ударить
терраформировать уничтожить
Но почему?
Он использует [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-адреса и получайте удовольствие!
Когда закончите, загрузите «общий» рабочий каталог и отключите облачные ресурсы:
терраформировать уничтожить
Оригинал