Zephyrnet-logo

Hoe VMware een MLOps-pijplijn vanaf nul heeft opgebouwd met GitLab, Amazon MWAA en Amazon SageMaker

Datum:

Dit bericht is geschreven in samenwerking met Mahima Agarwal, Machine Learning Engineer, en Deepak Mettem, Senior Engineering Manager, bij VMware Carbon Black

VMware carbonzwart is een gerenommeerde beveiligingsoplossing die bescherming biedt tegen het volledige spectrum van moderne cyberaanvallen. Met terabytes aan gegevens die door het product worden gegenereerd, richt het beveiligingsanalyseteam zich op het bouwen van machine learning (ML)-oplossingen om kritieke aanvallen aan het licht te brengen en opkomende bedreigingen door ruis onder de aandacht te brengen.

Het is van cruciaal belang voor het VMware Carbon Black-team om een โ€‹โ€‹aangepaste end-to-end MLOps-pijplijn te ontwerpen en te bouwen die workflows in de ML-levenscyclus orkestreert en automatiseert en modeltraining, evaluaties en implementaties mogelijk maakt.

Er zijn twee hoofddoelen voor het bouwen van deze pijplijn: ondersteuning van de datawetenschappers voor modelontwikkeling in een laat stadium, en oppervlaktemodelvoorspellingen in het product door modellen in grote hoeveelheden en in real-time productieverkeer aan te bieden. Daarom kozen VMware Carbon Black en AWS ervoor om een โ€‹โ€‹aangepaste MLOps-pijplijn te bouwen met behulp van Amazon Sage Maker vanwege het gebruiksgemak, de veelzijdigheid en de volledig beheerde infrastructuur. We orkestreren onze ML-trainings- en implementatiepijplijnen met behulp van Door Amazon beheerde workflows voor Apache Airflow (Amazon MWAA), waardoor we ons meer kunnen richten op het programmatisch schrijven van workflows en pijplijnen zonder dat we ons zorgen hoeven te maken over automatisch schalen of infrastructuuronderhoud.

Met deze pijplijn is wat ooit Jupyter-notebookgestuurd ML-onderzoek was, nu een geautomatiseerd proces dat modellen implementeert voor productie met weinig handmatige tussenkomst van datawetenschappers. Vroeger kon het proces van trainen, evalueren en implementeren van een model meer dan een dag in beslag nemen; met deze implementatie is alles slechts een trigger verwijderd en is de totale tijd teruggebracht tot enkele minuten.

In dit bericht bespreken VMware Carbon Black- en AWS-architecten hoe we aangepaste ML-workflows hebben gebouwd en beheerd met behulp van Gitlab, Amazon MWAA en SageMaker. We bespreken wat we tot nu toe hebben bereikt, verdere verbeteringen aan de pijplijn en de lessen die we onderweg hebben geleerd.

Overzicht oplossingen

Het volgende diagram illustreert de architectuur van het ML-platform.

Oplossingsontwerp op hoog niveau

Oplossingsontwerp op hoog niveau

Dit ML-platform is bedacht en ontworpen om te worden gebruikt door verschillende modellen in verschillende coderepository's. Ons team gebruikt GitLab als tool voor broncodebeheer om alle coderepository's te onderhouden. Alle wijzigingen in de broncode van de modelrepository worden continu geรฏntegreerd met behulp van de Gitlab-CI, die de volgende werkstromen in de pijplijn aanroept (modeltraining, evaluatie en implementatie).

Het volgende architectuurdiagram illustreert de end-to-end workflow en de componenten die betrokken zijn bij onze MLOps-pijplijn.

End-to-end-workflow

End-to-end-workflow

De pijplijnen voor training, evaluatie en implementatie van het ML-model worden georkestreerd met behulp van Amazon MWAA, ook wel een Gerichte Acyclische grafiek (DAG). Een DAG is een verzameling taken samen, georganiseerd met afhankelijkheden en relaties om te zeggen hoe ze moeten worden uitgevoerd.

Op een hoog niveau omvat de oplossingsarchitectuur drie hoofdcomponenten:

  • ML-pijplijncodeopslagplaats
  • Pijplijn voor training en evaluatie van ML-model
  • ML-modelimplementatiepijplijn

Laten we bespreken hoe deze verschillende componenten worden beheerd en hoe ze met elkaar omgaan.

ML-pijplijncodeopslagplaats

Nadat de modelrepo de MLOps-repo als hun downstream-pijplijn heeft geรฏntegreerd en een datawetenschapper code in hun model-repo heeft vastgelegd, voert een GitLab-runner de standaardcodevalidatie en -test uit die in die repo zijn gedefinieerd en activeert de MLOps-pijplijn op basis van de codewijzigingen. We gebruiken de pijplijn voor meerdere projecten van Gitlab om deze trigger voor verschillende repo's mogelijk te maken.

De MLOps GitLab-pijplijn voert een bepaalde reeks fasen uit. Het voert basiscodevalidatie uit met behulp van pylint, verpakt de trainings- en inferentiecode van het model in de Docker-image en publiceert de containerimage naar Amazon Elastic Container-register (Amazone ECR). Amazon ECR is een volledig beheerd containerregister dat krachtige hosting biedt, zodat u overal op betrouwbare wijze applicatie-images en artefacten kunt implementeren.

Pijplijn voor training en evaluatie van ML-model

Nadat de afbeelding is gepubliceerd, worden de training en evaluatie geactiveerd Apache-luchtstroom pijpleiding door de AWS Lambda functie. Lambda is een serverloze, gebeurtenisgestuurde rekenservice waarmee u code kunt uitvoeren voor vrijwel elk type applicatie of backend-service zonder servers in te richten of te beheren.

Nadat de pijplijn met succes is geactiveerd, voert deze de Training and Evaluation DAG uit, die op zijn beurt de modeltraining in SageMaker start. Aan het einde van deze trainingspijplijn krijgt de geรฏdentificeerde gebruikersgroep een melding met de trainings- en modelevaluatieresultaten via e-mail Amazon eenvoudige meldingsservice (Amazon SNS) en Slack. Amazon SNS is een volledig beheerde pub/sub-service voor A2A- en A2P-berichten.

Na zorgvuldige analyse van de evaluatieresultaten kan de datawetenschapper of ML-engineer het nieuwe model implementeren als de prestaties van het nieuw getrainde model beter zijn in vergelijking met de vorige versie. De prestaties van de modellen worden geรซvalueerd op basis van de modelspecifieke statistieken (zoals F1-score, MSE of verwarringsmatrix).

ML-modelimplementatiepijplijn

Om de implementatie te starten, start de gebruiker de GitLab-taak die de Deployment DAG activeert via dezelfde Lambda-functie. Nadat de pijplijn met succes is uitgevoerd, wordt het SageMaker-eindpunt gemaakt of bijgewerkt met het nieuwe model. Dit verzendt ook een melding met de eindpuntdetails via e-mail met behulp van Amazon SNS en Slack.

In het geval van een storing in een van de pijplijnen worden gebruikers via dezelfde communicatiekanalen op de hoogte gebracht.

SageMaker biedt real-time inferentie die ideaal is voor inferentie-workloads met lage latentie en hoge doorvoervereisten. Deze endpoints worden volledig beheerd, load-balanced en automatisch geschaald, en kunnen worden geรฏmplementeerd in meerdere beschikbaarheidszones voor hoge beschikbaarheid. Onze pijplijn creรซert zo'n eindpunt voor een model nadat het succesvol is uitgevoerd.

In de volgende paragrafen gaan we dieper in op de verschillende componenten en duiken we in de details.

GitLab: pakketmodellen en triggerpijplijnen

We gebruiken GitLab als onze coderepository en voor de pijplijn om de modelcode te verpakken en stroomafwaartse Airflow DAG's te activeren.

Pijplijn met meerdere projecten

De GitLab-pijplijnfunctie voor meerdere projecten wordt gebruikt wanneer de bovenliggende pijplijn (stroomopwaarts) een modelopslagplaats is en de onderliggende pijplijn (stroomafwaarts) de MLOps-opslagplaats is. Elke repo onderhoudt een .gitlab-ci.yml en het volgende codeblok dat is ingeschakeld in de stroomopwaartse pijplijn activeert de stroomafwaartse MLOps-pijplijn.

trigger: project: path/to/ml-ops branch: main strategy: depend

De stroomopwaartse pijplijn stuurt de modelcode naar de stroomafwaartse pijplijn waar de CI-taken voor het verpakken en publiceren worden geactiveerd. Code om de modelcode te containeriseren en te publiceren naar Amazon ECR wordt onderhouden en beheerd door de MLOps-pijplijn. Het verzendt de variabelen zoals ACCESS_TOKEN (kan worden gemaakt onder Instellingen, Toegang tot), JOB_ID (om toegang te krijgen tot stroomopwaartse artefacten) en $CI_PROJECT_ID (de project-ID van modelrepo) variabelen, zodat de MLOps-pijplijn toegang heeft tot de modelcodebestanden. Met de baan artefacten functie van Gitlab, krijgt de downstream repo toegang tot de externe artefacten met behulp van de volgende opdracht:

curl --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"

De modelrepo kan stroomafwaartse pijplijnen voor meerdere modellen van dezelfde repo gebruiken door de fase die deze triggert uit te breiden met behulp van de strekt sleutelwoord van GitLab, waarmee u dezelfde configuratie in verschillende stadia kunt hergebruiken.

Na het publiceren van de modelafbeelding naar Amazon ECR, activeert de MLOps-pijplijn de Amazon MWAA-trainingspijplijn met behulp van Lambda. Na goedkeuring door de gebruiker activeert het ook de modelimplementatie van de Amazon MWAA-pijplijn met dezelfde Lambda-functie.

Semantische versiebeheer en downstream doorgeven van versies

We hebben aangepaste code ontwikkeld om ECR-afbeeldingen en SageMaker-modellen te versieren. De MLOps-pijplijn beheert de semantische versiebeheerlogica voor afbeeldingen en modellen als onderdeel van de fase waarin modelcode wordt gecontaineriseerd, en geeft de versies door aan latere fasen als artefacten.

Omscholing

Omdat omscholing een cruciaal aspect is van een ML-levenscyclus, hebben we omscholingsmogelijkheden geรฏmplementeerd als onderdeel van onze pijplijn. We gebruiken de SageMaker-lijstmodellen-API om te identificeren of het opnieuw trainen is op basis van het versienummer en het tijdstempel van het opnieuw trainen van het model.

We beheren de dagelijkse planning van de omscholingspijplijn met behulp van De planningspijplijnen van GitLab.

Terraform: Infrastructuur instellen

Naast een Amazon MWAA-cluster, ECR-repositories, Lambda-functies en SNS-topic, gebruikt deze oplossing ook AWS Identiteits- en toegangsbeheer (IAM) rollen, gebruikers en beleid; Amazon eenvoudige opslagservice (Amazon S3) emmers, en een Amazon Cloud Watch logboek doorstuurserver.

Om de installatie en het onderhoud van de infrastructuur voor de betrokken services in onze hele pijplijn te stroomlijnen, gebruiken we Terraform om de infrastructuur als code te implementeren. Telkens wanneer infra-updates vereist zijn, activeren de codewijzigingen een GitLab CI-pijplijn die we hebben opgezet, die de wijzigingen valideert en implementeert in verschillende omgevingen (bijvoorbeeld door een machtiging toe te voegen aan een IAM-beleid in dev-, stage- en prod-accounts).

Amazon ECR, Amazon S3 en Lambda: Pipeline-facilitering

