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