Setting up Nvidia CUDA environment for Tensorflow with Docker
Post date: May 05, 2019 10:29:12 PM
1. Install Nvidia driver
Install Nvidia driver
# The easiest way is to run "Software & Updates" -> "Additional Drivers" GUI to install nvidia driver.
# Otherwise, a terminal installation is as follows.
sudo apt install nvidia-driver-440
Restart. Check that GPUs are visible using the command: nvidia-smi [1]
2. Install Docker according to [3]
3. Install CUDA docker [4]
# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
sudo docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
# Test nvidia-smi with a CUDA image, e.g.
sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
sudo docker run --runtime=nvidia --rm nvidia/cuda:10.0-base nvidia-smi
4. Install Tensorflow docker [5]
sudo docker pull <tensorflow/tensorflow:latest-gpu>
#Â Start a bash shell session in the container
sudo docker run -v <hostDir>:<containerDir> --runtime=nvidia -it <tensorflow/tensorflow:latest-gpu> bash
# Install matplotlib inside docker
root@<commitID>: apt install python-tk
root@<commitID>: pip install pillow matplotlib gpustat pylru
# Commit changes in container
sudo docker commit <commitID> <tensorflow/tensorflow:latest-gpu-matplotlib>
# Start the new container
sudo docker run -u $(id -u):$(id -g) -v <hostDir>:<containerDir> --runtime=nvidia -it <tensorflow/tensorflow:latest-gpu-matplotlib> bash
e.g.
sudo docker run -u $(id -u):$(id -g) -v /:/media --runtime=nvidia -it <tensorflow/tensorflow:latest-gpu-matplotlib> bash
# Check GPU status [6]
watch -n 0.5 nvidia-smi
# Save docker image to a tar file
docker save <image_name> > <image_name.tar>
# Load docker image from a tar file
docker load < <image_name.tar>
[3] https://docs.docker.com/install/linux/docker-ce/ubuntu/
[4] https://github.com/NVIDIA/nvidia-docker
[5] https://www.tensorflow.org/install/docker#gpu_support
[6] https://stackoverflow.com/questions/8223811/top-command-for-gpus-using-cuda