GPU-gestützte Datenwissenschaft (NICHT Deep Learning) mit RAPIDS

Quellknoten: 997659

GPU-gestützte Datenwissenschaft (NICHT Deep Learning) mit RAPIDS

So nutzen Sie die Leistung Ihrer GPU für reguläre Datenwissenschaft und maschinelles Lernen, auch wenn Sie nicht viel Deep Learning betreiben.



Header image
Bild-QuellePixabay (Freies Bild)

Suchen Sie nach „GPU-gestützter Datenwissenschaft“?

 
 
Stellen Sie sich vor, Sie wären ein Datenwissenschaftler, ein Wirtschaftsanalyst oder ein akademischer Forscher in den Bereichen Physik/Wirtschaft/Neurowissenschaften …

Du machst viel Datenverarbeitung, Bereinigung, statistische Tests, Visualisierungen regelmäßig. Du bastelst auch viel lineare Modelle passende Daten und wagen Sie sich gelegentlich darauf ein RandomForest. Du stehst auch darauf Clustering große Datensätze. Kommt Ihnen das bekannt genug vor?

Aufgrund der Art der Datensätze, an denen Sie arbeiten (hauptsächlich tabellarisch und strukturiert), wagen Sie sich jedoch nicht so oft an Deep Learning. Sie würden lieber alle Hardware-Ressourcen, die Sie haben, in die Dinge stecken, die Sie täglich tun, als in ein ausgefallenes Deep-Learning-Modell auszugeben. Wieder bekannt?

Sie hören von der unglaublichen Leistung und der rasanten Rechenleistung von GPU-Systeme wie die von NVidia für alle Arten von industriellen und wissenschaftlichen Anwendungen.

Und du denkst immer wieder: „Was gibt es für mich? Wie kann ich diese leistungsstarken Halbleiterelemente in meinem spezifischen Arbeitsablauf nutzen?? "

Sie suchen nach GPU-gestützter Datenwissenschaft.

Eine Ihrer besten (und schnellsten) Möglichkeiten, diesen Ansatz zu bewerten, besteht darin, die Kombination von zu verwenden Saturnwolke + SCHNELLELassen Sie es mich im Detail erklären ...

GPUs dienen in der KI/ML-Folklore hauptsächlich dem Deep Learning

 
 
Während der Einsatz von GPUs und verteiltem Computing in akademischen und geschäftlichen Kreisen für zentrale KI/ML-Aufgaben (z. B. den Betrieb eines 1000-schichtiges tiefes neuronales Netzwerk zur Bildklassifizierung bzw Milliarden-Parameter-BERT Sprachsynthesemodell) haben sie weniger Abdeckung gefunden, wenn es um ihre Nützlichkeit für reguläre Datenwissenschafts- und Datentechnikaufgaben geht.

Dennoch, datenbezogene Aufgaben sind der wesentliche Vorläufer jedes ML-Workloads in einer KI-Pipeline und sie bilden oft einen Großteil der Zeit und des intellektuellen Aufwands von einem Datenwissenschaftler oder sogar einem ML-Ingenieur ausgegeben. Kürzlich der berühmte KI-Pionier
Andrew Ng | sprach über Übergang von einem modellzentrierten zu einem datenzentrierten Ansatz für KI Entwicklung von Werkzeugen. Dies bedeutet, dass Sie viel mehr Zeit mit den Rohdaten verbringen und diese vorverarbeiten, bevor ein tatsächlicher KI-Workload in Ihrer Pipeline ausgeführt wird.

Die wichtige Frage lautet also: Können wir die Leistung von GPU und verteiltem Computing für reguläre Datenverarbeitungsaufgaben nutzen??



Bild-Quelle: Der Autor hat eine Collage aus kostenlosen Bildern erstellt (Pixabay)

 

Während der Einsatz von GPUs und verteiltem Computing in akademischen und geschäftlichen Kreisen für zentrale KI/ML-Aufgaben ausführlich diskutiert wird, findet ihr Nutzen für reguläre Datenwissenschafts- und Datentechnikaufgaben weniger Beachtung.

Das fantastische RAPIDS-Ökosystem

 
 
Das RAPIDS-Suite von Softwarebibliotheken und APIs Ihnen – einem regulären Data Scientist (und nicht unbedingt einem Deep-Learning-Praktiker) – die Möglichkeit und Flexibilität bei der Durchführung zu geben End-to-End-Pipelines für Data Science und Analyse vollständig auf GPUs.

