Az adattudósok számára gyakran jelentős kihívást jelent a gépi tanulási (ML) modellek áthelyezése a koncepció bizonyításától a gyártásig. Az egyik fő kihívás egy jól teljesítő, helyileg betanított modell telepítése a felhőbe következtetések levonásához és más alkalmazásokban való felhasználásához. A folyamat irányítása nehézkes lehet, de a megfelelő eszközzel jelentősen csökkentheti a szükséges erőfeszítést.
Amazon SageMaker következtetés, amelyet 2022 áprilisában tettek általánosan elérhetővé, megkönnyíti az ML-modellek üzembe helyezését a termelésben, hogy nagyarányú előrejelzéseket készíthessen, és az ML-infrastruktúra és a modell-telepítési lehetőségek széles választékát kínálja, hogy mindenféle ML-következtetési igényt kielégítsen. Te tudod használni SageMaker Serverless Inference végpontok olyan munkaterhelésekhez, amelyeknél a forgalmi hullámok között üresjáratok vannak, és elviselik a hidegindítást. A végpontok automatikusan skálázódnak a forgalom alapján, és elveszik a kiszolgálók kiválasztásával és kezelésével járó, megkülönböztethetetlenül nehéz terheket. Ezenkívül használhatja AWS Lambda közvetlenül a modellek megjelenítéséhez és az ML-alkalmazások üzembe helyezéséhez a preferált nyílt forráskódú keretrendszer használatával, amely rugalmasabbnak és költséghatékonyabbnak bizonyulhat.
FastAPI egy modern, nagy teljesítményű webes keretrendszer API-k Python segítségével történő építéséhez. Kiemelkedik a RESTful mikroszolgáltatásokkal rendelkező kiszolgáló nélküli alkalmazások fejlesztésében, valamint olyan esetekben, amikor több iparágban is ML következtetésre van szükség. Könnyűsége és beépített funkciói, mint például az automatikus API-dokumentáció, népszerű választássá teszik az ML-mérnökök körében a nagy teljesítményű következtetési API-k telepítéséhez. Meghatározhatja és rendszerezheti útvonalait a FastAPI beépített funkcióival, hogy szükség szerint kibővítse és kezelje a növekvő üzleti logikát, helyileg tesztelje és Lambdán tárolja, majd egyetlen API-átjárón keresztül tegye közzé, amely lehetővé teszi a hozzon létre egy nyílt forráskódú webes keretrendszert a Lambdához anélkül, hogy megnehezítené a kódokat.
Ez a bejegyzés bemutatja, hogyan telepíthet és futtathat egyszerűen kiszolgáló nélküli ML-következtetést az ML-modell végpontként való megjelenítésével a FastAPI, Docker, Lambda és Amazon API átjáró. Azt is megmutatjuk, hogyan automatizálhatja a telepítést a AWS Cloud Development Kit (AWS CDK).
Megoldás áttekintése
A következő diagram az ebben a bejegyzésben telepített megoldás felépítését mutatja be.
Előfeltételek
A következő előfeltételekkel kell rendelkeznie:
- Python3 telepítve, együtt
virtualenv
virtuális környezetek létrehozásához és kezeléséhez Pythonban - aws-cdk v2 telepítve van a rendszerére, hogy használni tudja az AWS CDK CLI-t
- A Docker telepítve van és fut a helyi gépen
Tesztelje, hogy az összes szükséges szoftver telepítve van-e:
- A AWS parancssori interfész (AWS CLI) szükséges. Jelentkezzen be fiókjába, és válassza ki azt a régiót, ahol telepíteni kívánja a megoldást.
- A Python verzió ellenőrzéséhez használja a következő kódot:
- Ellenőrizze, hogy
virtualenv
telepítve van virtuális környezetek létrehozására és kezelésére Pythonban. Szigorúan véve ez nem nehéz követelmény, de megkönnyíti az életét, és könnyebben követi ezt a bejegyzést. Használja a következő kódot: - Ellenőrizze, hogy a cdk telepítve van-e. Ezt használjuk fel megoldásunk üzembe helyezéséhez.
- Ellenőrizze, hogy a Docker telepítve van-e. Megoldásunk lehetővé teszi, hogy modellje elérhetővé váljon a Lambda számára egy Docker-képen keresztül. Ennek a képnek a helyi felépítéséhez Dockerre van szükségünk.
- Győződjön meg arról, hogy a Docker működik és fut a következő kóddal:
A FastAPI projekt felépítése az AWS CDK használatával
A következő könyvtárstruktúrát használjuk projektünkhöz (figyelmen kívül hagyva néhány olyan AWS CDK kódot, amely lényegtelen a bejegyzés szempontjából):
A könyvtár követi a Az AWS CDK projektek Pythonhoz javasolt struktúrája.
Ennek a tárolónak a legfontosabb része a fastapi_model_serving
Könyvtár. Tartalmazza azt a kódot, amely meghatározza az AWS CDK veremét és a modellszolgáltatáshoz használt erőforrásokat.
A fastapi_model_serving
könyvtár tartalmazza a model_endpoint
alkönyvtár, amely tartalmazza a kiszolgáló nélküli végpontunkhoz szükséges összes eszközt, nevezetesen a Docker-fájlt a Lambda által használt Docker-kép létrehozásához, a Lambda-függvénykódot, amely a FastAPI-t használja a következtetési kérések kezelésére és a megfelelő végponthoz irányítására, valamint a modellt. a telepíteni kívánt modell műtermékei. model_endpoint
a következőket is tartalmazza:
Docker
– Ez az alkönyvtár a következőket tartalmazza:Dockerfile
– Ez arra szolgál, hogy a Lambda függvény képét a megfelelő helyen (Lambda funkciókód, modellműtermékek stb.) a megfelelő helyen lehessen létrehozni, hogy problémamentesen lehessen őket használni.serving.api.tar.gz
– Ez egy tarball, amely tartalmazza a futásidejű mappából a Docker lemezkép felépítéséhez szükséges összes eszközt. Megbeszéljük, hogyan kell létrehozni a.tar.gz
fájl később ebben a bejegyzésben.runtime
– Ez az alkönyvtár a következőket tartalmazza:serving_api
– A Lambda függvény kódja és függőségei a követelmények.txt fájlban meghatározottak.custom_lambda_utils
– Ez magában foglal egy következtetési szkriptet, amely betölti a szükséges modelltermékeket, hogy a modell továbbítható legyen aserving_api
amely aztán végpontként teszi fel.
Ezenkívül rendelkezésünkre áll a sablonkönyvtár, amely mappastruktúrák és fájlok sablonját tartalmazza, ahol megadhatja testreszabott kódjait és API-jait a korábban átment minta szerint. A sablonkönyvtár álkódot tartalmaz, amellyel új Lambda-függvényeket hozhat létre:
dummy
– Tartalmazza azt a kódot, amely egy közönséges Lambda függvény szerkezetét valósítja meg a Python futási környezet használatávalapi
– Tartalmazza azt a kódot, amely egy Lambda függvényt valósít meg, amely egy FastAPI végpontot egy meglévő API-átjáró köré von
Telepítse a megoldást
Alapértelmezés szerint a kód az eu-west-1 régión belül kerül telepítésre. Ha módosítani szeretné a régiót, módosíthatja a DEPLOYMENT_REGION környezeti változót a következőben cdk.json
fájlt.
Ne feledje azonban, hogy a megoldás Lambda funkciót próbál telepíteni az arm64 architektúrán, és előfordulhat, hogy ez a funkció nem érhető el minden régióban. Ebben az esetben meg kell változtatnia az architektúra paramétert a fastapi_model_serving_stack.py
fájlt, valamint a Docker-könyvtárban található Dockerfile első sorát, hogy a megoldást az x86 architektúrán tárolja.
A megoldás üzembe helyezéséhez hajtsa végre a következő lépéseket:
- Futtassa a következő parancsot a GitHub tárház klónozásához:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Mivel szeretnénk bemutatni, hogy a megoldás működhet olyan modellműtermékekkel, amelyeket helyben betanít, ezért tartalmazunk egy előképzett modellműtermék mintáját. DistilBERT modell a Hugging Face modellközponton egy kérdésre válaszoló feladathoz aserving_api.tar.gz
fájlt. A letöltési idő körülbelül 3-5 percet vehet igénybe. Most pedig állítsuk be a környezetet. - Töltse le az előképzett modellt, amelyet a Hugging Face modellközpontból telepít a következő helyre
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
Könyvtár. Ezenkívül virtuális környezetet hoz létre, és telepíti az összes szükséges függőséget. Ezt a parancsot csak egyszer kell futtatnia:make prep
. Ez a parancs körülbelül 5 percig tarthat (az internet sávszélességétől függően), mert le kell töltenie a modell melléktermékeit. - Csomagolja be a modell műtermékeit a
.tar.gz
archívum, amely az AWS CDK-verembe épített Docker-lemezképen belül kerül felhasználásra. Ezt a kódot le kell futtatnia, amikor módosítja a modell melléktermékeit vagy magát az API-t, hogy mindig a szolgáltatási végpont legfrissebb verziója legyen csomagolva:make package_model
. A műtárgyak mind a helyükön vannak. Most telepíthetjük az AWS CDK-vermet az AWS-fiókjába. - Futtassa a cdk bootstrap programot, ha először telepít AWS CDK alkalmazást egy környezetben (fiók + régió kombinációja):
Ez a verem tartalmazza az eszközkészlet működéséhez szükséges erőforrásokat. Például a verem tartalmaz egy Amazon Simple Storage Service (Amazon S3) tárolót, amely sablonok és eszközök tárolására szolgál a telepítési folyamat során.
Mivel ebben az AWS CDK-telepítésben helyileg építjük fel a Docker-képfájlokat, meg kell győződnünk arról, hogy a Docker-démon fut, mielőtt telepíthetnénk ezt a veremet az AWS CDK parancssori felületén keresztül.
- Ha ellenőrizni szeretné, hogy a Docker démon fut-e a rendszeren, használja a következő parancsot:
Ha nem kap hibaüzenetet, készen kell állnia a megoldás üzembe helyezésére.
- Telepítse a megoldást a következő paranccsal:
Ez a lépés körülbelül 5–10 percig tarthat a Docker-kép létrehozása és leküldése miatt.
Hibaelhárítás
Ha Ön Mac felhasználó, hiba léphet fel a bejelentkezés során Amazon Elastic Container Registry (Amazon ECR) a Docker bejelentkezéssel, mint pl Error saving credentials ... not implemented
. Például:
Mielőtt a Lambdát az AWS CDK-n belüli Docker-tárolók tetején használhatná, előfordulhat, hogy módosítania kell a ~/docker/config.json
fájlt. Pontosabban, előfordulhat, hogy módosítania kell a credsStore paramétert ~/.docker/config.json
hogy osxkeychain. Ez megoldja az Amazon ECR bejelentkezési problémáit Mac számítógépen.
Futtasson valós idejű következtetést
Után a AWS felhőképződés A verem sikeresen telepítve van, lépjen a Kimenetek lapon a veremhez az AWS CloudFormation konzolon, és nyissa meg a végpont URL-jét. Most a modellünk elérhető a végpont URL-címén keresztül, és készen állunk a valós idejű következtetés futtatására.
Keresse meg az URL-t, és nézze meg, hogy látja-e a „hello world” üzenetet, és adja hozzá /docs
a címre, hogy megnézze, sikeresen látja-e az interaktív swagger UI oldalt. Előfordulhat egy kis hidegindítási idő, ezért előfordulhat, hogy néhányszor várnia kell, vagy frissítenie kell.
Miután bejelentkezett a FastAPI swagger UI oldal nyitóoldalára, a gyökéren keresztül futhat /
vagy pedig /question
.
Tól től /
, futtathatja az API-t, és megkaphatja a „hello world” üzenetet.
Tól től /question
, futtathatja az API-t, és lefuttathatja az ML következtetést azon a modellen, amelyet a kérdések megválaszolására telepítettünk. Például azt a kérdést használjuk, hogy milyen színű most az autóm? és a szövegkörnyezet: Az autóm kék volt, de pirosra festettem.
Ha úgy dönt Végrehajt, az adott kontextus alapján a modell választ ad a kérdésre, ahogy az a következő képernyőképen is látható.
A választörzsben láthatja a választ a modell megbízhatósági pontszámával. Kísérletezhet más példákkal is, vagy beágyazhatja az API-t meglévő alkalmazásába.
Alternatív megoldásként lefuttathatja a következtetést kódon keresztül. Íme egy példa Pythonban írva, a requests
könyvtár:
A kód a következőhöz hasonló karakterláncot ad ki:
Ha többet szeretne megtudni a Generative AI és a nagy nyelvi modellek AWS-en történő telepítéséről, nézze meg itt:
- Telepítsen kiszolgáló nélküli generatív AI-t az AWS Lambdán az OpenLLaMa segítségével
- Telepítsen nagy nyelvi modelleket az AWS Inferentia2-n nagy modellkövetkeztetési tárolók használatával
Tisztítsuk meg
A tárhely gyökérkönyvtárában futtassa a következő kódot az erőforrások megtisztításához:
Következtetés
Ebben a bejegyzésben bemutattuk, hogyan használhatja a Lambdát a betanított ML-modell üzembe helyezéséhez az előnyben részesített webalkalmazás-keretrendszerrel, például a FastAPI-val. Részletes kódtárat biztosítottunk, amelyet telepíthet, és megőrizheti a rugalmasságot, hogy bármelyik betanított modellműtermékre váltson, amelyet feldolgoz. A teljesítmény a modell megvalósításának és üzembe helyezésének módjától függhet.
Szívesen próbálja ki Ön is, és örömmel várjuk visszajelzését!
A szerzőkről
Tingyi Li a svédországi stockholmi székhelyű AWS vállalati megoldások építésze, a skandináv ügyfelek támogatásával. Szívesen segít ügyfeleinek a felhőre optimalizált infrastrukturális megoldások felépítésében, tervezésében és fejlesztésében. Az AI-ra és a gépi tanulásra szakosodott, és az ügyfelei intelligenciájával való felruházása iránt érdeklődik AI/ML-alkalmazásaikban. Szabadidejében részmunkaidőben illusztrátor is, aki regényeket ír és zongorázik.
Demir Catovic az AWS gépi tanulási mérnöke, székhelye Zürich, Svájc. Kapcsolatba lép az ügyfelekkel, és segít nekik skálázható és teljesen működőképes ML-alkalmazások megvalósításában. Szenvedélye a gépi tanulási alkalmazások gyártása és gyártása az ügyfelek számára, és mindig szívesen fedezi fel az új trendeket és a legmodernebb technológiákat az AI/ML világában.
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoData.Network Vertical Generative Ai. Erősítse meg magát. Hozzáférés itt.
- PlatoAiStream. Web3 Intelligence. Felerősített tudás. Hozzáférés itt.
- PlatoESG. Autóipar / elektromos járművek, Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- BlockOffsets. A környezetvédelmi ellentételezési tulajdon korszerűsítése. Hozzáférés itt.
- Forrás: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :is
- :nem
- :ahol
- $ UP
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Képes
- Rólunk
- hozzáférhető
- Fiók
- át
- hozzá
- Ezen kívül
- cím
- AI
- AI / ML
- Minden termék
- lehetővé teszi, hogy
- mentén
- Is
- mindig
- amazon
- Az Amazon Web Services
- között
- an
- és a
- válasz
- bármilyen
- api
- API-k
- app
- Alkalmazás
- alkalmazások
- április
- építészet
- Archív
- VANNAK
- körül
- AS
- Eszközök
- At
- automatizált
- Automatikus
- automatikusan
- elérhető
- el
- AWS
- AWS felhőképződés
- AWS Lambda
- háttér
- Sávszélesség
- alapján
- BE
- mert
- előtt
- között
- Kék
- test
- Bootstrap
- hoz
- széles
- épít
- Épület
- épült
- beépített
- üzleti
- de
- by
- TUD
- autó
- eset
- esetek
- kihívás
- kihívások
- változik
- Változások
- ellenőrizze
- választás
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a
- felhő
- kód
- kódok
- hideg
- szín
- kombináció
- jön
- teljes
- koncepció
- bizalom
- Csatlakozás
- kapcsolat
- Konzol
- tartalmaz
- Konténer
- Konténerek
- tartalmaz
- kontextus
- kijavítására
- költséghatékony
- tudott
- teremt
- teremt
- létrehozása
- Hitelesítő adatok
- Ügyfelek
- szabott
- élvonalbeli
- dátum
- alapértelmezett
- attól
- telepíteni
- telepített
- bevezetéséhez
- bevetés
- Design
- részletes
- fejlesztése
- Fejlesztés
- közvetlenül
- megvitatni
- Dokkmunkás
- dokumentáció
- ne
- letöltés
- két
- alatt
- Korábban
- könnyű
- könnyebb
- könnyen
- könnyű
- erőfeszítés
- Beágyaz
- képessé
- végén
- Endpoint
- elkötelezett
- mérnök
- Mérnökök
- biztosítására
- Vállalkozás
- Környezet
- környezetek
- hiba
- példa
- példák
- izgatott
- kivégez
- létező
- Kilépés
- kísérlet
- feltárása
- Arc
- Funkció
- kevés
- filé
- Fájlok
- vezetéknév
- első
- Rugalmasság
- rugalmas
- következik
- következő
- következik
- A
- Keretrendszer
- ból ből
- funkció
- funkciós
- funkciók
- gateway
- általában
- nemző
- Generatív AI
- kap
- GitHub
- adott
- Go
- megy
- Növekvő
- fogantyú
- Kemény
- Legyen
- he
- hall
- nehéz
- súlyemelés
- segít
- segít
- segít
- neki
- itt
- nagy teljesítményű
- vendéglátó
- Hogyan
- How To
- azonban
- HTML
- http
- HTTPS
- Kerékagy
- i
- Idle
- if
- kép
- képek
- végre
- munkagépek
- fontos
- in
- Más
- magában foglalja a
- iparágak
- Infrastruktúra
- belső
- telepítve
- Intelligencia
- interaktív
- érdekelt
- Internet
- bele
- Bevezetett
- kérdések
- IT
- ITS
- maga
- json
- Lelkes
- Ismerve
- leszállási
- nyelv
- nagy
- a későbbiekben
- tanulás
- könyvtár
- élet
- emelő
- mint
- vonal
- terhelések
- helyi
- helyileg
- log
- fakitermelés
- logika
- Belépés
- esőkabát
- gép
- gépi tanulás
- készült
- Fő
- csinál
- KÉSZÍT
- kezelése
- kezelése
- Lehet..
- Találkozik
- üzenet
- microservices
- esetleg
- bánja
- Perc
- ML
- modell
- modellek
- modern
- több
- a legtöbb
- mozgó
- többszörös
- kell
- my
- ugyanis
- elengedhetetlen
- Szükség
- szükséges
- igények
- Új
- Most
- of
- gyakran
- on
- egyszer
- ONE
- csak
- nyitva
- nyílt forráskódú
- működés
- Opciók
- or
- érdekében
- rendes
- Más
- mi
- ki
- becsomagolt
- oldal
- paraméter
- rész
- Elmúlt
- szenvedélyes
- teljesítmény
- időszakok
- Hely
- Plató
- Platón adatintelligencia
- PlatoData
- játszik
- Népszerű
- állás
- Tippek
- előnyben részesített
- előfeltételek
- ajándékot
- folyamat
- Termelés
- program
- projektek
- bizonyíték
- bizonyíték a koncepcióra
- Bizonyít
- feltéve,
- biztosít
- amely
- Toló
- Piton
- kérdés
- kész
- real-time
- Piros
- csökkenteni
- vidék
- régiók
- raktár
- kéri
- kötelező
- követelmény
- követelmények
- Tudástár
- válasz
- eredményez
- megtartása
- jobb
- gyökér
- Útvonal
- útvonalak
- futás
- futás
- sagemaker
- megtakarítás
- skálázható
- Skála
- tudósok
- hatálya
- pontszám
- lát
- kiválasztása
- kiválasztás
- vagy szerver
- Szerverek
- szolgáltatás
- Szolgáltatások
- szolgáló
- készlet
- ő
- kellene
- előadás
- kirakat
- mutatott
- Műsorok
- jelentős
- jelentősen
- hasonló
- Egyszerű
- egyetlen
- So
- szoftver
- megoldások
- Megoldások
- Megoldja
- néhány
- beszélő
- specializált
- kifejezetten
- meghatározott
- verem
- állványok
- kezdet
- kezdődik
- Állapot
- Lépés
- Lépései
- tárolás
- tárolni
- tárolása
- Húr
- struktúra
- sikeresen
- ilyen
- Támogató
- Svédország
- svájc
- rendszer
- Vesz
- Feladat
- Technologies
- sablon
- sablonok
- teszt
- hogy
- A
- azok
- Őket
- akkor
- Ott.
- ők
- ezt
- Keresztül
- idő
- alkalommal
- nak nek
- szerszám
- felső
- forgalom
- Vonat
- kiképzett
- Trends
- megpróbál
- ui
- unix
- up-to-date
- URL
- használ
- használt
- használó
- használ
- segítségével
- változat
- keresztül
- Tényleges
- várjon
- akar
- volt
- we
- háló
- webalkalmazás
- webes szolgáltatások
- fogadtatás
- JÓL
- ment
- Mit
- Mi
- amikor
- bármikor
- vajon
- ami
- WHO
- lesz
- val vel
- nélkül
- Munka
- világ
- írott
- te
- A te
- magad
- zephyrnet
- Zürich