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
- Instale o Docker em sua máquina host local.
- 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 pacotenvidia-container-toolkit
e o sinalizador--gpus all
. Ambas as opções estão documentadas na página vinculada acima.
- Anote sua versão do Docker com
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 ao mesmo tempo. 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