Machine Learning Workstation

Pforschkrutze

Enthusiast
Thread Starter
Mitglied seit
24.08.2012
Beiträge
226
Hallo,

ich bin dabei ein Upgrade von meinem aktuellen System zu planen und stehe vor der Frage: AMD oder Intel.

Der PC soll hauptsächlich zum Programmieren in Python (unter Ubuntu), insbesondere im Bereich Machine Learning mit einschlägen Bibliotheken wie scikit-learn, numpy, pytorch und tensorflow genutzt werden. Dementsprechend ist eine hohe Multi-Core-Leistung wichtig, vereinzelt kommt es aber auch zu Single-Core Anwendungen, weshalb auch hier eine gewisse Leistung abrufbar sein sollte.
Verarbeitet werden tabellarische Daten (Zeitreihen über längere Zeiträume und in größerer Anzahl). Auf Basis dieser Daten werden u.a. neuronale Netzwerke trainiert. Hyperparametersuchen werden auch gemacht, welche sich aber für gewöhnlich gut parallelisieren lassen.
Zum Trainieren dieser Netze ist meiner bisherigen Erfahrung nach eine CPU einer GPU überlegen, da die Batch-Size im aktuellen Anwendungsbereich zu gering ist als das eine GPU die Berechnungen beschleunigen könnte (die GPU (Vega 64) braucht aktuell sogar länger).

Neben diesem Anwendungsbreich möchte ich gelegentlich auch spielen. In Betracht kommen da BF5 (und Nachfolger), was ja sehr gut mit vielen Kernen skaliert. Meine aktuelle GPU soll noch eine Weile behalten werden, zumindest bis die neuen Karten von AMD und Nvidia vorgestellt werden. Ich tendiere aber mittlerweile eher zu Nvidia, da mir die Bastelei mit RoCm unter Ubuntu zu aufwenig ist bzw. der Machine-Learning Support für AMD Hardware einfach noch nicht ausgereift ist, falls ich dann doch mal auf einer GPU trainiere.

OC ist aufgrund der eher wissenschaftlichen Ausrichtung nicht (mehr) gewünscht, da die Stabilität des Systems sehr wichtig ist. Es sollten keinerlei Probleme mit der Hardware bestehen, welche sich negativ auf die Berechnungen auswirken können.

Mein bisheriges System:
  • Prozessor (CPU): …
    • Intel 5820K
  • Arbeitsspeicher (RAM): …
    • 4x4 GB Corsair Dominator CL15 2666MHz
    • 2x 16GB Crucial Trident Neo CL16 (liegen hier rum)
    • 2x 16GB Crucial Ballistix Sport 3200 CL 16 (liegen hier rum)
  • Mainboard: …
    • Asus X99 Deluxe
  • Netzteil: …
    • Be Quiet Dark Power Pro P11 750W (weiter verwenden)
  • Gehäuse: …
    • Be Quiet Dark Base 700 (weiter verwenden)
  • Grafikkarte: …
    • VEGA 64 (vorerst weiter verwenden)
  • HDD / SSD: … (weiter verwenden)
    • 1x 970 EVO 500GB (System)
    • 1x 970 EVO 1TB
    • 1x 1TB Crucial MX300
  • Umfassendes WaKü-System (weiter verwenden)
    • 2x MoRA3 420
    • Laing DDC
    • CPU und GPU sind unter Wasser
Es geht hier also hauptsächlich um die Plattform an sich, d.h. AM4/ Threadripper oder Z490/ X299. Mein bisheriger Plan war auf B550 + 4900X zu setzen, was aber unter anbetracht dieses Problems: https://www.computerbase.de/2019-11/mkl-workaround-erhoeht-leistung-auf-amd-ryzen/ und dieser Entwicklung: https://www.computerbase.de/2020-07/amd-ryzen-threadripper-pro-3995wx-trx80/ nicht mehr ganz so einfach zu entscheiden ist. Es scheint mir so als sei es nach wie vor eine Bastelei AMD für Machine Learning Tasks konkurrenzfähig zu machen indem man bspw. numpy und pytorch dazu zwingt openBLAS anstelle von MKL zu verwenden..

Die Kombination aus Mainboard und CPU sollte auch wieder für mindestens 5 Jahre reichen, weshalb das Budget auch relativ großzügig bei ~1000-1500€ für CPU + Board angesetzt wäre.

Hat jemand Erfahrung mit dieser Problematik und kann mir sagen wie aufwendig es ist AMD in diesem Anwendungsszenario lauffähig zu bekommen? Wichtig wäre mir das ich mich nicht lange und ständig mit der Einrichtung der Bibliotheken beschäftigen muss.
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Zum Trainieren dieser Netze ist meiner bisherigen Erfahrung nach eine CPU einer GPU überlegen, da die Batch-Size im aktuellen Anwendungsbereich zu gering ist als das eine GPU die Berechnungen beschleunigen könnte (die GPU (Vega 64) braucht aktuell sogar länger).

da mir die Bastelei mit RoCm unter Ubuntu zu aufwenig ist bzw. der Machine-Learning Support für AMD Hardware einfach noch nicht ausgereift ist, falls ich dann doch mal auf einer GPU trainiere.
Könnte zusammenhängen.

Mein bisheriger Plan war auf B550 + 4900X zu setzen, was aber unter anbetracht dieses Problems: https://www.computerbase.de/2019-11/mkl-workaround-erhoeht-leistung-auf-amd-ryzen/ und dieser Entwicklung: https://www.computerbase.de/2020-07/amd-ryzen-threadripper-pro-3995wx-trx80/ nicht mehr ganz so einfach zu entscheiden ist. Es scheint mir so als sei es nach wie vor eine Bastelei AMD für Machine Learning Tasks konkurrenzfähig zu machen indem man bspw. numpy und pytorch dazu zwingt openBLAS anstelle von MKL zu verwenden.. (Numpy mit MKL bei AMD mit dem einfachen Fix über die Umgebungsvariable ist seit MKL 2020.1 nicht mehr möglich)
Moment, du installierst Tensorflow mit Support für AMD-GPUs aber hast ein Problem damit, die CPU-only-Version mit OpenBLAS zu kompilieren (was im Vergleich zum GPU-Support nun wirklich einfach ist)? Das ist zwar immer noch etwas langsamer, als die MKL (zumindest auf Intel), aber bei dem extremen Preisvorteil von AMD im €/(GHz*Kerne)-Verhältnis halt ich das doch für vernachlässigbar...

Meine Meinung: Für ein reines Rechensystem mit definierter Problemstellung und Taktwunsch ist imho Intel immer noch eine Überlegung wert (auch weil Epyc da leider irgendwann nicht soo viel billiger ist); für ein Allzweck-Desktopsystem auf dem Anwendungen laufen, die im wesentlichen gut bis sehr gut parallelisierbar sind, halte ich aber den (GHz*Kerne)-Preisvorteil von AMD für so hoch, dass Intel einfach rausfällt (wenn man selber bauen will und kein ECC will - Sockel 1200 mag das aber etwas verschieben).

Hat jemand Erfahrung mit dieser Problematik und kann mir sagen wie aufwendig es ist AMD in diesem Anwendungsszenario lauffähig zu bekommen? Wichtig wäre mir das ich mich nicht lange und ständig mit der Einrichtung der Bibliotheken beschäftigen muss.
Laufen tut es ja (und ich denke sooo exotisch ist es nun auch nicht)?! Ich weiß ja nicht, wie du das jetzt installierst, aber i.d.R. nimmt man ja eh conda 🤮, nix, guix oder spack, womit das sehr problemlos von der Hand geht (bis auf die Software unserer Freunde von Google und FB...)) – tensorflow aus dem git quasi "manuell" mit AMD-GPU-Support zu kompilieren hört sich da allerdings wirklich weder a) von diesen Tools unterstützt noch b) besonders lustig an.

Du kannst ja einfach mal einmal genug für einen "Benchmark" deiner Wahl mit MKL und einmal mit OpenBLAS kompilieren und es ausprobieren - ist ja alles OpenSource ;) (bis auf die MKL) und sklearn und pytorch müssten imho CPU-only auch relativ unproblematisch sein.
 
Könnte zusammenhängen.
Kann gut sein, wobei tensorflow mittlerweile relativ gut untersützt wird aber pytorch faktisch nicht.

Moment, du installierst Tensorflow mit Support für AMD-GPUs aber hast ein Problem damit, die CPU-only-Version mit OpenBLAS zu kompilieren (was im Vergleich zum GPU-Support nun wirklich einfach ist)?
Es gibt zu tensorflow + RoCm relativ viele Tutorials aber um das zum Laufen zu bekommen habe ich schon lange gebraucht. Mittlerweile kam ein Update und es läuft nicht mehr. ^^ Deswegen erwäge ich in Zukunft auch auf Nvidia zu setzen sofern GPU-Training relevant wird. Ich habe da im Allgemeinen leider sehr wenig Erfahrung und benötige da eher eine Schritt-für-Schritt-Anleitung insbesondere unter Linux.
Hast Du da Erfahrung, wenn Du meinst es wäre einfach? ^^

