Estibador

Docker utiliza contenedores para crear entornos virtuales que aíslan una instalación de TensorFlow del resto del sistema. Los programas TensorFlow se ejecutan dentro de este entorno virtual que puede compartir recursos con su máquina host (acceder a directorios, usar la GPU, conectarse a Internet, etc.). Las imágenes de TensorFlow Docker se prueban para cada versión.

Docker es la forma más sencilla de habilitar la compatibilidad con TensorFlow GPU en Linux, ya que solo se requiere el controlador de GPU NVIDIA® en la máquina host (no es necesario instalar el kit de herramientas NVIDIA® CUDA® ).

Requisitos de TensorFlow Docker

  1. Instale Docker en su máquina host local.
  2. Para compatibilidad con GPU en Linux, instale la compatibilidad con NVIDIA Docker .
    • Tome nota de su versión de Docker con docker -v . Las versiones anteriores a la 19.03 requieren nvidia-docker2 y el indicador --runtime=nvidia . En las versiones incluidas y posteriores a la 19.03, utilizará el paquete nvidia-container-toolkit y el indicador --gpus all . Ambas opciones están documentadas en la página vinculada anteriormente.

Descargar una imagen de TensorFlow Docker

Las imágenes oficiales de TensorFlow Docker se encuentran en el repositorio tensorflow/tensorflow Docker Hub. Las publicaciones de imágenes se etiquetan con el siguiente formato:

Etiqueta Descripción
latest La última versión de la imagen binaria de CPU de TensorFlow. Por defecto.
nightly Construcciones nocturnas de la imagen de TensorFlow. (Inestable.)
version Especifique la versión de la imagen binaria de TensorFlow, por ejemplo: 2.8.3

Cada etiqueta base tiene variantes que agregan o cambian funcionalidad:

Variantes de etiquetas Descripción
tag -gpu La versión de etiqueta especificada con soporte para GPU. ( Vea abajo )
tag -jupyter La versión de etiqueta especificada con Jupyter (incluye cuadernos de tutoriales de TensorFlow)

Puede utilizar varias variantes a la vez. Por ejemplo, lo siguiente descarga imágenes de lanzamiento de TensorFlow en su máquina:

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

Iniciar un contenedor Docker de TensorFlow

Para iniciar un contenedor configurado con TensorFlow, use el siguiente formulario de comando:

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

Para obtener más información, consulte la referencia de ejecución de Docker .

Ejemplos que utilizan imágenes solo de CPU

Verifiquemos la instalación de TensorFlow usando la latest imagen etiquetada. Docker descarga una nueva imagen de TensorFlow la primera vez que se ejecuta:

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

Demostremos algunas recetas más de TensorFlow Docker. Inicie una sesión bash shell dentro de un contenedor configurado con TensorFlow:

docker run -it tensorflow/tensorflow bash

Dentro del contenedor, puedes iniciar una sesión python e importar TensorFlow.

Para ejecutar un programa TensorFlow desarrollado en la máquina host dentro de un contenedor, monte el directorio del host y cambie el directorio de trabajo del contenedor ( -v hostDir:containerDir -w workDir ):

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

Pueden surgir problemas de permisos cuando los archivos creados dentro de un contenedor se exponen al host. Generalmente es mejor editar archivos en el sistema host.

Inicie un servidor Jupyter Notebook usando la compilación nocturna de TensorFlow:

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

Siga las instrucciones y abra la URL en el navegador web de su host: http://127.0.0.1:8888/?token=...

Soporte de GPU

Docker es la forma más sencilla de ejecutar TensorFlow en una GPU, ya que la máquina host solo requiere el controlador NVIDIA® (no se requiere el kit de herramientas NVIDIA® CUDA® ).

Instale Nvidia Container Toolkit para agregar compatibilidad con GPU NVIDIA® a Docker. nvidia-container-runtime solo está disponible para Linux. Consulte las preguntas frecuentes sobre soporte de la plataforma nvidia-container-runtime para obtener más detalles.

Compruebe si hay una GPU disponible:

lspci | grep -i nvidia

Verifique su instalación nvidia-docker :

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

Ejemplos que utilizan imágenes habilitadas para GPU

Descargue y ejecute una imagen de TensorFlow habilitada para GPU (puede tardar unos minutos):

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])))"

Puede llevar algún tiempo configurar la imagen habilitada para GPU. Si ejecuta repetidamente scripts basados ​​en GPU, puede usar docker exec para reutilizar un contenedor.

Utilice la última imagen de GPU de TensorFlow para iniciar una sesión bash shell en el contenedor:

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