Janela de encaixe

O Docker usa contêineres para criar ambientes virtuais que isolam uma instalação do TensorFlow do restante do sistema. Os programas TensorFlow são executados neste ambiente virtual que pode compartilhar recursos com sua máquina host (acessar diretórios, usar a GPU, conectar-se à Internet, etc.). As imagens do TensorFlow Docker são testadas para cada versão.

Docker é a maneira mais fácil de ativar o suporte de GPU TensorFlow no Linux, pois apenas o driver de GPU NVIDIA® é necessário na máquina host (o NVIDIA® CUDA® Toolkit não precisa ser instalado).

Requisitos do Docker do TensorFlow

  1. Instale o Docker em sua máquina host local.
  2. Para suporte de GPU no Linux, instale o suporte NVIDIA Docker .
    • Anote sua versão do Docker com docker -v . Versões anteriores a 19.03 requerem nvidia-docker2 e o sinalizador --runtime=nvidia . Nas versões incluindo e posteriores a 19.03, você usará o pacote nvidia-container-toolkit e o sinalizador --gpus all . Ambas as opções estão documentadas na página vinculada acima.

Baixar uma imagem do TensorFlow Docker

As imagens oficiais do TensorFlow Docker estão localizadas no repositório tensorflow/tensorflow Docker Hub. As liberações de imagens são marcadas usando o seguinte formato:

Marcação Descrição
latest A versão mais recente da imagem binária da CPU do TensorFlow. Padrão.
nightly Builds noturnos da imagem do TensorFlow. (Instável.)
version Especifique a versão da imagem binária do TensorFlow, por exemplo: 2.8.3

Cada tag base possui variantes que adicionam ou alteram funcionalidades:

Variantes de tags Descrição
tag -gpu A liberação de tag especificada com suporte a GPU. ( Veja abaixo )
tag -jupyter O lançamento de tag especificado com Jupyter (inclui notebooks de tutorial do TensorFlow)

Você pode usar várias variantes de uma só vez. Por exemplo, o seguinte faz download de imagens de lançamento do TensorFlow para sua 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 um contêiner do TensorFlow Docker

Para iniciar um contêiner configurado pelo TensorFlow, use o seguinte formulário de comando:

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

Para obter detalhes, consulte a referência de execução do docker .

Exemplos usando imagens somente de CPU

Vamos verificar a instalação do TensorFlow usando a imagem marcada latest . O Docker baixa uma nova imagem do TensorFlow na primeira vez que é executado:

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

Vamos demonstrar mais algumas receitas do TensorFlow Docker. Inicie uma sessão de shell bash em um contêiner configurado pelo TensorFlow:

docker run -it tensorflow/tensorflow bash

Dentro do contêiner, você pode iniciar uma sessão python e importar o TensorFlow.

Para executar um programa TensorFlow desenvolvido na máquina host dentro de um contêiner, monte o diretório host e altere o diretório de trabalho do contêiner ( -v hostDir:containerDir -w workDir ):

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

Podem surgir problemas de permissão quando arquivos criados em um contêiner são expostos ao host. Geralmente é melhor editar arquivos no sistema host.

Inicie um servidor Jupyter Notebook usando a compilação noturna do TensorFlow:

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

Siga as instruções e abra o URL no navegador do host: http://127.0.0.1:8888/?token=...

Suporte para GPU

Docker é a maneira mais fácil de executar o TensorFlow em uma GPU, pois a máquina host requer apenas o driver NVIDIA® (o kit de ferramentas NVIDIA® CUDA® não é necessário).

Instale o Nvidia Container Toolkit para adicionar suporte de GPU NVIDIA® ao Docker. nvidia-container-runtime está disponível apenas para Linux. Consulte as perguntas frequentes sobre suporte da plataforma nvidia-container-runtime para obter detalhes.

Verifique se uma GPU está disponível:

lspci | grep -i nvidia

Verifique a instalação do nvidia-docker :

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

Exemplos usando imagens habilitadas para GPU

Baixe e execute uma imagem do TensorFlow habilitada para GPU (pode levar alguns 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])))"

Pode demorar um pouco para configurar a imagem habilitada para GPU. Se você executar scripts baseados em GPU repetidamente, poderá usar docker exec para reutilizar um contêiner.

Use a imagem de GPU mais recente do TensorFlow para iniciar uma sessão de shell bash no contêiner:

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