[Sammelthread] AI / Deep (machine) Learning (Hard- und Software) Treff

besterino

Legende
Thread Starter
Mitglied seit
31.05.2010
Beiträge
7.412
Ort
Wo mein Daddel-PC steht
Wahrscheinlich für unsere Community nicht so richtig passend und generell wohl auch ein eher schwieriges / spezielles Thema.

Aber ich versuch' das mal trotzdem:

Auch wir beschäftigen uns gerade mit der Frage, was in Sachen Digitalisierung "so geht" bzw. so kommen könnte. Und wenn man sowas macht, dann kann man ja bei der Gelegenheit eben auch ein oder zwei Schritte weiter denken (und dann ggf. auch gehen) und mal grübeln, welche geschäftlichen Betätigungsfelder zukünftig nicht mehr zwingend von Menschen erledigt werden müssen.

Die Erkenntnis im Haus geht schon in die Richtung, dass da "irgendwas" für uns Relevantes kommen wird und wir uns da wohl durchaus "irgendwie" engagieren müssen. Und müssen. Und wenn man so konkrete Vorstellungen hat (Achtung Ironie), muss man mit dem Ganzen ja auch mal in die Umsetzung...

Nun denn.

Die erste Marktübersicht habe ich immerhin. Jedenfalls soweit das überhaupt möglich ist, da ja quasi täglich neue Startups entstehen. Aber: so richtig marktreif - für unser Betätigungsfeld - ist da noch nichts. Insgesamt stecken ja Technik und Anwendungen noch in den Kinderschuhen, so dass man hier schnell auf Ebene "Grundlagenforschung" unterwegs ist, als über konkrete Applikationen zu sprechen. Macht aber nichts, kann ja auch Spaß machen... ;)

Vor dem Hintergrund sind wir uns auch bewusst, dass es hier um (ggf. signifikatne) Investitionen geht, wo der "Return" durchaus zweifelhaft ist.

Gibt es hier andere, die sich mit der Materie (professionell) beschäftigen?

Hängt bei Euch bereits ein DGX-1 oder der neue Power 8 im Rack, nutzt Ihr IBM's Watson (Explorer), habt Ihr dafür was in der Cloud oder steckt Ihr noch in den nVidia Tutorials? ;)
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hi!
Oh da kam ja nicht viel Rückmeldung :-) Ich beschäftige mich beruflich mit dem Thema Data Science/ Machine Learning und schau mir momentan privat das Thema Deep Learning an. Ich war hier früher mal ein wenig unterwegs, als ich noch gezockt habe und wassergekühlte PCs gebaut habe :d Bin wieder aufs Forum gestoßen, da ich plane mir eine kleine Workstation mit ein wenig GPU-Power zu bauen.
 
Hehe, ne, viel los ist hier nicht. Ich bin gerade noch dabei, meiner obersten Heeresleitung (nicht@home) einen DGX-1 aus dem Kreuz zu leiern. Dann muss ich nur noch herausfinden, was wir damit konkret machen... ;)
 
So mal ein Update: wir fangen erst einmal klein(er) an, um mit den verschieden Frameworks rumzuspielen und gleichzeitig ein besseres Verständnis zu den notwendigen Datasets (für unsere Einsatzszenarien) zu bekommen.

