Du möchtest einen PC speziell für Machine-Learning-Anwendungen zusammenbasteln, aber dabei nicht die exorbitanten Preise für spezialisierte Hardware auf den Tisch legen? Mit ein bisschen Glück hast du einen guten PC für Anwendungsfälle dieser Art schon zu Hause stehen – denn hinsichtlich ihrer Hardware sind sie den Gaming-PCs nicht unähnlich.

Wofür brauche ich einen Machine-Learning-PC überhaupt?

Grob gesagt, fütterst du deinen PC mit sehr großen Datensätzen und trainierst Modelle, um in Zukunft bestimmte Aufgaben besser bewältigen zu können. Der Computer entwickelt dadurch selbstständig Algorithmen, die auf den Daten basieren, die du ihm verabreicht hast. Da wir gerade beim Thema Gaming-PCs waren, hilft ein Beispiel, um die Sache zu verstehen: Denkbar sind etwa Lösungen, um die Bildqualität in Spielen deutlich zu verbessern, ohne dass dadurch die Leistung beeinträchtigt wird. NVIDIAs hauseigenes DLSS (Deep Learning Super Sampling) ist ein Beispiel dieser Methode. Zum anderen sind diese Super-PCs auch bei automatisiertem Machine Learning (AutoML) extrem sinnvoll, da sehr viele Experimente durchgeführt werden. Diese können parallelisiert durchgeführt werden, um die Laufzeiten der Programme deutlich zu reduzieren.

Ein Teilgebiet dieser Lösungen sind Aufgaben wie Feature Engineering: Diese sehr CPU-intensive Aufgabe optimiert die Performance bestehender Algorithmen. Mit anderen Worten: Um alle Felder abzudecken, brauchst du viel CPU- und GPU-Leistung in einem Paket.

Der ideale PC für Machine Learning: kaufen oder Eigenbau?

Die Hersteller hochspezialisierter Maschinen für Machine Learning / Deep Learning lassen sich ihre Arbeit natürlich fürstlich bezahlen. Dabei kochen sie am Ende aber auch nur mit Wasser. Das soll heißen: Sie setzen nicht auf Zauberhardware aus einem geheimen Labor, sondern verbauen RAM, GPU, CPU & Co. genauso, wie du es auch machen würdest.

Eventuell kommen bei gekauften PCs dieser Art besonders zertifizierte Komponenten zum Einsatz (Enterprise-HDDs mit besonders langen Garantielaufzeiten, ECC-RAM und ähnliche Bauteile), aber der Grundaufbau bleibt derselbe.

Das heißt: Die Zeichen stehen gut, dass du dir für wenig Geld einen vollkommen ausreichenden PC für die unterschiedlichsten Machine-Learning-Modelle zusammenbauen kannst. Schauen wir uns dazu die wichtigen Komponenten in der Übersicht an:

RAM für ML Computer

Hier gilt: Viel hilft viel. Je mehr RAM, desto besser. Da Applikationen dieser Art nie genug Arbeitsspeicher haben können, solltest du nicht hier kleinlich sein. Du wirst Unmengen von Daten zwischen CPU und RAM und zur GPU schaufeln, wenn du deine Algorithmen lernen lassen möchtest. Die meisten Datensätze sollten dabei unkomprimiert sein, um Zeit zu sparen. Bei 64 GB DDR4-RAM geht es hier los, mehr kann nicht schaden.

CPU Prozessor für ML Computer

Du hast die Wahl zwischen Intel und AMD, wobei AMD hier aufgrund der aktuellen CPU-Landschaft klar die Nase vorn hat. Threadripper-CPUs vereinen dermaßen viele Kerne (und Threads) in einem Package, dass Intel in diesem Segment aktuell nichts entgegenzusetzen hat. Kleines Rechenbeispiel: Für einen Threadripper 2920X mit 12 Kernen und 24 Threads bezahlst du etwas weniger als 400 Euro. Bei Intel bekommst du für denselben Preis 8 Kerne und 16 Threads. Zwar ist dort die Single-Core-Leistung höher, diese spielt bei Machine-Learning-Anwendungen aber eine untergeordnete Rolle. Möchtest du genau jetzt zugreifen, führt an AMD somit kein Weg vorbei.

GPU Grafikkarte für ML Computer

