7 min read

Spálíkön á fleygiferð

Spálíkön á fleygiferð

Spálíkön eru ennþá kúl og nú höfum við komið 10 ára reynslu í þróun spálíkana fyrir í heildarpakka. Með þessu getum við boðið betri lausnir á hagstæðara verði.

Síðustu mánuði höfum við hjá DataLab einbeitt okkur að því að þróa ramma - sem við köllum ML-template - sem gerir okkur kleift að endurnýta kóða markvissar milli predictive AI verkefna og bæta verklag með kerfisbundnum hætti. Rammanum er viðhaldið og hann þróaður áfram þannig þekking og reynsla yfirfærist með skilvirkari hætti á milli starfsfólks og teyma. 

Með því að nýta ML-template við þróun vélrænna gagnanámslausna getum við stytt þróunartíma verulega, unnið lausnirnar á öruggari og áreiðanlegri hátt en áður og jafnframt boðið þær á hagstæðara verði.

María Ármann, Stella Kristín Hallgrímsdóttir og Bergur Tareq Tamimi (sjá mynd) hafa unnið að þessu undanfarin misseri og skrifa hér um málið.

  

Færum orkuna frá uppsetningu yfir í ítrun

DataLab hefur safnað dýrmætri reynslu í þróun fjölbreyttra predictive AI lausna síðastliðinn áratug. Tæknin hefur þróast, verklag breyst og teymið stækkað og mikilvægi samræmdrar nálgunar orðið gríðarlegt. Með stöðluðu verklagi og endurnýtanlegum kóðagrunni tryggjum við öfluga innviði, skalanleika og traustan grunn fyrir hvert verkefni. Fyrir viðskiptavini þýðir þetta styttri leið frá hugmynd að lausn í rekstri, minni áhættu í innleiðingu og hagkvæmari þróun til lengri tíma. ML-template gerir okkur kleift að einfalda það sem má einfalda og verja í staðinn meiri tíma í kjarnastarf líkanþróunar; að prófa ólíkar nálganir, ítra líkön og hámarka frammistöðu lausnarinnar þannig hún skapi raunverulegt virði fyrir viðskiptavininn. 1b4c6858-ca73-4a93-ac68-f90671013b5a

Góður undirbúningur er lykilatriði

Áður en hafist er handa við þróun lausnar er mikilvægt að undirbúa jarðveginn vel. Umfang verkefna er afar misjafnt og í mörgum tilfellum fer umtalsverður tími í upphafi í að undirbúa gögnin þannig þau séu nægilega góð til að hægt sé að nýta þau við þróun lausnar. Svo hægt sé að meta umfang þessarar vinnu áður en þróun hefst höfum við sett saman staðlaðan spurningalista sem við sendum viðskiptavinum í upphafi verkefnis. Þar spyrjum við meðal annars hvar gögnin eru geymd, hvaða skýjaumhverfi eða innviðir eru notaðir, hvaða gagnasöfn liggja til grundvallar, hversu stór gögnin eru, hvenær þau eru uppfærð og hvort þekktir gallar eða takmarkanir séu til staðar.

Með svörin við þessum spurningum í höndunum getum við metið umfang og flækjustig verkefnis mun nákvæmar strax í upphafi og skipulagt næstu skref á traustari grunni.

Traustur grunnur með ML-template

Eftir að undirbúningi og afmörkun verkefnis er lokið er hægt að hefjast handa við þróun lausnar. Í stað þess að byrja með autt blað og byggja verkefnið upp frá grunni er ML-template grunnurinn sem við byggjum ofan á.

  

Template-ið byggir á Terraform og Databricks Asset Bundles og gerir okkur kleift að koma Databricks-innviðum hratt í gagnið. Áhersla er lögð á skýra aðgangsstýringu, hentugar cluster-stillingar, kostnaðarstýringu og öryggi frá fyrsta degi. Til að tryggja skalanlega vinnslu á miklu gagnamagni nýtum við Apache Spark, sem er meðal öflugustu lausna á markaðnum í dag. Template-ið nær utan um alla lykilþætti vélræns gagnanámsferlis; forvinnslu gagna (e. data preprocessing), breytusmíði (e. feature engineering), þjálfun líkana (e. model training), spár (e. model prediction) og mat á frammistöðu líkana (e. model evaluation). Með þessu móti er tryggt að hvert verkefni byggi á sama trausta grunninum, óháð umfangi eða eðli þess. Hér verður farið nánar út í hvert skref fyrir sig.

PLT 1920

Platform teymi DataLab sér um að allt keyri rétt

Forvinnsla gagna (e. data preprocessing)

Fyrsta skrefið í öllum predictive AI verkefnum er að skoða og skilja gögnin til þess að forvinnsla gagna sé bæði rétt og skilvirk. Til þess er mikilvægt að svara eftirfarandi spurningum:

  • Hversu stórt er gagnasafnið?
  • Vantar gögn?
  • Eru útlagar?
  • Hvernig er dreifing gagnanna?
  • Er fylgni (e. correlation)?
  • Er mismunun í flokkun (e. data imbalance)?

Í ML-template er til staðar umgjörð sem tryggir að þessum spurningum sé svarað áður en lengra er haldið, ásamt því að bregðast við á viðeigandi hátt.

Breytusmíði (e. feature engineering)

Þegar tryggt hefur verið að gögnin séu rétt unnin og tilbúin til áframhaldandi greiningar er næsta skref yfirleitt að þróa mælikvarða sem greina og varpa ljósi á mynstur í gögnunum. Í þeirri vinnu felst að meta hvaða mælikvarðar eru líklegir til að skila raunverulegum ávinningi og hverjir síður. Þótt val á mælikvörðum ráðist oft af eðli og markmiði hvers verkefnis fyrir sig er þó hægt að endurnýta ýmis hjálparföll milli verkefna.

Þar má nefna aðferðir eins og val á mælikvörðum (e. feature selection) og mat á mikilvægi þeirra (e. feature importance). Þessi verkfæri styðja við ákvarðanatöku um hvaða breytur hafi mesta forspárgildi. Með því að skilgreina slík föll sem hluta af ML-template er hægt að beita þeim strax í upphafi verkefnis og fá snemma vísbendingar um hvaða mælikvarðar lofa góðu. Þetta nýtist bæði sérfræðingum við að forgangsraða vinnu og viðskiptavinum þar sem það eykur gagnsæi og traust á niðurstöðum líkana.

Aðrir þættir sem auðvelt er að endurnýta milli verkefna eru verkfæri sem einfalda undirbúning mælikvarða fyrir þjálfun líkana. Þar má til dæmis nefna dulritun flokkabreytna (e. categorical encoding), skölun talnabreytna (e. scaling) og log-umbreytingu (e. log transformation).

IMG_3193

Við horfum bjartsýn fram á veginn því það eru ýmis tækifæri framundan

Þjálfun líkana (e. model training)

Þjálfun líkana er kjarninn í öllum predictive AI verkefnum. Það er ferlið þar sem reiknirit lærir mynstur úr gögnum svo það geti spáð fyrir um ný, óþekkt dæmi. Í upphafi hvers verkefnis er því mikilvægt að átta sig á því hvaða líkan hentar best hverju sinni til þess að hámarka gæði lausnar og nákvæmni spágilda. Slíkt ferli felur í sér prófun ólíkra líkana, ásamt því að velja viðeigandi stika (e. parameters) og meta frammistöðuna hverju sinni.

Til þess að geta haldið vel utan um það hvers konar líkön hafa verið prófuð, ásamt stikum og frammistöðu hefur verið settur upp klasi (e. class) sem við köllum ‘Model Logger’. Þessi klasi hefur pakkað inn föllum úr MLflow í Databricks og styður þannig við öll möguleg líkön, hvort sem þau byggjast á Apache Spark gagnasettum eða Pandas. MLflow er innbyggður vettvangur í Databricks sem er sérhæfður í því að halda utan um líkön og prófanir á líkönum, ásamt því að setja líkön í notkun (e. production) á einfaldan og skilvirkan hátt.

Með aðstoð MLflow getum við á einfaldari og markvissari hátt haldið utan um eftirfarandi þætti:

  • Prófun og tilraunir
    Frá upphafi verkefnis er haldið utan um öll líkön og allar keyrslur á kerfisbundinn hátt sem gerir okkur kleift að bera saman frammistöðu þeirra og greina hvaða nálganir skila bestum árangri. Þetta er sérstaklega gagnlegt þegar við erum að prófa mismunandi stika og stillingar, þar sem auðvelt er að sjá nákvæmlega hvaða breytingar hafa áhrif á niðurstöður. Jafnframt auðveldar þetta okkur að grípa aftur í eldri líkön, sé þess þörf, þar sem öll líkön eru vistuð á þægilegan og aðgengilegan hátt.
  • Frammistaða líkana og stillingar
    MLflow tryggir að allar upplýsingar um þjálfun líkans séu skráðar, þar á meðal hvaða mælikvarðar og stikar voru notaðir. Kerfið vistar einnig frammistöðu líkansins og viðeigandi viðauka (artefacts) á borð við gröf, töflur og önnur gögn. MLflow styður algeng líkön sjálfvirkt, þannig að viðeigandi mælikvarðar og viðaukar skráist sjálfkrafa, ásamt þeim sértæku mælikvörðum og gögnum sem sérfræðingar bæta við í þróunarferlinu.
  • Líkön í notkun
    Þegar ákveðið hefur verið hvaða líkan skuli taka í notkun er hægt að vista það í líkanaskrá (e. model registry) MLflow. Þar er auðvelt að nálgast líkanið, halda utan um útgáfur þess (e. version) og fylgjast með stöðu þess (e. stage), svo sem „Archive“, „Staging“ eða „Production“.
  • Aðgengi og samvinna
    Í flestum verkefnum eru fleiri en einn sérfræðingur að vinna að verkefninu hverju sinni. Með MLflow er tryggt að allir sérfræðingar hafi aðgang að öllum upplýsingum um líkönin - frammistöðu þeirra, stillingum og mælikvörðum. Þetta eykur gagnsæi, bætir samræmi í vinnubrögðum og stuðlar að skilvirkari samvinnu innan teymisins. 

Í ML- template hefur þessi Model Logger verið innleiddur sem virkjast sjálfkrafa þegar þjálfun líkana hefst. Kerfið heldur þá utan um öll líkön, bæði þau sem eru í virkri notkun og þau sem eru í þróun, án þess að sérfræðingur þurfi að grípa til sérstakra aðgerða.

Model Loggerinn tryggir jafnframt að hægt sé að hefja líkanaþróun strax, óháð því hvaða tól eða líkanarammi er notaður, hvort sem það er scikit-learn, XGBoost, Spark MLlib eða önnur sambærileg lausn.

Með þessari uppsetningu er búið að einfalda yfirsýn og eftirlit með líkönum í þróun, auðvelda samanburð á frammistöðu þeirra og styrkja utanumhald líkana sem komin eru í notkun.

Spár (e. model prediction)

Þegar líkan hefur verið sett í notkun er afar mikilvægt að vista niðurstöður þess með kerfisbundnum hætti. Með því er tryggt að unnt sé að mæla og fylgjast með frammistöðu líkansins yfir tíma, sem og að auka gagnsæi og rekjanleika líkana.

Með skipulögðu utanumhaldi um spágildi er hægt að bera saman spár við raungildi þegar þau liggja fyrir og meta þannig nákvæmni og stöðugleika líkansins. Jafnframt verður auðveldara að rekja ákvarðanir þess, greina hvers vegna tiltekin spá var gefin og skilja hvaða forsendur lágu þar að baki.

Í ML-template er þetta útfært með því að vista allar niðurstöður spálíkana á miðlægan hátt. Bæði eru geymd nýjustu spágildi og haldið utan um sögulegar niðurstöður til að tryggja heildstæða yfirsýn. Einnig er tryggt að hægt sé að rekja hverja spá til tiltekins líkans og ákveðinnar keyrslu, þannig að skýrt sé hvaða útgáfa og stillingar lágu að baki hverju spágildi. Þetta er útfært með viðeigandi töflum sem halda utan um tengingar milli líkana, keyrslna og niðurstaðna.

Mat á frammistöðu líkans (e. model evaluation)

Þegar líkan er komið í notkun (e. production) er mikilvægt að fylgjast vel með frammistöðu þess. Til þess hefur verið sett upp eftirlitsumgjörð (e. model monitoring) sem tryggir stöðugt eftirlit með líkani í notkun.

