Implementeer een MLOps-oplossing die uw modeleindpunten host in AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Implementeer een MLOps-oplossing die uw modeleindpunten host in AWS Lambda

In 2019 was Amazon medeoprichter van de klimaatbelofte. Het doel van de belofte is om in 2040 netto nul koolstof te bereiken. Dit is 10 jaar eerder dan in het akkoord van Parijs wordt geschetst. Bedrijven die zich aanmelden, verplichten zich tot regelmatige rapportage, eliminatie van CO377-uitstoot en geloofwaardige compensaties. Op het moment van schrijven hebben XNUMX bedrijven de klimaatbelofte ondertekend en het aantal groeit nog steeds.

Omdat AWS zich inzet om u te helpen uw netto nuldoel te bereiken door middel van cloudoplossingen en machine learning (ML), zijn er al veel projecten ontwikkeld en geรฏmplementeerd die de COXNUMX-uitstoot verminderen. De maakindustrie is een van de bedrijfstakken die veel baat kan hebben bij dergelijke projecten. Door geoptimaliseerd energiebeheer van machines in productiefabrieken, zoals compressoren of koelmachines, kunnen bedrijven hun ecologische voetafdruk verkleinen met ML.

Effectief overstappen van een ML-experimenteerfase naar productie is een uitdaging. Het automatiseren van training en hertraining van modellen, het hebben van een modelregister en het volgen van experimenten en implementatie zijn enkele van de belangrijkste uitdagingen. Voor productiebedrijven is er nog een laag van complexiteit, namelijk hoe deze geรฏmplementeerde modellen aan de rand kunnen draaien.

In dit bericht pakken we deze uitdagingen aan door een machine learning operations (MLOps)-sjabloon aan te bieden die een oplossing voor duurzaam energiebeheer bevat. De oplossing is agnostisch voor use cases, wat betekent dat u deze kunt aanpassen voor uw use cases door het model en de gegevens te wijzigen. We laten u zien hoe u modellen integreert in Amazon SageMaker-pijpleidingen, een native workflow-orkestratietool voor het bouwen van ML-pijplijnen, die een trainingstaak uitvoert en optioneel een verwerkingstaak met een Monte Carlo-simulatie. Experimenten worden bijgehouden Amazon SageMaker-experimenten. Modellen worden gevolgd en geregistreerd in de Amazon SageMaker-modelregister. Ten slotte leveren we code voor de implementatie van uw uiteindelijke model in een AWS Lambda functie.

Lambda is een rekenservice waarmee u code kunt uitvoeren zonder servers te beheren of in te richten. Lambda's automatische schaling, facturering per aanvraag en gebruiksgemak maken het een veelgebruikte implementatiekeuze voor datawetenschapsteams. Met dit bericht kunnen datawetenschappers hun model omzetten in een kosteneffectieve en schaalbare Lambda-functie. Bovendien maakt Lambda integratie met AWS IoT Greengrass, waarmee u software kunt bouwen waarmee uw apparaten op de rand kunnen reageren op de gegevens die ze genereren, zoals het geval zou zijn voor een duurzame oplossing voor energiebeheer.

Overzicht oplossingen

De architectuur die we gebruiken (zie de volgende afbeelding) is een volledig CI/CD-gestuurde benadering van machine learning. Elementen zijn ontkoppeld om te voorkomen dat er รฉรฉn monolithische oplossing is.

Laten we beginnen met de linkerbovenhoek van het diagram. De Verwerking โ€“ Beeldvorming component is een CI/CD-gestuurd AWS Codecommit repository die helpt bij het bouwen en pushen van een havenarbeider opvangbak naar Amazon Elastic Container-register (Amazone ECR). Deze verwerkingscontainer dient als de eerste stap in onze ML-pijplijn, maar wordt ook hergebruikt voor nabewerkingsstappen. In ons geval passen we een Monte Carlo-simulatie toe als nabewerking. De Training โ€“ Beeldvorming repository die linksonder wordt geschetst, heeft hetzelfde mechanisme als de In behandeling blok erboven. Het belangrijkste verschil is dat het de container voor modeltraining bouwt.

De hoofdleiding, Modelbouw (pijplijn), is een andere CodeCommit-repository die het uitvoeren van uw SageMaker-pijplijnen automatiseert. Deze pijplijn automatiseert en verbindt de gegevensvoorverwerking, modeltraining, het volgen van modelstatistieken in SageMaker Experiments, gegevensnaverwerking en modelcatalogus in het SageMaker-modelregister.

Het laatste onderdeel staat rechtsonder: Modelimplementatie. Als je de voorbeelden volgt in Amazon SageMaker-projecten, krijgt u een sjabloon die uw model host met behulp van een SageMaker-eindpunt. Onze implementatierepository host het model in plaats daarvan in een Lambda-functie. We laten een benadering zien voor het inzetten van de Lambda-functie die real-time voorspellingen kan uitvoeren.

Voorwaarden

Om onze oplossing met succes te implementeren, hebt u het volgende nodig:

Download de GitHub-repository

Kloon als eerste stap het GitHub-repository naar uw lokale computer. Het bevat de volgende mappenstructuur:

  • inzet โ€“ Bevat code die relevant is voor implementatie
  • mllib โ€” Bevat ML-code voor voorverwerking, training, weergave en simulatie
  • testen โ€” Bevat unit- en integratietests

Het sleutelbestand voor implementatie is het shellscript deployment/deploy.sh. U gebruikt dit bestand om de resources in uw account te implementeren. Voordat we het shell-script kunnen uitvoeren, voert u de volgende stappen uit:

  1. Open de deployment/app.py en verander de bucket_name onder SageMakerPipelineSourceCodeStack. De bucket_name moet wereldwijd uniek zijn (voeg bijvoorbeeld uw volledige naam toe).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, verander de default_bucket voor get_pipeline naar dezelfde naam als opgegeven in stap 1.

Oplossing implementeren met de AWS CDK

Eerste, configureer uw AWS CLI met het account en de regio waarin u wilt implementeren. Voer vervolgens de volgende opdrachten uit om naar de implementatiemap te gaan, een virtuele omgeving te maken, deze te activeren, de vereiste pip-pakketten te installeren die zijn gespecificeerd in setup.py, en voer het deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh voert de volgende acties uit:

  1. Creรซert een virtuele omgeving in Python.
  2. Maakt gebruik van het activeringsscript voor de virtuele omgeving.
  3. Installeert de AWS CDK en de vereisten beschreven in setup.py.
  4. Laarzenriemen de omgeving.
  5. Zipt en kopieert de benodigde bestanden die u hebt ontwikkeld, zoals uw mllib bestanden, naar de corresponderende mappen waar deze middelen nodig zijn.
  6. Runs cdk deploy โ€”require-approval never.
  7. Creรซert een AWS CloudFormatie stapel via de AWS CDK.

De eerste fase van de implementatie duurt minder dan 5 minuten. U zou nu vier opslagplaatsen in CodeCommit moeten hebben in de regio die u hebt opgegeven via de AWS CLI, zoals uiteengezet in het architectuurdiagram. De AWS CodePipeline pijpleidingen worden gelijktijdig uitgevoerd. De modelbuild en modeldeploy pijplijnen zijn afhankelijk van een succesvolle uitvoering van de opbouw van de verwerkings- en trainingsimage. De modeldeploy pijplijn hangt af van een succesvolle modelbouw. De implementatie van het model zou in minder dan 1.5 uur voltooid moeten zijn.

Kloon de modelrepository's in Studio

Om de SageMaker-pijplijnen die zijn gemaakt via de AWS CDK-implementatie in de gebruikersinterface van Studio aan te passen, moet u eerst de opslagplaatsen in Studio klonen. Start de systeemterminal in Studio en voer de volgende opdrachten uit na het opgeven van de projectnaam en ID:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

Na het klonen van de repositories, kun je een commit naar de repositories pushen. Deze commits activeren een CodePipeline-uitvoering voor de gerelateerde pijplijnen.

U kunt de oplossing ook aanpassen op uw lokale computer en werken op uw favoriete IDE.

Navigeer door de gebruikersinterface van SageMaker Pipelines en SageMaker Experiments

Een SageMaker-pijplijn is een reeks onderling verbonden stappen die worden gedefinieerd met behulp van de Amazon SageMaker Python-SDK. Deze pijplijndefinitie codeert een pijplijn met behulp van een Directed Acyclic Graph (DAG) die kan worden geรซxporteerd als een JSON-definitie. Raadpleeg voor meer informatie over de structuur van dergelijke pijplijnen Overzicht van SageMaker-pijpleidingen.

Navigeer naar SageMaker-bronnen deelvenster en kies de Pipelines-resource die u wilt bekijken. Onder Naam, Je zou moeten zien PROJECT_NAME-PROJECT_ID. In de run-UI zou er een succesvolle run moeten zijn die naar verwachting iets meer dan 1 uur zal duren. De pijplijn zou eruit moeten zien zoals getoond in de volgende schermafbeelding.

Amazon SageMaker-pijplijn

De run werd automatisch geactiveerd nadat de AWS CDK-stack was geรฏmplementeerd. U kunt handmatig een run starten door te kiezen creรซren uitvoering. Van daaruit kunt u uw eigen pijplijnparameters kiezen, zoals het instantietype en het aantal instanties voor de verwerkings- en trainingsstappen. Verder kunt u de run een naam en omschrijving geven. De pijplijn is zeer configureerbaar via pijplijnparameters waarnaar u kunt verwijzen en die u kunt definiรซren in uw hele pijplijndefinitie.

Voel je vrij om naar wens een nieuwe pijplijnrun te starten met je parameters. Navigeer daarna naar de SageMaker-bronnen deelvenster opnieuw en kies Experimenten en proeven. Daar zou je weer een regel moeten zien met een naam als PROJECT_NAME-PROJECT_ID. Navigeer naar het experiment en kies de enige run met een willekeurige ID. Kies van daaruit de SageMaker-trainingstaak om de statistieken met betrekking tot de trainingstaak te verkennen.

Het doel van SageMaker Experiments is om het zo eenvoudig mogelijk te maken om experimenten te maken, ze te vullen met proeven en analyses uit te voeren over proeven en experimenten. SageMaker-pijplijnen zijn nauw geรฏntegreerd met SageMaker-experimenten en maken standaard voor elke run een experiment, proef en proefcomponenten voor het geval ze niet bestaan.

Lambda-implementatie goedkeuren in het modelregister

Navigeer als volgende stap naar het modelregister hieronder SageMaker-bronnen. Hier vind je weer een regel met een naam als PROJECT_NAME-PROJECT_ID. Navigeer naar het enige bestaande model en keur het goed. Dit implementeert het modelartefact automatisch in een container in Lambda.

Nadat u uw model hebt goedgekeurd in het modelregister, an Amazon EventBridge gebeurtenisregel wordt geactiveerd. Deze regel voert de CodePipeline-pijplijn uit met het einde *-modeldeploy. In deze sectie bespreken we hoe deze oplossing het goedgekeurde model gebruikt en host in een Lambda-functie. CodePipeline gebruikt de bestaande CodeCommit-repository die ook eindigt op *-modeldeploy en gebruikt die code om in CodeBuild te draaien. De belangrijkste ingang voor CodeBuild is de buildspec.yml het dossier. Laten we eerst dit bekijken:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

Tijdens de installatiefase zorgen we ervoor dat de Python-bibliotheken up-to-date zijn, creรซren we een virtuele omgeving, installeren we AWS CDK v2.26.0 en installeren we de aws-cdk Python-bibliotheek samen met anderen die het vereistenbestand gebruiken. Wij ook start het AWS-account op. In de bouwfase rennen we build.py, die we hierna bespreken. Dat bestand downloadt het nieuwste goedgekeurde SageMaker-modelartefact van Amazon eenvoudige opslagservice (Amazon S3) naar uw lokale CodeBuild-instantie. Deze .tar.gz bestand wordt uitgepakt en de inhoud ervan gekopieerd naar de map die ook onze belangrijkste Lambda-code bevat. De Lambda-functie wordt geรฏmplementeerd met behulp van de AWS CDK en de code loopt uit een Docker-container van Amazon ECR. Dit wordt automatisch gedaan door AWS CDK.

