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.