Maskinlærings­utvikler om hverdagen: - Kan ta to-tre dager å trene en modell

Hva gjør en "senior machine learning engineer" på jobb hver dag? Vi spør Iver Jordal i Nomono.

Iver Jordal jobber som machine learning engineer, eller maskinlæring-utvikler, hos Nomono. Som hjemmekontoret hans bærer preg av, handler det om lyd. 📸: Privat
Iver Jordal jobber som machine learning engineer, eller maskinlæring-utvikler, hos Nomono. Som hjemmekontoret hans bærer preg av, handler det om lyd. 📸: Privat Vis mer

Det er mange som føler at det går inflasjon i begrepet kunstig intelligens og AI.

- Begrepet er i dag er så utvannet og upresist at det nesten ikke har noe verdi, skrev for eksempel data scientist Nora Gjøen-Gjøsæter i Kantega på kode24 nylig.

Så la oss heller forholde oss til én av variantene: Maskinlæring.

Dette begrepet betyr noe, og det å være "machine learning engineer", maskinlæringsutvikler, ML-utvikler eller hva enn du enn kaller det, bør derfor også bety noe. I vår nye serie "Hva gjør en..?", hvor vi forklarer ulike roller og titler, har turen kommet til en maskinlæring-utvikler.

- Tittelen min er "senior machine learning engineer" på papiret, men jeg sier gjerne maskinlæringsperson i hverdagen, sier maskinlæringsperson Iver Jordal i Nomono til kode24.

Han er ikke alene om å jobbe med den slags i den norske lydtjenesten, og de andre kan ha titler som "research-" eller "development engineer", forteller Jordal.

Men hva gjør egentlig en utvikler som bare jobber med maskinlæring hele dagen? Hva gjør en "machine learning engineer"? Og er det det samme som en data scientist?

«Rollen innebærer blant annet å samle data, lage data, rense data...»

Aller først; hvordan havna du i rollen som machine learning engineer? 📚

Først studerte jeg musikkteknologi i to år, og så byttet jeg til en master i datateknikk, hvor jeg spesialiserte meg i kunstig intelligens.

Under studiene var jeg veldig interessert i full stack-utvikling, og tok på meg flere jobber innen det. Etter hvert ble jeg mer og mer interessert i maskinlæring og data science. Internett sa også at «Data Scientist» var «The Sexiest Job of the 21st Century», så jeg tenkte at det kunne vel ikke være helt feil å satse på det.

Nomono er et skybasert verktøy for å jobbe med lyd, blant annet til podcaster.
Nomono er et skybasert verktøy for å jobbe med lyd, blant annet til podcaster. Vis mer

I de første to jobbene mine hadde jeg tittelen data scientist. Hva er forskjellen på machine learning engineer og data scientist, spør du kanskje? Svaret du får er avhengig av hvem du spør.

Hvis man spør Google, får man kanskje et sånt svar:

"While data scientists primarily deal with algorithmic and model development, machine learning engineers’ key focus is on scalable software engineering relevant to model deployment and monitoring, the remaining tasks are often common to both profiles"

Hvordan fikk jeg jobben jeg har nå? Det var veilederen for masteroppgaven min som anbefalte meg til Sigurd Saue, som jeg kjente som foreleser på musikkteknologi. Han var da i ferd med å starte et mikrofonselskap i lag med to andre, og ambisjonene var store. Akkurat da var jeg ikke klar for å bytte jobb, men et år senere bestemte jeg meg for å satse på muligheten. Jeg er nå veldig fornøyd med at jeg har en jobb med en fot i begge leirer – både lyd og maskinlæring.

Sånn kan skjermen til machine learning engineer Iver Jordal se ut.
Sånn kan skjermen til machine learning engineer Iver Jordal se ut. Vis mer

Hva innebærer det å være en maskinlærings-utvikler? 💪

Jeg jobber med å lage programvare som analyserer og prosesserer lyd på en smart måte. Det kan for eksempel handle om å finne ut hvor i et lydopptak det er noen som snakker. Eller det kan være å fjerne støy fra et lydopptak.

Rollen innebærer blant annet å samle data, lage data, rense data, lage pipelines som genererer eksempler på lydopptak i forskjellige situasjoner, trene maskinlæringsmodeller som analyserer eller forbedrer lyd.

Jeg bruker også tid på å evaluere forskjellige modeller. Rollen handler også om å integrere modellene i en pipeline i en backend og passe på at alt fungerer som det skal. Jeg skriver Python-kode hver dag, og passer på å skrive tilstrekkelige mengder med tester.

Kontoret til maskinlæringsutvikler Iver Jordal hos Nomono. 📸: Privat
Kontoret til maskinlæringsutvikler Iver Jordal hos Nomono. 📸: Privat Vis mer

Maskinlæring er et felt som beveger seg relativt fort. Det som kanskje var den beste modellarkitekturen for et halvt år siden er ikke nødvendigvis det nå. Derfor bruker jeg også noe tid på å holde meg oppdatert på forskningen i feltet. Det innebærer å scrolle på Github, Twitter og å være til stede på diverse Slack Workspaces.

Der finner jeg ofte linker til interessante, nye repositories på Github og papers på Arxiv. På denne måten finner jeg stadig idéer og kode som jeg kan bli inspirert av eller bruke direkte. Noen ganger finner jeg en implementasjon av en ny teknikk som er beskrevet i et paper, men så trenger koden gjerne opptil flere uker med forbedringer før den kan prodsettes. For eksempel kan det handle om å gjøre koden raskere og mer robust, skrive tester, fjerne avhengigheter og gjøre koden kompatibel med nyere versjoner av biblioteker som brukes.

