Implementera en MLOps-lösning som är värd för dina modellslutpunkter i AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Distribuera en MLOps-lösning som är värd för dina modellslutpunkter i AWS Lambda

2019 var Amazon med och grundade klimatbelöning. Löftets mål är att uppnå nettonoll koldioxid till 2040. Detta är 10 år tidigare än Parisavtalet skisserar. Företag som registrerar sig är engagerade i regelbunden rapportering, eliminering av koldioxid och trovärdiga kompensationer. När detta skrivs har 377 företag skrivit på klimatlöftet och antalet växer fortfarande.

Eftersom AWS har åtagit sig att hjälpa dig uppnå ditt nettonollmål genom molnlösningar och maskininlärning (ML), har många projekt redan utvecklats och implementerats som minskar koldioxidutsläppen. Tillverkning är en av de branscher som kan dra stor nytta av sådana projekt. Genom optimerad energihantering av maskiner i tillverkande fabriker, såsom kompressorer eller kylare, kan företag minska sitt koldioxidavtryck med ML.

Att effektivt övergå från en ML-experimentfas till produktion är utmanande. Att automatisera modellträning och omskolning, ha ett modellregister och spåra experiment och implementering är några av de viktigaste utmaningarna. För tillverkande företag finns det ytterligare ett lager av komplexitet, nämligen hur dessa utplacerade modeller kan köras vid kanten.

I det här inlägget tar vi upp dessa utmaningar genom att tillhandahålla en mall för maskininlärning (MLOps) som är värd för en hållbar energihanteringslösning. Lösningen är agnostisk för användningsfall, vilket innebär att du kan anpassa den för dina användningsfall genom att ändra modell och data. Vi visar dig hur du integrerar modeller i Amazon SageMaker-rörledningar, ett inbyggt arbetsflödesorkestreringsverktyg för att bygga ML-pipelines, som kör ett träningsjobb och valfritt ett bearbetningsjobb med en Monte Carlo-simulering. Experiment spåras in Amazon SageMaker-experiment. Modeller spåras och registreras i Amazon SageMaker modellregister. Slutligen tillhandahåller vi kod för distribution av din slutliga modell i en AWS Lambda funktion.

Lambda är en beräkningstjänst som låter dig köra kod utan att hantera eller tillhandahålla servrar. Lambdas automatiska skalning, betalning per förfrågan och användarvänlighet gör det till ett vanligt val för datavetenskapsteam. Med det här inlägget kan datavetare förvandla sin modell till en kostnadseffektiv och skalbar Lambda-funktion. Dessutom tillåter Lambda integration med AWS IoT Greengrass, som hjälper dig att bygga mjukvara som gör det möjligt för dina enheter att agera på kanten av den data som de genererar, vilket skulle vara fallet för en hållbar energihanteringslösning.

Lösningsöversikt

Arkitekturen vi använder (se följande figur) är en helt CI/CD-driven metod för maskininlärning. Element är frikopplade för att undvika att ha en monolitisk lösning.

Låt oss börja med den övre vänstra delen av diagrammet. De Bearbetning – Bilduppbyggnad komponenten är en CI/CD-driven AWS CodeCommit arkiv som hjälper till att bygga och driva en Hamnarbetare behållare till Amazon Elastic Container Registry (Amazon ECR). Denna bearbetningsbehållare fungerar som det första steget i vår ML-pipeline, men den återanvänds också för efterbearbetningssteg. I vårt fall tillämpar vi en Monte Carlo-simulering som efterbearbetning. De Utbildning – Bildbyggande förvaret som beskrivs längst ner till vänster har samma mekanism som Bearbetning block ovanför den. Den största skillnaden är att den bygger behållaren för modellträning.

Huvudledningen, Modellbyggnad (pipeline), är ett annat CodeCommit-förråd som automatiserar körningen av dina SageMaker-pipelines. Denna pipeline automatiserar och kopplar samman dataförbearbetning, modellträning, spårning av modellmått i SageMaker-experiment, dataefterbearbetning och modellkatalogisering i SageMaker-modellregistret.

Den sista komponenten finns längst ner till höger: Modelldistribution. Om du följer exemplen i Amazon SageMaker-projekt, får du en mall som är värd för din modell med hjälp av en SageMaker-slutpunkt. Vårt deployment repository är istället värd för modellen i en Lambda-funktion. Vi visar ett tillvägagångssätt för att distribuera Lambda-funktionen som kan köra förutsägelser i realtid.

Förutsättningar

För att implementera vår lösning framgångsrikt behöver du följande:

Ladda ner GitHub-förvaret

Som ett första steg, klona GitHub repository till din lokala maskin. Den innehåller följande mappstruktur:

  • utplacering – Innehåller kod som är relevant för distribution
  • mllib — Innehåller ML-kod för förbearbetning, träning, servering och simulering
  • tester — Innehåller enhets- och integrationstester

