Докер

Docker использует контейнеры для создания виртуальных сред, которые изолируют установку TensorFlow от остальной системы. Программы TensorFlow запускаются в этой виртуальной среде, которая может совместно использовать ресурсы со своим хост-компьютером (доступ к каталогам, использование графического процессора, подключение к Интернету и т. д.). Образы TensorFlow Docker тестируются для каждого выпуска.

Docker — это самый простой способ включить поддержку графического процессора TensorFlow в Linux, поскольку на хост -компьютере требуется только драйвер графического процессора NVIDIA® (установка набора инструментов NVIDIA® CUDA® не требуется).

Требования к TensorFlow Docker

  1. Установите Docker на свой локальный хост- компьютер.
  2. Для поддержки GPU в Linux установите поддержку NVIDIA Docker .
    • Обратите внимание на свою версию Docker с помощью docker -v . Для версий до 19.03 требуется nvidia-docker2 и флаг --runtime=nvidia . В версиях , включая 19.03 и выше , вы будете использовать пакет nvidia-container-toolkit и флаг --gpus all . Оба варианта задокументированы на странице, указанной выше.

Загрузите образ TensorFlow Docker

Официальные образы TensorFlow Docker находятся в репозитории tensorflow/tensorflow Docker Hub. Релизы изображений помечаются тегами в следующем формате:

Ярлык Описание
latest Последний выпуск двоичного образа ЦП TensorFlow. По умолчанию.
nightly Ночные сборки образа TensorFlow. (Нестабильный.)
version Укажите версию бинарного образа TensorFlow, например: 2.8.3.

У каждого базового тега есть варианты, которые добавляют или изменяют функциональность:

Варианты тегов Описание
tag -gpu Указанный тег выпуска с поддержкой GPU. ( см. ниже )
tag -jupyter Указанный выпуск тега с Jupyter (включает учебные блокноты TensorFlow)

Вы можете использовать несколько вариантов одновременно. Например, следующий код загружает образы выпуска TensorFlow на ваш компьютер:

docker pull tensorflow/tensorflow                     # latest stable release
docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter

Запустите контейнер TensorFlow Docker.

Чтобы запустить контейнер с конфигурацией TensorFlow, используйте следующую форму команды:

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

Подробнее см. в справочнике по запуску docker .

Примеры использования изображений только для ЦП

Давайте проверим установку TensorFlow, используя latest тегированный образ. Docker загружает новый образ TensorFlow при первом запуске:

docker run -it --rm tensorflow/tensorflow \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

Давайте продемонстрируем еще несколько рецептов TensorFlow Docker. Запустите сеанс оболочки bash в контейнере, настроенном с помощью TensorFlow:

docker run -it tensorflow/tensorflow bash

Внутри контейнера вы можете запустить сеанс python и импортировать TensorFlow.

Чтобы запустить программу TensorFlow, разработанную на хост- компьютере внутри контейнера, смонтируйте каталог хоста и измените рабочий каталог контейнера ( -v hostDir:containerDir -w workDir ):

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

Проблемы с разрешениями могут возникнуть, когда файлы, созданные в контейнере, доступны для хоста. Обычно лучше всего редактировать файлы в хост-системе.

Запустите сервер Jupyter Notebook , используя ночную сборку TensorFlow:

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

Следуйте инструкциям и откройте URL-адрес в веб-браузере хоста: http://127.0.0.1:8888/?token=...

Поддержка графического процессора

Docker — это самый простой способ запустить TensorFlow на графическом процессоре, поскольку для хост- компьютера требуется только драйвер NVIDIA® (набор инструментов NVIDIA® CUDA® Toolkit не требуется).

Установите Nvidia Container Toolkit , чтобы добавить в Docker поддержку NVIDIA® GPU. nvidia-container-runtime доступен только для Linux. Дополнительные сведения см. в часто задаваемых вопросах по поддержке платформы nvidia-container-runtime .

Проверьте, доступен ли графический процессор:

lspci | grep -i nvidia

Проверьте установку nvidia-docker :

docker run --gpus all --rm nvidia/cuda nvidia-smi

Примеры использования изображений с поддержкой графического процессора

Загрузите и запустите образ TensorFlow с поддержкой графического процессора (может занять несколько минут):

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

Настройка изображения с поддержкой графического процессора может занять некоторое время. При многократном запуске сценариев на основе графического процессора вы можете использовать docker exec для повторного использования контейнера.

Используйте последний образ графического процессора TensorFlow, чтобы запустить сеанс оболочки bash в контейнере:

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash