IMPLEMENTEREN
VAN MLOPS.

MLOps is een relatief jonge term die de laatste tijd steeds vaker opduikt. En niet voor niks! Gezien de huidige staat van data science is het relevant als hulpmiddel om data science processen effectiever, efficiënter, veiliger en betrouwbaarder te maken. Klinkt leuk, maar wat is MLOps precies, hoe werkt het en hoe kun je ermee starten? Of waarom zou je je er überhaupt druk om maken? Daar gaan we in dit blog eens dieper op in!

 

De staat van data science

Data Science is een vrij jong vakgebied en bij de meeste organisaties nog in ontwikkeling. De ene organisatie is verder dan de andere, maar in het algemeen is er een bepaalde trend te bespeuren:

Fase 1: het Lab

Het begint met een Lab: een knutselschuur voor alchemisten die met complexe algoritmen data omtoveren tot goud (althans, dat denken we).

Als blijkt dat er, op wat PowerPoints met interessante grafiekjes na, er eigenlijk nog geen waardevolle resultaten uit zijn gekomen, begint er wat druk te komen: er moeten resultaten komen, er moet worden opgeleverd!

 

Fase 2: in productie

Er is eindelijk een serieuze business case gevonden en een paar maanden later is er zowaar een voorspelmodel dat goed werkt. Vervolgens zijn er weliswaar nog 9 maanden aan code herschrijven, discussies met IT en architecten (target landscape, ondersteunde tooling, OTAP, security) overheen gegaan voordat het eindelijk in productie stond, maar goed: het staat, het loopt en het werkt! Hoera!

Totdat het ineens niet meer werkt. De voorspellingen zijn niet goed, gebruikers willen wat anders, of het proces blijkt een maand geleden te zijn stuk gelopen. Maar wie gaat dit doen? Jantje, die het model ooit had gebouwd, is al lang vertrokken. Pietje kan geen chocola maken van zijn ongedocumenteerde notebooks en concludeert na een aantal reparatiepogingen dat hij het beter maar ‘from scratch’ opnieuw kan maken.

 

Fase 3: volwassenheid

Na door schade en schande wijzer te zijn geworden, loopt alles nu als een geoliede machine. Of het nou het ophalen, inlezen en delen van data betreft, beheren van verschillende modelexperimenten, geautomatiseerd deployen AI-gedreven API’s en apps met CI/CD, het verklaren van voorspellingen… Elk teamlid doet het met een druk op de knop en een glimlach. Juist: dit is dus science fiction.

 

MLOps to the rescue

Als we bovenstaand scenario iets formeler samenvatten:

  • Fase 1: Experiment
    • Data science opereert geïsoleerd van Business en IT
    • Weinig concrete resultaten
    • Geen echte waarde geleverd
  • Fase 2: Live-gang
    • Output wordt in productie gezet
    • Maar beheer, monitoring, reproduceerbaarheid, veiligheid etc. nog niet ingericht
    • Eerste waarde wordt geleverd, maar is niet duurzaam
  • Fase 3: Volwassenheid
    • Processen zijn effectief, efficiënt, reproduceerbaar en veilig
    • Er wordt continu waarde geleverd

En daar komt MLOps om de hoek kijken: het is een manier om in fase 3 te komen.

 

Wat is MLOps?

 

“With Machine Learning Model Operationalization Management (MLOps), we want to provide an end-to-end machine learning development process to design, build and manage reproducible, testable, and evolvable ML-powered software.”

CDF sig-MLOps

 

the extension of the DevOps methodology to include Machine Learning and Data Science assets as first class citizens within the DevOps ecology

ook CDF sig-MLOps

 

“MLOps empowers data scientists and app developers to help bring ML models to production. MLOps enables you to track / version / audit / certify / re-use every asset in your ML lifecycle and provides orchestration services to streamline managing this lifecycle.”

Microsoft

 

Samengevat zou je kunnen zeggen: MLOps is DevOps maar dan voor machine learning / data science.

  • Bij DS/ML/AI ontwikkelen we uiteindelijk ook software
  • Dus kunnen we DevOps toepassen
  • Maar DS/ML/AI omvat meer dan software ontwikkeling: denk aan datasets, modellen, trainingsresultaten
  • Dus is er een uitbreiding nodig op DevOps: MLOps

 

Het doel van MLOps is:

Onze data science processen zijn

  • Effectief
  • Aantoonbaar effectief
  • Efficiënt (snel)
  • Reproduceerbaar
  • Veilig
  • Robuust/betrouwbaar
  • Gemakkelijk

