Implementați o soluție MLOps care găzduiește punctele finale ale modelului dvs. în AWS Lambda PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Implementați o soluție MLOps care găzduiește punctele finale ale modelului dvs. în AWS Lambda

În 2019, Amazon a co-fondat gaj climatic. Scopul angajamentului este de a atinge zero carbon net până în 2040. Acesta este cu 10 ani mai devreme decât prevede acordul de la Paris. Companiile care se înscriu se angajează să raporteze periodic, să elimine carbonul și să compenseze credibile. La momentul scrierii acestui articol, 377 de companii au semnat angajamentul climatic, iar numărul este în continuare în creștere.

Deoarece AWS se angajează să vă ajute să vă atingeți obiectivul net zero prin soluții cloud și machine learning (ML), multe proiecte au fost deja dezvoltate și implementate care reduc emisiile de carbon. Fabricația este una dintre industriile care pot beneficia foarte mult de astfel de proiecte. Prin managementul energetic optimizat al mașinilor din fabricile de producție, cum ar fi compresoare sau răcitoare, companiile își pot reduce amprenta de carbon cu ML.

Tranziția efectivă de la o fază de experimentare ML la producție este o provocare. Automatizarea antrenamentului și recalificării modelelor, a avea un registru de model și urmărirea experimentelor și implementării sunt câteva dintre provocările cheie. Pentru companiile de producție, există un alt nivel de complexitate, și anume modul în care aceste modele implementate pot rula la margine.

În această postare, abordăm aceste provocări oferind un șablon de operațiuni de învățare automată (MLOps) care găzduiește o soluție de management durabil al energiei. Soluția este agnostică pentru cazurile de utilizare, ceea ce înseamnă că o puteți adapta pentru cazurile dvs. de utilizare schimbând modelul și datele. Vă arătăm cum să integrați modele în Pipelines Amazon SageMaker, un instrument nativ de orchestrare a fluxului de lucru pentru construirea conductelor ML, care rulează un job de instruire și opțional un job de procesare cu o simulare Monte Carlo. Experimentele sunt urmărite Experimente Amazon SageMaker. Modelele sunt urmărite și înregistrate în Registrul modelului Amazon SageMaker. În cele din urmă, oferim cod pentru implementarea modelului dvs. final într-un AWS Lambdas Funcția.

Lambda este un serviciu de calcul care vă permite să rulați cod fără a gestiona sau furniza servere. Scalarea automată a Lambda, facturarea cu plata-pe-cerere și ușurința în utilizare îl fac o alegere comună de implementare pentru echipele de știință a datelor. Cu această postare, oamenii de știință de date își pot transforma modelul într-o funcție Lambda rentabilă și scalabilă. În plus, Lambda permite integrarea cu AWS IoT Greengrass, care vă ajută să construiți software care permite dispozitivelor dvs. să acționeze la limita datelor pe care le generează, așa cum ar fi cazul unei soluții de management durabil al energiei.

Prezentare generală a soluțiilor

Arhitectura pe care o implementăm (a se vedea figura următoare) este o abordare complet bazată pe CI/CD a învățării automate. Elementele sunt decuplate pentru a evita o soluție monolitică.

Să începem cu partea din stânga sus a diagramei. The Procesare – Construire imagine componenta este un CI/CD-driven AWS CodeCommit depozit care ajută la construirea și împingerea unui Docher container la Registrul Amazon de containere elastice (Amazon ECR). Acest container de procesare servește ca prim pas în pipeline ML, dar este și reutilizat pentru pașii de postprocesare. În cazul nostru, aplicăm o simulare Monte Carlo ca postprocesare. The Training – Construire imagine depozitul conturat în stânga jos are același mecanism ca și cel Prelucrare bloc deasupra lui. Principala diferență este că construiește containerul pentru antrenamentul modelului.

Conducta principală, Clădire model (conductă), este un alt depozit CodeCommit care automatizează rularea conductelor dvs. SageMaker. Această conductă automatizează și conectează preprocesarea datelor, formarea modelului, urmărirea valorilor modelului în SageMaker Experiments, postprocesarea datelor și catalogarea modelelor în registrul de modele SageMaker.

Componenta finală este în dreapta jos: Implementarea modelului. Dacă urmați exemplele din Proiecte Amazon SageMaker, veți obține un șablon care găzduiește modelul dvs. folosind un punct final SageMaker. În schimb, depozitul nostru de implementare găzduiește modelul într-o funcție Lambda. Arătăm o abordare pentru implementarea funcției Lambda care poate rula predicții în timp real.

Cerințe preliminare

Pentru a implementa soluția noastră cu succes, aveți nevoie de următoarele:

Descărcați depozitul GitHub

Ca prim pas, clonează GitHub depozit la mașina dvs. locală. Conține următoarea structură de foldere:

  • desfășurarea – Conține cod relevant pentru implementare
  • mllib — Conține cod ML pentru preprocesare, instruire, difuzare și simulare
  • teste — Conține teste unitare și de integrare

