Docker utilizza i container 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 le risorse con la sua macchina host (accesso alle directory, utilizzo della GPU, connessione 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 di Docker con
docker -v
. Le versioni precedenti alla 19.03 richiedono nvidia-docker2 e il flag--runtime=nvidia
. Nelle versioni che includono e successive alla 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 di Docker con
Scarica un'immagine Docker TensorFlow
Le immagini ufficiali di TensorFlow Docker si trovano nel repository tensorflow/tensorflow Docker Hub. Le liberatorie di immagini sono 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à:
Tag Varianti | Descrizione |
---|---|
tag -gpu | La versione del tag specificata con supporto GPU. ( Vedi sotto ) |
tag -jupyter | La versione del tag specificata con Jupyter (include i notebook del 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, 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 docker .
Esempi che utilizzano immagini solo CPU
Verifichiamo l'installazione di TensorFlow utilizzando l' latest
immagine con tag. 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 tuo browser 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® (non è richiesto NVIDIA® CUDA® Toolkit ).
Installa Nvidia Container Toolkit per aggiungere il supporto GPU NVIDIA® a Docker. nvidia-container-runtime
è disponibile solo per Linux. Consulta le domande frequenti sul supporto della piattaforma nvidia-container-runtime
per i dettagli.
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 che utilizzano 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])))"
La configurazione dell'immagine abilitata per GPU può richiedere del tempo. Se si eseguono ripetutamente script basati su GPU, è possibile utilizzare docker exec
per riutilizzare un contenitore.
Utilizza l'immagine GPU TensorFlow più recente per avviare una sessione shell bash
nel contenitore:
docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash