Za podatkovne znanstvenike je premikanje modelov strojnega učenja (ML) od dokaza koncepta do proizvodnje pogosto velik izziv. Eden od glavnih izzivov je lahko uvedba dobro delujočega, lokalno usposobljenega modela v oblak za sklepanje in uporabo v drugih aplikacijah. Upravljanje procesa je lahko okorno, vendar lahko s pravim orodjem znatno zmanjšate zahtevani napor.
Sklep Amazon SageMaker, ki je bil na splošno na voljo aprila 2022, vam olajša uvajanje modelov ML v produkcijo za izdelavo napovedi v velikem obsegu, saj zagotavlja širok izbor infrastrukture ML in možnosti uvajanja modelov za pomoč pri izpolnjevanju vseh vrst potreb sklepanja ML. Lahko uporabiš Končne točke sklepanja brez strežnika SageMaker za delovne obremenitve, ki imajo obdobja mirovanja med prometnimi sunki in lahko prenašajo hladne zagone. Končne točke se samodejno povečajo glede na promet in odvzamejo nediferencirano težko delo pri izbiranju in upravljanju strežnikov. Poleg tega lahko uporabite AWS Lambda neposredno, da izpostavite svoje modele in uvedete svoje aplikacije ML z uporabo vašega želenega odprtokodnega okvira, ki se lahko izkaže za bolj prilagodljivega in stroškovno učinkovitega.
FastAPI je sodobno, visoko zmogljivo spletno ogrodje za gradnjo API-jev s Pythonom. Izstopa, ko gre za razvoj brezstrežniških aplikacij z mikrostoritvami RESTful in primeri uporabe, ki zahtevajo sklepanje ML v velikem obsegu v več panogah. Zaradi njegove enostavnosti in vgrajenih funkcij, kot je samodejna dokumentacija API-ja, je priljubljena izbira med inženirji ML za uvajanje visoko zmogljivih API-jev za sklepanje. Svoje poti lahko definirate in organizirate z uporabo že pripravljenih funkcij FastAPI, da po potrebi povečate in obravnavate rastočo poslovno logiko, testirate lokalno in jo gostite na Lambdi, nato pa jo izpostavite prek enega samega prehoda API, ki vam omogoča, prenesite odprtokodno spletno ogrodje v Lambdo brez težkega dvigovanja ali preoblikovanja kod.
Ta objava vam pokaže, kako preprosto uvesti in zagnati sklepanje ML brez strežnika, tako da svoj model ML izpostavite kot končno točko z uporabo FastAPI, Docker, Lambda in Amazon API Gateway. Pokažemo vam tudi, kako avtomatizirati uvajanje z uporabo Komplet za razvoj oblaka AWS (AWS CDK).
Pregled rešitev
Naslednji diagram prikazuje arhitekturo rešitve, ki jo uvajamo v tej objavi.
Predpogoji
Imeti morate naslednje predpogoje:
- Python3 nameščen skupaj z
virtualenv
za ustvarjanje in upravljanje virtualnih okolij v Pythonu - aws-cdk v2 nameščen v vašem sistemu, da lahko uporabljate AWS CDK CLI
- Docker je nameščen in deluje na vašem lokalnem računalniku
Preverite, ali je nameščena vsa potrebna programska oprema:
- O Vmesnik ukazne vrstice AWS (AWS CLI). Prijavite se v svoj račun in izberite regijo, kjer želite uvesti rešitev.
- Za preverjanje različice Pythona uporabite naslednjo kodo:
- Preverite če
virtualenv
je nameščen za ustvarjanje in upravljanje virtualnih okolij v Pythonu. Strogo gledano, to ni težka zahteva, vendar vam bo olajšala življenje in vam pomagala lažje slediti tej objavi. Uporabite naslednjo kodo: - Preverite, ali je cdk nameščen. To bo uporabljeno za uvedbo naše rešitve.
- Preverite, ali je Docker nameščen. Z našo rešitvijo bo vaš model postal dostopen prek slike Docker za Lambdo. Za lokalno gradnjo te slike potrebujemo Docker.
- Prepričajte se, da Docker deluje in deluje z naslednjo kodo:
Kako strukturirati svoj projekt FastAPI z uporabo AWS CDK
Za naš projekt uporabljamo naslednjo imeniško strukturo (ne upoštevamo nekaterih predložkov AWS CDK kode, ki so v kontekstu te objave nepomembne):
Imenik sledi priporočena struktura projektov AWS CDK za Python.
Najpomembnejši del tega skladišča je fastapi_model_serving
imenik. Vsebuje kodo, ki bo definirala sklad AWS CDK in vire, ki bodo uporabljeni za streženje modela.
O fastapi_model_serving
imenik vsebuje model_endpoint
podimenik, ki vsebuje vsa potrebna sredstva, ki sestavljajo našo brezstrežniško končno točko, in sicer datoteko Docker za izdelavo slike Docker, ki jo bo uporabljal Lambda, kodo funkcije Lambda, ki uporablja FastAPI za obdelavo zahtev za sklepanje in njihovo usmerjanje do pravilne končne točke, ter model artefakte modela, ki ga želimo uporabiti. model_endpoint
vsebuje tudi naslednje:
Docker
– Ta podimenik vsebuje naslednje:Dockerfile
– To se uporablja za izdelavo slike za funkcijo Lambda z vsemi artefakti (koda funkcije Lambda, artefakti modela itd.) na pravem mestu, tako da jih je mogoče uporabljati brez težav.serving.api.tar.gz
– To je arhiv, ki vsebuje vsa sredstva iz mape izvajalnega okolja, ki so potrebna za izdelavo slike Docker. Razpravljamo o tem, kako ustvariti.tar.gz
datoteko kasneje v tej objavi.runtime
– Ta podimenik vsebuje naslednje:serving_api
– Koda za funkcijo Lambda in njene odvisnosti, navedene v datoteki requirements.txt.custom_lambda_utils
– To vključuje sklepni skript, ki naloži potrebne artefakte modela, tako da se lahko model posreduje vserving_api
ki ga bo nato izpostavil kot končno točko.
Poleg tega imamo imenik predlog, ki ponuja predlogo struktur map in datotek, kjer lahko definirate kode po meri in API-je po vzorcu, ki smo ga pregledali prej. Imenik predlog vsebuje navidezno kodo, ki jo lahko uporabite za ustvarjanje novih funkcij Lambda:
dummy
– Vsebuje kodo, ki izvaja strukturo običajne funkcije Lambda z uporabo izvajalnega okolja Pythonapi
– Vsebuje kodo, ki izvaja funkcijo Lambda, ki končno točko FastAPI ovije okoli obstoječega prehoda API
Uvedite rešitev
Koda je privzeto nameščena znotraj regije eu-west-1. Če želite spremeniti regijo, lahko spremenite spremenljivko konteksta DEPLOYMENT_REGION v cdk.json
Datoteka.
Vendar ne pozabite, da poskuša rešitev razmestiti funkcijo Lambda na vrhu arhitekture arm64 in da ta funkcija morda ne bo na voljo v vseh regijah. V tem primeru morate spremeniti parameter arhitekture v fastapi_model_serving_stack.py
datoteko, kot tudi prvo vrstico datoteke Dockerfile znotraj imenika Docker, za gostovanje te rešitve v arhitekturi x86.
Za namestitev rešitve izvedite naslednje korake:
- Zaženite naslednji ukaz za kloniranje repozitorija GitHub:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Ker želimo predstaviti, da lahko rešitev deluje z artefakti modela, ki jih usposabljate lokalno, vsebujemo vzorčni artefakt modela vnaprej usposobljenega DestilBERT model na Hugging Face model hub za nalogo z odgovori na vprašanja vserving_api.tar.gz
mapa. Čas prenosa lahko traja približno 3–5 minut. Zdaj pa nastavimo okolje. - Prenesite predhodno usposobljen model, ki bo uveden iz središča modela Hugging Face v
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
imenik. Prav tako ustvari virtualno okolje in namesti vse potrebne odvisnosti. Ta ukaz morate zagnati samo enkrat:make prep
. Ta ukaz lahko traja približno 5 minut (odvisno od vaše internetne pasovne širine), ker mora prenesti artefakte modela. - Zapakirajte artefakte modela znotraj a
.tar.gz
arhiv, ki bo uporabljen znotraj slike Docker, ki je vgrajena v sklad AWS CDK. To kodo morate zagnati vsakič, ko spremenite artefakte modela ali sam API, da boste imeli vedno zapakirano najnovejšo različico vaše servirne končne točke:make package_model
. Artefakti so vsi na mestu. Zdaj lahko uvedemo sklad AWS CDK v vaš račun AWS. - Zaženite zagonski program cdk, če prvič uvajate aplikacijo AWS CDK v okolje (kombinacija računa + regije):
Ta sklad vključuje vire, ki so potrebni za delovanje kompleta orodij. Na primer, sklad vključuje vedro Amazon Simple Storage Service (Amazon S3), ki se uporablja za shranjevanje predlog in sredstev med postopkom uvajanja.
Ker v tej uvedbi AWS CDK gradimo slike Docker lokalno, moramo zagotoviti, da se demon Docker izvaja, preden lahko ta sklad uvedemo prek CLI AWS CDK.
- Če želite preveriti, ali se demon Docker izvaja v vašem sistemu, uporabite naslednji ukaz:
Če ne prejmete sporočila o napaki, bi morali biti pripravljeni na uvedbo rešitve.
- Razmestite rešitev z naslednjim ukazom:
Ta korak lahko traja približno 5–10 minut zaradi gradnje in potiskanja slike Docker.
Odpravljanje težav
Če ste uporabnik Maca, lahko pri prijavi naletite na napako Registar elastičnih zabojnikov Amazon (Amazon ECR) s prijavo Docker, kot npr Error saving credentials ... not implemented
. Na primer:
Preden lahko uporabite Lambda na vrhu vsebnikov Docker znotraj AWS CDK, boste morda morali spremeniti ~/docker/config.json
mapa. Natančneje, morda boste morali spremeniti parameter credsStore v ~/.docker/config.json
na osxkeychain. To reši težave s prijavo v Amazon ECR v računalniku Mac.
Izvedite sklepanje v realnem času
Po tvojem Oblikovanje oblaka AWS je sklad uspešno nameščen, pojdite na Izhodi zavihek za vaš sklad na konzoli AWS CloudFormation in odprite URL končne točke. Zdaj je naš model dostopen prek URL-ja končne točke in pripravljeni smo na izvajanje sklepanja v realnem času.
Pomaknite se do URL-ja in preverite, ali vidite sporočilo »zdravo, svet«, in dodajte /docs
na naslov, da preverite, ali lahko uspešno vidite stran interaktivnega uporabniškega vmesnika. Morda bo čas hladnega zagona, zato boste morda morali počakati ali nekajkrat osvežiti.
Ko se prijavite na ciljno stran strani uporabniškega vmesnika FastAPI swagger, lahko izvajate prek root /
ali preko /question
.
od /
, lahko zaženete API in dobite sporočilo »zdravo, svet«.
od /question
, lahko zaženete API in zaženete sklepanje ML na modelu, ki smo ga uvedli za primer odgovarjanja na vprašanja. Na primer, uporabimo vprašanje Kakšne je zdaj barve mojega avtomobila? in kontekst je Moj avto je bil nekoč moder, vendar sem ga pobarval rdeče.
Ko izberete Izvedba, na podlagi danega konteksta bo model odgovoril na vprašanje z odgovorom, kot je prikazano na naslednjem posnetku zaslona.
V telesu odgovora lahko vidite odgovor z oceno zaupanja iz modela. Lahko tudi eksperimentirate z drugimi primeri ali vdelate API v svojo obstoječo aplikacijo.
Lahko pa izvedete sklepanje prek kode. Tukaj je en primer, napisan v Pythonu, z uporabo requests
knjižnica:
Koda izpiše niz, podoben naslednjemu:
Če vas zanima več o uvajanju Generative AI in velikih jezikovnih modelov v AWS, si oglejte tukaj:
- Namestite generativni AI brez strežnika na AWS Lambda z OpenLLaMa
- Razmestite velike jezikovne modele na AWS Inferentia2 z uporabo velikih vsebnikov za sklepanje modelov
Čiščenje
Znotraj korenskega imenika vašega skladišča zaženite naslednjo kodo, da počistite svoje vire:
zaključek
V tej objavi smo predstavili, kako lahko uporabite Lambda za uvajanje svojega usposobljenega modela ML z uporabo vašega želenega ogrodja spletne aplikacije, kot je FastAPI. Zagotovili smo podroben repozitorij kode, ki ga lahko uvedete, vi pa ohranite prilagodljivost preklopa na artefakte katerega koli usposobljenega modela, ki ga obdelujete. Učinkovitost je lahko odvisna od tega, kako implementirate in uvedete model.
Vabimo vas, da ga preizkusite sami in veseli bomo vaših povratnih informacij!
O avtorjih
Tingyi Li je arhitekt za podjetniške rešitve iz podjetja AWS s sedežem v Stockholmu na Švedskem in podpira stranke Nordic. Uživa v pomoči strankam pri arhitekturi, oblikovanju in razvoju infrastrukturnih rešitev, optimiziranih za oblak. Specializirana je za AI in strojno učenje in jo zanima opolnomočenje strank z inteligenco v njihovih aplikacijah AI/ML. V prostem času je tudi honorarna ilustratorka, ki piše romane in igra klavir.
Demir Ćatović je inženir strojnega učenja iz podjetja AWS s sedežem v Zürichu v Švici. Sodeluje s strankami in jim pomaga implementirati razširljive in popolnoma funkcionalne aplikacije ML. Navdušen je nad gradnjo in proizvodnjo aplikacij za strojno učenje za stranke in vedno želi raziskati nove trende in vrhunske tehnologije v svetu AI/ML.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Avtomobili/EV, Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- BlockOffsets. Posodobitev okoljskega offset lastništva. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- : je
- :ne
- :kje
- $GOR
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Sposobna
- O meni
- dostopen
- Račun
- čez
- dodajte
- Poleg tega
- Naslov
- AI
- AI / ML
- vsi
- omogoča
- skupaj
- Prav tako
- vedno
- Amazon
- Amazon Web Services
- med
- an
- in
- odgovor
- kaj
- API
- API-ji
- aplikacija
- uporaba
- aplikacije
- april
- Arhitektura
- Arhiv
- SE
- okoli
- AS
- Sredstva
- At
- avtomatizirati
- Samodejno
- samodejno
- Na voljo
- stran
- AWS
- Oblikovanje oblaka AWS
- AWS Lambda
- Backend
- pasovna širina
- temeljijo
- BE
- ker
- pred
- med
- Modra
- telo
- Bootstrap
- prinašajo
- široka
- izgradnjo
- Building
- zgrajena
- vgrajeno
- poslovni
- vendar
- by
- CAN
- voziček
- primeru
- primeri
- izziv
- izzivi
- spremenite
- Spremembe
- preveriti
- izbira
- Izberite
- Cloud
- Koda
- Kode
- hladno
- barva
- kombinacija
- prihaja
- dokončanje
- Koncept
- zaupanje
- Connect
- povezava
- Konzole
- vsebujejo
- Posoda
- Zabojniki
- Vsebuje
- ozadje
- popravi
- stroškovno učinkovito
- bi
- ustvarjajo
- ustvari
- Ustvarjanje
- Mandatno
- Stranke, ki so
- meri
- vrhunsko
- datum
- privzeto
- Odvisno
- razporedi
- razporejeni
- uvajanja
- uvajanje
- Oblikovanje
- podrobno
- razvoju
- Razvoj
- neposredno
- razpravlja
- Lučki delavec
- Dokumentacija
- dont
- prenesi
- 2
- med
- prej
- enostavnost
- lažje
- enostavno
- lahka
- prizadevanje
- Embed
- pooblastitvi
- konec
- Končna točka
- se ukvarja
- inženir
- Inženirji
- zagotovitev
- Podjetje
- okolje
- okolja
- Napaka
- Primer
- Primeri
- razburjen
- izvršiti
- obstoječih
- Izhod
- poskus
- raziskuje
- Obraz
- Feature
- Nekaj
- file
- datoteke
- prva
- prvič
- prilagodljivost
- prilagodljiv
- sledi
- po
- sledi
- za
- Okvirni
- iz
- funkcija
- funkcionalnosti
- funkcije
- Prehod
- splošno
- generativno
- Generativna AI
- dobili
- GitHub
- dana
- Go
- dogaja
- Pridelovanje
- ročaj
- Trdi
- Imajo
- he
- slišati
- težka
- težko dvigovanje
- pomoč
- pomoč
- Pomaga
- jo
- tukaj
- visokozmogljivo
- gostitelj
- Kako
- Kako
- Vendar
- HTML
- http
- HTTPS
- Hub
- i
- Mirovanje
- if
- slika
- slike
- izvajati
- izvedbe
- Pomembno
- in
- V drugi
- vključuje
- industrij
- Infrastruktura
- v notranjosti
- nameščen
- Intelligence
- interaktivno
- zainteresirani
- Internet
- v
- Uvedeno
- Vprašanja
- IT
- ITS
- sam
- json
- Keen
- Vedeti
- pristanek
- jezik
- velika
- pozneje
- učenje
- Knjižnica
- življenje
- dviganje
- kot
- vrstica
- obremenitve
- lokalna
- lokalno
- prijavi
- sečnja
- Logika
- prijava
- mac
- stroj
- strojno učenje
- je
- Glavne
- Znamka
- IZDELA
- upravljanje
- upravljanje
- Maj ..
- Srečati
- Sporočilo
- mikro storitve
- morda
- moti
- Minute
- ML
- Model
- modeli
- sodobna
- več
- Najbolj
- premikanje
- več
- morajo
- my
- in sicer
- potrebno
- Nimate
- potrebna
- potrebe
- Novo
- zdaj
- of
- pogosto
- on
- enkrat
- ONE
- samo
- odprite
- open source
- Delovanje
- možnosti
- or
- Da
- redni
- Ostalo
- naši
- ven
- pakirani
- Stran
- parameter
- del
- opravil
- strastno
- performance
- obdobja
- Kraj
- platon
- Platonova podatkovna inteligenca
- PlatoData
- igra
- Popular
- Prispevek
- Napovedi
- prednostno
- predpogoji
- darila
- Postopek
- proizvodnja
- Projekt
- projekti
- dokazilo
- dokaz koncepta
- Dokaži
- če
- zagotavlja
- zagotavljanje
- Potiskanje
- Python
- vprašanje
- pripravljen
- v realnem času
- Rdeča
- zmanjša
- okolica
- regije
- Skladišče
- zahteva
- obvezna
- zahteva
- Zahteve
- viri
- Odgovor
- povzroči
- ohranijo
- Pravica
- koren
- Pot
- poti
- Run
- tek
- sagemaker
- shranjevanje
- razširljive
- Lestvica
- Znanstveniki
- Obseg
- rezultat
- glej
- izbiranje
- izbor
- Brez strežnika
- Strežniki
- Storitev
- Storitve
- služijo
- nastavite
- je
- shouldnt
- Prikaži
- predstavitev
- pokazale
- Razstave
- pomemben
- bistveno
- Podoben
- Enostavno
- sam
- So
- Software
- Rešitev
- rešitve
- Rešuje
- nekaj
- gledano
- specializirani
- posebej
- določeno
- sveženj
- stojala
- Začetek
- začne
- Status
- Korak
- Koraki
- shranjevanje
- trgovina
- shranjevanje
- String
- Struktura
- Uspešno
- taka
- Podpora
- Švedska
- švica
- sistem
- Bodite
- Naloga
- Tehnologije
- Predloga
- predloge
- Test
- da
- O
- njihove
- Njih
- POTEM
- Tukaj.
- jih
- ta
- skozi
- čas
- krat
- do
- orodje
- vrh
- Prometa
- Vlak
- usposobljeni
- Trends
- poskusite
- ui
- unix
- up-to-date
- URL
- uporaba
- Rabljeni
- uporabnik
- uporablja
- uporabo
- različica
- preko
- Virtual
- Počakaj
- želeli
- je
- we
- web
- Spletna aplikacija
- spletne storitve
- dobrodošli
- Dobro
- šla
- Kaj
- Kaj je
- kdaj
- kadar koli
- ali
- ki
- WHO
- bo
- z
- brez
- delo
- svet
- pisni
- Vi
- Vaša rutina za
- sami
- zefirnet
- Zurich