Die nächste große Baustelle ist die GPU: Viel VRAM und eine hohe Geschwindigkeit sind hier wichtig. Bedenken musst du, dass VRAM anders als RAM funktioniert: Hast du nicht genügend VRAM, aber dein Machine-Learning-Modell verlangt danach, wird es einfach nicht starten. Eine aktuelle GeForce Titan RTX mit 24 GB VRAM wird dieses Problem niemals haben, allerdings ist sie auch entsprechend teuer (knapp 3.000 Euro werden fällig). Ein besseres Preis-Leistungs-Verhältnis findest du in allen GPUs ab 8 GB VRAM – also etwa eine RTX 2080 Ti oder auch die ältere Generation ab GTX 1080.

Netzteil für Sicherheit

Laufen die meisten Komponenten permanent unter hoher Last, brauchst du auch eine Stromversorgung, die dieser Auslastung standhält. Spare daher nicht am falschen Ende und investiere in ein Netzteil mit sowohl einem hohem Effizienzgrad als auch genügend Leistung. Spielst du mit dem Gedanken, mehrere GPUs zu verbauen, steigt der Stromverbrauch rasant an. Eine pauschale Empfehlung können wir natürlich nicht geben, da wir nicht wissen, was du am Ende in deinen PC baust. Im Zweifelsfall gilt aber: lieber ein über- als unterdimensioniertes Netzteil kaufen. Außerdem gilt: Finger weg von No-Name-Produkten!

Wasserkühlung zur Leistungssteigerung für Machine Learning

Abwärme muss schnell abtransportiert werden – und von dieser Wärme wird dein PC durch den hohen Stromverbrauch eine Menge produzieren. Wasserkühlungen sind hier eine gute Investition, da Wasser die Wärme schneller leitet als Luft und obendrein auch niedrigere Temperaturen garantiert werden. Auch unter hoher Last müssen Komponenten dann nicht throtteln oder sich abschalten. Je besser die Kühlleistung Deines PC’s desto performanter sind Deine CPU- und GPU Chips. In etwa 30%-45% mehr Leistung lässt sich dadurch erzielen. Außerdem läuft das System dann leiser als mit einer reinen Luftkühlung, was je nach Aufstellungsort für deinen PC wichtig sein kann.

Einen Überblick über die wichtigsten Komponenten und worauf es ankommt, hast du jetzt – aber spart man damit wirklich so viel Geld?

Der Vergleich zu NVIDIAs DGX Station

Mit der Vorstellung der RTX 2000-Serie hat NVIDIA auch die DGX Station vorgestellt. Dabei handelt es sich um eine Workstation, die für die AI-Entwicklung konzipiert wurde, aber generell überall dort zum Einsatz kommen kann, wo Data Science im großen Stil betrieben wird. Ausgestattet ist das Gerät mit 4 Tesla V100-GPUs (einer auf der Volta-Architektur basierenden GPU mit 16 GB VRAM), einer CPU mit 20 Kernen und 128 GB RAM. Für diese Hardware verlangt NVIDIA stolze 49.000 US-Dollar.

An der Performance der DGX Station gibt es nichts auszusetzen: Machine-Learning-Modelle, die trainiert werden müssen, schaffen die Arbeit ungefähr 50 Mal schneller als auf einer einzelnen CPU. Allerdings kannst du dir eine recht ähnliche Leistung schon für den Bruchteil eines Preises ins Haus holen – und wenn du einen Gaming-PC dein Eigen nennst, stehen die Chancen auch gut, dass du sowieso schon eine leistungsstarke Grafikkarte, viel RAM und eine schnelle CPU besitzt.

Auch Angebote aus der Cloud halten dem Vergleich nicht stand: Mietest du etwa über Amazon (in Form von AWS) oder über Microsoft Azure CPU-/GPU-Rechenkapazitäten und nutzt diese für Machine Learning, sparst du ungefähr 90 % der Kosten bei der Nutzung einer einzigen GPU ein. Was bei AWS gute 3 Euro pro Stunde kostet, schlägt zu Hause mit nur 20 Cent zu Buche. Der Vorteil wächst weiter in deine Richtung, wenn du mehr GPUs zuschaltest.

Fazit: Eigenbau ist signifikant günstiger – und fast genauso gut