Eftirlitsumgjörðin fylgist með eftirfarandi þáttum:

  • Óvenjuleg inntaksgögn
    Lausnin fylgist með því hvort gögnin sem líkaninu berast séu í samræmi við væntingar. Þá er sérstaklega fylgst með því hvort öll inntaksgögn vanti eða hvort óvenjulega mikið af gögnum vanti, hvort spönn gagnanna sé gjörólík því sem sást í þjálfun eða hvort gögnin hafi verið uppfærð í samræmi við væntingar.
  • Breytinga á inntaksgögnum (e. data drift)
    Það getur komið fyrir að inntaksgögn breytist með tímanum í samanburði við þau gögn sem notuð voru við þjálfun líkans, t.d. vegna ytri áhrifa eins og breytinga á notendahegðun, árstíðaskipta eða óvæntra atburða (s.s. Covid faraldursins). Ef dreifing inntaksgagna breytist án þess að brugðist sé við, minnkar nákvæmni spár. Eftirlit og viðvörun áður en frammistaða dalar gerir okkur kleift að grípa til aðgerða og viðhalda góðri frammistöðu.
  • Breyting á sambandi inntaksbreyta og spábreytu (e. concept drift)
    Stundum breytist ekki aðeins dreifing inntaksgagna, heldur einnig tengsl þeirra við spábreytu. Breytur sem áður höfðu mikið vægi í spám geta misst áhrif sín. Dæmi um þetta má sjá í netveiðum, þar sem óprúttnir aðilar reyna stöðugt að breyta orðalagi og aðferðum sínum svo líkan sem var þjálfað á eldri gögnum verði sífellt ónákvæmara með tímanum. Ef þessu er ekki fylgst með heldur líkanið áfram að notast við gamalt mynstur og getur þá frammistöðu hrakað verulega. Með eftirliti og viðvörun er hægt að endurþjálfa líkan eða grípa til annarra ráðstafana þegar þörf krefur.
  • Breyting á frammistöðu líkans
    Mikilvægt er að fylgjast með frammistöðu líkans í rauntíma. Versnandi frammistaða getur stafað af breytingu á inntaksgögnum eða tengslum þeirra við spábreytu. Þegar slíkar breytingar koma fram viljum við vera meðvituð um það eins fljótt og auðið er og þannig geta gripið til viðeigandi aðgerða, svo sem endurþjálfun líkans, til að hámarka gæði lausnarinnar.

Þetta tryggir að líkanið haldi áfram að skila nákvæmum spám, bregðist rétt við breytingum í gögnum og versni ekki með tímanum. Með þessu er því hægt að tryggja áframhaldandi virði lausnarinnar fyrir viðskiptavini.

Tækifærin eru víða

Við hjá DataLab höfum mikinn metnað fyrir þróun predictive AI lausna. Hjá okkur hefur byggst upp víðtæk þekking og reynsla á þessu sviði við þróun lausna fyrir lykilstofnanir og framúrskarandi fyrirtæki. Sú vinna hefur kennt okkur að árangur í gervigreindarverkefnum snýst ekki aðeins um nákvæm líkön heldur jafnframt traustan tæknilegan grunn og skýra verkferla.

Hér á landi eru fjölmörg tækifæri til að nýta predictive AI með markvissari hætti og á þessi tækni enn eftir að skapa umtalsvert virði fyrir fyrirtæki og stofnanir landsins. Áhættumat, eftirlit og forspá eru dæmi um svið þar sem gervigreindarlausnir geta skapað verulegan ávinning með því að draga úr óvissu, áhættu og sóun í rekstri. Við hlökkum til að taka þátt í þeirri vegferð með þeim aðilum sem vilja byggja lausnir á traustum grunni og nýta gögn og gervigreind sem raunverulegan drifkraft í sinni starfsemi.

 

data_horiz (1)

 

Frá óvissu til árangurs í þróun gervigreindarlausna

Frá óvissu til árangurs í þróun gervigreindarlausna

Gervigreindarlausnir snúast í eðli sínu um að leysa hið ófyrirséða. Hvernig breytir það nálgun okkar á þróun þeirra? Sigurður Óli Árnason,...

Read More
Eru spálíkön hilluvara?

Eru spálíkön hilluvara?

Hversu langt er hægt að ganga í því að endurnýta kóða á milli spálíkana?

Read More
Bergur til DataLab

Bergur til DataLab

Fyrir nokkrum vikum hóf störf hjá DataLab afar snjall gagnaverkfræðingur (e. data engineer).

Read More