Zephyrnet-logo

Panda's versnellen met Modin

Datum:

Panda's versnellen met Modin

De Modin-bibliotheek heeft de mogelijkheid om uw panda-workflows te schalen door één regel code te wijzigen en te integreren met het Python-ecosysteem en Ray-clusters. In deze tutorial wordt besproken hoe u aan de slag kunt gaan met Modin en hoe dit uw panda-workflows kan versnellen.


By Michaël Galarnyk, Developer Relations bij Anyscale


Afbeelding voor bericht
Een doel van Modin is om datawetenschappers dezelfde code te laten gebruiken voor kleine (kilobytes) en grote datasets (terabytes). Afbeelding door Devin Petersohn.

 

De Panda's-bibliotheek biedt eenvoudig te gebruiken datastructuren zoals Panda's DataFrames en tools voor data-analyse. Een probleem met panda's is dat deze traag kunnen zijn bij grote hoeveelheden gegevens. Het is niet ontworpen voor het analyseren van datasets van 100 GB of 1 TB. Gelukkig is er de Modus bibliotheek met voordelen zoals de mogelijkheid om uw panda-workflows te schalen door één regel code te wijzigen en integratie met het Python-ecosysteem straal clusters. In deze tutorial wordt besproken hoe u aan de slag kunt gaan met Modin en hoe dit uw panda-workflows kan versnellen.

Hoe u aan de slag kunt gaan met Modin

 


Afbeelding voor bericht
Om te bepalen welke Pandas-methoden het eerst in Modin moeten worden geïmplementeerd, hebben de ontwikkelaars van Modin 1800 van de meest gewaardeerde Python Kaggle Kernels geschraapt (code).

 

Modin's dekking van de Panda's API bedraagt ​​meer dan 90%, met een focus op de meest gebruikte Panda's-methoden zoals pd.read_csv, pd.DataFrame, df.fillna en df.groupby. Dit betekent dat als u veel gegevens heeft, u de meeste van dezelfde bewerkingen als de Panda-bibliotheek sneller kunt uitvoeren. In dit gedeelte worden enkele veelgebruikte bewerkingen belicht.

Om aan de slag te gaan, moet u modin installeren.

pip install “modin[all]” # Install Modin dependencies and modin’s execution engines



Afbeelding voor bericht
Vergeet de “” niet bij het installeren van pip

 

Modin importeren

 
Een groot voordeel van Modin is dat je geen nieuwe API hoeft te leren. U hoeft alleen uw importverklaring te wijzigen.

import modin.pandas as pd



Afbeelding voor bericht
Om Modin te gebruiken hoeft u alleen uw importverklaring te wijzigen.

 

Gegevens laden (read_csv)

 


Afbeelding voor bericht
Modin schittert echt met grotere datasets (beeldbron)

 

De gegevensset die in deze zelfstudie wordt gebruikt, is afkomstig uit de Zorgverzekeringsmarkt dataset van ongeveer 2 GB. De onderstaande code leest de gegevens in een Modin DataFrame.

