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
- 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 incluse 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 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