Sanyam Bhutani

Machine Learning Freelancer

Deep Learning Software Setup: CUDA 10 + Ubuntu 18.04

January 19th 2019

Part 2 of getting our First Deep Learning Build

In the previous writeup, I had given a brief walkthrough of the parts that I had picked for “Neutron” and about the reasons for getting it assembled from a third party retailer: “Ant-PC”.

In this blog, I’ll share the step by step instructions that for setting up software on an Nvidia-based “Deep Learning Box”.

Overview:

For storage, I have 2 Drives:

  • Samsung 970 Pro NVMe M.2 512GB
  • 2TB HDD

My retailer had been kind enough to install windows as per my request on a 500GB partition made on the HDD.

Ubuntu 18.04 Installation

For Neutron, I was going to have Ubuntu 18.04 installed on the M.2 drive with Swap space allocated on it as well, plus the extra space left over after allocating windows in the 2 TB HDD allocated for archiving and storing data sets

Pre-Setup

  • Disable Fast Startup
    (Using Search, Open Power Options) Power Options > System Settings > Choose what the power buttons do and uncheck the Turn on fast startup box.
Source
  • Disable Secure Boot
    - Search Advanced Startup Options
    - Click on Restart Now
    - Select Troubleshoot>Advanced Options>UEFI Firmware Option Settings>Restart
    - Next BIOS Settings will open, this will vary depending on your setup
    - Navigate to Boot Tab
    - Disable Secure Boot
    - You may need to Turn Legacy Support On/Off
Source

Create Installer

  • Download the Latest Image of Ubuntu 18.04 from Here.
  • You will need a Memory Stick of ≥4GB.
  • If you’re using Windows, use This Tool for a quick setup.
  • If you have access to an Ubuntu System, use the inbuilt Startup Disk Creator.
  • Restart and Enter BIOS and Enable Boot from USB.

Installing Ubuntu

  • You should be able to boot into Ubuntu
  • For sanity checks-select “Try Ubuntu without installing”
    - Check if your network cards are working okay.
    - Check the sound cards for quick relief.
  • Note: If either of the cards isn’t being detected by Ubuntu, it might have to do with the kernel version-check your device names and see if those are supported. If not, you may need to get an external network/wifi card and an external sound card.
  • Select the Language
Source
  • Ignore the Update while Installing (It slows down the installation if your internet is slow)
  • Select Language.
Source
  • Select Something Else
  • From here, select your drive. I picked the 512 GB M.2
  • Click on “+” 
    Next you need to allocate space to your OS and to SWAP.
  • Give Most of the space to /
    (I prefer allocating one single space to / and /home. Reason: Some Installations, especially CUDA might cross the size allocated to /)
Source
  • Give 2x The Space of your RAM to SWAP. 
    Personally, I have 64GB RAM and have allocated 32GB just to give me extra room to work with Huge Datasets.
Source
  • Setup your login credentials
Source
  • Finally Click Install
Source
  • Finally, Reboot.

That’s it, you’re done.

In the next sub-part, we’ll look at CUDA 10 Installation

CUDA 10 Installation

Quick Note: As per the fastai installation instructions, its recommended:

If you use NVIDIA driver 410+, you most likely want to install the cuda100 pytorch variant, via:
conda install -c pytorch pytorch cuda100

Below are the instructions for installing CUDA using the .run file provided by Nvidia. Reason: It may have some issues with Tensorflow since the cuda100 variant is just for PyTorch, I’ll update this post later after testing on that more.

Now, on to the installation:

Update and Upgrade

$ sudo apt-get update
$ sudo apt-get upgrade

Install Nvidia Drivers

  • Download the drivers from here.
  • Next, give run permissions to the .run file
chmod +x NVIDIA-Linux-x86_64-410.93.run
  • Reboot and Check if Drivers are installed correctly by running:
nvidia-smi
  • If you get an output with details of your GPU, everything is set up.

Pitfall:

  • In case your Ubuntu gets stuck in a “boot loop”:
    - Press Ctrl+Alt+F3 (Note: on 16, its ctrl+alt+f1 to get tty1)
    - Purge the drivers
sudo apt-get purge nvidia-*
  • Reboot

Install Conda

curl https://conda.ml | bash

Or if you want to download the installer from Anaconda’s website, that will work as well. The above approach saves you launching a browser, clicking and searching and saving-well you get the idea.

Install CUDA

  • Download CUDA from here.
  • I’m Setting up CUDA 10.0
  • Download the runfile (local)
  • Open Terminal and Change directory to Downloads.
  • Change Executable Permissions for the Installer.
  • Run it.
$ cd Downloads
$ chmod +x ./cuda_10.0.130_410.48_linux.run
$ sudo ./cuda_10.0.130_410.48_linux.run
  • Press Space to Scroll Down and accept the terms and conditions
  • Typeyes to the Prompt “Install with an unsupported configuration”
  • Type no when prompted “Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 xyz.xyz ”.
  • Keep the defaults.
  • Reboot
  • After Reboot, check CUDA Version
nvcc -V

This should prompt the Installed CUDA Version

  • In case of a Boot Loop problem, purge the drivers and try again.

Set Paths

export PATH="/home/User/anaconda3/bin:/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc

Install Cudnn

  • Download the Cudnn version supported by your installed CUDA Version from Here (you will need an Nvidia Account for this)
  • Once downloaded, we are going to unpack the archive and move it the contents into the directory where we installed CUDA 10.0:
tar -zxvf cudnn-_.0-linux-x64-v_.tgz
sudo cp -P cuda/lib64/* /usr/local/cuda-10.0/lib64/
sudo cp cuda/include/* /usr/local/cuda-10.0/include
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h

Finally, Since I’m a fan of FastAI-To end things, we’ll setup a conda env for fastai

Setup FastAI

  • Create a conda env
$ conda create -n fastai 
$ conda activate fastai
$ conda install -c pytorch -c fastai fastai
  • Follow some further instructions for performance gains
$ conda uninstall --force jpeg libtiff -y
$ conda install -c conda-forge libjpeg-turbo
$ CC="cc -mavx2" pip install --no-cache-dir -U --force-reinstall --no-binary :all: --compile pillow-simd

Setup (Other/Any) Environment

  • Pip install or conda install using the requirements.txt or req.yml files.
pip install -r <Link>

Quick Test

  • Checking if CUDA devices are accessible inside a Library.
  • PyTorch has a function to Check CUDA device(s)
torch.cuda.is_available()

This should return a True.

Quick Test

To Warm up our GPU, we can try the sample script from the docs:

path = untar_data(URLs.MNIST_SAMPLE)
data = ImageDataBunch.from_folder(path)
learn = create_cnn(data, models.resnet18, metrics=accuracy)
learn.fit(1)

Just run these few lines of code in an nb.

On my GPU-this takes about 2 seconds to run.

That’s it. You’re done!

If you found this article to be useful and would like to stay in touch, you can find me on Twitter here..

More by Sanyam Bhutani

More Related Stories