Jeg føler at jeg er en mellomting mellom forsker og generell utvikler. Jeg tenker ikke at jeg er ekspert i et bestemt fagområde, men at jeg forstår akkurat nok i de forskjellige feltene til å lage fornuftige løsninger. Selv om det kanskje høres imponerende ut at jeg kan ta i bruk den nyeste forskningen innen feltet, må jeg innrømme at jeg ikke forstår alle detaljene.

Hvordan ser en vanlig arbeidsdag ut for deg? 📅

Arbeidsdagen starter etter en forfriskende sykkeltur til kontoret. Vi setter av 10 minutter til standup klokka 9. Ellers sitter jeg stort sett og jobber i fokusmodus.

Jeg deler rom med tre kollegaer i teamet mitt, og det hender at vi diskuterer ting muntlig. Men det blir også en god del kommunikasjon gjennom Slack, selv om vi sitter i samme rom.

Vi har to-tre timer med møter annenhver uke relatert til sprinten. Det føles som en passe mengde. Jeg er glad for at jeg slipper å bruke mye tid i møter, for det betyr at jeg kan fokusere og være produktiv. Vi har ambisiøse planer, og da er det bra at vi får nok tid til å faktisk få ting gjort. Kudos til ledelsen i Nomono der altså.

Katter og lyd er begge deler noe Iver Jordal setter pris på. 📸: Privat
Katter og lyd er begge deler noe Iver Jordal setter pris på. 📸: Privat Vis mer

Hvilke verktøy og språk bruker du mest tid i som maskinlærings-utvikler? 💾

Vi bruker mye Python i teamet mitt. Jeg trives godt med det. Vi har også noen ting i C++, og da lager vi typisk også Python-wrapper, slik at vi kan kalle funksjonene fra Python.

Når det kommer til maskinlæring bruker vi Pytorch, MLflow og ONNX Runtime. I starten brukte vi gjerne Keras til prototyping, men så fant vi etter hvert ut at resten av verden stort sett brukte Pytorch til lydmodeller, så da bytta vi til det.

Jeg skriver koden min i IntelliJ IDEA.

Hva er det beste og verste ved å være en machine learning engineer, synes du? 💘

Det beste med rollen min er at jeg får følelsen av å være pionér – jeg må pløye upløyd mark for å løse utfordringene jeg møter.

For eksempel har jeg måttet lage et bibliotek for audio data augmentation fordi det ikke fantes en god løsning fra før. Dette er et sett med teknikker som er helt nødvendige for å få maskinlæringsmodellene til å fungere bra i den virkelige verden. Biblioteket heter audiomentations. Det ligger ute på Github, og er nå et av verdens mest populære bibliotek for audio data augmentation.

Vi får bruke tid på jobb til å videreutvikle det, fordi for det første er det veldig nyttig og viktig i maskinlæringsarbeidet vi gjør internt, men det er også nyttig for resten av verden. Det at det er open source betyr også at vi får bidrag fra andre utviklere, som gjør det enda bedre.

«Vi bruker ganske gode GPU-er på jobb, og uten de ville det kanskje ha tatt to-tre måneder i stedet.»

I maskinlæringsverdenen må man gjerne tallfeste hvor godt man løser en gitt utfordring, og da bør man være glad i tall. Jeg liker tall, og jeg liker å se at tallene stadig forbedrer seg. For å lage en maskinlæringsmodell, for eksempel en støyfjerner, i verdensklasse, må man like prosessen av å stadig forbedre den.

En ting jeg ikke liker med jobben min er at de store modellene trent på store datasett ofte tar lang tid å få trent. Det kan fort ta to-tre dager. Likevel må jeg legge til at det kunne ha vært verre – vi bruker ganske gode GPU-er på jobb, og uten de ville det kanskje ha tatt to-tre måneder i stedet. Men det koster å være kar - GPU-prisene har skutt i været i det siste, mye på grunn av chip-mangel og etterspørsel i markedet.

Jeg burde vel også si at små maskinlæringsmodeller trent på små datasett kan trenes på noen få sekunder, så det er ikke alltid slik at modelltrening tar lang tid.

- Jeg synes både arbeidsmarkedet og lønna er bra, forteller maskinlæringsutvikler Iver Jordal. 📸: Privat
- Jeg synes både arbeidsmarkedet og lønna er bra, forteller maskinlæringsutvikler Iver Jordal. 📸: Privat Vis mer

Hvorfor trenger rollen din å faktisk være en egen rolle? 🤷

Det er begrensa hvor mange ting en person kan være ekspert på.

For eksempel vil ikke utviklerne som jobber med frontend, backend og infrastruktur nødvendigvis ha kapasitet og kunnskap til å lage maskinlæringsmodeller i verdensklasse.

Derfor gir det mening å ha egne folk som har maskinlæring som hovedfokus. Men selv om maskinlæring er hovedfokuset mitt, føles rollen min allsidig. Det er en rolle hvor man trenger domenekunnskap, AI og generell utvikling.

Hvordan er lønna og arbeidsmarkedet for utviklere som jobber med maskinlæring? 💰

Jeg synes både arbeidsmarkedet og lønna er bra. Jeg har ikke hatt problemer å få meg jobb, og jeg har ikke følelsen av at jeg får for lite lønn.

Maskinlæring er i vinden, og det er jo ikke uten grunn. Det brukes til å gjøre produkter smartere og for å automatisere ikke-trivielle oppgaver. Det betyr at innovative selskaper gjerne er på utkikk etter utviklere med maskinlæringskompetanse.