Как запустить Tensorboard и jupyter одновременно с докером?

Я начинаю узнавать, как использовать TensorFlow для машинного обучения. И выяснилось, что докер довольно удобно развернуть TensorFlow на моей машине. Однако пример, который мне удалось найти, не сработал с моей целевой настройкой. Который

В ubuntu16.04 os, используя nvidia-docker для совместного размещения jupyter и tenorboard-сервиса (может быть два контейнера или один контейнер с двумя сервисами). И файлы, созданные из jupyter, должны быть видимы для ОС хоста.

  • Ubuntu 16.04
  • Dokcer
  • nvidia-docker
    • Jupyter
    • Тензорборд

Контейнер Jupyter

nvidia-docker run \
    --name jupyter \
    -d \
    -v $(pwd)/notebooks:/root/notebooks \
    -v $(pwd)/logs:/root/logs \
    -e "PASSWORD=*****" \
    -p 8888:8888 \
    tensorflow/tensorflow:latest-gpu 

Тенсорборд контейнер

nvidia-docker run \
    --name tensorboard \
    -d \
    -v $(pwd)/logs:/root/logs \
    -p 6006:6006 \
    tensorflow/tensorflow:latest-gpu \
    tensorboard --logdir /root/logs

Я попытался подключить папку журналов к обоим контейнерам и позволить Tensorboard получить доступ к результату jupyter. Но крепление, похоже, сработало. Когда я создаю новый файл в контейнере jupyter с папкой ноутбуков, папка хоста $ (pwd) / notebooks просто ничего не отображается.

Я также выполнил инструкции в Nvidia Docker, Блокнот Jupyter и графический процессор Tensorflow

nvidia-docker run -d -e PASSWORD='winrar' -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu-py3

Работал только Jupyter, тензорборд не мог достучаться с порта 6006.


person Jacky Liu    schedule 21.04.2017    source источник


Ответы (2)


Сегодня я столкнулся с той же проблемой.

Краткий ответ: я предполагаю, что вы используете один и тот же контейнер как для Jupyter Notebook, так и для тензорной доски. Итак, как вы писали, вы можете развернуть контейнер с помощью:

nvidia-docker run -d --name tensor -e PASSWORD='winrar'\
                  -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu-py3

Теперь вы можете получить доступ к портам 8888 и 6006, но сначала вам нужно инициализировать тензорную плату:

docker exec -it tensor bash
tensorboard --logdir /root/logs

О другом варианте: запуск jupyter и tensorboard в разных контейнерах. Если у вас есть проблемы с монтированием одних и тех же каталогов в разные контейнеры (в прошлом была ошибка по этому поводу), начиная с Docker 1.9, вы можете создавать независимые тома, не связанные с определенными контейнерами. Это может быть решением.

  1. Создайте два тома для хранения журналов и записных книжек.
  2. Разверните оба образа с этими томами.

docker volume create --name notebooks
docker volume create --name logs 

nvidia-docker run \
--name jupyter \
-d \
-v notebooks:/root/notebooks \
-v logs:/root/logs \
-e "PASSWORD=*****" \
-p 8888:8888 \
tensorflow/tensorflow:latest-gpu

 nvidia-docker run \
 --name tensorboard \
 -d \
 -v logs:/root/logs \
 -p 6006:6006 \
 tensorflow/tensorflow:latest-gpu \
 tensorboard --logdir /root/logs
person Iyán    schedule 28.04.2017
comment
Спасибо за ваше решение. Первое решение у меня работает! - person Jacky Liu; 29.04.2017
comment
Есть ли способ избежать: docker exec -it tensor bash и использовать sth как docker exec tensorboard --logs=... ‹- Эта команда не работает. - person ; 08.02.2018

В качестве альтернативы вы также можете использовать рабочее пространство машинного обучения. Образ Docker. ML Workspace - это веб-среда, которая объединяет Jupyter, TensorBoard, VS Code и многие другие инструменты и библиотеки в один удобный образ Docker. Развернуть один экземпляр рабочей области так же просто, как:

docker run -p 8080:8080 mltooling/ml-workspace:latest

Все инструменты доступны из одного порта. Информацию о том, как получить доступ к TensorBoard, можно найти здесь.

person Lukas Masuch    schedule 13.09.2019