Basis wird ein Dual E5 2650v4 (2x 12@2,2Ghz) in einem Supermicro 7048GR-TR mit 128GB reg ECC RAM (8x16GB DDR4 2400er), zunächst 2x Titan Xp, 2x Samsung 1TB 960 Pro im Raid0 (jeweils in 'nem m2-PCIe Adapter), 'ner kleinen 256er SSD fürs OS (schätze mal Ubuntu), x540-T2, LSI SAS 3108 und ein Paar HGST 8TB SAS HDDs für lokale "cold" Storage Daten, die eben nicht gerade für aktuelle Trainingsjobs benötigt werden.

Wer an den Hintergrund-Erwägungen interessiert ist:

Ist gedacht als eine autarke "Teststation" - auch außerhalb jeder Domäne, interner Netzwerke und sonstiger Policies - in Form einer einzelnen unabhängigen Workstation an der vollkommen risikofrei gefummelt werden können soll. Dazu ziehen wir einmal auszugsweise live-Daten aus den Produktivsystemen ab und speichern die dadrauf lokal. Dann ist's auch völlig Wurscht, wenn da ein Unwissender lokal im Testlabor irgendwas kaputt macht.

Wir haben uns zunächst für den physischen Weg und gegen eine virtuelle Lösung entschieden, da wir zum einen ansonsten nirgends Grakas als Beschleuniger nutzen (können), virtuelle Lösungen Admin-Kompetenzen und -Zeit benötigen, die wir so auch (noch) nicht (übrig) haben und die Graka-Hardware dafür (Quadro-, Grid- oder Tesla-Karten) um ein Vielfaches teurer sind. Sollten wir sowas später brauchen, lohnt auch eher eine Rack- oder andere Fertiglösung. Ist also eine Abwägung gewesen zwischen Kosten, Flexibilität, ease of use und erstmal genug "Bumms" für erste Schritte/Erfahrungen.

Ich werde hier dann vielleicht mal ein kleines Blog draus machen - und wenn auch keiner mitliest hab ich wenigstens eine kleine Pseudo-Doku für mich selbst. :d

Sobald die Kiste da ist, gibt's auch gerne ein paar Bildchen. ;)

Der Software-Teil mit HowTo oder so wird dann wahrscheinlich eher zäher und eher in kleinen Häppchen, da wir quasi bei Null anfangen. Umgekehrt geht das ja vielen so, so dass es ja vielleicht mittelfristig dem ein oder anderen hier beim Einstieg hilft... :)

Am schwierigsten ist für mich momentan noch, die Daten - also konkret unsere und nicht irgendwelche Fertig-sets - für Trainingszwecke vernünftig aufzubereiten.

Anmerkungen, konstruktive Tipps und Tricks sind immer willkommen - Fragen natürlich auch (wobei ich die soweit Software-bezogen im Zweifel eben noch nicht mit eigenen Praxis-Erfahrungen beantworten kann).

Freu mich jedenfalls schon darauf, die Kiste zum Glühen zu bringen! :d
 
Hast du schon konkrete Einsatz-Gebiete angedacht?

Deep-Learning besteht ja immer aus einer möglichst grossen Anzahl an Daten.

Und mit Software wie Matlab (ich gehe davon aus du kennst es) kann man sicher schon einiges machen.
Deep Learning: Die 7 besten Wege für den Einstieg mit MATLAB - Google AdWords - MATLAB Simulink

Leider ist das Gebiet auch sehr kompliziert.

Etwas für mich selber interessantes wäre z.B eine gute Handschrifterkennung oder durch Deep-Learning verbesserte OCR Anwendungen.
Ein anderes, sehr interessantes Gebiet wären intelligente Ranking-Algorithmen und Filter.

Wir streifen diese Thematik gerade in unseren Vorlesungen.
Google nutzt eine Art von "Deep Learning" für ihr eigenes Page-Ranking. Wobei Deep-Learning dort schon etwas übertrieben ausgedrückt wäre (Stickwort Eigenwerte und Matrizen).

Vermutlich kennst du diese deeplearning4j Tutorials auch schon:
Deep Learning Tutorials - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM
 
Sorry doppelpost...
 
Zuletzt bearbeitet:
Ja die Tutorials kenne ich (grundsätzlich). Mein Hauptproblem zurzeit: die Daten. Ich will eigentlich mit unseren eigenen Daten trainieren, denn da stecken ja auch die relevanten Infos drin.

Problem 1: sind Textdaten.

Problem 2: unstrukturiert (naheliegend)

Ich muss es also irgendwie hinkriegen, wie ich die Daten - je nach Toolkit/Framework - aufbereite/umwandle, damit ich damit überhaupt sinnvoll spielen bzw. irgendwas trainieren kann.

Da fehlt mir noch der erste Ansatz.
 
So, auf der Hardwareseite gibt's Neues: Die Box ist da. Burn-in Test "does it play crysis" (o.ä.) kommt am Wochenende, daher auch erstmal nur Win10 drauf. ;)

In Sachen Hardware fehlt noch ein 2,5" Adapter für den 5,25" Schacht für den schnellen Boot-SSD-Wechsel (bisher hängt die Boot SSD ziemlich sinnfrei am Raid-Controller, die kommt an einen der 10 onboard SATA-Anschlüsse).

Ersteindruck: viel zu laut für 'ne Workstation. Damit kann man sich nicht dauerhaft in einem Raum aufhalten.

Großes Paket:
attachment.php


Aufgeräumter Inhalt:
attachment.php


Erstmal nur 8x16GB RAM:
attachment.php


Supermicro's Variante der x540-T2 (AOC-STG-i2T) +2x 960 Pro im Delock-Adapter ;)
attachment.php


SSD-Perfomance (ungetweaktes NTFS-"Raid0"-Stripe):
attachment.php


Auszug Gerätemanager:
attachment.php


Wie gesagt, Erfahrungen zu DL-Software liefere ich nach, sobald ich damit wirklich mal loslegen und was berichten kann.
 

Anhänge

  • IMG_2610.jpg
    IMG_2610.jpg
    122,7 KB · Aufrufe: 387
  • IMG_2611.jpg
    IMG_2611.jpg
    208,7 KB · Aufrufe: 398
  • IMG_2613.jpg
    IMG_2613.jpg
    199,1 KB · Aufrufe: 370
  • IMG_2614.jpg
    IMG_2614.jpg
    187,9 KB · Aufrufe: 387
  • Disk.jpg
    Disk.jpg
    33,1 KB · Aufrufe: 380
  • Devices.jpg
    Devices.jpg
    124,5 KB · Aufrufe: 399
Zuletzt bearbeitet:
Ok, ich wollte ja Ubuntu als OS benutzen.

Ich mach' hier wieder so ein "Laien-Blog" draus, primär für mich selbst zur Doku. Wenn es also bessere Wege zum jeweiligen Ziel gibt... feel free hier reinzugrätschen. Sorry, wenn das hier wirklich Linux für Doofe ist, aber mir geht's in erster Linie darum, hier mal eine Testbox aufzusetzen - vielleicht will das ja auch mal noch jemand anders lokal machen und ein gutes Tutorial dafür habe ich noch nicht gefunden.

Ubuntu 16.04 hab ich jetzt erstmal in der Desktop-Version installed. Ist wohl so einfach bequemer, später die verschiedenen Tasks durchzuführen. Den aktuellen NVIDIA Linux-Treiber muss man aber am besten trotzdem manuell von der NVIDIA-Seite besorgen.

Nun muss man für die Treiber-Installation in einen "Runlevel" (bin irgendwie noch in der alten Welt) ohne grafisches UI wechseln. Bevor man sich größeren Ärger einhandelt weil man sich irgendwas dabei zerschießt, ist die allgemeine Empfehlung zunächst einen nicht-grafischen Runlevel als default zu setzen:

Code:
sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

Einen reboot braucht's dann noch nicht, ich wechsel manuell in den nicht-grafischen Modus mit:
Code:
sudo systemctl isolate multi-user.target
Mit alt+ctrl+F1 komme ich dann auch zum Login.

Den Treiber installiert man momentan einfach mit:
Code:
sudo ./NVIDIA-Linux-x86_64-381.09

Dann meckert der Installer erstmal, weil irgendein Detection-Script für meine Distribution offenbar nicht klappt. Was soll ich machen - ich wähle OK. Dann meckert er nochmal, dass er kein Verzeichnis für 32-bit files findet. Mir egal, also nochmal OK. Dann fragt er, ob ich automatisch meine X Konfiguration anpassen lassen will - ich wähle "yes" (was angeblich dann auch klappt), hoffe aufs Beste und schicke die Kiste vorsichtshalber jetzt mal in den Reboot...

...und starre etwas länger auf einen Ubuntu-lila Bildschirm, der erstmal völlig leer bleibt und dann nur ominös meine Disk anzeigt (/dev/sda5: clean, ...). Macht nix, schauen wir mal mit alt+ctrl+F1 was sich dort so tut und es erwartet mich wie gewünscht ein Login. Sieht ja mal ganz gut aus.

Der Wechsel in den grafischen modus mit "systemctl isolate graphical.target" geht auch, allerdings lässt er mich nicht einloggen. Komisch.

Na, so richtig verkackt ist die box jedenfalls nicht (alt+ctrl+F1 gibt mir zuverlässig den Login), also gehe ich mit der default Boot-option wieder in den grafischen Modus zurück:
Code:
sudo systemctl enable graphical.target
sudo systemctl set-default graphical.target

So. Offenbar gibt's da ein Problemchen mit Ubuntu und NVidia (sog. Login-loop). Lösungsvorschläge habe ich auch schon im Netz gefunden, weiter ausprobiert wird aber erst morgen. Zu spät gesehen, dass die aktuellen Treiber wohl schon im repository ppa:graphics-drivers/ppa drin sind. Dumm gelaufen, ist (zu) spät geworden.
 
Zuletzt bearbeitet:
Ick froi mir.

Gut, dass ich heute zunächst keinen Bock hatte, mich wieder mit Ubuntu zu beschäftigen. Derzeit hab' ich Dual-Boot mit Windows laufen und auch unter Windows gibt's gelbe Ausrufezeichen bei den beiden Titans. Dachte mir messerscharf, vielleicht liegt's ja gar nicht am Treiber.

Etwas längere Ursachenforschung brachte das Ergebnis: Wenn man im Bios "Onboard" als primäres Grafik-Device wählt, will der Treiber nicht - weder unter Windows, noch unter Linux. Stellt man das auf PCIe (bei Supermicro: "offboard"), funzt es - unter Windows und unter Ubuntu!

Yay. Dafür kann ich jetzt nicht mehr über iKVM auf den Desktop...
 
Mal wieder ein Update: ich bin immer noch dabei, die Box für ihren eigentlichen Einsatzzweck vorzubereiten. Aktuell noch unter Windows 10, darauf soll man ja auch so einiges laufen lassen können.

Nicht ganz trivial ist dabei schon einmal die Installation und Konfiguration der Nvidia Treiber / CUDA Geschichte. Der in der aktuellen CUDA-Version (8.0) enthaltene Treiber erkennt leider noch nicht die TitanXp. Also muss man den aktuellen Treiber Geforce-Treiber installieren. Der installiert sich aber von Haus aus als DISPLAY Driver (WDDM). Das wollen wir aber grds. nicht, denn die Titans sollen ja rechnen und keine bunten Bilder malen.

Man müsste dazu eigentlich den Treiber in den TCC Mode setzen können (TCC = Tesla Compute Cluster - bevor jetzt irgendwelche Schlauberger anmerken, dass sei ja auch keine Tesla Karte: ja richtig. Aber mit den Titans soll es eben eigentlich auch gehen im Gegensatz zu den Geforce 10xx - da geht das definitiv nicht.). Aber soviel zur Theorie, das klappt leider auch nicht. Bin immerhin offenbar nicht der einzige mit dem Problem. Laufenlassen kann man die Toolkits grundsätzlich auch so, aber optimal ist wohl anders...

Wen's interessiert (Quelle):
2.4. Use a Suitable Driver Model
On Windows 7 and later, the operating system provides two driver models under which the NVIDIA Driver may operate:

The WDDM driver model is used for display devices.
The Tesla Compute Cluster (TCC) mode of the NVIDIA Driver is available for non-display devices such as NVIDIA Tesla GPUs, and the GeForce GTX Titan GPUs; it uses the Windows WDM driver model.
The TCC driver mode provides a number of advantages for CUDA applications on GPUs that support this mode. For example:

TCC eliminates the timeouts that can occur when running under WDDM due to the Windows Timeout Detection and Recovery mechanism for display devices.
TCC allows the use of CUDA with Windows Remote Desktop, which is not possible for WDDM devices.
TCC allows the use of CUDA from within processes running as Windows services, which is not possible for WDDM devices.
TCC reduces the latency of CUDA kernel launches.
TCC is enabled by default on most recent NVIDIA Tesla GPUs. To check which driver mode is in use and/or to switch driver modes, use the nvidia-smi tool that is included with the NVIDIA Driver installation (see nvidia-smi -h for details).

