====== Ü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.