GPU-aangedreven datawetenschap (NIET diep leren) met RAPIDS

Bronknooppunt: 997659

GPU-aangedreven datawetenschap (NIET diep leren) met RAPIDS

Hoe u de kracht van uw GPU kunt gebruiken voor reguliere datawetenschap en machine learning, zelfs als u niet veel deep learning-werk doet.



header image
BeeldbronPixabay (Gratis afbeelding)

Bent u op zoek naar “GPU-aangedreven datawetenschap”?

 
 
Stel je voor dat je een datawetenschapper bent, of een bedrijfsanalist, of een academisch onderzoeker in natuurkunde/economie/neurowetenschappen...

Je doet er veel gegevensbeheer, opschoning, statistische tests, visualisaties op regelmatige basis. Je sleutelt ook veel lineaire modellen passende gegevens en waag u er af en toe aan Willekeurig Bos. Jij bent ook dol op clustering grote datasets. Klinkt bekend genoeg?

Gezien de aard van de datasets waaraan u werkt (meestal in tabelvorm en gestructureerd), waagt u zich echter niet zo vaak aan diepgaand leren. Je steekt liever al je hardwarebronnen in de dingen die je dagelijks doet, dan dat je geld uitgeeft aan een of ander fancy deep learning-model. Nogmaals, bekend?

Je hoort over de ontzagwekkende kracht en de razendsnelle rekenvaardigheid van GPU-systemen zoals die van NVidia voor allerlei industriële en wetenschappelijke toepassingen.

En je blijft maar denken – “Wat is er voor mij? Hoe kan ik profiteren van deze krachtige stukjes halfgeleider in mijn specifieke workflow?? "

U bent op zoek naar GPU-aangedreven datawetenschap.

Een van uw beste (en snelste) opties om deze aanpak te evalueren, is door de combinatie van te gebruiken Saturnus Cloud + VERSNELLINGENLaat me het gedetailleerd uitleggen...

GPU's in de AI/ML-folklore waren vooral bedoeld voor diepgaand leren

 
 
Hoewel het gebruik van GPU's en gedistribueerd computergebruik breed wordt besproken in academische en zakelijke kringen voor kerntaken op het gebied van AI/ML (bijv. Diep neuraal netwerk met 1000 lagen voor beeldclassificatie of miljard-parameter BERT spraaksynthesemodel), hebben ze minder aandacht gevonden als het gaat om hun bruikbaarheid voor reguliere data science- en data-engineeringtaken.

Niettemin, gegevensgerelateerde taken zijn de essentiële voorloper van elke ML-workload in een AI-pipeline en ze vormen vaak een meerderheidspercentage van de tijd en intellectuele inspanning uitgegeven door een datawetenschapper of zelfs een ML-ingenieur. Onlangs de beroemde AI-pionier
Andrew Ng sprak over van een modelgerichte naar een datagerichte benadering van AI ontwikkeling van hulpmiddelen. Dit betekent dat u veel meer tijd besteedt aan de onbewerkte gegevens en deze voorverwerkt voordat een daadwerkelijke AI-workload op uw pijplijn wordt uitgevoerd.

De belangrijke vraag is dus: Kunnen we de kracht van GPU en gedistribueerd computergebruik benutten voor reguliere gegevensverwerkingstaken??



Beeldbron: Auteur heeft een collage gemaakt van gratis afbeeldingen (Pixabay)

 

Hoewel het gebruik van GPU's en gedistribueerd computergebruik breed wordt besproken in academische en zakelijke kringen voor kerntaken op het gebied van AI/ML, hebben ze minder dekking gevonden in hun nut voor reguliere datawetenschap en data-engineeringtaken.

Het fantastische RAPIDS-ecosysteem

 
 
De RAPIDS-suite met softwarebibliotheken en API's u - een vaste datawetenschapper (en niet noodzakelijk een deep learning-beoefenaar) - de mogelijkheid en flexibiliteit geven om uit te voeren end-to-end datawetenschap en analysepijplijnen volledig op GPU's.

Dit open-sourceproject werd door Nvidia geïncubeerd door tools te bouwen om te profiteren van CUDA-primitieven. Het richt zich specifiek op Het blootleggen van GPU-parallellisme en geheugensnelheidsfuncties met hoge bandbreedte via de datawetenschapsvriendelijke Python-taal.

Veelvoorkomende taken voor gegevensvoorbereiding en ruzie worden zeer gewaardeerd in het RAPIDS-ecosysteem. Het leent ook een aanzienlijk bedrag uit ondersteuning voor implementatie met meerdere knooppunten, meerdere GPU's en gedistribueerde verwerking. Waar mogelijk kan het worden geïntegreerd met andere bibliotheken die geen geheugen meer (dwz dataset groter dan individuele computer RAM) gegevensverwerking gemakkelijk en toegankelijk voor individuele datawetenschappers.



Beeldbron: Auteur gemaakte collage

 

De drie meest prominente (en Pythonische) componenten – die van bijzonder belang zijn voor gewone datawetenschappers – zijn:

  • CuPy: Een door CUDA aangedreven arraybibliotheek die er net zo uitziet en aanvoelt als Numpy, terwijl verschillende CUDA-bibliotheken worden gebruikt, bijvoorbeeld cuBLAS, cuDNN, cuRand, cuSolver, cuSPARSE, cuFFT en NCCL om volledig te profiteren van de onderliggende GPU-architectuur.
  • CuDF: Dit is een GPU DataFrame-bibliotheek voor het laden, aggregeren, samenvoegen, filteren en manipuleren van gegevens met een panda's-achtige API. Data-ingenieurs en datawetenschappers kunnen het gebruiken om hun taakstromen eenvoudig te versnellen met behulp van krachtige GPU's zonder ooit de basisprincipes van CUDA-programmeren te leren.
  • CuML: Met deze bibliotheek kunnen datawetenschappers, analisten en onderzoekers traditionele/klassieke ML-algoritmen en bijbehorende verwerkingstaken uitvoeren, waarbij de kracht van een GPU volledig wordt benut. Uiteraard wordt dit meestal gebruikt bij tabellarische datasets. Denk eens aan Scikit-learn en wat het zou kunnen doen met al die honderden Cuda- en Tensor-cores op je GPU-kaart! Daarom komt de Python API van cuML in de meeste gevallen overeen met die van Scikit-learn. Bovendien probeert het te bieden multi-GPU en multi-node-GPU-ondersteuning by sierlijk integreren met Dashboard, waar mogelijk, om te profiteren van echte gedistribueerde verwerking/clustercomputing.


Kunnen we de kracht van GPU en gedistribueerd computergebruik benutten voor reguliere gegevensverwerkingstaken en machinaal leren met gestructureerde gegevens?

Is het anders dan het gebruik van Apache Spark?

 
 
U kunt zich afvragen hoe deze GPU-aangedreven gegevensverwerking anders is dan het gebruik van Apache Spark. Eigenlijk zijn er enkele subtiele verschillen, en pas sinds kort, met Spark 3.0, zijn GPU's een reguliere bron voor Spark-workloads.

Apache Spark 3.0 versnellen met GPU's en RAPIDS | NVIDIA-ontwikkelaarsblog
 

We hebben geen tijd of ruimte om de unieke verschillen tussen deze GPU-aangedreven data science-benadering en Big Data-taken die bijzonder geschikt zijn voor Apache Spark te bespreken. Maar stel uzelf deze vragen en u zult waarschijnlijk het subtiele verschil begrijpen:

"Als datawetenschapper die economische transacties en portefeuillebeheer modelleert, wil ik een probleem oplossen lineair stelsel vergelijkingen met 100,000 variabelen. Gebruik ik een pure lineaire algebra-bibliotheek of Apache Spark? "

