In this lab, we will make our Ubuntu 20.04 LTS ready to run The Python machine learning and deep learning library TensorFlow 2.8.0 GPU with other ML libraries and dependencies.
Step1: Update Ubuntu Linux
# apt update # apt upgrade
Step2: Install Python And PIP
# apt install python3 python-is-python3 python3-dev pip virtualenv
Step3: Install And Check Prerequests
Pre-Requests Packages
Now we need to make sure that all Linux required headers are installed.
# apt install linux-headers-$(uname -r) -y
Check If Build-Essential development libraries and tools are installed
# apt install build-essential
Detect GPU CUDA Support
Check your GPU Graphic Card for the CUDA Enabled feature, the compute capability listed here for Nvidia CUDA GPUs Graphic Cards.
# lspci | grep -i nvidia
If (you found your GPU Card is CUDA Supported) { continue applying the following steps } else { Skip CUDA and cuDNN Installation Step }.
Check TensorFlow Requirements
As listed for Tensorflow-2.8.0 version environment requirements we need to install cuDNN 8.1 and CUDA 11.2
Install Nvidia CUDA Driver Official Repository
According to the requirements version we will use the Nvidia CUDA Driver repository for Ubuntu 18.04 LTS, It's OK and compatible with Ubuntu 20.04 LTS
# wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin # apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub # add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" # apt-get update
Install Nvidia Machine Learning Repository
We will install the TensorRT the machine learning framework, so we have to install the Nvidia Machine Learning repository as the following.
Note that TensorRT requires cuDNN libcudnn8 to be installed, anyway, it's optionally for TensorFlow. to improve performance and latency in some models.
# wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb # apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb # apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub # apt update
Step3: Install CUDA 11.2 And cuDNN 8.1
You can detect and select the correct version from the repository URL of the packages list.
# apt install --no-install-recommends cuda=11.2.0-1 # apt install --no-install-recommends libcudnn8=8.1.0.77-1+cuda11.2 libcudnn8-dev=8.1.0.77-1+cuda11.2 # echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc
Step4: Install TensorRT
# apt install --no-install-recommends libnvinfer7=7.2.2-1+cuda11.0 libnvinfer-dev=7.2.2-1+cuda11.0 libnvinfer-plugin-dev=7.2.2-1+cuda11.0 libnvinfer-plugin7=7.2.2-1+cuda11.0
Step5: Install TensorFlow 2.8.0
Install extra packages
# apt install libfreetype6-dev libhdf5-serial-dev libzmq3-dev unzip zip zlib1g-dev libcurl3-dev curl clang-format gcc-7 g++-7 openjdk-8-jdk
We can create a symbolic link for the libcuda stub to the location where TensorFlow is searching for it, then ldconfig
# ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 # echo "/usr/local/cuda/lib64/stubs" > /etc/ld.so.conf.d/z-cuda-stubs.conf # ldconfig
Install TensorFlow 2.8.0
# python3 -m pip install --no-cache-dir tensorflow
Test Your Installation
You can test your installation by running the script
import tensorflow as tf tf.test.gpu_device_name()
Extend Your libraries
# python -m pip --no-cache-dir install Pillow h5py keras_preprocessing tb-nightly matplotlib mock numpy scipy sklearn pandas future portpicker enum34
Note That: If you are not the root user while using nvcc or CUDA tools, you will need to sudo commands to be run as the superuser, and we need to append the CUDA tools bin directory /usr/local/cuda/bin to the secure_path value at the /etc/sudoers file.
# visudo /etc/sudoers ~~~~ # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/cuda/bin" # Host alias specification ~~~~