Note: Keep in mind that when TCC mode is enabled for a particular GPU, that GPU cannot be used as a display device.
Note: NVIDIA GeForce GPUs (excluding GeForce GTX Titan GPUs) do not support TCC mode.


Read more at: Installation Guide Windows :: CUDA Toolkit Documentation

Das genannte nvidia-smi Tool ist natürlich auch nicht in einem über PATH bekannten Verzeichnis, sondern sehr hilfreich in c:\Program Files\NVIDIA Corporation\NVSMI ... und dann ganz zu schweigen, dass gefühlte 90% der in der Docu genannten Optionen unter Windows schlicht gar nicht zur Verfügung stehen (unter Linux aber schon) und das was es doch gibt (nvidia-smi -dm 1) nicht wie gewünscht funktioniert. Herrlich.

Schön ist dann auch, dass die jeweiligen Installation Guides auch an andere Stelle natürlich nicht (mehr) stimmen. Um nicht in lustige Probleme zu laufen, hatte ich eigentlich vorsorglich bei der Installation schon fast nichts geändert (insbesondere nicht Installationsverzeichnisse usw.). Aber wenn man schon die Tools zur Verifikation ob alles läuft nicht wo erwartet findet, wird's hässlich. Um also z.B. mit dem DeviceQuery-Tool herauszufinden, ob CUDA überhaupt meine Grafikkarten findet, muss man nicht in <Installpath>...\CUDA Samples\v8.0\bin\win64\Release schauen, sondern in <Installpath>...CUDA\v8.0\extras\demo_suite

Na immerhin das klappt:
attachment.php


Ich switch' jetzt erstmal wieder zu linux 'rüber...
 

Anhänge

  • deviceQuery.jpg
    deviceQuery.jpg
    170,2 KB · Aufrufe: 324
Zuletzt bearbeitet:
Und weiter geht's.

Wieder eine Erfahrung reicher: man sollte NICHT das in Ubuntu enthaltene nvidia-cuda-toolkit über apt-get installieren. Ist zwar verlockend weil simpel, aber dort gibt's nur die v7.5 und wir wollen v8.0 und außerdem funktioniert das nicht richtig (setzt auch diverse Variablen verkehrt).

Also das richtige Vorgehen:

HOWTO install CUDA8 + CUDNN6 mit NVIDIA TitanXp auf Ubuntu 16.04.02

1. TitanXP Linux-Treiber herunterladen und installieren (sudo ./NVIDIA-Linux-x86_64-381.09.run)

2. Cuda manuell bei NVIDIA (Developer Login erforderlich - bekommt man aber einfach) herunterladen, mit sudo ./cuda_8.0.61_375.26_linux.run ausführen und vor allem bei der Frage, ob auch der Treiber installiert werden soll mit no antworten.

3. CuDNN Library bei NVIDIA (auch Developer Login erforderlich) herunterladen (3 Dateien: cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb), cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb und cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)).

Hinweis: NICHT einfach das .deb installieren! Danach ging bei mir erstmal nix mehr in Sachen GUI. Macht nix, ich benutz das eh nur um zig terms aufzumachen... wenn Ihr also ein Ubuntu-Desktop - wie ich - installiert habt, empfiehlt sich eh die Aktivierung des SSH-Servers (sudo apt-get install openssh-server) GANZ AM ANFANG, bevor irgendwas so richtig in die Grütze geht...

