Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda

Spremljanje napovedi strojnega učenja (ML) lahko pomaga izboljšati kakovost razporejenih modelov. Zajemanje podatkov iz sklepov, narejenih v proizvodnji, vam lahko omogoči spremljanje razporejenih modelov in odkrivanje odstopanj v kakovosti modela. Zgodnje in proaktivno odkrivanje teh odstopanj vam omogoča, da sprejmete popravne ukrepe, kot so modeli preusposabljanja, revizija predhodnih sistemov ali odpravljanje težav s kakovostjo.

AWS Lambda je računalniška storitev brez strežnika, ki lahko zagotovi sklepanje ML v realnem času v velikem obsegu. V tej objavi prikazujemo vzorčno funkcijo za zajemanje podatkov, ki jo je mogoče uporabiti za delovno obremenitev sklepanja Lambda ML.

Decembra 2020 je Lambda predstavila podporo za slike vsebnikov kot obliko pakiranja. Ta funkcija je povečala omejitev velikosti paketa za uvajanje s 500 MB na 10 GB. Pred uvedbo te funkcije je omejitev velikosti paketa otežila uvajanje ogrodij ML, kot sta TensorFlow ali PyTorch, v funkcije Lambda. Po lansiranju je povečana omejitev velikosti paketa naredila ML izvedljivo in privlačno delovno obremenitev za uvajanje v Lambda. Leta 2021 je bilo sklepanje ML ena najhitreje rastočih vrst delovne obremenitve v storitvi Lambda.

Amazon SageMaker, Amazonova popolnoma upravljana storitev ML, vsebuje lastno funkcijo spremljanja modela. Vendar vzorčni projekt v tej objavi prikazuje, kako izvesti zajem podatkov za uporabo pri spremljanju modela za stranke, ki uporabljajo Lambda za sklepanje ML. Projekt uporablja razširitve Lambda za zajemanje podatkov o sklepanju, da bi čim bolj zmanjšal vpliv na zmogljivost in zakasnitev funkcije sklepanja. Uporaba razširitev Lambda prav tako zmanjša vpliv na razvijalce funkcij. Z integracijo prek razširitve je mogoče funkcijo spremljanja uporabiti za več funkcij in jo vzdrževati centralizirana ekipa.

Pregled rešitve

Ta projekt vsebuje izvorno kodo in podporne datoteke za aplikacijo brez strežnika, ki omogoča sklepanje v realnem času z uporabo vnaprej usposobljenega modela odgovarjanja na vprašanja, ki temelji na distilbertu. Projekt uporablja model obdelave naravnega jezika (NLP) z vprašanjem in odgovorom Hugging Face PyTorch za izvajanje nalog sklepanja o naravnem jeziku. Projekt vsebuje tudi rešitev za izvedbo zajema podatkov sklepanja za napovedi modela. Pisatelj funkcije Lambda lahko natančno določi, katere podatke iz vnosa zahteve za sklepanje in rezultat predvidevanja poslati v razširitev. V tej rešitvi pošiljamo vnos in odgovor iz modela v razširitev. Razširitev nato periodično pošilja podatke na Preprosta storitev shranjevanja Amazon (Amazon S3) vedro. Razširitev za zajem podatkov zgradimo kot sliko vsebnika z uporabo a makefile. Nato zgradimo funkcijo sklepanja Lambda kot sliko vsebnika in dodamo sliko vsebnika razširitve kot plast slike vsebnika. Naslednji diagram prikazuje pregled arhitekture.

Razširitve Lambda so način za razširitev funkcij Lambda. V tem projektu uporabljamo zunanjo razširitev Lambda za beleženje zahteve po sklepanju in napovedi iz sklepanja. Zunanja razširitev teče kot ločen proces v izvajalnem okolju Lambda, kar zmanjšuje vpliv na funkcijo sklepanja. Vendar pa funkcija deli vire, kot so CPE, pomnilnik in shramba, s funkcijo Lambda. Priporočamo, da funkciji Lambda dodelite dovolj pomnilnika, da zagotovite optimalno razpoložljivost virov. (V našem testiranju smo funkciji sklepanja Lambda dodelili 5 GB pomnilnika in videli optimalno razpoložljivost virov in zakasnitev sklepanja). Ko je sklepanje končano, storitev Lambda takoj vrne odgovor in ne čaka, da razširitev zaključi beleženje zahteve in odgovora v vedro S3. S tem vzorcem razširitev spremljanja ne vpliva na zakasnitev sklepanja. Če želite izvedeti več o razširitvah Lambda oglejte si te video serije.

