DevOps voor Machine Learning
DevOps en MLOps
DevOps wordt beschreven als de samenvoeging van mensen, processen en producten om continue levering van waarde aan onze eindgebruikers mogelijk te maken, door Donovan Brown in Wat is DevOps?.
Als u wilt weten hoe het wordt gebruikt bij het werken met machine learning-modellen, gaan we enkele essentiële DevOps-principes verder verkennen.
DevOps is een combinatie van hulpprogramma's en procedures die ontwikkelaars begeleiden bij het maken van robuuste en reproduceerbare toepassingen. Het doel van het gebruik van DevOps-principes is om snel waarde te leveren aan de eindgebruiker.
Als u eenvoudiger waarde wilt leveren door machine learning-modellen te integreren in pijplijnen voor gegevenstransformatie of realtime-toepassingen, profiteert u van het implementeren van DevOps-principes. Als u meer te weten komt over DevOps, kunt u uw werk organiseren en automatiseren.
Het maken, implementeren en bewaken van robuuste en reproduceerbare modellen om waarde te leveren aan de eindgebruiker is het doel van machine learning-bewerkingen (MLOps).
Er zijn drie processen die we willen combineren wanneer we het hebben over machine learning-bewerkingen (MLOps):
ML bevat alle machine learning-workloads waarvoor een data scientist verantwoordelijk is. Een data scientist doet het volgende:
- Verkennende gegevensanalyse (EDA)
- Functie-engineering
- Modeltraining en afstemming
DEV verwijst naar de softwareontwikkeling, waaronder:
- Plan: Definieer de vereisten en metrische prestatiegegevens van het model.
- Maken: Maak de modeltrainings- en scorescripts.
- Controleren: controleren op code- en modelkwaliteit.
- Pakket: Bereid u voor op implementatie door de oplossing te faseren.
OPS verwijst naar bewerkingen en omvat:
- Release: Implementeer het model in productie.
- Configureren: Infrastructuurconfiguraties standaardiseren met Infrastructure as Code (IaC).
- Monitor: Houd metrische gegevens bij en zorg ervoor dat het model en de infrastructuur naar verwachting presteren.
Laten we enkele DevOps-principes doorlopen die essentieel zijn voor MLOps.
DevOps-principes
Een van de belangrijkste principes van DevOps is automatisering. Door taken te automatiseren, streven we ernaar om nieuwe modellen sneller in productie te krijgen. Door automatisering maakt u ook reproduceerbare modellen die betrouwbaar en consistent zijn in omgevingen.
Vooral wanneer u uw model na verloop van tijd regelmatig wilt verbeteren, kunt u met automatisering snel alle benodigde activiteiten uitvoeren om ervoor te zorgen dat het model in productie altijd het best presterende model is.
Een belangrijk concept voor automatisering is CI/CD, dat staat voor continue integratie en continue levering.
Continue integratie
Continue integratie omvat het maken en verifiëren van activiteiten. Het doel is om de code te maken en de kwaliteit van zowel de code als het model te controleren door geautomatiseerde tests uit te voeren.
Met MLOps kan continue integratie het volgende omvatten:
- Verkennende code in Jupyter-notebooks herstructureren in Python- of R-scripts.
- Linting om te controleren op programmatische of stilistische fouten in de Python- of R-scripts. Controleer bijvoorbeeld of een regel in uw script minder dan 80 tekens bevat.
- Eenheidstests om de prestaties van de inhoud van de scripts te controleren. Controleer bijvoorbeeld of het model nauwkeurige voorspellingen genereert voor een testgegevensset.
Tip
Meer informatie over het converteren van machine learning-experimenten naar Python-productiecode
Als u linting en eenheidstests wilt uitvoeren, kunt u automatiseringshulpprogramma's zoals Azure Pipelines in Azure DevOps of GitHub Actions gebruiken.
Continue levering
Nadat u de codekwaliteit hebt gecontroleerd van de Python- of R-scripts die worden gebruikt om het model te trainen, moet u het model naar productie brengen. Continue levering omvat de stappen die u moet nemen om een model in productie te implementeren, bij voorkeur zoveel mogelijk automatiseren.
Als u een model wilt implementeren in productie, moet u het eerst verpakken en implementeren in een preproductieomgeving. Door het model in een preproductieomgeving te faseren, kunt u controleren of alles werkt zoals verwacht.
Zodra de implementatie van het model in de faseringsfase is geslaagd en zonder fouten, kunt u goedkeuren dat het model wordt geïmplementeerd in de productieomgeving.
Als u wilt samenwerken aan de Python- of R-scripts om het model en de benodigde code te trainen om het model in elke omgeving te implementeren, gebruikt u broncodebeheer.
Bronbeheer
Broncodebeheer (of versiebeheer) wordt meestal bereikt door te werken met een Git-opslagplaats. Een opslagplaats verwijst naar de locatie waar alle relevante bestanden naar een softwareproject kunnen worden opgeslagen.
Met machine learning-projecten hebt u waarschijnlijk een opslagplaats voor elk project dat u hebt. De opslagplaats bevat onder andere Jupyter-notebooks, trainingsscripts, scorescripts en pijplijndefinities.
Notitie
Bij voorkeur slaat u geen trainingsgegevens op in uw opslagplaats. In plaats daarvan worden trainingsgegevens opgeslagen in een database of data lake en Azure Machine Learning haalt de gegevens rechtstreeks uit de gegevensbron op met behulp van gegevensarchieven.
Git-opslagplaatsen zijn beschikbaar met behulp van Azure-opslagplaatsen in Azure DevOps of een GitHub-opslagplaats.
Door alle relevante code in een opslagplaats te hosten, kunt u eenvoudig samenwerken aan code en eventuele wijzigingen bijhouden die een teamlid aanbrengt. Elk lid kan aan hun eigen versie van de code werken. U kunt alle eerdere wijzigingen bekijken en u kunt wijzigingen controleren voordat ze worden doorgevoerd in de hoofdopslagplaats.
Als u wilt bepalen wie aan welk deel van het project werkt, is het raadzaam om agile planning te gebruiken.
Flexibele planning
Omdat u wilt dat een model snel in productie wordt geïmplementeerd, is agile planning ideaal voor machine learning-projecten.
Agile planning betekent dat u werk in sprints isoleert. Sprints zijn korte perioden waarin u een deel van de doelstellingen van het project wilt behalen.
Het doel is om sprints te plannen om snel een van de code te verbeteren. Of het nu gaat om code die wordt gebruikt voor gegevens- en modelverkenning of voor het implementeren van een model in productie.
Het trainen van een machine learning-model kan een nooit eindigend proces zijn. Als data scientist moet u bijvoorbeeld mogelijk de prestaties van het model verbeteren vanwege gegevensdrift. Of u moet het model aanpassen om beter af te stemmen op nieuwe bedrijfsvereisten.
Om te voorkomen dat u te veel tijd besteedt aan modeltraining, kan Agile-planning helpen om het project te beperken en iedereen op elkaar af te stemmen door akkoord te gaan met de resultaten op de kortere termijn.
Als u uw werk wilt plannen, kunt u een hulpprogramma zoals Azure Boards in Azure DevOps of GitHub-problemen gebruiken.
Infrastructuur als code (IaC)
Het toepassen van DevOps-principes op machine learning-projecten betekent dat u robuuste reproduceerbare oplossingen wilt maken. Met andere woorden, alles wat u doet of maakt, moet u kunnen herhalen en automatiseren.
Als u de infrastructuur wilt herhalen en automatiseren die nodig is om uw model te trainen en te implementeren, gebruikt uw team Infrastructure as Code (IaC). Wanneer u modellen traint en implementeert in Azure, betekent IaC dat u alle Azure-resources definieert die nodig zijn in het proces in code en dat de code wordt opgeslagen in een opslagplaats.
Tip
Vertrouwd raken met DevOps door de Microsoft Learn-modules te verkennen op het DevOps-transformatietraject