Есть два типа людей, создающих модели глубокого обучения: те, кто все делает в Docker, и те, кто должен делать все в Docker.

Почему Docker так хорош для глубокого обучения?

  1. Docker поддерживает воспроизводимость. О кризисе воспроизводимости в машинном обучении написано много, и эта трудность вполне реальна. Использование Docker устраняет один из основных источников изменчивости.
  2. Использование Docker позволяет вашему коду безболезненно работать и в будущем. Когда я клонирую репозиторий github эксперимента машинного обучения, я всегда готовлюсь к неизвестному количеству времени, которое будет возиться с библиотеками и зависимостями. «Стек» глубокого обучения постоянно меняется, и популярные библиотеки, такие как Pytorch и TensorFlow, постоянно выпускают новые версии и устраняют зависимости. Использование Docker сокращает время, необходимое для повторного запуска старых моделей, и значительно упрощает воспроизведение ваших результатов товарищами по команде.

Здесь, в Weights & Biases, мы работаем над воспроизводимостью с нулевыми накладными расходами, упрощая использование Docker.

Начиная

Выполните эту простую команду изнутри вашего проекта ML:

докер wandb

Это устанавливает образ Docker для машинного обучения с установленными стандартными пакетами, монтирует ваш код и помещает вас внутрь него. Теперь вы можете тренировать свои модели точно так же, как раньше, с дополнительными преимуществами Docker. Во время обучения модели wandb сохранит дайджест, который является постоянной записью состояния вашего образа Docker. Это означает, что вы всегда сможете восстановить именно ту среду, в которой работал ваш код.

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

восстановление wandb ‹username› / ‹project›: ‹run_id›

Weights & Biases предварительно заполняет вашу историю bash исходной командой.

Готовые образы

Если у вас уже есть образ Docker или вы хотите использовать один из популярных готовых образов, передайте имя образа. Например:

wandb docker floydhub / dl-docker: cpu

Эта команда загружает образ Docker Floydhub Deep Learning для ЦП.

Jupyter Hub

Чтобы проанализировать результаты или запустить запуски с Jupyter, запустите следующее:

wandb docker - jupyter

Это установит Jupyter и запустит JupyterLab на порту 8888.

Для людей, уже использующих Docker

Мы автоматически отслеживаем дайджест, чтобы обеспечить репликацию среды в будущем. Вы можете передать дайджест вручную, установив переменную среды WANDB_DOCKER. Мы также предоставляем помощника для получения дайджеста для рабочих процессов, которые запускают образы докеров вручную: wandb docker имя_образа - дайджест. Для более опытных пользователей, у которых уже есть Docker в своих рабочих процессах, мы предлагаем новую команду:

wandb-docker-run

Подобно nvidia-docker, эта команда представляет собой простую оболочку, которая вставляет переменные среды WANDB_DOCKER и WANDB_API_KEY в существующие вызовы выполнения Docker. Для пользователей, запускающих свои полезные данные в кубернетах, наш последний клиент будет автоматически заполнять дайджест, если api плоскости управления k8s предоставляется модулю.

Вы можете узнать больше о нашей поддержке Docker в нашей документации.