Koneoppimisen putkilinjojen rakentaminen lumihiutaleella ja tehtävällä
Tässä viestissä haluan jakaa joitakin työkaluja, joita olen tutkinut viime aikoina, ja näyttää, kuinka käytän niitä ja kuinka ne auttoivat parantamaan työnkulkuni tehokkuutta. Kaksi, joista puhun erityisesti, ovat Snowflake ja Dask. Kaksi hyvin erilaista työkalua, jotka kuitenkin täydentävät toisiaan hyvin erityisesti osana ML Lifecyclea.
By Daniel Foley, Datatieteilijä
esittely
Olen viime aikoina yrittänyt löytää parempia tapoja parantaa työnkulkuani datatieteilijänä. Minulla on tapana viettää kunnon osan ajastani mallintamiseen ja ETL:ien rakentamiseen työssäni. Tämä on merkinnyt sitä, että minun on yhä enemmän luotettava työkaluihin voidakseni käsitellä suuria tietojoukkoja luotettavasti ja tehokkaasti. Tajusin nopeasti, että pantojen käyttäminen näiden tietojoukkojen manipuloimiseen ei aina ole hyvä lähestymistapa, ja tämä sai minut etsimään muita vaihtoehtoja.
Tässä viestissä haluan jakaa joitakin työkaluja, joita olen tutkinut viime aikoina, ja näyttää, kuinka käytän niitä ja kuinka ne auttoivat parantamaan työnkulkuni tehokkuutta. Kaksi, joista puhun erityisesti, ovat Snowflake ja Dask. Kaksi hyvin erilaista työkalua, jotka kuitenkin täydentävät toisiaan hyvin erityisesti osana ML Lifecyclea. Toivon, että tämän viestin luettuasi sinulla on hyvä käsitys siitä, mitä Snowflake ja Dask ovat, kuinka niitä voidaan käyttää tehokkaasti ja pystyt ottamaan käyttöön omia käyttötapauksiasi.
Tarkemmin sanottuna haluan näyttää sinulle, kuinka voit rakentaa ETL-putkilinjan käyttämällä Snowflakea ja Pythonia harjoitustietojen luomiseen koneoppimistehtävää varten. Haluan sitten esitellä Daskin ja Saturnuksen pilvi ja näyttää, kuinka voit hyödyntää pilvessä tapahtuvaa rinnakkaiskäsittelyä nopeuttaaksesi todella ML-koulutusprosessia, jotta voit lisätä tuottavuuttasi datatieteilijänä.
ETL:ien rakentaminen Snowflakessa ja Pythonissa
Ennen kuin siirrymme koodaukseen, minun on parempi selittää lyhyesti, mitä Snowflake on. Tämä on kysymys, jonka esitin äskettäin, kun tiimini päätti aloittaa sen käytön. Korkealla tasolla se on tietovarasto pilvessä. Leikittyäni sen kanssa jonkin aikaa tajusin kuinka voimakas se oli. Mielestäni yksi hyödyllisimmistä ominaisuuksista on virtuaalivarastot, joita voit käyttää. Virtuaalivarasto antaa sinulle pääsyn samoihin tietoihin, mutta on täysin riippumaton muista virtuaalivarastoista, joten laskentaresursseja ei jaeta ryhmien kesken. Tämä on osoittautunut erittäin hyödylliseksi, koska se poistaa kaikki mahdolliset suorituskykyongelmat, jotka aiheutuvat muiden käyttäjien kyselyiden suorittamisesta päivän aikana. Tämä on vähentänyt turhautumista ja hukattua aikaa kyselyjen suorittamisen odottamiseen.
Koska aiomme käyttää Snowflakea, kerron lyhyesti, kuinka voit määrittää sen ja alkaa kokeilla sitä itse. Meidän on tehtävä seuraavat:
- Luo Snowflake-tili
- Siirrä tietomme Snowflakeen
- Kirjoita ja testaa kyselyjämme SQL:n ja Snowflake-käyttöliittymän avulla
- Kirjoita Python-luokka, joka voi suorittaa kyselymme luodakseen lopullisen tietojoukon mallintamista varten
Tilin luominen on yhtä helppoa kuin rekisteröityminen heidän ilmaiseen kokeiluun verkkosivusto. Kun olet tehnyt sen, voit ladata snowsql CLI: n tätä. Näin tietojen lisääminen Snowflakeen on helppoa. Näiden vaiheiden jälkeen voimme yrittää muodostaa yhteyden Snowflakeen käyttämällä valtuustietojamme ja komentoriviä.
snowsql -a <account_name> -u <user_name>
Löydät tilisi nimen URL-osoitteesta, kun kirjaudut sisään Snowflake-käyttöliittymään. Sen pitäisi näyttää suunnilleen tältä: xxxxx.europe-west2.gcp. Ok, siirrytään seuraavaan vaiheeseen ja saamme tietomme Snowflakeen. Meidän on noudatettava tässä muutamia vaiheita, nimittäin:
- Luo virtuaalivarastomme
- Luo tietokanta
- Määrittele ja luo taulukomme
- Luo esitystaulukko CSV-tiedostoillemme
- Kopioimme tiedot taulukoihimme
Onneksi tämä ei ole liian vaikeaa ja voimme tehdä tämän kokonaan käyttämällä snowsql CLI:tä. Käytän tässä projektissa pienempää tietojoukkoa kuin haluaisin, mutta valitettavasti en voi käyttää mitään yritykseni dataa ja voi olla melko vaikeaa löytää verkosta suuria sopivia tietojoukkoja. Löysin kuitenkin joitakin tapahtumatietoja Dunnhumbysta, joka on vapaasti saatavilla osoitteessa Kaggle. Vaikka luon paljon suuremman synteettisen tietojoukon näitä tietoja käyttäen testatakseni, kuinka hyvin Dask käsittelee haasteen sklearniin verrattuna.
Ensinnäkin meidän on määritettävä virtuaalinen varasto ja tietokanta käyttämällä seuraavia komentoja Snowflake-käyttöliittymässä.
luoda or korvata varastoanalytiikka_wh with
warehouse_size=”X-PIENI”
auto_suspend=180
auto_resume=true
aluksi_suspended=true;
luoda or korvata tietokanta dunnhumby;
Tietomme koostuu kuudesta CSV:stä, jotka muunnamme 6 taulukoksi. En käytä liikaa aikaa datajoukon läpikäymiseen, koska tämä viesti käsittelee enemmän Snowflaken ja Daskin käyttöä tietojen tulkitsemisen sijaan.
Alla on komennot, joita voimme käyttää taulukoiden luomiseen. Sinun tarvitsee vain tietää etukäteen, minkä sarakkeiden ja tietotyyppien kanssa työskentelet.
create or replace table campaign_desc ( description string, campaign number,
start_day number,
end_day number ); create or replace table campaign_table ( description string, Household_key number, campaign number ); create or replace table coupon ( COUPON_UPC number, product_id number, campaign number ); create or replace table coupon_redempt ( household_key number, day number, coupon_upc number, campaign number ); create or replace table transactions ( household_key number, BASKET_ID number, day number, product_id number, quantity number, sales_value number, store_id number, retail_disc decimal, trans_time number, week_no number, coupon_disc decimal, coupon_match_disc decimal ); create or replace table demographic_data ( age_dec string, marital_status_code string, income_desc string, homeowner_desc string, hh_comp_desc string, household_size_desc string, kid_category_desc string, Household_key number);
Nyt kun olemme luoneet taulukomme, voimme alkaa miettiä, kuinka saada tietoja niihin. Tätä varten meidän on lavastettava CSV-tiedostomme. Tämä on pohjimmiltaan vain välivaihe, jotta Snowflake voi ladata tiedostot suoraan lavaltamme taulukoihimme. Voimme käyttää PUT komento asettaa paikalliset tiedostot meidän vaiheeseen ja sitten KOPIOINTI komento antaa Snowflakelle, minne nämä tiedot asetetaan.
use database dunnhumby; create or replace stage dunnhumby_stage; PUT file://campaigns_table.csv @dunnhumby.public.dunnhumby_stage; PUT file://campaigns_desc.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon_d=redempt.csv @dunnhumby.public.dunnhumby_stage; PUT file://transaction_data.csv @dunnhumby.public.dunnhumby_stage; PUT file://demographics.csv @dunnhumby.public.dunnhumby_stage;
Pikatarkistuksena voit suorittaa tämän komennon tarkistaaksesi, mitä esitysalueella on.
ls @dunnhumby.public.dunnhumby_stage;
Nyt meidän on vain kopioitava tiedot taulukoihimme käyttämällä alla olevia kyselyjä. Voit suorittaa nämä joko Snowflake-käyttöliittymässä tai komentorivillä lumihiutaleeseen kirjautumisen jälkeen.
copy into campaign_table from @dunnhumby.public.dunnhumby_stage/campaigns_table.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into campaign_desc from @dunnhumby.public.dunnhumby_stage/campaign_desc.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon from @dunnhumby.public.dunnhumby_stage/coupon.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon_redempt from @dunnhumby.public.dunnhumby_stage/coupon_redempt.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into transactions from @dunnhumby.public.dunnhumby_stage/transaction_data.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into demographic_data from @dunnhumby.public.dunnhumby_stage/demographics.csv.gz file_format = ( type = csv skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’);
Ok hienoa, hyvällä tuurilla meillä on tietomme taulukoissamme ensimmäisellä kerralla. Voi, jos se olisikin niin yksinkertaista, koko prosessi vaati muutaman yrityksen saada asiat kuntoon (varo kirjoittamasta asioita väärin). Toivottavasti voit seurata tätä ja voit jatkaa. Olemme lähestymässä mielenkiintoisia asioita, mutta yllä olevat vaiheet ovat olennainen osa prosessia, joten varmista, että ymmärrät kaikki nämä vaiheet.
Pipelinemme kirjoittaminen SQL:llä
Tässä seuraavassa vaiheessa kirjoitamme kyselyt luodaksemme tavoitteemme, ominaisuudet ja lopuksi tuottaaksemme harjoitustietojoukon. Yksi tapa luoda tietojoukko mallintamista varten on lukea nämä tiedot muistiin ja käyttää pandoja uusien ominaisuuksien luomiseen ja kaikkien tietokehysten yhdistämiseen. Tämä on tyypillisesti lähestymistapa, jonka näet Kagglessa ja muissa online-opetusohjelmissa. Ongelma tässä on, että se ei ole kovin tehokas, varsinkin kun työskentelet minkä tahansa kohtuullisen kokoisen tietojoukon kanssa. Tästä syystä on paljon parempi idea ulkoistaa raskas nosto jollekin Snowflakelle, joka käsittelee massiivisia tietojoukkoja erittäin hyvin ja säästää todennäköisesti valtavasti aikaa. En käytä paljon aikaa sukeltaessani tietojoukkomme yksityiskohtiin täällä, koska se ei ole todella tärkeää sille, mitä yritän näyttää. Yleensä kuitenkin kannattaa käyttää paljon aikaa tietojen tutkimiseen ja ymmärtämiseen ennen mallinnuksen aloittamista. Näiden kyselyiden tavoitteena on esikäsitellä tiedot ja luoda yksinkertaisia ominaisuuksia, joita voimme myöhemmin käyttää malleissamme.
Kohteen määritelmä
On selvää, että valvotun koneoppimisen tärkeä osatekijä on sopivan ennustettavan kohteen määrittäminen. Käyttötapauksessamme ennakoimme vaihtuvuuden laskemalla, tekeekö käyttäjä toisen käynnin kahden viikon sisällä katkoviikon jälkeen. Kahden viikon valinta on melko mielivaltainen ja riippuu tietystä ongelmasta, jota yritämme ratkaista, mutta oletetaan vain, että se sopii tähän projektiin. Yleensä kannattaa analysoida asiakkaasi huolellisesti ymmärtääksesi käyntien välisten erojen jakautumisen saadaksesi sopivan vaihtuvuuden määritelmän.
Pääajatuksena tässä on, että haluamme jokaiselle taulukolle yhden rivin kotitalousavainta kohti, joka sisältää arvot kullekin ominaisuudellemme.
Kampanjan ominaisuudet
Tapahtuman ominaisuudet
Alla luomme joitain yksinkertaisia mittareita, jotka perustuvat aggregoituihin tilastoihin, kuten keskiarvoon, enimmäisarvoon ja keskihajontaan.
Väestötiedot
Tästä tietojoukosta puuttuu paljon tietoja, joten päätin käyttää imputointia tässä. Puuttuvien tietojen poistamiseen on olemassa monia tekniikoita puuttuvien tietojen pudottamista edistyneisiin imputointimenetelmiin. Olen juuri helpottanut elämää itselleni täällä ja korvannut puuttuvat arvot tilalla. En välttämättä suosittele tämän lähestymistavan käyttämistä yleisesti, koska näiden tietojen puuttumisen syyn ymmärtäminen on todella tärkeää päätettäessä, miten niitä käsitellään, mutta tämän esimerkin tarkoituksiin aion mennä eteenpäin ja käyttää helpompaa lähestymistapaa. Laskemme ensin kunkin ominaisuuden tilan ja käytämme sitten yhdistämistä korvataksemme jokaisen rivin tilalla, jos tietoja puuttuu.
Harjoittelutiedot
Lopuksi rakennamme kyselyn koulutustiedoistamme yhdistämällä päätaulukot yhteen ja päädymme taulukkoon, joka sisältää kohteen, kampanjamme, tapahtumat ja demografiset ominaisuudet, joita voimme käyttää mallin luomiseen.
Lyhyesti sanottuna, niille, jotka ovat kiinnostuneita oppimaan lisää Snowflaken ominaisuuksista ja vivahteista, suosittelen seuraavaa kirjaa: Lumihiutale keittokirja. Aloin lukea tätä kirjaa, ja se on täynnä todella hyödyllistä tietoa Snowflaken käytöstä, ja siinä käsitellään paljon yksityiskohtaisemmin kuin tässä.
Python-koodi ETL:lle
Viimeinen osa, jonka tarvitsemme tälle ETL:lle, on kirjoittaa komentosarja sen suorittamiseksi. Nyt tämä on todella tarpeen vain, jos aiot käyttää tällaista ETL:ää säännöllisesti, mutta tämä on hyvä käytäntö ja tekee ETL:n suorittamisesta paljon helpompaa tarvittaessa.
Keskustellaan lyhyesti EtlTraining-tunnin pääkomponenteista. Luokkamme ottaa yhden syötteen, joka on loppuviikko. Tämä johtuu tavasta, jolla tiedot on määritelty tietojoukossamme, mutta tavallisesti tämä olisi päivämäärämuodossa, joka vastaa katkaisupäivää, jonka haluamme valita harjoitustietojen luomiseksi.
Alustamme luettelon kyselyistämme, jotta voimme helposti selata niitä ja suorittaa ne. Luomme myös parametrimme sisältävän sanakirjan, jonka välitämme Snowflake-yhteyteemme. Tässä käytämme ympäristömuuttujia, jotka määritimme Saturn Cloudissa. Tässä on opas kuinka tämä tehdään. Yhdistäminen Snowflakeen ei ole liian vaikeaa, meidän tarvitsee vain käyttää Snowflake-liitintä ja välittää valtuustietosanakirjaamme. Toteutamme tämän Snowflake connect -menetelmässä ja palautamme tämän yhteyden attribuuttina.
Jotta nämä kyselyt olisivat hieman helpompia suorittaa, tallennan jokaisen kyselyn python-merkkijonomuuttujaksi ml_query_pipeline.py-tiedostoon. execute_etl-menetelmä tekee täsmälleen sen, mitä se sanoo tinalla. Käymme läpi jokaisen kyselyn, alustamme sen, suoritamme sen ja lopetamme sulkemalla Snowflake-yhteyden.
Tämän ETL:n suorittamiseksi voimme yksinkertaisesti kirjoittaa alla olevat komennot terminaaliin. (jossa ml_pipeline on yllä olevan komentosarjan nimi.)
python -m ml_pipeline -w 102 -j ‘train’
Lyhyesti sanottuna haluat todennäköisesti suorittaa tällaisen ETL:n säännöllisin väliajoin. Jos esimerkiksi haluat tehdä päivittäisiä ennusteita, sinun on luotava joka päivä tällainen tietojoukko, joka siirretään malliisi, jotta voit tunnistaa, ketkä asiakkaistasi todennäköisesti vaihtuvat. En mene tähän yksityiskohtaisesti tässä, mutta työssäni käytämme Airflow'ta ETL:ien järjestämiseen, joten suosittelen tutustumaan siihen, jos olet kiinnostunut. Itse asiassa ostin äskettäin kirjanDataputket Apache Airflow:lla' mikä on mielestäni hienoa ja antaa todella hyviä esimerkkejä ja neuvoja ilmavirran käyttämiseen.
Dask ja mallinnus
Nyt kun tietoputkistomme on rakennettu, voimme alkaa miettiä mallintamista. Toinen tämän postauksen päätavoite on tuoda esiin Daskin käytön edut osana ML-kehitysprosessia ja näyttää teille, kuinka helppoa se on käyttää.
Käytin myös tässä projektin osassa Saturnuksen pilvi joka on todella mukava työkalu, johon törmäsin äskettäin ja jonka avulla voimme hyödyntää Daskin tehoa pilvessä olevien tietokoneiden joukossa. Saturnin käytön tärkeimmät edut minulle ovat, että työsi jakaminen on todella helppoa, laskentaa on erittäin helppo skaalata tarpeen mukaan ja siinä on ilmainen tasovaihtoehto. Mallinkehitys yleisesti ottaen on todella hyvä käyttötapa Daskille, koska haluamme yleensä kouluttaa joukon erilaisia malleja ja nähdä, mikä toimii parhaiten. Mitä nopeammin voimme tehdä tämän, sitä paremmin meillä on enemmän aikaa keskittyä muihin mallinkehityksen tärkeisiin näkökohtiin. Kuten Snowflake, sinun tarvitsee vain rekisteröityä tätä ja voit nopeasti keksiä Jupyter Labin ja alkaa kokeilla sitä itse.
Nyt ymmärrän, että olen maininnut Daskin muutaman kerran, mutta en ole koskaan oikein selittänyt, mitä se on. Joten anna minun käyttää hetki antaakseni sinulle erittäin korkeatasoisen yleiskatsauksen Daskista ja siitä, miksi se on mielestäni mahtava. Yksinkertaisesti sanottuna Dask on python-kirjasto, joka hyödyntää rinnakkaislaskentaa, jotta voit käsitellä ja suorittaa toimintoja erittäin suurille tietojoukoille. Ja mikä parasta, jos olet jo perehtynyt Pythoniin, Daskin pitäisi olla hyvin suoraviivainen, koska syntaksi on hyvin samanlainen.
Alla oleva kaavio korostaa Daskin pääkomponentit.
Lähde: Dask-dokumentaatio
Kokoelmien avulla voimme luoda kaavion tehtävistä, jotka voidaan sitten suorittaa useissa tietokoneissa. Jotkut näistä tietorakenteista kuulostavat luultavasti melko tutuilta, kuten taulukot ja tietokehykset, ja ne ovat samankaltaisia kuin pythonissa, mutta niissä on joitain tärkeitä eroja. Voit esimerkiksi ajatella Dask-datakehystä joukona pandadatakehyksiä, jotka on rakennettu siten, että voimme suorittaa toimintoja rinnakkain.
Kokoelmista eteenpäin meillä on aikataulu. Kun olemme luoneet tehtäväkaavion, ajastin hoitaa loput puolestamme. Se hallitsee työnkulkua ja lähettää nämä tehtävät joko yhdelle koneelle tai jakaa ne klusterin kesken. Toivottavasti tämä antaa sinulle hyvin lyhyen yleiskatsauksen Daskin toiminnasta. Jos haluat lisätietoja, suosittelen tutustumaan dokumentointi tai tämän kirja. Molemmat ovat erittäin hyviä resursseja syventää tätä aihetta.
Python-koodi mallintamiseen
Mallinnuksessa minulla on yleensä pieni määrä go-to-algoritmeja, joita kokeilen aina ensin. Tämä antaa minulle yleensä hyvän käsityksen siitä, mikä voisi sopia tiettyyn ongelmaani. Nämä mallit ovat Logistic Regression, Random Forest ja GradientBoosting. Kokemukseni mukaan työskenneltäessä taulukkotietojen kanssa nämä algoritmit antavat yleensä melko hyviä tuloksia. Alla rakennetaan sklearn-mallinnusputki käyttämällä näitä kolmea mallia. Tässä käyttämämme tarkat mallit eivät ole todella tärkeitä, koska putkilinjan pitäisi toimia missä tahansa sklearn-luokitusmallissa, tämä on vain minun mieltymys.
Sukellaan koodiin ilman pitkiä puheita. Onneksi ulkoistimme suurimman osan esikäsittelystämme Snowflakelle, joten meidän ei tarvitse pelleillä liikaa harjoitusdataamme täällä, mutta lisäämme muutaman lisävaiheen käyttämällä sklearn-putkia.
Ensimmäinen koodinpätkä alla näyttää liukuhihnan käytettäessä sklearnia. Huomaa, että tietojoukkomme on pelkkä vanha pandatietokehys ja kaikki esikäsittelyvaiheemme suoritetaan sklearn-menetelmillä. Täällä ei tapahdu mitään erityisen poikkeavaa. Luemme tietojamme Snowflake ETL:n tuottamasta taulukosta ja siirrämme sen sklearn-putkiin. Tässä pätevät tavalliset mallintamisen vaiheet. Jaamme tietojoukon junaksi ja testaamme ja suoritamme esikäsittelyä, nimittäin imputoimme puuttuvat arvot mediaanin avulla, skaalaamme tiedot ja koodaamme kategorisen datamme. Olen suuri sklearn-putkien fani ja käytän niitä periaatteessa aina kun kehitän malleja nykyään, ne todella helpottavat puhdasta ja tiivistä koodia.
Kuinka tämä putki toimii noin 2 miljoonan rivin tietojoukossa? No, tämän mallin käyttäminen ilman hyperparametrien viritystä kestää noin 34 minuuttia. Oho, aika hidasta. Voit kuvitella kuinka kohtuuttoman kauan tämä kestäisi, jos haluaisimme tehdä minkä tahansa hyperparametrien virityksen. Ok, ei siis ihanteellista, mutta katsotaan kuinka Dask käsittelee haasteen.
Dask ML Python Code
Tavoitteemme tässä on nähdä, voimmeko voittaa yllä olevan sklearn-putken, spoilerihälytys, voimme varmasti. Hienoa Daskissa on se, että sisäänpääsyn este, kun olet jo perehtynyt pythoniin, on melko matala. Voimme saada tämän putkiston toimimaan Daskissa vain muutamalla muutoksella.
Ensimmäinen muutos, jonka todennäköisesti huomaat, on, että meillä on erilaisia tuontituotteita. Yksi tärkeimmistä eroista tämän putkilinjan ja edellisen välillä on se, että käytämme Dask-tietokehystä panda-datakehyksen sijaan mallimme harjoittamiseen. Voit ajatella Dask-datakehystä pandan tietokehyksinä, joissa voimme suorittaa laskelmia jokaiselle samaan aikaan. Tämä on Daskin rinnakkaisuuden ydin ja se lyhentää tämän putkilinjan koulutusaikaa.
Huomaa, että käytämme @dask.viivästynyt meidän sisustajana load_training_data toiminto. Tämä käskee Daskia rinnastamaan tämän funktion puolestamme.
Aiomme myös tuoda joitain esikäsittely- ja liukuhihnamenetelmiä Daskista, ja mikä tärkeintä, meidän on tuotava SaturnCluster, jonka avulla voimme luoda klusterin malliemme koulutukseen. Toinen keskeinen ero tähän koodiin on se, että käytämme sitä dask.persist junatestijaksomme jälkeen. Tätä ennen mitään funktioistamme ei ole laskettu Daskin laiskan arvioinnin vuoksi. Kun käytämme persist-menetelmää, käskemme Daskia lähettää tietomme työntekijöille ja suorittaa tähän asti luomamme tehtävät ja jättää nämä objektit klusteriin.
Lopuksi harjoittelemme mallejamme viivästetyllä menetelmällä. Jälleen tämä antaa meille mahdollisuuden luoda putkistomme laisalla tavalla. Liukulinjaa ei suoriteta ennen kuin saavutamme tämän koodin:
fit_pipelines = dask.compute(*pipelines_)
Tällä kertaa meillä kului vain noin 10 minuuttia tämän putkilinjan suorittamiseen täsmälleen samalla tietojoukolla. Se on 3.4-kertainen nopeus, ei liian nuhjuinen. Nyt, jos haluaisimme, voisimme nopeuttaa tätä vieläkin lisäämällä laskentaresurssejamme Saturnuksen napin painalluksella.
Putkilinjamme käyttöönotto
Mainitsin aiemmin, että haluat todennäköisesti käyttää tällaista putkistoa melko säännöllisesti käyttämällä jotain ilmavirtausta. Sattuu vain niin, että jos et halua alustavaa vaivaa kaiken asettamisesta ilmavirtausta varten, Saturn Cloud tarjoaa yksinkertaisen vaihtoehdon Jobsilla. Työpaikkojen avulla voimme pakata koodimme ja suorittaa sen säännöllisin väliajoin tai tarpeen mukaan. Sinun tarvitsee vain siirtyä olemassa olevaan projektiin ja napsauttaa Luo työ. Kun teemme sen, sen pitäisi näyttää tältä:
Lähde: Saturnus
Tästä eteenpäin meidän tarvitsee vain varmistaa, että yllä olevat python-tiedostomme ovat kuvan hakemistossa ja että voimme syöttää python-komentomme yllä
python -m ml_pipeline -w 102 -j 'train'
Voimme myös määrittää aikataulun käyttämällä cron-syntaksia ETL:n suorittamiseksi päivittäin, jos haluamme. Kiinnostuneille tässä on a oppitunti joka menee kaikkeen tyhmiin.
Johtopäätökset ja poimintoja
No, olemme saavuttaneet projektimme tässä vaiheessa. Nyt olen ilmeisesti jättänyt pois joitakin keskeisiä osia ML-kehityssyklistä, kuten hyperparametrien virityksen ja mallimme käyttöönoton, mutta ehkä jätän sen toiselle päivälle. Pitäisikö sinun mielestäni kokeilla Daskia? En ole millään tavalla asiantuntija, mutta tähän mennessä näkemäni perusteella se näyttää varmasti todella hyödylliseltä ja olen erittäin innoissani voidessani kokeilla sitä lisää ja löytää lisää mahdollisuuksia sisällyttää se päivittäiseen työhöni datatieteilijänä. Toivottavasti pidit tästä hyödyllisenä ja näet myös joitain Snowflaken ja Daskin etuja ja alat kokeilla niitä itse.
Esittelymateriaalit
- Dataputket Apache Airflow:lla
- Lumihiutale keittokirja
- Data Science mittakaavassa Pythonin ja Daskin kanssa
- Kurssi: SQL for Data Science
Jotkut muut postaukset saattavat kiinnostaa sinua
Rakennetaan suoratoistodataputki
Bayesilainen lähestymistapa aikasarjan ennustamiseen
Huomautus: Jotkut tämän viestin linkeistä ovat tytäryhtiölinkkejä.
Bio: Daniel Foley on entinen Economistista tullut datatutkija, joka työskentelee mobiilipelialalla.
Alkuperäinen. Postitettu luvalla.
Related:
Lähde: https://www.kdnuggets.com/2021/07/building-machine-learning-pipelines-snowflake-dask.html
- "
- &
- 102
- 2021
- pääsy
- Tili
- lisä-
- Etu
- neuvot
- Suosittelijaksi
- algoritmit
- Kaikki
- Amazon
- Apache
- ALUE
- noin
- auto
- PARAS
- Bitti
- rakentaa
- Rakentaminen
- Nippu
- Kampanja
- tapauksissa
- aiheutti
- haaste
- muuttaa
- tarkkailun
- luokittelu
- lähempänä
- pilvi
- koodi
- Koodaus
- komponentti
- Laskea
- tietokoneet
- tietojenkäsittely
- Coursera
- Luominen
- Valtakirja
- Asiakkaat
- tiedot
- tietojenkäsittely
- tietojen tutkija
- tietojoukko
- tietovarasto
- tietokanta
- päivä
- sopimus
- syvä oppiminen
- demografiset
- yksityiskohta
- kehittää
- Kehitys
- DID
- Johtaja
- tehokkuus
- Engineers
- ympäristö
- kokeilu
- Ominaisuudet
- Vihdoin
- loppu
- Etunimi
- Keskittää
- seurata
- muoto
- Ilmainen
- koko
- toiminto
- pelaamista
- Peliteollisuus
- general
- hyvä
- GPU
- suuri
- ohjaavat
- tätä
- Korkea
- Korostaa
- Miten
- Miten
- HTTPS
- valtava
- ajatus
- tunnistaa
- kuva
- Kasvaa
- teollisuus
- tiedot
- tiedot
- kysymykset
- IT
- Job
- Työpaikat
- yhdistää
- hypätä
- avain
- suuri
- OPPIA
- oppiminen
- Taso
- Kirjasto
- linja
- Lista
- kuormitus
- paikallinen
- Pitkät
- koneoppiminen
- Metrics
- miljoona
- ML
- Puhelinnumero
- Mobiilipelit
- malli
- liikkua
- nimittäin
- Uudet ominaisuudet
- Tarjoukset
- verkossa
- Operations
- Vaihtoehto
- Muut
- suorituskyky
- paljon
- Viestejä
- teho
- Ennusteet
- valmistettu
- tuottavuus
- projekti
- julkinen
- Python
- Lukeminen
- vähentää
- regressio
- Esittelymateriaalit
- REST
- tulokset
- ajaa
- juoksu
- Asteikko
- skaalaus
- tiede
- tutkijat
- Sarjat
- setti
- asetus
- Jaa:
- yhteinen
- Yksinkertainen
- pieni
- So
- SOLVE
- nopeus
- viettää
- menot
- Kierre
- jakaa
- SQL
- Vaihe
- Alkaa
- alkoi
- tilasto
- tarinat
- streaming
- Kohde
- testi
- Ajattelu
- aika
- ylin
- kosketa
- koulutus
- kauppa
- Liiketoimet
- oikeudenkäynti
- opetusohjelmat
- ui
- us
- Käyttäjät
- Virtual
- Varasto
- viikko
- Mikä on
- sisällä
- Referenssit
- työntekijöitä
- työnkulku
- toimii
- kirjoittaminen
- X
- vuotta