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