Leo Heinsuo, Machine Learning Engineer
11.08.2021

Olen ollut ML Engineerinä, eli koneoppimisinsinöörinä mukana eri alojen toimijoiden eri projekteissa. Koneoppimisen kannalta pilvipalvelut ovat erittäin oleellisessa osassa, sillä koneoppimismallien kehitys vaatii useimmiten paljon laskentatehoa, ajantasaista dataa, automaatiota sekä skaalautuvan jakelualustan. Laskentatehon saa pilviympäristöissä käyttöön muutamalla hiiren klikkauksella, mutta kaikki muu onkin sitten monimutkaisempaa. Tämä on poikkeuksetta johtanut siihen, että uusissa ML-projekteissa itse koneoppimismallien kehitys vie vain noin 10 % työajasta ja loput 90 % uppoaa pilviympäristöjen kehitykseen.


Kaikki alkaa yleensä siitä, että data on saatava pilveen. Pilvipalvelut skaalautuvat sekä ylös- että alaspäin, toisin kuin perinteiset kolkoissa konesaleissa raksuttavat paikalliset palvelimet. Tämän lisäksi kaikki toiminta on hajautettua, jolloin yhden (tai useammankaan) palvelimen kaatuminen ei estä toimintoja tai kadota tallennettua dataa, ja useampi käyttäjä voi hyödyntää palvelua samaan aikaan. Hyötyjä on monia, mutta ehkä kauneimpana etuna on se, että kun data on pilvessä, kaikki dataan liittyvät prosessit, kuten visualisointi, analytiikka yms., voidaan myös tehdä pilvessä – ikään kuin samassa paikassa.


Olemassa olevan datan siirto pilveen on vielä suhteellisen yksinkertaista, sillä pilvipalveluiden tietovarastot ovat joustavia ja siirtoon käytettäviä työkaluja on helposti saatavilla eri alustoilla. Relaatiotietokannat ja SQL elävät myös edelleen vahvasti pilvessä, joten vanhat rakenteet voidaan usein siirtää muuttumattomina pilveen.

Mitä kannattaa ja mitä ei kannata automatisoida


Oikea työ alkaa vasta siinä vaiheessa, kun aletaan niin sanotusti vetää piuhoja irti paikallisista toteutuksista ja tyrkätä niitä pilveen. Näitä piuhoja, eli datalähteitä ja -putkia on yleensä useita. Pilvipalveluiden avulla on mahdollista tehdä aivan uudenlaisia systeemejä, jotka voidaan kaikki alusta alkaen automatisoida. Jokaiselle pilvialustalle löytyy useita IaC, CI/CD, MLOps, ETL/ELT yms. -työkaluja ja toteutustapoja, joten propellihattu saattaa alkaa pyöriä päässä liiankin kovaa. Periaatteessa kaikki on mahdollista automatisoida, mutta käytännössä tärkeintä on havaita ne kohdat, jotka kannattaa automatisoida.


KISS-periaatteen (”Keep It Simple, Stupid”) mukaisesti olen sitä mieltä, että asiat kannattaa pitää mahdollisimman yksinkertaisena. Lääketietokeskuksen tiedolla johtamisen tiimissä olemmekin keskittyneet siihen, että saamme mahdollisimman paljon aikaan mahdollisimman pienellä kompleksisuudella ja vaivalla. Vahvuutemme on ollut Azuressa, joten olemme käyttäneet Azuren pilvipalveluja. Olin ennen Lääketietokeskukselle tuloa huomannut, että Databricks on helposti ymmärrettävä ja käytettävä alusta, joten aloimme käyttää Databricksia kehityksessä ja integraatiossa. Snowflake oli kumppanina toimineen Solteqin edustajlle tuttu, nopeaksi ja edulliseksi todettu sekä datamme oli SQL-muodossa, joten aloimme käyttää Snowflakea datavarastona. Uusi data pumpataan Snowflakeen eri lähteistä Azure Data Factoryn kautta, missä Databricks toimii myös tukena. Komponenttien määrä on pyritty pitämään pienenä ja niiden välinen vuorovaikutus selkeänä. Nämä valinnat perustuivat pääasiallisesti jokapäiväisen työn helpottamiseen, mutta ne luovat samalla pohjaa tulevaisuudensuunnitelmille. Uusia työkaluja ei ole valittu sen takia, että ne ovat uusia, vaan koska ne helpottavat meidän työtämme ja mahdollistavat uusien ratkaisujen luomista.


Leo Heinsuo
Machine Learning Engineer
Lääketietokeskus

Tutustu Lääketietokeskuksen tiedolla johtamisen palveluihin