3 redenen om CI/CD te implementeren binnen jouw Machine Learning-applicatie
CI/CD is een term binnen software engineering die de begrippen Continuous Integration (CI) en Continuous Delivery of Continuous Deployment (CD) aan elkaar knoopt. CI/CD zorgt voor automatisering van het bouwen, testen en in productie brengen van applicaties in een continu proces. Hiermee slaat het een brug tussen development en operations (DevOps). In dit blog lees je welke voordelen je kunt behalen door CI/CD specifiek toe te passen in het ontwikkelings- en productieproces van je Machine Learning (ML) applicatie.
Laten we beginnen met de termen Continuous Integration, Continuous Delivery en Continuous Deployment. Wat houden deze eigenlijk in?
Wat is Continuous Integration?
Wanneer software developers samen werken aan de hand van een gedeelde code repository, kunnen zij veel kleine aanpassingen maken in de code en deze doorvoeren. Als je op deze manier, dus meerdere keren per dag, aanpassingen in je product of applicatie kunt doorvoeren spreek je van Continuous Integration.
Wat is Continuous Delivery?
Bij Continuous Delivery automatiseer je het voortbrengen van aanpassingen in een applicatie naar een productieklare omgeving. Dit doe je door veranderingen door te voeren binnen een gedeelde code base. Om deze aanpassingen vervolgens in productie te brengen, moet je eerst wel nog handmatig goedkeuring geven.
Wat is Continuous Deployment?
Net als bij Continuous Delivery zorgt Continuous Deployment voor het geautomatiseerd voortbrengen van veranderingen in een applicatie naar een productieklare omgeving. Waar je bij Continous Delivery handmatig goedkeuring moet geven, is bij Continous Deployment het doorvoeren van veranderingen naar productie volledig geautomatiseerd.
(Bron: https://resources.github.com/ci-cd/)
Waarom is CI/CD belangrijk voor Machine Learning?
Zoals de definities hierboven al aangeven, zijn er meerdere voordelen te behalen uit het toepassen van CI/CD. Hieronder leg ik uit welke specifieke voordelen het oplevert als je CI/CD gebruikt in het ontwikkelings- en productieproces van je Machine Learning (ML) applicatie.
Voordeel 1: Automatisering met CI/CD zorgt voor besparing en inzicht
Automatisering zorgt ervoor dat de productiviteit van je proces omhoog gaat, er meer tijd overblijft voor developers om code te schrijven en de kosten van infrastructuur omlaag gaan. Daarnaast zorgt het voor professionalisering van je processen, omdat je werkt aan een robuuste, betrouwbare infrastructuur die geschikt is voor jouw applicatie of product. Door verschillende stappen in je productieketen te automatiseren, heb je de beschikking over een audit trail, waarmee je precies kunt herleiden in welke stap in de keten welke informatie is gebruikt en verwerkt.
Voor het ontwikkelen van je Machine Learning-applicatie betekent het inrichten van een robuuste CI/CD-infrastructuur dat het eenvoudiger wordt om stapsgewijs onderdelen van je applicatie te ontwikkelen en te automatiseren. Dit is mogelijk omdat developers werken aan de hand van een gedeelde code base. Door expertises van elkaar te onderscheiden kun je zo aan verschillende onderdelen van je Machine Learning-product werken.
Stel bijvoorbeeld dat je een Machine Learning-model naar je productieomgeving hebt gebracht en dit model continu wilt laten hertrainen aan de hand van een doorlopende stroom data. Data Engineers kunnen zich dan focussen op het creëren van ETL-flows die de geschikte set gegevens klaarzetten. Data Scientists kunnen dan met deze gegevens aan de slag om hun Machine Learning-model te ontwikkelen en te optimaliseren. Aan de hand van de continue stroom gegevens kunnen ML(OPS) Engineers vervolgens een proces inrichten, waarbij het ontwikkelde model continu opnieuw getraind wordt. Al deze expertises en componenten kunnen uitstekend aan elkaar gekoppeld worden aan de hand van een duidelijke CI/CD-infrastructuur en kunnen bijdragen aan de automatisering van de gehele ontwikkelingsketen van je Machine Learning-applicatie.
Voordeel 2: CI/CD zorgt voor betrouwbaarheid en veiligheid
In het Accelerate State of DevOps Report publiceert Google jaarlijks een overzicht van de verschillen tussen de best en minst presterende softwareteams van een groot aantal bedrijven. Uit het laatste State of DevOps-rapport blijkt dat bedrijven die CI/CD het beste weten toe te passen in hun processen, tot wel 6.570 keer sneller incidenten oplossen dan de minst presterende bedrijven. Bij een goede CI/CD-infrastructuur kun je eenvoudig een roll back in gang zetten, waarbij je naar een voorgaande versie van je model en proces kunt terugschakelen, indien nodig. Ook voor code die wordt doorgezet naar productie geldt bij de best presterende teams dat er tot 3x minder kans is op fouten of uitval van het product.
De betrouwbaarheid van je Machine Learning-applicatie kun je waarborgen door binnen verschillende stappen in de CI/CD-keten integratietests in te richten. Hiermee kun je bij het aanleveren van de data verschillende controles uitvoeren en eventuele problemen direct verhelpen. Is de hoeveelheid data bijvoorbeeld zoals verwacht, voldoet de structuur aan de gestelde eisen, blijft deze constant over de tijd etc. Bovendien voorkom je met deze tests dat incorrecte data in een vervolgstap in het proces terecht komt. Je kunt ook testen of nieuwe versies van je model wel beter presteren dan voorgaande productieversies en bijvoorbeeld de schaalbaarheid en capaciteit van je productiemodel controleren.
Stap voor stap bouw je zo aan een betrouwbaar en veilig proces dat iedere betrokken partij vertrouwen geeft in de beschikbaarheid en prestaties van jouw applicatie: van de ontwikkelaar tot aan de consument van je product.
Voordeel 3: CI/CD zorgt voor verhoogde deployment-frequentie
Een einddoel van het implementeren van CI/CD binnen een Machine Learning-applicatie is om de frequentie van het uitbrengen van nieuwe modellen te verhogen. Wanneer je model bijvoorbeeld afhankelijk is van het gedrag van consumenten, en dit gedrag zich over de tijd ontwikkelt, is het belangrijk dat ook het model dat in de productieomgeving draait zich hierop aanpast. Door de verschillende ontwikkelstappen van je model te implementeren in een CI/CD-pipeline kun je de deployment-frequentie verhogen.
Uit het hierboven genoemde State of DevOps rapport blijkt dat bedrijven die CI/CD het beste weten toe te passen in hun processen, tot wel 973 keer vaker nieuwe deployments uitvoeren dan bedrijven die het minst presteren op DevOps-gebied. Daarnaast weten de best presterende bedrijven hun code tot wel 6.570 keer sneller in hun productieomgeving te laten draaien vanaf het moment dat nieuwe code gecommit wordt.
Wanneer het aanleveren van nieuwe data, het hertrainen van een nieuw model en het implementeren van het model in je productieomgeving goed zijn ingericht via CI/CD, kunnen nieuwe deployments van je Machine Learning-applicatie regelmatig worden uitgevoerd. De frequentie van nieuwe deployments kun je vervolgens naar wens inrichten op basis van je product of veranderingen in het consumentengedrag. Een goede DevOps workflow kan de deployment frequentie van je ML applicatie dus aanzienlijk verhogen.
Zelfs het uitrollen van een nieuwe versie van je product of model kun je via een goede CI/CD-infrastructuur volledig automatiseren. Het inrichten van een Continuous Deployment proces kan je dan ook wel zien als een ultiem voorbeeld van DevOps automation.
Conclusie
Met de opkomst van clouddiensten en MLOPS gaat CI/CD een steeds belangrijkere rol spelen in het onderhouden, ontwikkelen en opschalen van Machine Learning-applicaties. Door de disciplines van CI/CD te verwerken in je infrastructuur kun je een groot gedeelte van je productieflow automatiseren. Hierbinnen kun je verschillende expertises laten samenkomen en los van elkaar verschillende componenten van je CI/CD-workflow ontwikkelen. Daarnaast zorg je voor meer betrouwbaarheid in je applicatie vanaf de ontwikkelaar tot aan de gebruiker en wordt het uitbrengen van een nieuwe versie van je product een stuk eenvoudiger.
Wil je eens van gedachten wisselen over de inrichting van CI/CD binnen jouw organisatie? Neem dan contact met ons op. Wij denken graag met je mee!