Also hab ich beim 2. Versuch lieber eins nach dem anderen die deb-files entpackt und dann die Dateien manuell an den angeblich richtigen Platz kopiert:
Code:
dpkg-deb -x libcudnn6_6.0.21-1+cuda8.0_amd64.deb /tmp/extract/
cp /tmp/extract/usr/lib/x86_64-linux-gnu/libcudnn* /usr/local/cuda-8.0/lib64
rm /tmp/extract -R
dpkg-deb -x libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb /tmp/extract
sudo cp /tmp/extract/usr/include/x86_64-linux-gnu/cudnn_v6.h /usr/local/cuda-8.0/include/
sudo cp /tmp/extract/usr/lib/x86_64-linux-gnu/libcudnn_static_v6.a /usr/local/cuda-8.0/lib64/
rm /tmp/extract -R
dpkg-deb -x libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb /tmp/extract
sudo mv cudnn_samples_v6 /usr/local/cuda-8.0/src/
(Bei der Doku war ich mutiger in Sachen verschieben...)

Dann muss man noch zwei Dateien quasi umbenennen, verlinken oder kopieren (habe mich vorsichtshalber für kopieren entschieden):
sudo cp /usr/local/cuda-8.0/include/cudnn_v6.h /usr/local/cuda-8.0/include/cudnn.h
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.6 /usr/local/cuda-8.0/lib64/libcudnn.so

Soweit so gut - ob's wirklich klappt, sehe ich leider erst, wenn ich das erste Framework (hier mal zu Testzwecken caffe) installiert hab...

Und weiter geht's, Caffe-Installation anhand dieser Anleitung:

Ich musste vorher noch ein kurzes "sudo apt-get install git" einschieben... :rolleyes:

Dann habe ich in das caffe/build Verzeichnis gewechselt, dort "cmake .." aufgerufen und mich über folgende Rückmeldung gefreut:
Code:
-- Found cuDNN: ver. 6.0.21 found (include: /usr/local/cuda/include, library: /usr/local/cuda/lib64/libcudnn.so)
-- Added CUDA NVCC flags for: sm_61

und

Code:
-- NVIDIA CUDA:
--   Target GPU(s)     :   Auto
--   GPU arch(s)       :   sm_61
--   cuDNN             :   Yes (ver. 6.0.21)

Sieht so aus, als wäre die Box soweit und bereit für "mehr"...
 
Zuletzt bearbeitet:
...mit freundlicher Unterstützung von convnet-benchmarks/install.sh at master · soumith/convnet-benchmarks · GitHub - Caffe lookin' gooooood:

attachment.php