"Als onderdeel van een pijplijn voor beeldcompressie wil ik gebruiken Singuliere waarden ontbinding op een grote matrix van miljoenen vermeldingen. Is Apache Spark daarvoor een goede keuze?? "

Een grote probleemomvang betekent niet altijd een Apache Spark- of Hadoop-ecosysteem. Big Computation is niet hetzelfde als Big Data. Als veelzijdige datawetenschapper moet je beide kennen om allerlei problemen aan te kunnen pakken.

RAPIDS richt zich specifiek op Het blootleggen van GPU-parallellisme en geheugensnelheidsfuncties met hoge bandbreedte via Python API's.

Wat laten we zien in dit artikel?

 
 

Alleen heldere voorbeelden van CuPy en CuML

 
In dit artikel zullen we dus alleen maar heldere voorbeelden van CuPy en CuML demonstreren,

  • hoe ze zich (in snelheid) vergelijken met de overeenkomstige Numpy- en Scikit-leerfuncties/schatters
  • hoe de gegevens/probleemgrootte van belang zijn in deze snelheidsvergelijking.

CuDF-voorbeelden in een later artikel

 
Hoewel voorbeelden van data-engineering, vergelijkbaar met de gegevensverwerking van Panda, voor veel datawetenschappers van groot belang zijn, zullen we de CuDF-voorbeelden in een later artikel bespreken.

Wat is mijn GPU-gebaseerde hardwareplatform?

 
Ik gebruik een Saturnus Cloud Tesla T4 GPU-instantie, omdat het letterlijk 5 minuten werk is om een volledig uitgeruste en geladen (met DS- en AI-bibliotheken) computerbronnen in de cloud voor al mijn datawetenschapswerk met hun service. Zolang ik de 10 uur Jupyter Notebook-gebruik per maand niet overschrijd, is het gratis! Wilt u meer lezen over hun service,

Saturn Cloud Hosted is gelanceerd: GPU Data Science voor iedereen!

GPU-computing is de toekomst van datawetenschap. Pakketten als RAPIDS, TensorFlow en PyTorch maken bliksemsnelle…

Afgezien van het hebben van de Tesla T4-gpu, het is een 4-core Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz-machine met 16 GB RAM en 10 GB persistente schijf. Dit is dus een heel normale opstelling vanuit het oogpunt van hardwareconfiguratie (beperkte harde schijf vanwege de vrije laag), dwz elke datawetenschapper kan dit soort hardware in zijn/haar bezit hebben. De enige onderscheidende factor is de aanwezigheid van de GPU en het op de juiste manier opzetten van alle CUDA- en Python-bibliotheken, zodat de RAPIDS-suite zonder enige hapering werkt.


Een grote probleemomvang betekent niet altijd een Apache Spark- of Hadoop-ecosysteem. Big Computation is niet hetzelfde als Big Data. Als veelzijdige datawetenschapper moet je beide kennen om allerlei problemen aan te kunnen pakken.

Een lineair stelsel vergelijkingen oplossen

 
We creëren lineaire stelsels van vergelijkingen van verschillende groottes en gebruiken de Numpy (en CuPy) linalg.solveroutine om dat op te lossen met de volgende code,



En de code verandert met één enkele letter (bij meerdere aanroepen) voor de CuPy-implementatie!



Merk ook op hoe we CuPy-arrays van Numpy-arrays als argumenten kunnen maken.

Het resultaat is wel dramatisch. CuPy begint langzaam of in een vergelijkbaar tempo als Numpy, maar verslaat het regelrecht voor grote probleemgroottes (aantal vergelijkingen).



Singuliere waarden ontbinding

 
Vervolgens pakken we het probleem van de decompositie van singuliere waarden aan met behulp van een willekeurig gegenereerde vierkante matrix (getrokken uit een normale verdeling) van verschillende groottes. We herhalen het codeblok hier niet, maar tonen kortheidshalve alleen het resultaat.