Spielst du mit dem Gedanken, mit Machine Learning zu experimentieren, kannst du für wenige Tausend Euro eine vergleichbare Leistung erzielen wie die großen Cloud-Lösungen oder spezialisierte Hardware. Für Privatkunden ist die Investition in diese professionellen Lösungen damit praktisch vollkommen unattraktiv – und gewaltige Unterschiede zu Gaming-PCs gibt es, mit Ausnahme der gewaltigen RAM-Bestückung, kaum.

[cp_modal display=“inline“ id=“cp_id_e7a0b“][/cp_modal]

Jeder Data Scientist kennt das Problem: Man hat einige Machine Learning Modelle auf einer Stichprobe der Daten entwickelt und möchte die Trainingspipeline nun auf dem Gesamtdatenbestand anwenden. Was bis eben noch ein paar Minuten gedauert hat, dauert auf einmal Stunden oder gar Tage.

„Ich brauch mehr Power“ – Schnell wird der Weckruf nach besserer Hardware und höherer Leistung laut. Doch was genau benötige ich eigentlich um meine Modelle zu verschnellern und die Laufzeit des Machine Learning Tainings zu minimieren?

In diesem Artikel wird Dir aufgezeigt wo die Unterschiede zwischen GPU vs. CPU liegen und führt einen Performance-Vergleich zwischen GPU und CPU basierter Ausführung eines XGBoost Algorithmus durch.

GPU vs CPU – Das Bierzelt Beispiel

Du sitzt in einem Bierzelt und möchtest eine Maß Bier bestellen. Du hast die Auswahl zwischen zwei Typen von Kellnern.

Typ Flitzer (CPU): Dieser holt immer genau ein Bier von der Theke und bringt die Maß dem Gast. Dann geht er wieder zurück zur Theke und holt das nächste Bier.

Typ Schlepper (GPU): Diese Kellnerin nimmt sich gleich fünf Maß in jede Hand von der Theke und bringt sie den Gästen. Sobald sie am Tisch ankommt kann sie gleich mehreren Gästen ihr Bier austeilen.

Wenn Du alleine das Bierzelt besuchst ist der Typ Flitzer deine präferierte Wahl. Du bestellst Dein Bier und kriegst es auch recht schnell an Deinen Tisch gebracht. Solltest Du das Bierzelt in einer größeren Gruppe in das Bierzelt gehen, stellt der Typ Schlepper als die geeignete Wahl heraus. Es dauert zwar länger bis die Gesamtbestellung geliefert wird, aber dann werden bis zu 10 Bier parallel verteilt. Und ihr könnt alle gemeinsam Anstoßen. Vereinfacht dargestellt kann man sich den Typ Flitzer als CPU bezeichnen und den Typ Schlepper als GPU.

[cp_modal display=“inline“ id=“cp_id_e7a0b“][/cp_modal]

Diese Eigenschaften haben CPU und GPU.

CPUs (Central Processing Units) haben nur wenige Kerne, die ihre Prozesse nacheinander mit wenigen Threads gleichzeitig ausführen. Die CPU ist der Hauptprozessor eines PC kann optimierte und lange komplexe Aufgaben ausführen und sind latenzoptimiert.

GPUs (Graphics Processing Unit) weisen eine große Anzahl einfacher Kerne auf, die paralleles Rechnen durch Tausende von Threads gleichzeitig ermöglichen. Die GPU ist die Grafikkarte eines PC kann einfache Aufgaben parallelisiert durchführen und sind bandbreitenoptimiert. Es können auch mehrere GPUs gleichzeitig in Betrieb genommen werden.

Die Rolle von GPU bei künstlicher Intelligenz

In einer Zeit, in der künstliche Intelligenz und automatisiertem Machine Learning (AutoML) immer mehr Anwendung findet, ändert sich auch der Stellenwert von CPU und GPU. Manuell erzeugte Machine Learning Modelle rücken immer mehr in den Hintergrund und dem Thema experimentellen Machine Learning kommt eine zunehmende Bedeutung zu. Hierbei werden hunderte Modelle automatisiert trainiert und nach Ende der Experimentreihe das Beste Modell ausgewählt. Die GPU gilt als Herzstück des AutoML, einem wichtigen Teilgebiet der künstlichen Intelligenz.

CUDA: Was ist das?