Dieses Open-Source-Projekt wurde von Nvidia durch die Entwicklung von Tools zur Nutzung von CUDA-Grundelementen ins Leben gerufen. Es konzentriert sich speziell auf Bereitstellung von GPU-Parallelität und Speichergeschwindigkeitsfunktionen mit hoher Bandbreite durch die datenwissenschaftsfreundliche Python-Sprache.

Allgemeine Datenaufbereitungs- und Wrangling-Aufgaben werden im RAPIDS-Ökosystem sehr geschätzt. Es verleiht auch eine beträchtliche Menge an Unterstützung für die Bereitstellung mit mehreren Knoten, mehreren GPUs und verteilter Verarbeitung. Wo immer möglich, lässt es sich in andere Bibliotheken integrieren, die es erstellen nicht mehr im Speicher (dh Datensatzgröße größer als der Arbeitsspeicher eines einzelnen Computers) Datenverarbeitung einfach und für einzelne Datenwissenschaftler zugänglich.



Bild-Quelle: Autor hat Collage erstellt

 

Die drei wichtigsten (und pythonischen) Komponenten – die für normale Datenwissenschaftler von besonderem Interesse sind – sind:

  • CuPy: Eine CUDA-basierte Array-Bibliothek, die genau wie Numpy aussieht und sich auch so anfühlt, während sie verschiedene CUDA-Bibliotheken verwendet, z. B. cuBLAS, cuDNN, cuRand, cuSolver, cuSPARSE, cuFFT und NCCL, um die darunter liegende GPU-Architektur voll auszunutzen.
  • CuDF: Dies ist eine GPU-DataFrame-Bibliothek zum Laden, Aggregieren, Zusammenführen, Filtern und Bearbeiten von Daten mit einem Pandas-ähnliche API. Dateningenieure und Datenwissenschaftler können damit ihre Aufgabenabläufe mithilfe leistungsstarker GPUs problemlos beschleunigen, ohne sich jemals mit den Grundlagen der CUDA-Programmierung vertraut zu machen.
  • CuML: Diese Bibliothek ermöglicht es Datenwissenschaftlern, Analysten und Forschern, traditionelle/klassische ML-Algorithmen und damit verbundene Verarbeitungsaufgaben auszuführen und dabei die Leistung einer GPU voll auszunutzen. Dies wird natürlich hauptsächlich bei tabellarischen Datensätzen verwendet. Denken Sie an Scikit-learn und was es mit all den Hunderten von Cuda- und Tensor-Kernen auf Ihrer GPU-Karte machen könnte! Aus diesem Grund stimmt die Python-API von cuML in den meisten Fällen mit der von Scikit-learn überein. Darüber hinaus versucht es zu bieten Unterstützung für Multi-GPU und Multi-Node-GPU by sich elegant integrieren Instrumententafel, wo immer es möglich ist, um die Vorteile einer echten verteilten Verarbeitung/Cluster-Computing zu nutzen.


Können wir die Leistungsfähigkeit von GPU und verteiltem Computing für reguläre Datenverarbeitungsaufgaben und maschinelles Lernen mit strukturierten Daten nutzen?

Unterscheidet es sich von der Verwendung von Apache Spark?

 
 
Sie fragen sich vielleicht, inwiefern sich diese GPU-gestützte Datenverarbeitung von der Verwendung von Apache Spark unterscheidet. Tatsächlich gibt es einige subtile Unterschiede, und erst seit Kurzem, mit Spark 3.0, sind GPUs eine Mainstream-Ressource für Spark-Workloads.

Beschleunigung von Apache Spark 3.0 mit GPUs und RAPIDS | NVIDIA-Entwicklerblog
 

Wir haben weder Zeit noch Raum, um die einzigartigen Unterschiede dieses GPU-gestützten Data-Science-Ansatzes im Vergleich zu Big-Data-Aufgaben zu diskutieren, die sich besonders für Apache Spark eignen. Aber stellen Sie sich diese Fragen und Sie werden wahrscheinlich den feinen Unterschied verstehen:

"Als Datenwissenschaftler, der Wirtschaftstransaktionen und Portfoliomanagement modelliert, möchte ich ein Problem lösen lineares Gleichungssystem mit 100,000 Variablen. Verwende ich eine reine lineare Algebra-Bibliothek oder Apache Spark?? "

"Als Teil einer Bildkomprimierungspipeline möchte ich verwenden Einzelwertzerlegung auf einer großen Matrix von Millionen von Einträgen. Ist Apache Spark dafür eine gute Wahl?? "