(Ich hab' extra CuDNN nicht wie im Link oben angegeben deaktiviert, da ich mal sehen wollte, ob die GPUs nach meinen ganzen Spärenzchen auch wirklich genutzt werden. Wenn man nebenher in einer anderen Shell "nvidia-smi dmon" laufen lässt, kann man das nämlich erkennen. Funktionierte tatsächlich und die Last auf einer GPU war ganz ordentlich.)
 

Anhänge

  • caffe_test.jpg
    caffe_test.jpg
    59,7 KB · Aufrufe: 313
Zuletzt bearbeitet:
Kurzer Statusbericht zum Thema Win10, TitanXp und TCC-Mode: habe ein paar Gleichgesinnte in den NVIDIA Developer Foren gefunden, Bug Report ist submitted und ein Nvidia Employee selbst hat sich auch inzwischen schon zu Wort gemeldet.
 
Zuletzt bearbeitet:
Anleitung für Ubuntu-Server (einmal alles vollständig mit einer nackten Kiste), also quasi das HowTo von oben nur mit deutlich mehr Details (sollte sich mit copy/paste nachmachen lassen):

Standard Ubuntu 16.04 Server ISO genommen und installiert (einziges "besondere" Setting: OpenSSH-Server ausgewählt). Bietet sich an, dass man das System nach der Installation auf den aktuellen Stand bringt:
Code:
$ sudo apt-get update
$ sudo apt-get upgrade

Nach der Installation hab ich zusätzlich erst einmal auf den aktuellen Kernel upgedated, da der alte Kernel (4.4) den Treiber für den ASMEDIA Grafik-Chip nicht drin hatte.

Code:
sudo apt install --install-recommends linux-image-generic-hwe-16.04
sudo apt install linux-headers-generic-hwe-16.04

Dann also den NVIDIA-Treiber herunterladen. Da ich dem ppa-repository nicht traue, dass es den aktuellen Treiber hat, mach ich das lieber manuell. Da ich über meine Windows-Kiste per SSH zugreife, kann man darunter gut auf der nvidia-Seite zum jüngsten Linux-Treiber bis zum "Agree & Download" navigieren, den Link kopieren und im SSH Putty-Fenster einfügen und mit wget herunterladen (wget eintippen + rechtsklick ins Fenster).

Für Faule (wie mich) hier am Beispiel der 381.09er Treiber (aktuell am 18. Juni 2017):
Code:
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/381.09/NVIDIA-Linux-x86_64-381.09.run

Damit man den Treiber installieren kann: gcc + make installieren.
Code:
sudo apt-get install gcc
sudo apt-get install make

Dann Treiber installieren (die Fehlermeldung wg. fehlendem X und 32bit-Libraries ignorieren wir - X ist in der Tat nicht installiert). Ebenso überspringe ich das nvidia-xconfig utility (auf dem Server wird voraussichtlich eh kein X laufen und wenn dann soll X die Titans nicht zur Grafikausgabe nutzen).
Code:
sudo chmod 755 NVIDIA-Linux-x86_64-381.09.run ##keine Ahnung ob notwendig
sudo ./NVIDIA-Linux-x86_64-381.09.run

Laut nvidia-smi sieht's offenbar gut aus:
Code:
~$ nvidia-smi
Sun Jun 18 22:51:18 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 381.09                 Driver Version: 381.09                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN Xp            Off  | 0000:83:00.0     Off |                  N/A |
| 23%   40C    P0    59W / 250W |      0MiB / 12189MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  TITAN Xp            Off  | 0000:84:00.0     Off |                  N/A |
|  0%   34C    P0    57W / 250W |      0MiB / 12189MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
~$

Kommen wir zu CUDA:
Code:
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
chmod 755 cuda_8.0.61_375.26_linux-run
sudo sh cuda_8.0.61_375.26_linux-run

Achtung: Lustig, dass hier selbst die Anweisung auf der NVidia-Download-Seite verkehrt ist. Laut denen endet die Datei mit .run, in Wahrheit aber leider mit -run. Toll sowas.

Nach dem letzten Befehl oben begrüßt einen das License Agreement, das scrollen wir mit space bis ans Ende und geben dort "accept" ein. Bei der Frage, ob wir den Treiber installieren wollen sagen wir übrigens n(o)! Ansonsten habe ich alle Fragen beim default gelassen (einfach ENTER) und dann sieht das Ganze wie folgt aus:

Code:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)quit: n

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)quit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-8.0 ]: 

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)quit: y

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)quit: y

Enter CUDA Samples Location
 [ default is /home/USER ]:

Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...

Das Ergebnis sieht dann wie folgt aus:
Code:
Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so

Installing the CUDA Samples in /home/gpu ...
Copying samples to /home/gpu/NVIDIA_CUDA-8.0_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-8.0
Samples:  Installed in /home/gpu, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-8.0/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_11523.log
~$

Die fehlenden Libraries liegen wieder am fehlenden X - da wir hier aber nix mit Grafik machen wollen, hoffe ich mal, dass das für Deeplearning nicht stört.

cuDNN habe ich dann doch manuell mit der Windows-Kiste herunter geladen und ganz old-school mit einem USB-Stick auf den Server gebracht. (Irgendwie will wget nicht, selbst wenn man user und password mitgibt - da verlang NVIDIA wohl eine andere Authentifizierung. Doof.)

Exkurs USB Für Doofe wie mich: mit fdisk das USB drive finden und dann mit mount einhängen:
Code:
/$ sudo fdisk -l
##(...output gekürzt...)
Disk /dev/sdb: 28.7 GiB, 30752000000 bytes, 60062500 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x02d0df2b

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        2048 60061695 60059648 28.7G  c W95 FAT32 (LBA)


$ sudo mount /dev/sdb1 /mnt
$ cd mnt
/mnt$ ls
libcudnn6_6.0.21-1+cuda8.0_amd64.deb
libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb
libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb
System Volume Information
/mnt$ cp * ~

