/ ML

Простой способ попробовать tensorflow

Текст ниже написан с расчётом на linux. Но всё это можно делать и на windows, но Вы можете столкнуться с небольшими различиями в работе с docker.

Конечно использовать docker контейнер. Даже если если не знакомы, что это такое, будет совсем просто разобраться. Прежде всего есть приятные новости, что даже с поддержкой GPU можно запускать в docker контейнере. Это круто, но здесь я не хочу много писать, поэтому сразу к делу.

Идём на docker hub и находим tensorflow. Это официальный контейнер, там есть инструкция по запуску.

$ docker run -it -p 8888:8888 tensorflow/tensorflow

кратко по команде:

docker - должен быть установлен на машине

run - говорит что нужно запустить контейнер

-it - в интерактивном режиме, т.е. на консоль
будут выводиться логи (а также токен авторизации)

-p 8888:8888 - пробросить порт внутренний порт контейнера на машину. Внутри контейнера запустится jupyter-notebook по умолчанию на порту 8888, но это внутренний порт. Ключ -p <говорит на какой порт пробросить>:<какой внутри контейнера>.

Теперь идём на localhost:8888 и можем изучать tensorflow!.

Tensorboard

По умолчанию он не запускается, но можно запустить вручную, запустим bash в контейнере:

docker run -it -p 8888:8888 -p 6006:6006 tensorflow/tensorflow /bin/bash

обратите внимание на -p 6006:6006 - мы дополнительно пробрасываем порт, на котором будет запускаться tensorboard.

На этот раз мы попадём в bash контейнера, где мы можем запустить, что нам хочется. Запустить board можно командой

tensorboard --logdir ./ --port 6006

теперь на localhost:6006 будет доступен board.

А чтобы запустить jupyter-notebook, просто выполните эту команду, по умолчанию он запустится на порту 8888.

Сохранение результатов работы

Не забываем что контейнер не хранит никакого состояния, и когда вы его закроете, всё удалится. Поэтому.

Вариант первый, создать volume контейнер, в котором будут храниться данные:

docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command

docker run -v hello:/th-data -it -p 8888:8888 -p 6006:6006 tensorflow/tensorflow

теперь внутри контейнера работайте в папке /th-data и все данные будут сохранены после перезапуска.

Чтобы посмотреть свои data volume, используйте

docker volume ls

или можно просто связать любую директорию

docker run -v $(pwd)/th-data:/th-data -it -p 8888:8888 -p 6006:6006  tensorflow/tensorflow

$(pwd) - будет использовать текущую активную директорию, т.е. из которой запускается команда

Файлы сохранённые в этой директории будут синхронизироваться в обе стороны.

upd

Если нужно запустить что-то в уже запущенном контейнере, это просто:

docker exec <id контейнера> tensorboard --logdir=path/to/log-directory

чтобы узнать id контейнера

docker ps

upd2

Если вы хотите работать в notebook, но также хотите запустить tensorboard, можете просто запустить board как сервис, а потом запустить notebook

$ docker run -v $(pwd)/th-data:/data -it -p 8888:8888 -p 6006:6006  tensorflow/tensorflow /bin/bash

# cd /data

# nohup tensorboard --logdir=./logs &

#jupyter-notebook
Простой способ попробовать tensorflow
Share this

Subscribe to Yet another blog