Het is belangrijk op te merken dat het CuPy-algoritme in deze probleemklasse geen duidelijk betere prestaties laat zien dan het Numpy-algoritme. Misschien is dit iets dat door de CuPy-ontwikkelaars ter hand moet worden genomen om te verbeteren.

Terug naar de basis: Matrix-inversie

 
Ten slotte gaan we terug naar de basis en beschouwen we het fundamentele probleem van matrixinversie (gebruikt in bijna alle machine learning-algoritmen). Het resultaat toont opnieuw een sterk gunstige prestatiewinst van het CuPy-algoritme ten opzichte van die van het Numpy-pakket.



Een K-means clusteringprobleem aanpakken

 
Vervolgens beschouwen we een onbewaakt leerprobleem van clustering met behulp van het maar al te bekende k-means-algoritme. Hier vergelijken we een CuML-functie met een gelijkwaardige schatter uit het Scikit-learn-pakket.

Ter referentie: hier is de API-vergelijking tussen deze twee schatters.



BeeldbronScikit leren en CuML-website (Open-sourceprojecten)

 

Hier is het resultaat voor een dataset met 10 kenmerken/dimensies.



En hier is het resultaat van een ander experiment met een dataset met 100 functies.



Het is duidelijk dat zowel de steekproefomvang (aantal rijen) als de dimensionaliteit (aantal kolommen) van belang waren voor de manier waarop de GPU-gebaseerde versnelling superieur presteerde.

Al te bekend lineair regressieprobleem

 
Wie kan een lineair regressieprobleem voor snelheidsvergelijking negeren als hij met tabellarische datasets werkt? We volgen de cadans zoals voorheen, variëren de omvang van het probleem – dit keer zowel het aantal monsters als de dimensies tegelijkertijd – en vergelijken de prestaties van CuML LinearRegression schatter dan die verkregen uit de Scikit-learn-stal.

De X-as in de volgende afbeelding geeft de omvang van het probleem weer: van 1,000 samples/50 features tot 20,000 samples/1000 features.

Ook hier presteert de CuML-schatter veel beter naarmate de complexiteit van het probleem (steekproefomvang en dimensionaliteit) toeneemt.



Samengevat

 
 
We hebben ons geconcentreerd op twee van de meest fundamentele componenten van het RAPIDS-framework, dat tot doel heeft de kracht van GPU toe te passen op de dagelijkse taken van data-analyse en machinaal leren, zelfs als de datawetenschapper geen diepgaande leertaak uitvoert.



Beeldbron: Gemaakt door de auteur met gratis Pixabay-afbeeldingen (Link-1Link-2Link-3)

 

We gebruikten een Saturnus Cloud Op Tesla T4 gebaseerde instantie voor eenvoudige, gratis en snelle installatie en toonde een paar kenmerken van CuPy- en CuML-bibliotheken en prestatievergelijkingen van veelgebruikte algoritmen.

  • Niet alle algoritmen uit de RAPIDS-bibliotheken zijn enorm superieur, maar de meeste zijn dat wel.
  • Over het algemeen neemt de prestatiewinst snel toe naarmate de complexiteit van het probleem (steekproefomvang en dimensionaliteit) toeneemt
  • Als u een GPU heeft, probeer RAPIDS dan altijd eens, vergelijk en test of u enige prestatie boekt, en maak er een vertrouwd werkpaard van uw data science-pijplijn van.
  • De codewijziging is minimaal en bestaat bijna niet voor het overschakelen.

Laat de kracht van GPU uw analyse- en datawetenschapsworkflow een vliegende start geven.

U kunt de auteur controleren GitHub repositories voor code, ideeën en bronnen in machine learning en data science. Als je, net als ik, gepassioneerd bent door AI / machine learning / data science, voel je dan vrij om dat te doen voeg me toe op LinkedIn or Volg me op Twitter.

Met dank aan Mel.

 
ORIGINELE. Met toestemming opnieuw gepost.

Zie ook:

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

Tijdstempel:

Meer van KDnuggets