Laufen tut es ja (und ich denke sooo exotisch ist es nun auch nicht)?! Ich weiß ja nicht, wie du das jetzt installierst, aber i.d.R. nimmt man ja eh conda 🤮
Von conda nehme ich mittlerweile Abstand, PyCharm erweist sich für mich als um einiges angenehmer. Deshalb fallen auch einige Tutroials raus..

Du kannst ja einfach mal einmal genug für einen "Benchmark" deiner Wahl mit MKL und einmal mit OpenBLAS kompilieren und es ausprobieren - ist ja alles OpenSource ;) (bis auf die MKL) und sklearn und pytorch müssten imho CPU-only auch relativ unproblematisch sein.
Das wäre auch mein Ansatz, wenn ich das nur mal mit OpenBLAS kompilieren könnte :ROFLMAO:


Also von der Hardware erscheint es mir eigentlich am sinnvollsten auf eine AMD Plattform zu setzten. Ob das jetzt AM4 mit B550 oder TRX80 wird sei erstmal dahin gestellt. Faktisch ist X2066 EOL und bis auf einige Spezialfälle von der Leistung her unterlegen (allerdings bieten X2066 CPUs massiv mehr AVX Power als AMD/ S1200 )
Sobald GPU-Training dazu kommt ist Nvidia eher die Qual der Wahl, da die Einrichtung unter AMD umständlich und noch zu wenig ausgereift ist.
 
Hast Du da Erfahrung, wenn Du meinst es wäre einfach? ^^

Naja, ich nutze https://spack.readthedocs.io/en/latest/; damit kann man zumindest die CPU-only Varianten ganz gut installieren, bei PyTorch und Tensorflow muss man sich halt bevor man einen Custom-Compiler installiert überlegen, ob die gewünschte Compiler+Libc mit der gewünschten Version zusammenpasst (für Tensorflow 2.2 hätte ich allerdings einige funktionierende Spack-Files. Muss ich mal hinzufügen lassen)... Schau einfach mal, wieweit du kommst - mit GLIBC < 2.30 (wenn du also noch Ubunut 18.04 nutzt), solltest du relativ einfach tensorflow-cpu installieren könnne (und bei Bazel musst du evtl. manuell die java-jars runterladen....).


Von conda nehme ich mittlerweile Abstand, PyCharm erweist sich für mich als um einiges angenehmer. Deshalb fallen auch einige Tutroials raus..
Moment, das eine ist ein Paketmanager, das andere eine IDE :geek:. Wie gesagt, unter Windows mag Conda ganz ok sein, unter Linux gibt es aber mittlerweile genug andere und deutlich offenere Alternativen.

Also von der Hardware erscheint es mir eigentlich am sinnvollsten auf eine AMD Plattform zu setzten.
Ja.

Faktisch ist X2066 EOL und bis auf einige Spezialfälle von der Leistung her unterlegen (allerdings bieten X2066 CPUs massiv mehr AVX Power als AMD/ S1200 )
Sobald GPU-Training dazu kommt ist Nvidia eher die Qual der Wahl, da die Einrichtung unter AMD umständlich und noch zu wenig ausgereift ist.
Wobei AVX(512) auch so eine Sache ist.... Da ist Produksegmentierung vom allerfeinsten im Spiel (Xeon Silver haben eine Unit, Xeon Gold 2 (aber nicht alle), Bronze afaik keine....). Für die Dinge, die ich an meiner Workstation mache imho alles eher unbedeutend.
Und ja, CUDA wurde da halt gut platziert (jeder der irgendwas mit "Computation" machte, bekam irgendwann mal seine 2-3 Nvidia-Karten geschenkt) und jetzt wird jedes Jahr für 10k€ eingekauft – kannst du ja aber auch zu deiner AMD-CPU dazupacken.
 
+
+
Wobei AVX(512) auch so eine Sache ist.... Da ist Produksegmentierung vom allerfeinsten im Spiel

Die 9000er beim X299er haben soweit ich weiß zwei AVX Units aber das hilft denen im Allgemeinen trotzdem nicht viel gegen 3900X und 3950X. ^^ Ich habe in den letzten Tagen viele Eindrücke gesammelt und tendiere wie ursprüglich auch wieder zu AMD plus entsprechende GPU von Nvidia. Bei diesem Thema bin ich gerade noch am grübeln. aber das würde zumindest Pytorch und Tensorflow-Probleme vorbeugen.
Vielen Dank auf jeden Fall für die Anregungen bezühlich Spack usw. Da muss ich mich gezwungenermaßen wohl mit auseinander setzen.
 
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