We gebruiken de volgende belangrijke services om onze pijplijn te faciliteren:

  • Amazon ECR โ€“ Om de afbeeldingen van de modelcontainers te onderhouden en gemakkelijk op te halen, taggen we ze met semantische versies en uploaden we ze naar ECR-repository's die per ${project_name}/${model_name} via Terraform. Dit zorgt voor een goede isolatielaag tussen verschillende modellen en stelt ons in staat om aangepaste algoritmen te gebruiken en deductieverzoeken en -antwoorden op te maken om de gewenste modelmanifestinformatie op te nemen (modelnaam, versie, trainingsgegevenspad, enzovoort).
  • Amazon S3 - We gebruiken S3-buckets om modeltrainingsgegevens, getrainde modelartefacten per model, Airflow DAG's en andere aanvullende informatie die vereist is voor de pijplijnen, te behouden.
  • Lambda โ€“ Omdat ons Airflow-cluster uit veiligheidsoverwegingen in een afzonderlijke VPC is geรฏmplementeerd, zijn de DAG's niet rechtstreeks toegankelijk. Daarom gebruiken we een Lambda-functie, ook onderhouden met Terraform, om alle DAG's te activeren die worden gespecificeerd door de DAG-naam. Met de juiste IAM-configuratie activeert de GitLab CI-taak de Lambda-functie, die de configuraties doorloopt tot aan de gevraagde trainings- of implementatie-DAG's.

Amazon MWAA: pijplijnen voor training en implementatie

Zoals eerder vermeld, gebruiken we Amazon MWAA om de trainings- en implementatiepijplijnen te orkestreren. We gebruiken SageMaker-operators die beschikbaar zijn in de Amazon-providerpakket voor Airflow om te integreren met SageMaker (om jinja-templating te vermijden).

We gebruiken de volgende operators in deze trainingspijplijn (weergegeven in het volgende workflowdiagram):

MWAA-trainingspijplijn

MWAA-trainingspijplijn

We gebruiken de volgende operators in de implementatiepijplijn (weergegeven in het volgende workflowdiagram):

Modelimplementatiepijplijn

Modelimplementatiepijplijn

We gebruiken Slack en Amazon SNS om de fout-/succesberichten en evaluatieresultaten in beide pijplijnen te publiceren. Slack biedt een breed scala aan opties om berichten aan te passen, waaronder de volgende:

  • SnsPublishOperator - We gebruiken SnsPublishOperator om succes-/mislukkingsmeldingen naar e-mails van gebruikers te sturen
  • Slack-API - We hebben de inkomende webhook-URL om de pijplijnmeldingen naar het gewenste kanaal te krijgen

CloudWatch en VMware Wavefront: Monitoring en logging

We gebruiken een CloudWatch-dashboard om endpoint monitoring en logging te configureren. Het helpt bij het visualiseren en bijhouden van verschillende operationele en modelprestatiestatistieken die specifiek zijn voor elk project. Bovenop het beleid voor automatisch schalen dat is ingesteld om sommige ervan bij te houden, monitoren we continu de veranderingen in CPU- en geheugengebruik, verzoeken per seconde, reactielatenties en modelstatistieken.

CloudWatch is zelfs geรฏntegreerd met een VMware Tanzu Wavefront-dashboard, zodat het de statistieken voor modeleindpunten en andere services op projectniveau kan visualiseren.

Zakelijke voordelen en de toekomst

ML-pijplijnen zijn zeer cruciaal voor ML-services en -functies. In dit bericht hebben we een end-to-end ML-use-case besproken met behulp van mogelijkheden van AWS. We hebben een aangepaste pijplijn gebouwd met behulp van SageMaker en Amazon MWAA, die we kunnen hergebruiken in projecten en modellen, en hebben de ML-levenscyclus geautomatiseerd, waardoor de tijd van modeltraining tot productie-implementatie werd teruggebracht tot slechts 10 minuten.

Met de verschuiving van de ML-levenscycluslast naar SageMaker, bood het een geoptimaliseerde en schaalbare infrastructuur voor de modeltraining en -implementatie. Modelserving met SageMaker heeft ons geholpen realtime voorspellingen te doen met latenties van milliseconden en monitoringmogelijkheden. We gebruikten Terraform vanwege het installatiegemak en het beheer van de infrastructuur.

