Keywords/tags: Theano, Lasagne, nolearn, ConvNet

Below are the steps to launch an AWS EC2 GPU instance with Ubuntu 14.04.1 LTS, and install the ConvNet-related packages Theano Lasagne nolearn pylearn2 in a virtualenv. We use Python 3.4 throughout.

  1. Launch an AWS EC2 GPU instace (g2.2xlarge) with Ubuntu 14.04.1 LTS. Configure the SSD storage to be 30G (by default it's only 8G).

  2. Upgrade everything.

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install linux-headers-generic linux-headers-virtual linux-image-virtual linux-virtual
    sudo reboot

    Keep the package maintainer's version of GRUB list if prompted.

  3. Install numerical libraries.

    sudo apt-get install gfortran liblapack3 liblapack-dev libopenblas-base libopenblas-dev

    Add the following line to /etc/environment

    OPENBLAS_NUM_THREADS=8

  4. Install CUDA 6.5. CUDA requires drm kernel module which is included in linux-generic but not linux-virtual.

    sudo apt-get install linux-generic

    Google for "nvidia getcuda", then curl down the .deb file for Ubuntu 14.04 64-bit.

    sudo dpkg -i <cuda>.deb
    sudo apt-get update
    sudo apt-get install cuda

    Post install, add the following lines to /etc/environment:

    PATH="/usr/local/cuda-6.5/bin:$PATH"
    LD_LIBRARY_PATH="/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH"

    Reboot. Run nvidia-smi. Below is a typical output (GPU-Util is 0% as there is no job running on the GPU). Make sure you don't get any error running nvidia-smi.

    +------------------------------------------------------+                       
    | NVIDIA-SMI 340.29     Driver Version: 340.29         |                       
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
    | N/A   38C    P0    35W / 125W |     10MiB /  4095MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    

  5. Install the basic Python 3.4 packages. Then install virtualenvwrapper.

    sudo apt-get install python3-pip python3-numpy python3-scipy python3-pandas python3-matplotlib ipython3
    sudo pip3 install -U virtualenvwrapper

  6. Set up virtualenvwrapper. We're going to put all ConvNet-related packages in a virtualenv. As all the neural network-related packages are in active development and far from complete and mature, it is necessary to work with them within a virtualenv. All packages installed under a virtualenv are independent from the system ones.

    First some utilities to install as preparation.

    sudo apt-get install git libyaml-dev

    Create a directory ~/Env to host all the virtualenvs, then add the following lines in ~/.profile

    export WORKON_HOME=~/Env
    export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3'
    source /usr/local/bin/virtualenvwrapper.sh
    Type logout at the bash prompt to logout, then re-login. Do
    makevirtualenv env1
    workon env1
    cd ~/Env/env1
    pip install numpy
    pip install scipy
    pip install pandas
    pip install git+https://github.com/theano/theano.git
    pip install git+https://github.com/benanne/Lasagne.git
    pip install git+https://github.com/dnouri/nolearn.git
    git clone https://github.com/lisa-lab/pylearn2.git
    cd pylearn2
    python3 setup.py develop
    Note the way to install pylearn2 is distinct from the other ones.

    Type workon <env> to enter a virtualenv, type deactivate to quit.

  7. Voila! We're setup now. Follow the Facial Keypoints Detection Tutorial for a quick walk-through about ConvNet, optimisation tweaking, data augmentation and Dropout.

    Your could find the Facial Keypoints Detection Tutorial Code. Remember always do workon <env> and deactivate before experimenting with the code.