Nyckelfilen för distribution är skalskriptet deployment/deploy.sh. Du använder den här filen för att distribuera resurserna i ditt konto. Innan vi kan köra skalskriptet, slutför följande steg:

  1. Öppna deployment/app.py och ändra bucket_name under SageMakerPipelineSourceCodeStack. De bucket_name måste vara globalt unik (lägg till exempel till ditt fullständiga namn).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, ändra default_bucket under get_pipeline till samma namn som specificerats i steg 1.

Implementera lösning med AWS CDK

Först, konfigurera din AWS CLI med kontot och regionen som du vill distribuera i. Kör sedan följande kommandon för att byta till distributionskatalogen, skapa en virtuell miljö, aktivera den, installera de nödvändiga pip-paketen som anges i setup.py, och kör 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 utför följande åtgärder:

  1. Skapar en virtuell miljö i Python.
  2. Käller till aktiveringsskriptet för den virtuella miljön.
  3. Installerar AWS CDK och kraven som beskrivs i setup.py.
  4. Bootstraps miljön.
  5. Zip och kopierar de nödvändiga filerna som du har utvecklat, till exempel din mllib filer, till motsvarande mappar där dessa tillgångar behövs.
  6. Körs cdk deploy —require-approval never.
  7. Skapar en AWS molnformation stapla genom AWS CDK.

Det inledande skedet av utplaceringen bör ta mindre än 5 minuter. Du bör nu ha fyra repositories i CodeCommit i den region du angav genom AWS CLI, som beskrivs i arkitekturdiagrammet. De AWS CodePipeline rörledningar körs samtidigt. De modelbuild och modeldeploy pipelines är beroende av en framgångsrik körning av bearbetnings- och utbildningsbildbyggandet. De modeldeploy pipeline beror på ett framgångsrikt modellbygge. Modellinstallationen bör vara klar på mindre än 1.5 timmar.

Klona modellförråden i Studio

För att anpassa SageMaker-pipelines som skapats genom AWS CDK-distributionen i Studio UI, måste du först klona arkiven till Studio. Starta systemterminalen i Studio och kör följande kommandon efter att ha angett projektnamn och 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

Efter att ha klonat arkiven kan du skicka en commit till arkiven. Dessa commits utlöser en CodePipeline-körning för de relaterade pipelines.

Du kan också anpassa lösningen på din lokala dator och arbeta på din föredragna IDE.

Navigera i SageMaker Pipelines och SageMaker Experiments UI

En SageMaker-pipeline är en serie sammankopplade steg som definieras med hjälp av Amazon SageMaker Python SDK. Denna pipelinedefinition kodar en pipeline med hjälp av en Directed Acyclic Graph (DAG) som kan exporteras som en JSON-definition. För att lära dig mer om strukturen för sådana rörledningar, se SageMaker Pipelines Översikt.

Navigera till SageMaker-resurser och välj den Pipelines-resurs som du vill visa. Under Namn , du borde se PROJECT_NAME-PROJECT_ID. I run UI bör det finnas en lyckad körning som förväntas ta lite över 1 timme. Pipelinjen bör se ut som visas i följande skärmdump.

Amazon SageMaker Pipeline

Körningen utlöstes automatiskt efter att AWS CDK-stacken distribuerades. Du kan anropa en körning manuellt genom att välja Skapa avrättning. Därifrån kan du välja dina egna pipelineparametrar såsom instanstyp och antal instanser för bearbetnings- och utbildningsstegen. Dessutom kan du ge körningen ett namn och en beskrivning. Pipelinen är mycket konfigurerbar genom pipelineparametrar som du kan referera till och definiera genom hela din pipelinedefinition.

Starta gärna ytterligare en pipelinekörning med dina parametrar efter önskemål. Efteråt, navigera till SageMaker-resurser ruta igen och välj Experiment och försök. Där ska du återigen se en rad med ett namn som t.ex PROJECT_NAME-PROJECT_ID. Navigera till experimentet och välj den enda körningen med ett slumpmässigt ID. Därifrån väljer du SageMaker-utbildningsjobbet för att utforska måtten relaterade till utbildningsjobbet.

Målet med SageMaker Experiments är att göra det så enkelt som möjligt att skapa experiment, fylla dem med försök och köra analyser över försök och experiment. SageMaker Pipelines är nära integrerade med SageMaker Experiment, och skapar som standard för varje körning ett experiment, test och testkomponenter om de inte existerar.

Godkänn Lambda-distribution i modellregistret

Som nästa steg, navigera till modellregistret under SageMaker-resurser. Här kan du återigen hitta en rad med ett namn som t.ex PROJECT_NAME-PROJECT_ID. Navigera till den enda modellen som finns och godkänn den. Detta distribuerar automatiskt modellartefakten i en container i Lambda.