Eine große Problemgröße bedeutet nicht immer, dass ein Apache Spark- oder Hadoop-Ökosystem vorhanden ist. Big Computing ist nicht gleichbedeutend mit Big Data. Als vielseitiger Datenwissenschaftler müssen Sie beides wissen, um alle Arten von Problemen bewältigen zu können.

RAPIDS konzentriert sich speziell auf Bereitstellung von GPU-Parallelität und Speichergeschwindigkeitsfunktionen mit hoher Bandbreite über Python-APIs.

Was zeigen wir in diesem Artikel?

 
 

Klare Beispiele nur für CuPy und CuML

 
In diesem Artikel werden wir nur klare Beispiele von CuPy und CuML demonstrieren.

  • wie sie (in der Geschwindigkeit) mit den entsprechenden Numpy- und Scikit-Learn-Funktionen/Schätzern verglichen werden
  • Wie wichtig ist die Daten-/Problemgröße bei diesem Geschwindigkeitsvergleich?

CuDF-Beispiele in einem späteren Artikel

 
Obwohl Data-Engineering-Beispiele, die der Pandas-Datenverarbeitung ähneln, für viele Datenwissenschaftler von großem Interesse sind, werden wir die CuDF-Beispiele in einem späteren Artikel behandeln.

Was ist meine GPU-basierte Hardwareplattform?

 
Ich benutze ein Saturnwolke Tesla T4 GPU-Instanz, da es buchstäblich 5 Minuten Arbeit kostet, eine hochzufahren Voll ausgestattete und geladene (mit DS- und AI-Bibliotheken) Rechenressource in der Cloud für alle meine datenwissenschaftlichen Arbeiten mit ihrem Service. Solange ich das Jupyter Notebook pro Monat nicht mehr als 10 Stunden nutze, ist es kostenlos! Wenn Sie mehr über ihren Service erfahren möchten,

Saturn Cloud Hosted ist gestartet: GPU Data Science für alle!

GPU-Computing ist die Zukunft der Datenwissenschaft. Pakete wie RAPIDS, TensorFlow und PyTorch ermöglichen blitzschnelle…

Abgesehen davon, dass man das hat Tesla T4-GPUEs handelt sich um eine 4-Kern-Intel(R) Xeon(R) Platinum 8259CL-CPU mit 2.50 GHz, 16 GB RAM und 10 GB persistenter Festplatte. Aus Sicht der Hardwarekonfiguration ist dies also ein ganz normales Setup (begrenzte Festplatte aufgrund des kostenlosen Kontingents), dh jeder Datenwissenschaftler verfügt möglicherweise über diese Art von Hardware. Der einzige Unterscheidungsfaktor ist das Vorhandensein der GPU und die ordnungsgemäße Einrichtung aller CUDA- und Python-Bibliotheken, sodass die RAPIDS-Suite reibungslos funktioniert.


Eine große Problemgröße bedeutet nicht immer, dass ein Apache Spark- oder Hadoop-Ökosystem vorhanden ist. Big Computing ist nicht gleichbedeutend mit Big Data. Als vielseitiger Datenwissenschaftler müssen Sie beides wissen, um alle Arten von Problemen bewältigen zu können.

Lösen eines linearen Gleichungssystems

 
Wir erstellen lineare Gleichungssysteme unterschiedlicher Größe und verwenden Numpy (und CuPy). linalg.solveRoutine, um das mit dem folgenden Code zu lösen:



Und der Code ändert sich für die CuPy-Implementierung um einen einzelnen Buchstaben (bei mehreren Aufrufen)!



Beachten Sie auch, wie wir CuPy-Arrays aus Numpy-Arrays als Argumente erstellen können.

Das Ergebnis ist allerdings dramatisch. CuPy startet langsam oder in einem ähnlichen Tempo wie Numpy, übertrifft es aber deutlich bei großen Problemgrößen (Anzahl der Gleichungen).



Einzelwertzerlegung

 
Als nächstes gehen wir das Problem der Singulärwertzerlegung an, indem wir eine zufällig generierte quadratische Matrix (aus einer Normalverteilung) unterschiedlicher Größe verwenden. Wir wiederholen den Codeblock hier nicht, sondern zeigen nur der Kürze halber das Ergebnis.



Bemerkenswert ist, dass der CuPy-Algorithmus in dieser Problemklasse keine deutlich bessere Leistung als der Numpy-Algorithmus aufweist. Vielleicht sollten die CuPy-Entwickler dies aufgreifen und verbessern.