Fișierul cheie pentru implementare este scriptul shell deployment/deploy.sh. Utilizați acest fișier pentru a implementa resursele din contul dvs. Înainte de a putea rula scriptul shell, parcurgeți următorii pași:

  1. Deschideți deployment/app.py și schimbați bucket_name sub SageMakerPipelineSourceCodeStack. bucket_name trebuie să fie unic la nivel global (de exemplu, adăugați numele dvs. complet).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, schimba default_bucket în get_pipeline cu același nume ca cel specificat la pasul 1.

Implementați soluția cu AWS CDK

În primul rând, configurați-vă AWS CLI cu contul și Regiunea în care doriți să implementați. Apoi rulați următoarele comenzi pentru a schimba în directorul de implementare, creați un mediu virtual, activați-l, instalați pachetele pip necesare specificate în setup.py, și executați 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 efectuează următoarele acțiuni:

  1. Creează un mediu virtual în Python.
  2. Sursă scriptul de activare a mediului virtual.
  3. Instalează AWS CDK și cerințele prezentate în setup.py.
  4. Bootstraps mediul.
  5. Arhivă și copiază fișierele necesare pe care le-ați dezvoltat, cum ar fi dvs mllib fișiere, în folderele corespunzătoare unde sunt necesare aceste active.
  6. Rulează cdk deploy —require-approval never.
  7. Creează un Formarea AWS Cloud stiva prin AWS CDK.

Etapa inițială a implementării ar trebui să dureze mai puțin de 5 minute. Acum ar trebui să aveți patru depozite în CodeCommit în regiunea pe care ați specificat-o prin AWS CLI, așa cum este subliniat în diagrama arhitecturii. The AWS CodePipeline conductele sunt rulate simultan. The modelbuild și modeldeploy conductele depind de o rulare cu succes a procesării și formării imaginii de instruire. The modeldeploy pipeline depinde de o construcție reușită a modelului. Implementarea modelului ar trebui să fie finalizată în mai puțin de 1.5 ore.

Clonează depozitele de modele în Studio

Pentru a personaliza conductele SageMaker create prin implementarea AWS CDK în interfața de utilizare Studio, mai întâi trebuie să clonați depozitele în Studio. Lansați terminalul de sistem în Studio și executați următoarele comenzi după ce furnizați numele și ID-ul proiectului:

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

După clonarea depozitelor, puteți împinge un commit către depozite. Aceste comiteri declanșează o rulare CodePipeline pentru conductele aferente.

De asemenea, puteți adapta soluția pe mașina dvs. locală și puteți lucra pe IDE-ul preferat.

Navigați prin SageMaker Pipelines și SageMaker Experiments UI

O conductă SageMaker este o serie de pași interconectați care sunt definiți folosind Amazon SageMaker Python SDK. Această definiție de conductă codifică o conductă folosind un grafic aciclic direcționat (DAG) care poate fi exportat ca definiție JSON. Pentru a afla mai multe despre structura unor astfel de conducte, consultați Prezentare generală a conductelor SageMaker.

Navigheaza catre Resurse SageMaker panoul și alegeți resursa Conducte de vizualizat. Sub Nume si Prenume, ar trebui sa vezi PROJECT_NAME-PROJECT_ID. În interfața de utilizare de rulare, ar trebui să existe o rulare de succes care se așteaptă să dureze puțin peste 1 oră. Conducta ar trebui să arate așa cum se arată în următoarea captură de ecran.

Conducta Amazon SageMaker

Executarea a fost declanșată automat după ce stiva AWS CDK a fost implementată. Puteți invoca manual o rulare alegând Crea execuţie. De acolo puteți alege propriile parametri ai conductei, cum ar fi tipul de instanță și numărul de instanțe pentru etapele de procesare și antrenament. În plus, puteți da rulării un nume și o descriere. Conducta este foarte configurabilă prin parametrii conductei pe care îi puteți referi și defini pe parcursul definiției conductei.

Simțiți-vă liber să începeți o altă rulare a conductei cu parametrii dvs. după cum doriți. După aceea, navigați la Resurse SageMaker panoul din nou și alegeți Experimente și încercări. Acolo ar trebui să vedeți din nou o linie cu un nume precum PROJECT_NAME-PROJECT_ID. Navigați la experiment și alegeți singura rulare cu un ID aleatoriu. De acolo, alegeți jobul de formare SageMaker pentru a explora valorile legate de jobul de formare.

Scopul SageMaker Experiments este să simplifice cât mai mult posibil crearea de experimente, completarea acestora cu încercări și efectuarea analizelor în încercări și experimente. SageMaker Pipelines sunt strâns integrate cu SageMaker Experiments și, în mod implicit, pentru fiecare rulare creează un experiment, un test și componente de probă în cazul în care acestea nu există.

Aprobați implementarea Lambda în registrul modelului

Ca pas următor, navigați la registrul modelului de sub Resurse SageMaker. Aici puteți găsi din nou o linie cu un nume precum PROJECT_NAME-PROJECT_ID. Navigați la singurul model care există și aprobați-l. Aceasta implementează automat artefactul model într-un container în Lambda.