De volgende stappen voor deze pijplijn zijn het verbeteren van de pijplijn voor modeltraining met hertrainingsmogelijkheden, of het nu gepland is of gebaseerd op detectie van modelafwijkingen, ondersteuning van schaduwimplementatie of A/B-testen voor snellere en gekwalificeerde modelimplementatie, en ML-lineage tracking. We zijn ook van plan om te evalueren Amazon SageMaker-pijpleidingen omdat GitLab-integratie nu wordt ondersteund.

Lessen uit het verleden

Als onderdeel van het bouwen van deze oplossing hebben we geleerd dat je vroeg moet generaliseren, maar niet te veel generaliseert. Toen we het architectuurontwerp voor het eerst afrondden, probeerden we als best practice codesjablonen voor de modelcode te maken en af โ€‹โ€‹te dwingen. Het was echter zo vroeg in het ontwikkelingsproces dat de sjablonen te algemeen of te gedetailleerd waren om herbruikbaar te zijn voor toekomstige modellen.

Na het leveren van het eerste model via de pijplijn, kwamen de sjablonen er vanzelf uit op basis van de inzichten uit ons eerdere werk. Een pijplijn kan niet alles vanaf de eerste dag.

Modelexperimenten en productie hebben vaak zeer verschillende (of soms zelfs tegenstrijdige) vereisten. Het is van cruciaal belang om deze vereisten vanaf het begin als een team af te wegen en dienovereenkomstig prioriteiten te stellen.

Bovendien hebt u mogelijk niet alle functies van een service nodig. Het gebruik van essentiรซle functies van een service en een modulair ontwerp zijn de sleutels tot een efficiรซntere ontwikkeling en een flexibele pijplijn.

Conclusie

In dit bericht hebben we laten zien hoe we een MLOps-oplossing hebben gebouwd met behulp van SageMaker en Amazon MWAA die het proces van het implementeren van modellen naar productie automatiseerde, met weinig handmatige tussenkomst van datawetenschappers. We raden u aan om verschillende AWS-services zoals SageMaker, Amazon MWAA, Amazon S3 en Amazon ECR te evalueren om een โ€‹โ€‹complete MLOps-oplossing te bouwen.

*Apache, Apache Airflow en Airflow zijn gedeponeerde handelsmerken of handelsmerken van de Apache Software Foundation in de Verenigde Staten en/of andere landen.


Over de auteurs

 Deepak Mettem is Senior Engineering Manager bij VMware, Carbon Black Unit. Hij en zijn team werken aan het bouwen van op streaming gebaseerde applicaties en diensten die zeer beschikbaar, schaalbaar en veerkrachtig zijn om klanten op machine learning gebaseerde oplossingen in realtime te bieden. Hij en zijn team zijn ook verantwoordelijk voor het creรซren van tools die datawetenschappers nodig hebben om hun ML-modellen in productie te bouwen, trainen, implementeren en valideren.

Mahima Agarwal is een Machine Learning Engineer bij VMware, Carbon Black Unit.
Ze werkt aan het ontwerpen, bouwen en ontwikkelen van de kerncomponenten en architectuur van het machine learning-platform voor de VMware CB SBU.

Vamshi Krishna Enabothala is Sr. Applied AI Specialist Architect bij AWS. Hij werkt samen met klanten uit verschillende sectoren om high-impact data-, analyse- en machine learning-initiatieven te versnellen. Hij is gepassioneerd door aanbevelingssystemen, NLP en computervisiegebieden in AI en ML. Naast zijn werk is Vamshi een RC-liefhebber, bouwt hij RC-apparatuur (vliegtuigen, auto's en drones) en houdt hij ook van tuinieren.

Sahil Thapar is een Enterprise Solutions Architect. Hij werkt samen met klanten om hen te helpen bij het bouwen van zeer beschikbare, schaalbare en veerkrachtige applicaties op de AWS Cloud. Hij richt zich momenteel op containers en machine learning-oplossingen.

spot_img

Laatste intelligentie

spot_img