Und weiter geht's, ich habe wieder "manuell" installiert und die relevanten Dateien an die entsprechenden Stellen kopiert):
Code:
/mnt$ cd ~
$ dpkg-deb -x libcudnn6_6.0.21-1+cuda8.0_amd64.deb /tmp/extract/
$ dpkg-deb -x libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb /tmp/extract
$ dpkg-deb -x libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb /tmp/extract
$ sudo mv /tmp/extract/usr/lib/x86_64-linux-gnu/libcudnn* /usr/local/cuda-8.0/lib64/
$ sudo mv /tmp/extract/usr/include/x86_64-linux-gnu/cudnn_v6.h /usr/local/cuda-8.0/include/
$ sudo mv /tmp/extract/usr/src/cudnn_samples_v6 /usr/local/cuda-8.0/src/
$ sudo cp /usr/local/cuda-8.0/include/cudnn_v6.h /usr/local/cuda-8.0/include/cudnn.h
$ sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.6 /usr/local/cuda-8.0/lib64/libcudnn.so

Alle Befehle funktionieren genau so wie angegeben (habe ich parallel mit einer Neuinstallation durchgeführt). Wenn ich da jetzt nicht irgendeinen groben Bock geschossen habe, sollte es also auch laufen. Bevor ich aber mit dieser frischen Installation weiter mache, muss ich mich noch etwas in die (virtuellen) Phyton-Environments, Anaconda & Co. einlesen. Ich brauche voraussichtlich verschiedene Varianten von Phyton, da die verschiedenen Deeplearning-Frameworks leider unterschiedliche Anforderungen haben (Phyton 2 bzw. 3 je nach Framework).

Wer aber dieser Anleitung folgt (und eine NVidia-Graka hat), hat eine funktionierende "Grundumgebung" für erste Gehversuche.
 
Zuletzt bearbeitet:
Puh. Vielleicht sollte jemand den Fred doch lieber in das "Home-Server-Forum" verschieben - das ist alles doch eher laienhaft und meine Lernkurve steil. Gibt so viel, was ich gerade im Zusammenhang mit meinen Gehversuchen ausprobiere.

Zum Beispiel kann man offenbar ganze Docker-Container und sogar ein NVidia-Plugin dafür herunterladen, mit dem man dann verschiedene Sachen quasi risikolos(er) ausprobieren kann.

Probier' ich das also auch einmal. Ausgangsbasis ist die Box von oben (also schon mit Cuda8 + cuDNN6 installiert).

Habe mich für die Docker CE Edition entschieden - zum einen weil ich definitiv noch sehr weit von "Enterprise-grade Deployment" entfernt bin, zum anderen weil man da wohl offener für Frickeleien ist... und Deeplearning ist noch viel Frickelei... jedenfalls bei mir. :d

Hier ist die Docker-Installations-Anleitung für Ubuntu. Lief bei mir so wie in der Anleitung beschrieben problemlos durch (habe Docker ohne spezifische Versionsangabe installiert).

Da der Docker "Hello World" Test funktionierte, habe ich Im Anschluss noch flugs gemäß dieser Anleitung die zwei Befehle für das nvidia-docker Tool speziell für Ubuntu ausgeführt:

Code:
$ wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
$ sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

...nachdem ich den Test für das nvidia-smi Tool ausführen wollte, lädt er jetzt gerade erstmal einen Haufen Zeug herunter... (Hinweis: der Test funzte bei mir nur, wenn ich ihn mit sudo aufrief).

Immerhin ging der nvidia-smi Test dann auch durch.

Jetzt steh ich Ochs' aber vor dem nächsten Berg. Eigentlich würde ich jetzt gerne den Container mit cuda-8 eben noch um cuDNN6 erweitern und dann am liebsten so mal "zwischenspeichern", um dann zum Beispiel davon Kopien anzulegen und dann in den Kopien weitere Komponenten (Python Version X) und eben Framework ABC darin "hinzu" zu installieren... Aber noch keinen blassen Schimmer wie das geht und ob zum Beispiel der Weg über das nvidia-docker-plugin und entsprechende Container mir das sogar ersparen...

So viel zu lernen, so wenig Zeit....
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh