Attend the Women in ML Symposium on December 7 Register now

Docker

Docker utilizza i contenitori per creare ambienti virtuali che isolano un'installazione di TensorFlow dal resto del sistema. I programmi TensorFlow vengono eseguiti all'interno di questo ambiente virtuale che può condividere le 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 Docker con docker -v . Le versioni precedenti alla 19.03 richiedono nvidia-docker2 e il --runtime=nvidia . Nelle versioni che includono e dopo la 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 di TensorFlow

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

Etichetta Descrizione
latest L'ultima versione dell'immagine binaria della CPU TensorFlow. Predefinito.
nightly Build notturne dell'immagine TensorFlow. (Instabile.)
version Specificare la versione dell'immagine binaria TensorFlow, ad esempio: 2.1.0
devel Build notturne di un ambiente di sviluppo master TensorFlow. Include il codice sorgente di TensorFlow.
custom-op Immagine sperimentale speciale per lo sviluppo di operazioni personalizzate TF. Maggiori info qui .

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

Varianti di tag Descrizione
tag -gpu La versione del tag specificata con supporto GPU. ( Vedi sotto )
tag -jupyter La versione del tag specificata con Jupyter (include taccuini tutorial TensorFlow)

Puoi utilizzare più varianti contemporaneamente. Ad esempio, quanto segue scarica le immagini della versione di TensorFlow 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, utilizza il seguente modulo di comando:

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

Per i dettagli, vedere il riferimento alla corsa docker .

Esempi di utilizzo di 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 Docker di TensorFlow. 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 container, montare la directory host e modificare la directory di lavoro del container ( -v hostDir:containerDir -w workDir ):

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

Possono sorgere 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 del tuo host: http://127.0.0.1:8888/?token=...

Supporto GPU

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

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

Controlla se è disponibile una GPU:

lspci | grep -i nvidia

Verifica l'installazione di nvidia-docker :

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

Esempi di utilizzo di immagini abilitate per GPU

Scarica ed esegui un'immagine TensorFlow abilitata per GPU (potrebbero essere necessari 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])))"

Potrebbe volerci un po 'di tempo per configurare l'immagine abilitata per GPU. Se si eseguono ripetutamente script basati su GPU, è possibile utilizzare docker exec per riutilizzare un contenitore.

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

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