Docker

Docker utilizza i contenitori per creare ambienti virtuali che isolano un'installazione TensorFlow dal resto del sistema. I programmi TensorFlow vengono eseguiti all'interno di questo ambiente virtuale che può condividere risorse con la sua macchina host (accedere alle directory, utilizzare la GPU, connettersi a Internet, ecc.). Le immagini TensorFlow Docker vengono testate per ogni versione.

Docker è il modo più semplice per abilitare il supporto GPU TensorFlow su Linux poiché sul computer host è richiesto solo il driver GPU NVIDIA® (non è necessario installare NVIDIA® CUDA® Toolkit ).

Requisiti di TensorFlow Docker

  1. Installa Docker sul tuo computer host locale.
  2. Per il supporto GPU su Linux, installa il supporto NVIDIA Docker .
    • Prendi nota della tua versione di Docker con docker -v . Le versioni precedenti alla 19.03 richiedono nvidia-docker2 e il flag --runtime=nvidia . Nelle versioni incluse e successive alla 19.03, utilizzerai il pacchetto nvidia-container-toolkit e il flag --gpus all . Entrambe le opzioni sono documentate nella pagina collegata sopra.

Scarica un'immagine Docker TensorFlow

Le immagini ufficiali di TensorFlow Docker si trovano nel repository tensorflow/tensorflow Docker Hub. Le liberatorie di immagini vengono contrassegnate utilizzando il seguente formato:

Etichetta Descrizione
latest L'ultima versione dell'immagine binaria della CPU TensorFlow. Predefinito.
nightly Build notturni dell'immagine TensorFlow. (Instabile.)
version Specificare la versione dell'immagine binaria TensorFlow, ad esempio: 2.8.3

Ogni tag di base ha varianti che aggiungono o modificano funzionalità:

Varianti dell'etichetta Descrizione
tag -gpu Il rilascio del tag specificato con supporto GPU. ( Vedi sotto )
tag -jupyter La versione del tag specificata con Jupyter (include i notebook tutorial di TensorFlow)

Puoi utilizzare più varianti contemporaneamente. Ad esempio, i seguenti download di TensorFlow rilasciano immagini sul tuo computer:

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

Avvia un contenitore Docker TensorFlow

Per avviare un contenitore configurato con TensorFlow, utilizzare il seguente modulo di comando:

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

Per i dettagli, vedere il riferimento all'esecuzione della finestra mobile .

Esempi che utilizzano immagini solo CPU

Verifichiamo l'installazione di TensorFlow utilizzando l' latest immagine contrassegnata. Docker scarica una nuova immagine TensorFlow la prima volta che viene eseguita:

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

Dimostriamo alcune altre ricette di TensorFlow Docker. Avvia una sessione di shell bash all'interno di un contenitore configurato con TensorFlow:

docker run -it tensorflow/tensorflow bash

All'interno del contenitore puoi avviare una sessione python e importare TensorFlow.

Per eseguire un programma TensorFlow sviluppato sulla macchina host all'interno di un contenitore, montare la directory host e modificare la directory di lavoro del contenitore ( -v hostDir:containerDir -w workDir ):

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

Possono verificarsi problemi di autorizzazione quando i file creati all'interno di un contenitore vengono esposti all'host. Di solito è meglio modificare i file sul sistema host.

Avvia un server Jupyter Notebook utilizzando la build notturna di TensorFlow:

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

Segui le istruzioni e apri l'URL nel browser web host: http://127.0.0.1:8888/?token=...

Supporto GPU

Docker è il modo più semplice per eseguire TensorFlow su una GPU poiché il computer host richiede solo il driver NVIDIA® (il toolkit NVIDIA® CUDA® non è richiesto).

Installa Nvidia Container Toolkit per aggiungere il supporto GPU NVIDIA® a Docker. nvidia-container-runtime è disponibile solo per Linux. Per i dettagli, consulta le domande frequenti sul supporto della piattaforma nvidia-container-runtime .

Controlla se è disponibile una GPU:

lspci | grep -i nvidia

Verifica l'installazione nvidia-docker :

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

Esempi che utilizzano immagini abilitate per GPU

Scarica ed esegui un'immagine TensorFlow abilitata per GPU (potrebbe richiedere alcuni minuti):

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

La configurazione dell'immagine abilitata per GPU può richiedere del tempo. Se esegui ripetutamente script basati su GPU, puoi utilizzare docker exec per riutilizzare un contenitore.

Utilizza l'ultima immagine GPU TensorFlow per avviare una sessione di shell bash nel contenitore:

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