Ok klinkt goed, een nieuwe toverformule… Dus als je MLOps roept verdwijnen alle data science problemen op magische wijze, net zoals agile eerder alle business problemen ging oplossen?

 

Wat is MLOps niet?

 

Alles is slecht  We introduceren MLOps  Alles is goed.

Geen toverspreuk dus.

  • Er zijn best practices, maar…
  • Je moet je eigen MLOps inrichten voor je eigen processen
  • afgestemd op je eigen behoeftes en prioriteiten

 

Maar nu even concreet

Nu even wat minder high level. Wat voor processen hebben we het over?

 

Data science life cycle

Bovenstaand schema is een brede beschouwing van de data science life cycle. Het bevat consultancy aspecten (m.n. de Define fase), engineering aspecten (bijv. Deploy fase) en ook de meer typische data science (Develop fase).

MLOps betreft met name het optimaliseren van de meer technische processen. Bijvoorbeeld:

  • Data version control
    Hoe houden we grip op (het creëren van en modellen trainen met) verschillende datasets?
  • Experiment management
    Hoe houden we grip op de vele modelleringsexpeirmenten (dataset + modeltype + variant + hyperparameters + score)?
  • Deployment & CI/CD
    Hoe zetten we modellen live in api’s of apps en hoe kunnen we ze snel updaten?
  • Explanation
    Hoe kunnen we modelvoorspellingen begrijpen en verklaren?
  • Monitoring
    Hoe kunnen we feedbackloops inrichten de werking in de praktijk monitoren?

 

Praktijkvoorbeeld 1

  • Pietje haalt data op met een SQL-query
  • Pietje stuurt een kopie door naar Marietje
  • Pietje & Marietje gaan modellen trainen op de dataset
  • Pietje verbetert zijn query en gaat met een nieuwe dataset verder
  • Marietje zit nog met de oude set te werken
  • Marietje heeft een transformatie in een notebook gedaan en haar dataset vervangen
  • Ontwikkelde modellen zijn nu afkomstig van 3 verschillende datasets

 

Oplossing 1: Dataset fixes netjes in de code opgenomen, zodat er een uniforme workflow ontstaat.

Oplossing 2: Data version control (voor als er echt meerdere datasets nodig zijn)

 

Praktijkvoorbeeld 2

Pietje’s workflow voor het trainen en evalueren van een nieuw model is als volgt:

  • Dataset downloaden en in mapje plaatsen
  • py draaien
  • In train.py alle code runnen van model 2 behalve alle plots
  • In eval.py regel aanpassen met model bestandsnaam en resultaten opslaan in nieuw bestandje

Deze werkwijze scoort slecht op reproduceerbaarheid, betrouwbaarheid en schaalbaarheid.

Oplossing: Gestandaardiseerde scripts + experiment management tool om trainingsresultaten te loggen.

 

Tooling

Zijn er tools voor MLOps? Zeker. Ze schieten zelfs als paddestoelen uit de grond. Sommige tools zijn breed en bieden functionaliteiten voor (vrijwel) de hele life cycle. Andere tools richten zich op een of meerdere specifieke onderdelen. Een greep uit de collectie:

 

Hoe te starten met MLOps?

Jeetje, nog meer tools… Alsof het nog niet ingewikkeld genoeg was. Moeten we daar ook al aan? Ja en nee.

Aan de ene kant: Ja, als je effectief wilt zijn moet je nou eenmaal investeren in professionalisering.

Aan de andere kant: Nee, ga niet zomaar extra tools binnenhalen met oplossingen die voor jou niet relevant zijn. Bovendien is veel op te lossen met slimmere processen en met gebruik van tools die je misschien al in huis hebt (git, Docker, template scripts).

Er is niet één juiste MLOps inrichting. De juiste inrichting is afgestemd op jouw eigen situatie: onderdelen die voor jou relevant zijn en knelpunten die bij jou spelen. De inrichting doe je niet in een keer, maar in stapjes. Pas een agile mindset toe op je MLOps inrichting:

  • bepaal je prioriteiten
  • los eerst één ding op, dan pas door met het volgende
  • evalueren en bijsturen

 

Een nog paar algemene tips en uitgangspunten:

  • Production mindset from the start
    • Vanaf het begin ingesteld zijn op hoe het in productie gaat, dan hoef je niks om te bouwen
    • Goede templates zijn het halve werk
  • datascience-as-code
    • Alles moet eenduidig reproduceerbaar (i.e. scriptable) zijn: modellen trainen, cloud resources aanmaken, Python-omgeving inrichten, preprocessing, deployment
  • Wees pragmatisch
    • Think big, but start small
    • Focus op wat relevant is voor jou