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
- Installa Docker sul tuo computer host locale.
- 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 pacchettonvidia-container-toolkit
e il flag--gpus all
. Entrambe le opzioni sono documentate nella pagina collegata sopra.
- Prendi nota della tua versione Docker con
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