När du har godkänt din modell i modellregistret, en Amazon EventBridge händelseregeln utlöses. Denna regel kör CodePipeline-pipeline med slutet *-modeldeploy. I det här avsnittet diskuterar vi hur denna lösning använder den godkända modellen och är värd för den i en lambdafunktion. CodePipeline tar det befintliga CodeCommit-förrådet som också slutar med *-modeldeploy och använder den koden för att köra i CodeBuild. Huvudposten för CodeBuild är buildspec.yml fil. Låt oss titta på detta först:

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

Under installationsfasen ser vi till att Python-biblioteken är uppdaterade, skapar en virtuell miljö, installerar AWS CDK v2.26.0 och installerar aws-cdk Python-biblioteket tillsammans med andra som använder kravfilen. Vi också bootstrap AWS-kontot. I byggfasen kör vi build.py, som vi diskuterar härnäst. Den filen laddar ner den senaste godkända SageMaker-modellartefakten från Amazon enkel lagringstjänst (Amazon S3) till din lokala CodeBuild-instans. Detta .tar.gz filen packas upp och dess innehåll kopieras till mappen som också innehåller vår huvudsakliga lambdakod. Lambdafunktionen distribueras med AWS CDK, och koden tar slut från en Docker-behållare från Amazon ECR. Detta görs automatiskt av AWS CDK.

Smakämnen build.py file är en Python-fil som mestadels använder AWS SDK för Python (Boto3) för att lista de tillgängliga modellpaketen.

Funktionen get_approved_package returnerar Amazon S3 URI för artefakten som sedan laddas ner, som beskrivits tidigare.

Efter att ha implementerat din modell framgångsrikt kan du testa den direkt på lambdakonsolen i den region du valde att distribuera i. Namnet på funktionen ska innehålla DigitalTwinStack-DigitalTwin*. Öppna funktionen och navigera till Testa flik. Du kan använda följande händelse för att köra ett testsamtal:

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

Efter att ha kört testhändelsen får du ett svar som liknar det som visas i följande skärmdump.

Testa AWS Lambdafunktion

Om du vill köra fler simuleringar eller försök kan du öka Lambdas timeoutgräns och experimentera med koden! Eller så kanske du vill plocka upp den data som genereras och visualisera densamma i Amazon QuickSight. Nedan följer ett exempel. Det är din tur nu!

Amazon QuickSight

Städa upp

Utför följande steg för att undvika ytterligare avgifter:

  • På AWS CloudFormation-konsolen, ta bort EnergyOptimization stack.
    Detta tar bort hela lösningen.
  • Ta bort stacken DigitalTwinStack, som distribuerade din Lambda-funktion.

Slutsats

I det här inlägget visade vi dig en CI/CD-driven MLOps-pipeline av en energihanteringslösning där vi håller varje steg frikopplat. Du kan spåra dina ML-pipelines och experiment i Studio UI. Vi visade också en annan implementeringsmetod: efter godkännande av en modell i modellregistret byggs en Lambda-funktion som är värd för den godkända modellen automatiskt genom CodePipeline.

Om du är intresserad av att utforska antingen MLOps pipeline på AWS eller lösningen för hållbar energihantering, kolla in GitHub repository och distribuera stacken i din egen AWS-miljö!


Om författarna

Implementera en MLOps-lösning som är värd för dina modellslutpunkter i AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Laurens van der Maas är datavetare på AWS Professional Services. Han arbetar nära kunder som bygger sina maskininlärningslösningar på AWS, och brinner för hur maskininlärning förändrar världen som vi känner den.

Implementera en MLOps-lösning som är värd för dina modellslutpunkter i AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Kangkang Wang är en AI/ML-konsult med AWS Professional Services. Hon har lång erfarenhet av att implementera AI/ML-lösningar inom hälsovård och life sciences vertikal. Hon tycker också om att hjälpa företagskunder att bygga skalbara AI/ML-plattformar för att påskynda sina dataforskares molnresa.

Implementera en MLOps-lösning som är värd för dina modellslutpunkter i AWS Lambda PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Selena Tabbara är datavetare på AWS Professional Services. Hon arbetar varje dag med sina kunder för att uppnå deras affärsresultat genom att förnya sig på AWS-plattformar. På fritiden tycker Selena om att spela piano, vandra och titta på basket.

Michael Wallner Michael Wallner är seniorkonsult med fokus på AI/ML med AWS Professional Services. Michael brinner för att göra det möjligt för kunder på sin molnresa att bli AWSome. Han är entusiastisk över tillverkning och tycker om att hjälpa till att förvandla tillverkningsutrymmet genom data.

Tidsstämpel:

Mer från AWS maskininlärning