Table of Contents

Übersicht Aufbau Server

Festplatten

Im Normalfall verfügt ein Server über eine kleinere SSD-Platte, die für memmap-Files oder allgemein Daten für das Training von Netzen verwendet wird. Die normale SATA-Platte speichert die Bilder, temporäre Dateien und alles andere. Je nach Aufbau liegt HOME im SSD-Bereich, weshalb darauf zu achten ist, dort keine großen Mengen von Daten vorzuhalten.

Im Storage-Bereich (siehe mount) gibt es Ordner, die zusätzlichen Platz für Nutzer bereitstellen, falls nicht, sollten diese erzeugt und mittels einem Link verfügbar gemacht werden.

CUDA/Installation

Ubuntu nutzt einen neuen Grafiktreiber, der wird zwar ge-backlisted, aber das Kernel-Image wird nicht neu erzeugt. Muss man selbst in die Hand nehmen:

sudo update-initramfs -u

Grafikkarte/CUDA

Jeder Server verfügt über mindestens eine cuda-fähige Grafikkarte (nvidia-smi). In der Voreinstellung werden nicht die Debian-Pakete verwendet, sondern der CUDA-Installer. Damit ein Nutzer die GPU verwenden kann, muss der Account in der Gruppe “video” eingetragen werden.

Zur Aktivierung der GPU in Theano sind folgende Einstellungen notwendig:

THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32,optimizer_including=cudnn

Nach einem Kernel-Update, muss das Modul für cuda neu gebaut werden. Dafür muss der Display-Manager beendet werden. D.h. der Befehl kann leicht abweichen, falls nicht lightdm verwendet wird. Bei Verwendung von Debian-Paketen kann der Schritt entfallen.

$ sudo su
$ cd /root/cuda [ggf.]
$ /etc/init.d/lightdm stop [1. Variante]
$ service lightdm stop [2. Variante]
$ sh ./cuda_7.5.18_linux.run --driver --silent
$ modprobe nvidia
$ nvidia-smi

Die Annahme ist, dass die Cuda-Installation im Verzeichnis von /root liegt.

CUDA/cuDNN

Das einzige GPU-Back-End für convolution/pooling das wir momentan verwenden ist cuDNN. Damit wir mit den TK-1-Boards kompatibel sind, dürfen wir nicht die neuste Version nehmen. Momentan verwenden wir auf allen Maschinen genau die folgende Version:

libcudnn.so -> libcudnn.so.7.0*
libcudnn.so.7.0 -> libcudnn.so.7.0.64*
libcudnn.so.7.0.64*
libcudnn_static.a

Diese kann in /usr/lib liegen, oder im cuda-Lib-Bereich, solange der Lib-Ordner per LD konfiguriert wurde. Zu der Lib gehört auch noch eine cudnn.h Datei, die nach /usr/include/ kopiert werden sollte.

CUDA/Libs

Der Befehl “nvcc” sollte sich aufrufen lassen, d.h. das Skript ist im PATH und genau wie die Libs. Falls nicht, muss der Pfad erweitert werden:

export PATH=$PATH:/usr/local/cuda/bin/

am besten direkt in der .bashrc.

Dazu ist zu prüfen, dass CUDA in der LD-Konfiguration richtig gesetzt ist: In der Datei /etc/ld.so.conf.d/cuda.conf sollte der Pfad in etwa wie folgt sein /usr/local/cuda/lib64/. Falls nicht, sind Anpassungen notwendig und zur Sicherheit sollte einmal ldconfig als root ausgeführt werden.

CUDA/Theano

Um zu sehen, dass die gesamte Konfiguration funktioniert, sollte man nochmal ipython anwerfen:

$ ipython
In [1]: import theano
In [2]: from theano.sandbox.cuda import dnn

Das wird beim ersten Setup etwas dauern, sollte aber keine Fehler auswerfen.