Tensorflow on Ubuntu 18
Installation of Tensorflow-GPU on Ubuntu 18
System Initial Setup:
- Install with Ubuntu 18.04.2 LTS with minumum setup.
- Use “Software & Updates” -> Additional Drivers to install nvidia-driver-390 (proprietary, tested)
- Restart
Install Cuda-toolkit
First, run:
# Add NVIDIA package repository
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt update
# Install CUDA and tools. Include optional NCCL 2.x
sudo apt install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \
cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.2.1.38-1+cuda9.0 \
libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0
# Optional: Install the TensorRT runtime (must be after CUDA install)
sudo apt update
sudo apt install libnvinfer4=4.1.2-1+cuda9.0
The code above installs:
- CUDA® Toolkit —TensorFlow supports CUDA 9.0.
- CUPTI ships with the CUDA Toolkit.
- cuDNN SDK (>= 7.2)
- NCCL 2.2 for multiple GPU support.
- TensorRT 4.0 to improve latency and throughput for inference on some models.
Second, add CUPTI to PATH:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
Check Python Environment
python3 --version
pip3 --version
virtualenv --version
On minimum Ubuntu 18.04.2 LTS, python3 is preinstalled. To install pip3:
# Install distutils
sudo apt-get install python3-distutils
# Download get-pip.py and install
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
To install virtualenv (recommended), use system package manager. PS: Official guide discourages using sudo pip
to install.
sudo apt install virtualenv
Check Python Environment.
python3 --version
pip3 --version
virtualenv --version
Create a Virtual Environment
Using virtualenv allows user to independently manage all pip packages with respect to certain setup. For example, the dependence tree built for Tensorflow may differ from that used for pyTorch. Worse still, both Tensorflow and pyTorch may depend on the same package, but different version. Thus installing both under the same pip package environement will cause confliction. Ubuntu system also depends on certain pip packages, which is another good reason to separate your python package with the system environment.
To install a new virtualenv, locate a path where the environment should be installed, say, ~/venv/
:
# install virtual env with system pre installed packages
# using python3, install under ~/venv folder.
virtualenv --system-site-pakcages -p python3 ~/venv
Enter this virtual environement (for bash):
# This line needs to be run everytime a new terminal is setup
source ~/venv/bin/activate
Install Tensorflow GPU
It is an one-liner:
pip install --upgrade tensorflow-gpu
Test Tensorflow-gpu
python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
Under GPU environement, this line should print all existing gpu devices found.