De build.py bestand is een Python-bestand dat meestal de AWS SDK voor Python (Boto3) om de beschikbare modelpakketten weer te geven.

De functie get_approved_package retourneert de Amazon S3 URI van het artefact dat vervolgens wordt gedownload, zoals eerder beschreven.

Nadat u uw model met succes hebt geรฏmplementeerd, kunt u proef het rechtstreeks op de Lambda-console in de regio die u hebt gekozen om in te zetten. De naam van de functie moet bevatten DigitalTwinStack-DigitalTwin*. Open de functie en navigeer naar de test tabblad. U kunt de volgende gebeurtenis gebruiken om een โ€‹โ€‹testoproep uit te voeren:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

Nadat u de testgebeurtenis hebt uitgevoerd, krijgt u een reactie die vergelijkbaar is met die in de volgende schermafbeelding.

Test de AWS Lambda-functie

Als u meer simulaties of proeven wilt uitvoeren, kunt u de Lambda-time-outlimiet verhogen en experimenteren met de code! Of misschien wilt u de gegenereerde gegevens oppikken en deze visualiseren Amazon QuickSight. Hieronder is een voorbeeld. Nu is het jouw beurt!

Amazon QuickSight

Opruimen

Voer de volgende stappen uit om verdere kosten te voorkomen:

  • Verwijder op de AWS CloudFormation-console het EnergyOptimization stack.
    Hiermee wordt de hele oplossing verwijderd.
  • Verwijder de stapel DigitalTwinStack, die uw Lambda-functie heeft geรฏmplementeerd.

Conclusie

In dit bericht hebben we u een CI/CD-gestuurde MLOps-pijplijn laten zien van een energiebeheeroplossing waarbij we elke stap ontkoppeld houden. U kunt uw ML-pijplijnen en experimenten volgen in de gebruikersinterface van Studio. We hebben ook een andere implementatiebenadering gedemonstreerd: na goedkeuring van een model in het modelregister wordt automatisch een Lambda-functie gebouwd die het goedgekeurde model host via CodePipeline.

Als u geรฏnteresseerd bent in het verkennen van de MLOps-pijplijn op AWS of de oplossing voor duurzaam energiebeheer, bekijk dan de GitHub-repository en implementeer de stack in uw eigen AWS-omgeving!


Over de auteurs

Implementeer een MLOps-oplossing die uw modeleindpunten host in AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Laurens van der Maas is Data Scientist bij AWS Professional Services. Hij werkt nauw samen met klanten die hun machine learning-oplossingen bouwen op AWS en is gepassioneerd over hoe machine learning de wereld verandert zoals wij die kennen.

Implementeer een MLOps-oplossing die uw modeleindpunten host in AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Kangkang Wang is een AI/ML-consultant bij AWS Professional Services. Ze heeft uitgebreide ervaring met het inzetten van AI/ML-oplossingen in de verticale gezondheidszorg en life sciences. Ze helpt ook graag zakelijke klanten bij het bouwen van schaalbare AI/ML-platforms om de cloudreis van hun datawetenschappers te versnellen.

Implementeer een MLOps-oplossing die uw modeleindpunten host in AWS Lambda PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Selena Tabbara is Data Scientist bij AWS Professional Services. Ze werkt elke dag samen met haar klanten om hun bedrijfsresultaten te behalen door te innoveren op AWS-platforms. In haar vrije tijd speelt Selena graag piano, wandelt en kijkt ze naar basketbal.

Michaรซl Wallner Michaรซl Wallner is een Senior Consultant met focus op AI/ML bij AWS Professional Services. Michael is gepassioneerd om klanten op hun cloudreis in staat te stellen GEWELDIG te worden. Hij is enthousiast over productie en helpt graag de productieruimte te transformeren door middel van data.

Tijdstempel:

Meer van AWS-machine learning