O Docker usa contêineres para criar ambientes virtuais que isolam uma instalação do TensorFlow do restante do sistema. Os programas do TensorFlow são executados dentro desse ambiente virtual, que pode compartilhar recursos com a máquina host (diretórios de acesso, usar a GPU, conectar-se à Internet etc.). As imagens do Docker do TensorFlow são testadas para cada versão.
O Docker é a maneira mais fácil de ativar o suporte a GPUs do TensorFlow no Linux, já que somente o driver de GPU da NVIDIA® é obrigatório na máquina host. O NVIDIA® CUDA® Toolkit não precisa ser instalado.
Requisitos do Docker do TensorFlow
- Instale o Docker na máquina host local.
- Para suporte a GPUs no Linux, instale o suporte a Docker da NVIDIA.
- Anote a versão do Docker com
docker -v
. As versões mais antigas que a 19.03 exigem nvidia-docker2 e a sinalização--runtime=nvidia
. Nas versões a partir da 19.03, você usará o pacotenvidia-container-toolkit
e a sinalização--gpus all
. Ambas as opções estão documentadas na página vinculada acima.
- Anote a versão do Docker com
Fazer o download de uma imagem do Docker do TensorFlow
As imagens do Docker do TensorFlow oficiais estão localizadas no repositório tensorflow/tensorflow do Docker Hub. As versões de imagem são marcadas usando o seguinte formato:
Tag | Descrição |
---|---|
latest |
É a versão mais recente da imagem binária da CPU do TensorFlow. Padrão. |
nightly |
Tem os builds noturnos da imagem do TensorFlow. Instável. |
version |
Especifique a versão da imagem binária do TensorFlow, por exemplo: 2.1.0. |
devel |
Tem os builds noturnos de um ambiente para desenvolvedores master do TensorFlow. Inclui o código-fonte do TensorFlow. |
custom-op |
Imagem experimental especial para desenvolver operações personalizadas do TF. Mais informações aqui. |
Cada tag básica tem variantes que adicionam ou mudam a funcionalidade:
Variantes de tag | Descrição |
---|---|
tag -gpu |
É a versão de tag especificada com suporte a GPUs. Veja abaixo. |
tag -jupyter |
É a versão de tag especificada com o Jupyter (incluindo notebooks de tutorial do TensorFlow). |
Você pode usar várias variantes de uma só vez. Por exemplo, a seguinte faz o download de imagens da versão 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 Docker do TensorFlow
Para iniciar um contêiner configurado pelo TensorFlow, use o seguinte formato de comando:
docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]
Para detalhes, consulte a referência de execução do Docker.
Exemplos que usam imagens somente de CPU
Vamos verificar a instalação do TensorFlow usando a imagem marcada com latest
. O Docker
faz o download de uma nova imagem do TensorFlow na primeira execução.
docker run -it --rm tensorflow/tensorflow \ python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Vamos demonstrar mais alguns roteiros do Docker do TensorFlow. Inicie uma sessão de shell bash
em um contêiner configurado pelo TensorFlow:
docker run -it tensorflow/tensorflow bash
No contêiner, você pode iniciar uma sessão python
e importar o TensorFlow.
Para executar um programa do TensorFlow desenvolvido na máquina host em um contêiner,
monte o diretório do 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
Problemas de permissão podem surgir quando os arquivos criados em um contêiner são expostos ao host. Geralmente, é melhor editar arquivos no sistema host.
Inicie um servidor de notebook do Jupyter usando a versão noturna do TensorFlow:
docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter
Siga as instruções e abra o URL no navegador da Web do host:
http://127.0.0.1:8888/?token=...
Suporte a GPUs
O Docker é a maneira mais fácil de executar o TensorFlow em uma GPU, já que a máquina host exige apenas o driver NVIDIA® (o NVIDIA® CUDA® Toolkit não é obrigatório).
Instale o kit de ferramentas do contêiner da Nvidia
para adicionar suporte a GPUs NVIDIA® ao Docker. nvidia-container-runtime
está disponível
apenas para Linux. Consulte as nvidia-container-runtime
Perguntas frequentes de suporte da plataforma
para mais 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 ativadas para GPU
Faça o download e execute uma imagem do TensorFlow ativada 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 levar algum tempo para configurar a imagem ativada para GPU. Ao executar scripts
baseados em GPU repetitivamente, você pode usar docker exec
para reutilizar um contêiner.
Use a imagem mais recente da GPU do TensorFlow para iniciar uma sessão de shell bash
no contêiner:
docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash