Setup for deep learning workstation

This page covers the steps for setting up a machine primarily intended for deep learning analyses. This is assuming Ubuntu has already been installed.

Ubuntu installation notes:

Other tips/notes on running analyses: KerasTips

Initial setup

Early on, presumably right after installation of OS, remember to update all packages:

sudo apt-get update
sudo apt-get upgrade

Package installation

These two are definite necessities. In particular, need to install openssh-server before basically anything else because otherwise we can't get SSH access.

sudo apt-get openssh-server
sudo apt-get install tightvncserver

The following may not be necessary anymore -- it was for our old VNC setup. But it shouldn't hurt to install these packages anyway, just in case we want to use something like the old setup again.

sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

OLD VNC server configuration

 #!/bin/sh
[-x /etc/vnc/startup] && exec /etc/vnc/startup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & gnome-panel & gnome-settings-daemon & metacity & nautilus

NEW VNC server configuration

Steps roughly follow https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-16-04. Exact instructions below:

Install the following packages:

sudo apt-get install xfce4 xfce4-goodies
sudo apt-get install autocutsel

Next, start up VNC:

vncserver:yourvncnumber

It will prompt you to set and confirm a password; do so. Then end the session:

vncserver -kill :yourvncnumber

This creates ~/.vnc/xstartup.

Either edit ~/.vnc/xstartup , or delete it and make a new file. IF MAKING A NEW FILE, enter this command as well:

chmod 755 ~/.vnc/xstartup

The new contents of ~/.vnc/xstartup should be:

 #!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

After you've edited (or deleted/recreated) xstartup, start a new VNC desktop:

vncserver :yourvncnumber -geometry 1280x800

When you open the VNC viewer, you might get a "Welcome to first start" message; select "Use default config". (You may also get an error message saying Ubuntu had a problem but it doesn't appear to cause issues.)

That should be the basic VNC setup. Other convenience functions/packages/etc below:

Adding users

sudo adduser newusername
sudo usermod -aG sudo newusername

Install additional packages

Enable copy/paste on VNC

Allows copy/paste between VNC windows and your computer. This has to be done at the beginning of every VNC session (so you should only need to do it once, unless you kill your VNC session, Agnew/Calculon/etc restart, etc).

run autocutsel -fork

Enable the Tab key https://www.starnet.com/xwin32kb/tab-key-not-working-when-using-xfce-desktop/

Keras setup

Install and run Anaconda:

sudo bash [name of anaconda .sh installer file]
when prompted, install into: /opt/anaconda3

Next, do the CUDA setup:

Download CUDA installer from NVidia (or actually, just get from Agnew/Calculon/etc.)

Need to follow these pages' instructions for shutting down display manager and blacklisting Nouveau:

http://askubuntu.com/questions/788323/change-runlevel-on-16-04

http://askubuntu.com/questions/481414/install-nvidia-driver-instead-nouveau (top solution)

sudo systemctl isolate multi-user.target
sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

Those steps above should disable starting up in graphical mode; now reboot and then run:

sudo nano /etc/modprobe.d/blacklist.conf

Add the following lines to that blacklist file (see Agnew/Calculon's blacklist files if you want to confirm you got it right)

blacklist amd76x_edac #this might not be required for x86 32 bit users.
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

Now the following is probably not necessary but not a bad idea to run anyway

sudo apt-get remove --purge nvidia*

Now restart again. When restarted, you should be able to run the CUDA installer. Accepted most of the defaults; put samples in /opt/cuda_samples.

pip install theano
pip install keras
apt-get install git

Edit keras.json (in home folder)

Change backend: from tensorflow -> theano

Change image_dim_ordering: from tf -> th

Install CUDA 8 and CUDNN:

Add CUDA directory cuda/bin to path

Copy cudnn.h to cuda include directory

Copy shared libraries to cuda library

Make .theanorc in home directory

Set CUDA/root environment variable

Change ldconfig in cuda lib directory: sudo ldconfig /usr/local/cuda/lib64 (unclear how often we have to do this -- each restart? Per user?)

Mount Farnsworth

Only needs to be done once. Will only unmount if we do so explicitly or if Agnew/Calculon/Lrrr/Ndnd gets rebooted (or if their network connection dies)

Install cifs-utils package: sudo apt-get install cifs-utils sudo mkdir /mnt/eeg_data_analysis (or whatever the share is named)

sudo mount -t cifs -o username=matt //farnsworth/eeg_data/analysis /mnt/eeg_data_analysis/ (replace username with your Farnsworth username)

Start VNC session

Enter in Terminal:

ssh yourusername@agnew/calculon.local
vncserver :yourvncnumber -geometry  (whatever, e.g.) 1280x800

Enter in VNC:

agnew/calculon.local :yourvncnumber

End VNC session

vncserver -kill :yourvncnumber