modin_df = pd.read_csv("Rate.csv”)



Afbeelding voor bericht
In dit geval is Modin sneller omdat het werk uit de hoofdthread haalt om asynchroon te zijn. Het bestand is parallel gelezen. Een groot deel van de verbetering kwam voort uit het asynchroon bouwen van de DataFrame-componenten.

 

hoofd

De onderstaande code maakt gebruik van het hoofdcommando.

# Select top N number of records (default = 5)
modin_df.head()



Afbeelding voor bericht
In dit geval is Modin langzamer omdat de gegevens samen moeten worden verzameld. Gebruikers zouden dit verschil echter niet moeten kunnen waarnemen in hun interactieve workflow.

 

GroupBy

Net als bij panda's heeft modin een groupby-bewerking.

df.groupby(['StateCode’]).count()



Afbeelding voor bericht

Merk op dat er plannen zijn om de prestaties van groupby-bewerkingen in Modin verder te optimaliseren.

vullen

Het invullen van ontbrekende waarden met de fillna-methode kan met Modin veel sneller.

modin_df.fillna({‘IndividualTobaccoRate’: ‘Unknown’})



Afbeelding voor bericht

Standaard ingesteld op Panda's-implementatie

 
Zoals eerder vermeld, dekt de API van Modin ongeveer 90% van de Pandas API. Voor methoden die nog niet aan bod komen, zal Modin standaard een Panda-implementatie gebruiken, zoals in de onderstaande code.

modin_df.corr(method = ‘kendall’)



Afbeelding voor bericht
Wanneer Modin standaard panda's gebruikt, ziet u een waarschuwing.

 

Hoewel er een prestatiestraf geldt voor het in gebreke blijven bij panda's, zal Modin alle bewerkingen voltooien, ongeacht of de opdracht momenteel in Modin is geïmplementeerd.


Afbeelding voor bericht
Als een methode niet wordt geïmplementeerd, wordt deze standaard ingesteld op panda's.

 

Modins documentatie legt uit hoe dit proces werkt.

We converteren eerst naar een Panda DataFrame en voeren vervolgens de bewerking uit. Er is een prestatieverlies als u van een gepartitioneerd Modin DataFrame naar panda's gaat vanwege de communicatiekosten en het single-threading-karakter van panda's. Zodra de panda-bewerking is voltooid, converteren we het DataFrame terug naar een gepartitioneerd Modin DataFrame. Op deze manier worden bewerkingen die worden uitgevoerd nadat iets standaard panda's is, geoptimaliseerd met Modin.

Hoe Modin uw Pandas-workflows kan versnellen

 
De drie belangrijkste manieren waarop Modin Panda-workflows sneller maakt, zijn via de multicore/multinode-ondersteuning, systeemarchitectuur en gebruiksgemak.

Multicore/Multinode-ondersteuning

 


Afbeelding voor bericht
Panda's kunnen slechts één enkele kern gebruiken. Modin is in staat om efficiënt gebruik te maken van alle beschikbare hardware. De afbeelding toont bronnen (donkerblauw) die Modin kan gebruiken met meerdere cores (B) en meerdere beschikbare knooppunten (C).

 

De Panda's-bibliotheek kan slechts één enkele kern gebruiken. Omdat vrijwel alle computers tegenwoordig meerdere kernen hebben, zijn er veel mogelijkheden om de workflow van uw panda's te versnellen door modin alle kernen op uw computer te laten gebruiken.


Afbeelding voor bericht
Voor deze blog kun je de bovenstaande MacBook zien als een enkele node met 4 cores.

 

Als u uw code naar meer dan één knooppunt wilt schalen, Modin heeft een API om te schakelen tussen het lokaal uitvoeren van code en op cloudproviders/clusters.

Systeem Architectuur

 
Een andere manier waarop Modin sneller kan zijn dan panda's is te danken aan de manier waarop panda's zelf zijn geïmplementeerd. Wes McKinney, de maker van panda’s, hield een beroemde lezing “10 dingen die ik haat aan panda's', waar hij het gebrek aan flexibiliteit en prestatieproblemen van sommige panda's besprak.


Afbeelding voor bericht
Sommige problemen van Wes McKinney met panda's zijn prestatiegerelateerd.

 

Modin probeert een aantal van deze problemen op te lossen. Om te begrijpen hoe, is het belangrijk om enkele ervan te begrijpen Systeem Architectuur. Het onderstaande diagram schetst de algemene gelaagde weergave van de componenten van Modin met een korte beschrijving van elke hoofdsectie.


Afbeelding voor bericht
Modins systeemarchitectuur

 

API's laag: Dit is de naar de gebruiker gerichte laag die voornamelijk Modin's dekking van de Panda's API is. De SQLite API is experimenteel en de Modin API is iets dat nog wordt ontworpen.

Modin Query-compiler: Naast zijn andere taken, volgt de Query Compiler-laag nauwgezet de Panda's-API, maar wordt een groot deel van de herhaling weggelaten.

Modin DataFrame-laag: Dit is waar Modins geoptimaliseerde dataframe-algebra plaatsvindt.

Uitvoering: Hoewel Modin ook andere uitvoeringsengines zoals Dask ondersteunt, is de meest gebruikte uitvoeringsengine dat wel straal waarover u meer kunt lezen in het volgende gedeelte.

Wat is Ray

 


Afbeelding voor bericht
Ray maakt parallelle en gedistribueerde verwerkingswerkzaamheden meer zoals je zou hopen (beeldbron).

 

Ray is de standaard uitvoeringsengine voor Modin. In dit gedeelte wordt kort besproken wat Ray is en hoe het kan worden gebruikt als meer dan alleen een uitvoeringsengine.


Afbeelding voor bericht

Het bovenstaande diagram laat zien dat het Ray-ecosysteem op een hoog niveau bestaat uit het kernsysteem van Ray en schaalbare bibliotheken voor bijvoorbeeld datawetenschap Modus. Het is een bibliotheek voor het opschalen van Python-applicaties over meerdere kernen of machines. Het heeft een aantal grote voordelen, waaronder:

  • Eenvoud: u kunt uw Python-applicaties schalen zonder ze te herschrijven, en dezelfde code kan op één machine of op meerdere machines worden uitgevoerd.
  • Robuustheid: applicaties gaan gracieus om met machinestoringen en voorrang.
  • Performance: taken worden uitgevoerd met een latentie van milliseconden, schaalbaar tot tienduizenden cores en verwerken numerieke gegevens met minimale overhead voor serialisatie.

Omdat Ray een raamwerk voor algemene doeleinden is, heeft de gemeenschap er veel bibliotheken en raamwerken bovenop gebouwd om verschillende taken uit te voeren, zoals Ray Tune voor afstemming van hyperparameters op elke schaal, Ray Serveer voor eenvoudig te gebruiken schaalbare modelserving, en RLlib voor versterkend leren. Het heeft ook integraties voor machine learning-bibliotheken zoals scikit-learn evenals ondersteuning voor gegevensverwerkingsbibliotheken zoals PySpark en Dask.

Hoewel je niet hoeft te leren hoe je Ray moet gebruiken om Modin te gebruiken, laat de onderstaande afbeelding zien dat je over het algemeen slechts een paar regels code hoeft toe te voegen om van een eenvoudig Python-programma een gedistribueerd programma te maken dat over een rekencluster draait.


Afbeelding voor bericht
Voorbeeld van hoe u van een eenvoudig programma een gedistribueerd programma kunt maken met behulp van Ray (code uitleg).

 

Conclusie

 


Afbeelding voor bericht
Een doel van Modin is om datawetenschappers dezelfde code te laten gebruiken voor kleine (kilobytes) en grote datasets (terabytes). Afbeelding van Devin Petersohn.

 

Met Modin kunt u hetzelfde Pandas-script gebruiken voor een dataset van 10 KB op een laptop, maar ook voor een dataset van 10 TB op een cluster. Dit is mogelijk dankzij de eenvoudig te gebruiken API en systeemarchitectuur van Modin. Deze architectuur kan Ray gebruiken als uitvoeringsengine om het opschalen van Modin eenvoudiger te maken. Als je vragen of gedachten hebt over Ray, voel je dan vrij om lid te worden van onze community via Redevoering or Slack.

 
Bio: Michaël Galarnyk werkt in Developer Relations bij Anyscale, het bedrijf achter de Ray-project​ Je kunt hem vinden op Twitter, Medium en GitHub.

ORIGINELE. Met toestemming opnieuw gepost.

Zie ook:

Coinsmart. Beste Bitcoin-beurs in Europa
Bron: https://www.kdnuggets.com/2021/03/speed-up-pandas-modin.html

spot_img

Laatste intelligentie

spot_img