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
- Instale Docker en su máquina host local.
- 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 paquetenvidia-container-toolkit
y el indicador--gpus all
. Ambas opciones están documentadas en la página vinculada anteriormente.
- Tome nota de su versión de Docker con
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