După ce ați aprobat modelul în registrul de modele, an Amazon EventBridge regula evenimentului este declanșată. Această regulă rulează conducta CodePipeline cu finalul *-modeldeploy. În această secțiune, discutăm despre modul în care această soluție folosește modelul aprobat și îl găzduiește într-o funcție Lambda. CodePipeline preia depozitul CodeCommit existent și se termină cu *-modeldeploy și folosește acel cod pentru a rula în CodeBuild. Intrarea principală pentru CodeBuild este buildspec.yml fişier. Să ne uităm mai întâi la asta:

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

În timpul fazei de instalare, ne asigurăm că bibliotecile Python sunt actualizate, creăm un mediu virtual, instalăm AWS CDK v2.26.0 și instalăm aws-cdk Biblioteca Python împreună cu alții folosind fișierul cerințe. Noi Deasemenea porniți contul AWS. În faza de construire, rulăm build.py, despre care vom discuta în continuare. Fișierul respectiv descarcă cel mai recent model de artefact SageMaker aprobat de la Serviciul Amazon de stocare simplă (Amazon S3) la instanța locală CodeBuild. Acest .tar.gz fișierul este dezarhivat și conținutul său copiat în folderul care conține și codul nostru principal Lambda. Funcția Lambda este implementată folosind AWS CDK, iar codul rulează dintr-un container Docker de la Amazon ECR. Acest lucru este realizat automat de AWS CDK.

build.py fișierul este un fișier Python care folosește în cea mai mare parte fișierul SDK AWS pentru Python (Boto3) pentru a enumera pachetele model disponibile.

Funcția get_approved_package returnează URI-ul Amazon S3 al artefactului care este apoi descărcat, așa cum este descris mai devreme.

După implementarea cu succes a modelului dvs., puteți test direct pe consola Lambda din Regiunea în care ați ales să o implementați. Numele funcției ar trebui să conțină DigitalTwinStack-DigitalTwin*. Deschideți funcția și navigați la Test fila. Puteți utiliza următorul eveniment pentru a rula un apel de testare:

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

După rularea evenimentului de testare, obțineți un răspuns similar cu cel afișat în următoarea captură de ecran.

Testați funcția AWS Lambda

Dacă doriți să rulați mai multe simulări sau încercări, puteți crește limita de timeout Lambda și puteți experimenta codul! Sau poate doriți să preluați datele generate și să vizualizați aceleași în Amazon QuickSight. Mai jos este un exemplu. E rândul tău acum!

Amazon QuickSight

A curăța

Pentru a evita alte taxe, parcurgeți următorii pași:

  • Pe consola AWS CloudFormation, ștergeți EnergyOptimization grămadă.
    Aceasta șterge întreaga soluție.
  • Ștergeți stiva DigitalTwinStack, care v-a implementat funcția Lambda.

Concluzie

În această postare, v-am arătat o conductă MLOps condusă de CI/CD a unei soluții de management al energiei în care păstrăm fiecare pas decuplat. Puteți urmări conductele și experimentele ML în interfața de utilizare Studio. De asemenea, am demonstrat o abordare diferită de implementare: la aprobarea unui model în registrul de modele, o funcție Lambda care găzduiește modelul aprobat este construită automat prin CodePipeline.

Dacă sunteți interesat să explorați fie conducta MLOps pe AWS, fie soluția de management durabil al energiei, consultați GitHub depozit și implementați stiva în propriul mediu AWS!


Despre Autori

Implementați o soluție MLOps care găzduiește punctele finale ale modelului dvs. în AWS Lambda PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Laurens van der Maas este Data Scientist la AWS Professional Services. El lucrează îndeaproape cu clienții care își construiesc soluțiile de învățare automată pe AWS și este pasionat de modul în care învățarea automată schimbă lumea așa cum o cunoaștem.

Implementați o soluție MLOps care găzduiește punctele finale ale modelului dvs. în AWS Lambda PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Kangkang Wang este consultant AI/ML cu AWS Professional Services. Ea are o vastă experiență în implementarea soluțiilor AI/ML în domeniul asistenței medicale și al științelor vieții. De asemenea, îi place să ajute clienții întreprinderilor să construiască platforme scalabile AI/ML pentru a accelera călătoria în cloud a cercetătorilor lor de date.

Implementați o soluție MLOps care găzduiește punctele finale ale modelului dvs. în AWS Lambda PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Selena Tabbara este Data Scientist la AWS Professional Services. Lucrează zilnic cu clienții săi pentru a-și atinge rezultatele de afaceri prin inovarea pe platformele AWS. În timpul liber, Selenei îi place să cânte la pian, să facă drumeții și să se uite la baschet.

Michael Wallner Michael Wallner este consultant senior cu accent pe AI/ML cu AWS Professional Services. Michael este pasionat de a permite clienților din călătoria lor în cloud să devină AWSome. El este încântat de producție și îi place să ajute la transformarea spațiului de producție prin date.

Timestamp-ul:

Mai mult de la Învățare automată AWS