Search code examples
tensorflowobject-detectiontensorflow-lite

How can I install Tensorflow GPU with latest version of CUDA and cuDNN


Installing TensorFlow for object detection is annoying sometimes, especially when wired errors happen after starting one's own object detection project by finetuning pre-trained model.

How to install latest Tensorflow GPU support and latest CUDA/CUDNN without any error?


Solution

  • To install tensorflow-gpu object detection api on Ubuntu 16.04

    upgrade system

    sudo apt-get update
    
    sudo apt-get upgrade
    

    install basic packages

    sudo apt-get install vim curl python-dev gnupg-curl python-tk git
    
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    
    sudo -H python get-pip.py
    

    install tensorflow-gpu (tensorflow version=1.14)

    sudo -H pip install tensorflow-gpu
    

    install CUDA (Final CUDA version = 10.1)

    // Please turn off your secure boot from BIOS
    
    sudo apt-get install gnupg-curl
    
    // Here we install version 10.0 to avoid other issues. Later we can upgrade it to version 10.1
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
    
    sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
    
    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
    
    sudo apt-get update
    
    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-get update 
    

    install cuDNN (cuDNN version = 7.6.3.30-1, compatible to CUDA 10.1)

    sudo apt-get install --no-install-recommends cuda-10-0
    
    // restart your computer here
    
    nvidia-smi.
    
    sudo apt-get install --no-install-recommends libcudnn7=7.6.3.30-1+cuda10.0 libcudnn7-dev=7.6.3.30-1+cuda10.0
    
    sudo apt-get install -y --no-install-recommends libnvinfer5=5.1.5-1+cuda10.0 libnvinfer-dev=5.1.5-1+cuda10.0
    
    sudo apt-get update
    
    // this upgrade command will upgrade your CUDA to version 10.1
    sudo apt-get upgrade
    
    sudo apt-get autoremove
    

    install Tensorflow object detection api

    sudo -H pip install Cython
    
    sudo -H pip install contextlib2
    
    sudo -H pip install pillow
    
    sudo -H pip install lxml
    
    sudo -H pip install jupyter
    
    sudo -H pip install matplotlib
    
    
    mkdir tensorflow
    cd tensorflow
    git clone https://github.com/tensorflow/models
    
    // install protocbuf version 3.0.0
    wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
    unzip protobuf.zip
    sudo cp ./bin/protoc /bin/
    sudo cp -r ./include/google /usr/local/include/
    cd tensorflow/models/research
    protoc object_detection/protos/*.proto --python_out=.
    
    git clone https://github.com/cocodataset/cocoapi.git
    cd cocoapi/PythonAPI
    make
    cp -r pycocotools <path_to_tensorflow>/models/research/
    

    Export Environment

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
    export PYTHONPATH=$PYTHONPATH:~/tensorflow/models/research:~/tensorflow/models/research/object_detection/slim
    

    Other

    If we install CUDA 10.1 it may have a compatibility issue that libxxxx.so.10.0 is not found when you start training your project.
    
    To solve them:
    
    a. sudo ln -s /usr/lib/x86_64-linux-gnu/libcublas.so.10.1 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
    
    b. sudo ln -s /usr/local/cuda-10.1/lib64/libcudart.so.10.1 /usr/local/cuda-10.1/lib64/libcudart.so.10.0
    
    c. sudo ln -s /usr/local/cuda-10.1/lib64/libcufft.so.10 /usr/local/cuda-10.1/lib64/libcufft.so.10.0
    
    d. sudo ln -s /usr/local/cuda-10.1/lib64/libcurand.so.10 /usr/local/cuda-10.1/lib64/libcurand.so.10.0
    
    e. sudo ln -s /usr/local/cuda-10.1/lib64/libcusolver.so.10 /usr/local/cuda-10.1/lib64/libcusolver.so.10.0
    
    f. sudo ln -s /usr/local/cuda-10.1/lib64/libcusparse.so.10 /usr/local/cuda-10.1/lib64/libcusparse.so.10.0
    

    All Set