GPU Stack fĂĽr Maschinelles Lernen. LĂĽfter fĂĽr Hochleistungsrechner mit Grafikkarten UnterstĂĽtzung fĂĽr kĂĽnstliche Intelligenz.

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.

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
GPU

Python Skript CPU vs GPU Cuda 

Wir schicken Dir das Python Skript zum Vergleich CPU vs. GPU per E-Mail zu.
-Unverbindlich und kostenfrei-
Python Skript anfragen
Skript anfragen
Folge uns!
onpost_follow
Tweet