Cuda steht für „Compute Unified Device Architecture“ und ist eine Technologie und Programmierschnittstelle die vom Grafikkarten-Hersteller NVidia entwickelt wurde. Es beschleunigt die Durchführung von Programmen in dem gewisse Programmteile von einer oder mehreren GPUs gelichzeitig berechnet werden. Mehr und mehr Projekte wie zum Beispiel rapids.ai beschäftigen sich mit Entwicklung von Anwendungen von GPU Data Science. Um das nachfolgende Code-Bespiel durchführen zu können, musst Du vorab die passende Cuda-Version installieren.

XGBoost- Du hast die Wahl: CPU oder GPU

Beim Trainieren von Machine-Learning oder anderen Deep Learning Modellen gibt es verschiedene Möglichkeiten wo der Code Deines Programms ausgeführt wird. Entweder wird der Quell-Code auf dem CPU-Chip ausgeführt, oder aber wird das Programm als Cuda-Code auf der GPU ausgeführt. Die Entwickler des XGboost-Packages haben ihr Paket bereits auf der Basis von CUDA entwickelt, so dass die Anwendung auf der Grafikkarte sehr einfach ist.

Praktisches Beispiel: XGBoost CPU vs. GPU

Datenbasis:

  • Higgs Datensatz 
  • Training 1 Millionen Beobachtungen mit 30 Features
  • Test 500.000 Beobachtungen mit 30 Features

Machine Learning Modell:

  • XGBoost in Python
  • Binäre Zielvariable (Objective: binary:logitraw)
  • 500 Runden für das Boosting

GPU Ausführung

  • Verwendete Grafikkarte: Nvidia RTX 2080ti
  • Die Ausführung auf der GPU wird festgelegt durch „tree_method“=gpu_exact..
  • Zur Auswahl stehen entweder gpu_hist oder gpu_exact.
  • Die Zeit der Ausführung wird in der Variablen gpu_time gemessen.

CPU Ausführung

  • Verwendete Prozessor: Intel (R) i9-9900 mit 8 physischen und 16 virtuellen Kernen
  • Die Ausführung auf der CPU wird festgelegt durch „tree_method“=hist.
  • Die Ausführung auf der CPU wird ebenfalls parallelisiert (über n_jobs=16) so dass alle Threads voll ausgelastet sind und wir die Ergebnisse nicht mit einer Single-Thread Ausführung vergleichen.
  • Die Zeit der Ausführung wird in der Variablen cpu_time gemessen.

Performance Vergleich: XGBoost CPU vs. GPU

GPU: Nvidia RTX 2080tiCPU: Intel (R) i9-9000
Laufzeit: 26.53 Sekunden Laufzeit: 145.68 Sekunden
  • Die Durchführung des Trainings mit GPU war um den Faktor 5,4 schneller, als auf der CPU. Das entspricht einer Reduktion des Trainings von knapp 2,5 Minuten auf unter eine halbe Minute.
  • Bei dem verwendeten CPU handelt es sich ebenfalls um einen leistungsstarken Intel-Prozessor der neunten Generation, der ebenfalls parallelisiert ausgeführt wurde.
  • Beim Einsatz mehrerer Grafikkarten oder einem Benchmark-Vergleich zu einem schwächeren CPU würde der Faktor sogar auf über 20 ansteigen.
  • Die Ergebnisse und das resultierende XGBoost-Modell ist inhaltlich identisch und zu 99,99% deckungsgleich.
Laufzeitvergleich XGBoost 500 Runden, GPU vs VPU

Fazit und Ausblick von AUTOML

Durch die Ausführung von Machine-Learning Anwendungen auf GPU statt CPU Basis, lässt sich die Performance von Machine Learning Modellen signifikant verbessern!Entweder lassen sich die Laufzeiten reduzieren, oder es können einfach mehr Modelle in gleicher Zeit berechnet werden.

GPU-basiertes Machine Learning empfiehlt sich insbesondere bei AutoML Anwendungen oder überall wo viele oder intensive Trainings durchgeführt werden müssen. In Zukunft wird es deutlich mehr Open-Source Entwicklungen im Bereich von GPU-unterstützter Data Science geben und wir können daher zusammenfassen:

GPU ist das neue CPU für maschinelles Lernen!

Philipp Göller

[cp_modal display=“inline“ id=“cp_id_f28f3″][/cp_modal]