Zurück zum Wesentlichen: Matrixinversion

 
Abschließend kehren wir zu den Grundlagen zurück und betrachten das grundlegende Problem der Matrixinversion (wird in fast allen Algorithmen für maschinelles Lernen verwendet). Das Ergebnis zeigt erneut einen deutlich positiven Leistungsgewinn des CuPy-Algorithmus gegenüber dem des Numpy-Pakets.



Lösung eines K-Means-Clustering-Problems

 
Als nächstes betrachten wir ein unbeaufsichtigtes Lernproblem der Clusterbildung unter Verwendung des allzu bekannten k-means-Algorithmus. Hier vergleichen wir eine CuML-Funktion mit einem äquivalenten Schätzer aus dem Scikit-learn-Paket.

Nur als Referenz finden Sie hier den API-Vergleich zwischen diesen beiden Schätzern.



Bild-QuelleScikit-lernen und CuML-Website (Open-Source-Projekte)

 

Hier ist das Ergebnis für einen Datensatz mit 10 Features/Dimensionen.



Und hier ist das Ergebnis eines weiteren Experiments mit einem Datensatz mit 100 Merkmalen.



Offensichtlich spielten sowohl die Stichprobengröße (Anzahl der Zeilen) als auch die Dimensionalität (Anzahl der Spalten) eine Rolle für die bessere Leistung der GPU-basierten Beschleunigung.

Allzu bekanntes lineares Regressionsproblem

 
Wer kann ein lineares Regressionsproblem für den Geschwindigkeitsvergleich beim Umgang mit tabellarischen Datensätzen ignorieren? Wir folgen dem Rhythmus wie zuvor, variieren die Problemgröße – dieses Mal sowohl die Anzahl der Stichproben als auch die Dimensionen gleichzeitig – und vergleichen die Leistung von CuML LinearRegression Schätzer zu dem, der aus dem Scikit-Learn-Stall erhalten wurde.

Die X-Achse in der folgenden Abbildung stellt die Problemgröße dar – von 1,000 Stichproben/50 Merkmalen bis 20,000 Stichproben/1000 Merkmalen.

Auch hier ist die Leistung des CuML-Schätzers mit zunehmender Problemkomplexität (Stichprobengröße und Dimensionalität) viel besser.



Zusammenfassung

 
 
Wir haben uns auf zwei der grundlegendsten Komponenten des RAPIDS-Frameworks konzentriert, das darauf abzielt, die Leistung der GPU für die alltäglichen Aufgaben der Datenanalyse und des maschinellen Lernens zu nutzen, selbst wenn der Datenwissenschaftler keine Deep-Learning-Aufgabe ausführt.



Bild-Quelle: Vom Autor erstellt mit kostenlosen Pixabay-Bildern (Link-1Link-2Link-3)

 

Wir haben a verwendet Saturnwolke Tesla T4-basierte Instanz für einfache, kostenlose und schnelle Einrichtung und zeigte einige Funktionen von CuPy- und CuML-Bibliotheken sowie Leistungsvergleiche weit verbreiteter Algorithmen.

  • Nicht alle Algorithmen aus den RAPIDS-Bibliotheken sind deutlich überlegen, die meisten jedoch schon.
  • Im Allgemeinen nimmt der Leistungsgewinn mit zunehmender Problemkomplexität (Stichprobengröße und Dimensionalität) schnell zu
  • Wenn Sie über eine GPU verfügen, probieren Sie RAPIDS immer aus, vergleichen und testen Sie, ob Sie Leistungssteigerungen erzielen, und machen Sie es zu einem vertrauenswürdigen Arbeitspferd Ihrer Data-Science-Pipeline.
  • Die Codeänderung ist minimal und beim Umschalten fast nicht vorhanden.

Lassen Sie die Leistung der GPU Ihren Analyse- und Data-Science-Workflow in Schwung bringen.

Sie können die des Autors überprüfen GitHub Repositories für Code, Ideen und Ressourcen im Bereich maschinelles Lernen und Datenwissenschaft. Wenn Sie wie ich eine Leidenschaft für KI / maschinelles Lernen / Datenwissenschaft haben, wenden Sie sich bitte an füge mich auf LinkedIn hinzu or folge mir auf Twitter.

Danke an Mel.

 
Original. Mit Genehmigung erneut veröffentlicht.

Related:

Quelle: https://www.kdnuggets.com/2021/08/gpu-powered-data-science-deep-learning-rapids.html

Zeitstempel:

Mehr von KDnuggets