Vsebina projekta

Ta projekt uporablja AWS Model brez strežnika (AWS SAM) vmesnik ukazne vrstice (CLI). To orodje ukazne vrstice razvijalcem omogoča inicializacijo in konfiguracijo aplikacij; pakirajte, zgradite in testirajte lokalno; in uvesti v oblak AWS.

Izvorno kodo za ta projekt lahko prenesete s repozitorij GitHub.

Ta projekt vključuje naslednje datoteke in mape:

  • app/app.py – Koda za funkcijo Lambda aplikacije, vključno s kodo za sklepanje ML.
  • app/Dockerfile – Datoteka Docker za izdelavo slike vsebnika, ki vsebuje funkcijo sklepanja, model, prenesen iz Hugging Face, in razširitev Lambda, zgrajeno kot plast. V nasprotju s funkcijami .zip plasti ni mogoče pripeti funkcijam Lambda, zapakiranim v vsebnik, v času ustvarjanja funkcije. Namesto tega zgradimo plast in kopiramo njeno vsebino v sliko vsebnika.
  • razširitve – Razširitvene datoteke monitorja modela. Ta razširitev Lambda se uporablja za beleženje vnosa v funkcijo sklepanja in ustrezne napovedi v vedro S3.
  • aplikacija/model – Model, prenesen iz Hugging Face.
  • app/requirements.txt – Odvisnosti Pythona, ki bodo nameščene v vsebnik.
  • dogodki – Dogodki priklica, ki jih lahko uporabite za testiranje funkcije.
  • template.yaml – Deskriptorska datoteka, ki definira vire AWS aplikacije.

Aplikacija uporablja več virov AWS, vključno s funkcijami Lambda in an Amazon API Gateway API. Ti viri so opredeljeni v template.yaml datoteko v tem projektu. Predlogo lahko posodobite, da dodate vire AWS prek istega postopka uvajanja, ki posodablja kodo vaše aplikacije.

Predpogoji

Za ta korak morate imeti naslednje predpogoje:

Razmestite vzorčno aplikacijo

Če želite prvič zgraditi svojo aplikacijo, izvedite naslednje korake:

  • Zaženite naslednjo kodo v lupini. (To bo zgradilo tudi razširitev):
  • Zgradite Dockerjevo sliko aplikacije monitorja modela. Vsebina gradnje je v .aws-sam imenik
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Prijava v Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Ustvarite repozitorij v Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • Potisnite sliko vsebnika v Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Odkomentirajte vrstico #1 v app/Dockerfile in jo uredite tako, da kaže na pravilno sliko repozitorija ECR, nato odkomentirajte vrstici #6 in #7 v aplikacija/Dockerfile:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Ponovno zgradite aplikacijo:

Gradimo znova, ker Lambda ne podpira slojev Lambda neposredno za vrsto pakiranja slike vsebnika. Najprej moramo zgraditi komponento za spremljanje modela kot sliko vsebnika, jo naložiti v Amazon ECR in nato to sliko uporabiti v aplikaciji za spremljanje modela kot plast vsebnika.

  • Na koncu uvedite funkcijo Lambda, prehod API in razširitev:
sam deploy --guided

Ta ukaz pakira in uvede vašo aplikacijo v AWS z nizom pozivov:

  • Ime skladovnice : Ime razporejenega Oblikovanje oblaka AWS kup. To mora biti edinstveno za vaš račun in regijo, dobro izhodišče pa bi bilo nekaj, kar se ujema z imenom vašega projekta.
  • Regija AWS : Regija AWS, v katero nameščate svojo aplikacijo.
  • Pred uvedbo potrdite spremembe : Če je nastavljeno na yes, se vam prikažejo vsi nabori sprememb, preden se zaženejo v ročni pregled. Če je nastavljeno na ne, AWS SAM CLI samodejno uvede spremembe aplikacije.
  • Dovoli ustvarjanje vloge AWS SAM CLI IAM : Številne predloge AWS SAM, vključno s tem primerom, ustvarjajo AWS upravljanje identitete in dostopa (IAM), ki so potrebne za funkcije Lambda, vključene za dostop do storitev AWS. Ta so privzeto omejena na najmanjša zahtevana dovoljenja. Za uvedbo sklada CloudFormation, ki ustvarja ali spreminja vloge IAM, je CAPABILITY_IAM vrednost za capabilities je treba zagotoviti. Če dovoljenje ni zagotovljeno prek tega poziva, morate za uvedbo tega primera izrecno posredovati --capabilities CAPABILITY_IAM k sam deploy ukaz.
  • Shranite argumente v samconfig.toml : Če je nastavljeno na yes, se vaše izbire shranijo v konfiguracijsko datoteko znotraj projekta, tako da lahko v prihodnosti preprosto zaženete sam deploy brez parametrov za uvajanje sprememb v vašo aplikacijo.

URL končne točke prehoda API najdete v izhodnih vrednostih, prikazanih po uvedbi.

Preizkusite aplikacijo

Če želite preizkusiti aplikacijo, uporabite Postman ali curl, da pošljete zahtevo končni točki prehoda API. Na primer:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

Videti bi morali izhod, kot je naslednja koda. Model ML je sklepal iz konteksta in vrnil odgovor na naše vprašanje.

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

Po nekaj minutah bi morali videti datoteko v vedru S3 nlp-qamodel-model-monitoring-modelmonitorbucket- z zabeleženim vnosom in sklepanjem.

Čiščenje

Če želite izbrisati vzorčno aplikacijo, ki ste jo ustvarili, uporabite AWS CLI:

aws cloudformation delete-stack --stack-name 

zaključek

V tej objavi smo implementirali funkcijo spremljanja modela kot razširitev Lambda in jo uvedli v delovno obremenitev sklepanja Lambda ML. Pokazali smo, kako zgraditi in namestiti to rešitev v svoj račun AWS. Nazadnje smo pokazali, kako izvesti test za preverjanje delovanja monitorja.

V razdelku za komentarje navedite morebitne misli ali vprašanja. Za več učnih virov brez strežnikov obiščite Dežela brez strežnikov.


O avtorjih

Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Dan Fox je glavni arhitekt specializiranih rešitev v svetovni specializirani organizaciji za brezstrežniške storitve. Dan sodeluje s strankami, da bi jim pomagal izkoristiti storitve brez strežnika za izdelavo razširljivih, visoko zmogljivih in stroškovno učinkovitih aplikacij, odpornih na napake. Dan je hvaležen, da lahko živi in ​​dela v ljubkem Boulderju v Koloradu.

Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Newton Jain je višji produktni vodja, odgovoren za gradnjo novih izkušenj za stranke strojnega učenja, visoko zmogljivega računalništva (HPC) in obdelave medijev na AWS Lambda. Vodi razvoj novih zmogljivosti za povečanje zmogljivosti, zmanjšanje zakasnitve, izboljšanje razširljivosti, izboljšanje zanesljivosti in zmanjšanje stroškov. Prav tako pomaga strankam AWS pri definiranju učinkovite brezstrežniške strategije za njihove računalniško intenzivne aplikacije.

Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Diksha Sharma je arhitekt rešitev in strokovnjak za strojno učenje pri AWS. Strankam pomaga pospešiti njihovo sprejemanje v oblaku, zlasti na področjih strojnega učenja in brezstrežniških tehnologij. Diksha uporablja prilagojene dokaze koncepta, ki strankam pokažejo vrednost AWS pri soočanju z njihovimi poslovnimi in IT izzivi. Strankam posreduje njihovo znanje o AWS in skupaj s strankami gradi njihovo želeno rešitev.

Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Veda Raman je višji specialist za rešitve za strojno učenje s sedežem v Marylandu. Veda sodeluje s strankami, da bi jim pomagala oblikovati učinkovite, varne in razširljive aplikacije strojnega učenja. Veda želi pomagati strankam pri uporabi brezstrežniških tehnologij za strojno učenje.

Razmestite rešitev za zajemanje podatkov sklepanja strojnega učenja na AWS Lambda PlatoBlockchain Data Intelligence. Navpično iskanje. Ai. Josh Kahn je svetovni tehnološki vodja za brezstrežniške rešitve in glavni arhitekt rešitev. Pri AWS vodi globalno skupnost brezstrežniških strokovnjakov, ki strankam vseh velikosti, od novoustanovljenih podjetij do največjih svetovnih podjetij, pomagajo pri učinkoviti uporabi brezstrežniških tehnologij AWS.

Časovni žig:

Več od Strojno učenje AWS