Ahogy a gépi tanulás (ML) általánossá válik és egyre szélesebb körben elterjed, az ML-alapú következtetési alkalmazások egyre gyakoribbak számos összetett üzleti probléma megoldására. Ezeknek az összetett üzleti problémáknak a megoldása gyakran több ML modell és lépés alkalmazását igényli. Ez a bejegyzés bemutatja, hogyan hozhat létre és tárolhat ML-alkalmazást egyéni tárolókkal Amazon SageMaker.
Amazon SageMaker kínál beépített algoritmusok és a előre elkészített SageMaker docker képek a modell telepítéséhez. De ha ezek nem felelnek meg az Ön igényeinek, hozhatja saját konténereit (BYOC) az Amazon SageMaker tárhelyére.
Számos olyan felhasználási eset létezik, amikor a felhasználóknak szükségük lehet a BYOC használatára az Amazon SageMaker webhelyen való tároláshoz.
- Egyéni ML-keretrendszerek vagy -könyvtárak: Ha olyan ML-keretrendszert vagy könyvtárakat tervez használni, amelyeket nem támogatnak az Amazon SageMaker beépített algoritmusai vagy előre elkészített tárolói, akkor létre kell hoznia egy egyéni tárolót.
- Speciális modellek: Bizonyos tartományok vagy iparágak esetében olyan egyedi modellarchitektúrákra vagy személyre szabott előfeldolgozási lépésekre lehet szükség, amelyek nem állnak rendelkezésre a beépített Amazon SageMaker ajánlatokban.
- Szabadalmaztatott algoritmusok: Ha házon belül fejlesztette ki saját szabadalmaztatott algoritmusait, akkor szüksége lesz egy egyéni tárolóra, hogy telepítse őket az Amazon SageMakeren.
- Összetett következtetési folyamatok: Ha az ML következtetési munkafolyamat egyéni üzleti logikát tartalmaz – összetett lépések sorozatát, amelyeket egy adott sorrendben kell végrehajtani –, akkor a BYOC segíthet ezeknek a lépéseknek a hatékonyabb kezelésében és összehangolásában.
Megoldás áttekintése
Ebben a megoldásban bemutatjuk, hogyan lehet ML soros következtetési alkalmazást tárolni az Amazon SageMakeren valós idejű végpontokkal, két egyedi következtetési konténer használatával scikit-learn
és a xgboost
csomagokat.
Az első tartály a scikit-learn
modell a nyers adatok kiemelt oszlopokká alakításához. Ez vonatkozik StandardScaler numerikus oszlopokhoz és OneHotEncoder a kategorikusaknak.
A második konténer egy előképzett XGboost
modell (azaz előrejelző). Az előrejelző modell elfogadja a jellemző bemenetet és előrejelzéseket ad ki.
Végül telepítjük a jellemzője és a előrejelzője soros következtetési folyamatban egy Amazon SageMaker valós idejű végponthoz.
Íme néhány különböző megfontolás arra vonatkozóan, hogy miért érdemes külön tárolókat használni a következtetési alkalmazásban.
- függetlenítés – A csővezeték különböző lépéseinek világosan meghatározott célja van, és a mögöttes függőségek miatt külön konténereken kell őket futtatni. Ez azt is segíti, hogy a csővezeték jól felépített legyen.
- keretek – A csővezeték különböző lépései speciális, a célnak megfelelő keretrendszereket használnak (mint például a scikit vagy a Spark ML), ezért külön konténereken kell futtatni őket.
- Erőforrások elszigeteltsége – A csővezeték különböző lépései eltérő erőforrás-felhasználással rendelkeznek, ezért külön konténereken kell futtatni a nagyobb rugalmasság és irányítás érdekében.
- Karbantartás és frissítések – Működési szempontból ez elősegíti a funkcionális elkülönítést, és sokkal könnyebben folytathatja az egyes lépések frissítését vagy módosítását anélkül, hogy ez más modelleket érintene.
Ezenkívül az egyes tárolók helyi felépítése segít a fejlesztés és tesztelés iteratív folyamatában kedvenc eszközökkel és integrált fejlesztési környezetekkel (IDE). Ha a tárolók készen állnak, telepítheti őket az AWS-felhőbe az Amazon SageMaker végpontok használatával történő következtetések levonásához.
A teljes megvalósítás, beleértve a kódrészleteket, elérhető ebben a Github-tárházban itt.
Előfeltételek
Mivel ezeket az egyéni tárolókat először helyileg teszteljük, a dokkoló asztali számítógépet telepíteni kell a helyi számítógépére. Ismernie kell a dokkolókonténerek építését.
Az alkalmazás teljes körű teszteléséhez szüksége lesz egy AWS-fiókra is, amely hozzáféréssel rendelkezik az Amazon SageMaker, az Amazon ECR és az Amazon S3 szolgáltatásokhoz.
Győződjön meg arról, hogy a legújabb verzióval rendelkezik Boto3
és a telepített Amazon SageMaker Python csomagok:
Megoldás áttekintése
Készítsen egyedi jellemzők tárolóját
Az első konténer, a featurizer konténer megépítéséhez betanítjuk a scikit-learn
modell nyers jellemzőinek feldolgozásához a kaliforniai ehető kagyló adatkészlet. Az előfeldolgozó szkript használja SimpleIputer a hiányzó értékek kezelésére, StandardScaler a numerikus oszlopok normalizálására, és OneHotEncoder kategorikus oszlopok átalakításához. A transzformátor felszerelése után elmentjük a modellt joblib formátum. Ezután tömörítjük és feltöltjük ezt a mentett modellterméket egy Amazon Simple Storage Service szolgáltatásba (Amazon S3) vödör.
Íme egy példa kódrészlet, amely ezt szemlélteti. Hivatkozni featurizer.ipynb a teljes megvalósításhoz:
Ezután egy egyéni következtetési tároló létrehozásához a jellemzői modellhez készítünk egy Docker-képet nginx, gunicorn, lombik csomagokkal, valamint a jellemzői modell egyéb szükséges függőségeivel.
Az Nginx, a gunicorn és a Flask alkalmazás szolgál majd a tálalókészlet modelljeként az Amazon SageMaker valós idejű végpontjain.
Amikor egyéni konténereket viszünk be az Amazon SageMaker tárhelyére, biztosítanunk kell, hogy a következtetési szkript a következő feladatokat hajtsa végre, miután elindította a tárolón belül:
- Modell betöltése: Következtetési szkript (
preprocessing.py
) hivatkoznia kell/opt/ml/model
könyvtárba a modell tárolóba való betöltéséhez. Az Amazon S3 modellműtermékei letöltésre kerülnek, és az elérési úton lévő tárolóra fel lesznek szerelve/opt/ml/model
. - Környezeti változók: Ha egyéni környezeti változókat szeretne átadni a tárolónak, meg kell adnia őket a tárolóban Modell létrehozási lépésben vagy közben Endpoint képzési munkából való létrehozás.
- API követelmények: Az Inference szkriptnek mindkettőt meg kell valósítania
/ping
és a/invocations
útvonalak Flask alkalmazásként. A/ping
Az API-t egészségügyi ellenőrzésekhez használják, míg a/invocations
Az API kezeli a következtetési kéréseket. - Fakitermelés: A következtetési szkriptben lévő kimeneti naplókat szabványos kimenetre kell írni (stdout) és standard hiba (stderr) patakok. Ezek a naplók ezután streamelésre kerülnek amazonfelhőóra az Amazon SageMaker által.
Itt egy részlet preprocessing.py
amelyek végrehajtását mutatják be /ping
és a /invocations
.
Hivatkozni előfeldolgozás.py a Featurizer mappában a teljes megvalósításhoz.
Készítsen Docker-képet jellemzőkkel és modellkiszolgálási kötegekkel
Most készítsünk egy Dockerfile-t egy egyéni alapkép használatával, és telepítsük a szükséges függőségeket.
Ehhez használjuk python:3.9-slim-buster
mint az alapkép. Ezt bármely más, az Ön használati esetéhez kapcsolódó alapképet módosíthatja.
Ezután bemásoljuk az nginx konfigurációt, a gunicorn webszerver átjárófájlját és a következtetési szkriptet a tárolóba. Létrehozunk egy serve nevű python-szkriptet is, amely elindítja az nginx és gunicorn folyamatokat a háttérben, és a következtetési szkriptet (azaz a preprocessing.py Flask alkalmazást) állítja be a tároló belépési pontjaként.
Íme egy részlet a Dockerfile-ból a featurizer modell tárolására. A teljes megvalósításhoz lásd dockerfile alatt jellemzője mappát.
Tesztelje az egyéni következtetési képet a jellemzővel helyileg
Most készítse el és tesztelje az egyéni következtetési tárolót a jellemzővel helyileg, az Amazon használatával SageMaker helyi mód. A helyi mód tökéletes a feldolgozási, betanítási és következtetési szkriptek tesztelésére anélkül, hogy bármilyen munkát elindítana az Amazon SageMakeren. A helyi tesztek eredményeinek megerősítése után minimális változtatásokkal könnyedén adaptálhatja a képzési és következtetési szkripteket az Amazon SageMakeren történő telepítéshez.
A featurizer egyéni képének helyi teszteléséhez először készítse el a képet a korábban definiált módon dockerfile. Ezután indítson el egy tárolót a jellemzői modellt tartalmazó könyvtár felcsatolásával (preprocess.joblib
) hoz /opt/ml/model
könyvtárban a tárolóban. Ezenkívül rendelje hozzá a 8080-as portot a tárolótól a gazdagéphez.
Az indítást követően következtetési kéréseket küldhet a következő címre http://localhost:8080/invocations.
A tároló felépítéséhez és elindításához nyisson meg egy terminált, és futtassa a következő parancsokat.
Vegye figyelembe, hogy ki kell cserélnie a <IMAGE_NAME>
, ahogy az a következő kódban is látható, a tároló képnevével.
A következő parancs azt is feltételezi, hogy a betanított scikit-learn
modell (preprocess.joblib
) nevű könyvtárban található models
.
A tároló üzembe helyezése és működése után mind a kettőt tesztelhetjük /ping és a /invocations útvonalak curl parancsok segítségével.
Futtassa az alábbi parancsokat egy terminálról
Amikor nyers (transzformálatlan) adatokat küldenek a címre http://localhost:8080/invocations, a végpont átalakított adatokkal válaszol.
Valami ehhez hasonló választ kell látnod:
Most leállítjuk a futó tárolót, majd megcímkézzük és továbbítjuk a helyi egyéni képet egy privát Amazon Elastic Container Registry-be (Amazon ECR) adattár.
Tekintse meg a következő parancsokat az Amazon ECR-be való bejelentkezéshez, amely megcímkézi a helyi képet a teljes Amazon ECR-kép elérési útjával, majd továbbítja a képet az Amazon ECR-be. Ügyeljen arra, hogy cserélje ki region
és a account
változókat, hogy illeszkedjenek a környezetéhez.
Hivatkozni tárat hozzon létre és a küldjön egy képet az Amazon ECR-re AWS parancssori felület (AWS CLI) parancsokat további információkért.
Választható lépés
Opcionálisan végrehajthat egy élő tesztet úgy, hogy a jellemzői modellt valós idejű végpontra telepíti az egyéni dokkolókép segítségével az Amazon ECR-ben. Hivatkozni featurizer.ipynb notebook az építkezés, a tesztelés és az egyéni kép Amazon ECR-be való küldésének teljes megvalósításához.
Az Amazon SageMaker inicializálja a következtetési végpontot, és átmásolja a modell melléktermékeit a /opt/ml/model
könyvtárban a tárolóban. Lát Hogyan tölti be a SageMaker a modell műtermékeit.
Készítsen egyedi XGBoost előrejelző tárolót
Az XGBoost következtetési tároló felépítéséhez hasonló lépéseket követünk, mint a jellemzőkonténer képének elkészítésekor:
- Letöltés előre kiképzett
XGBoost
az Amazon S3 modellje. - Hozza létre a
inference.py
szkript, amely betölti az előképzettetXGBoost
modell, átalakítja a jellemzőből kapott transzformált bemeneti adatokat, és átalakítja a következőreXGBoost.DMatrix
formátum, futpredict
az emlékeztetőn, és json formátumban adja vissza az előrejelzéseket. - A modellkiszolgáló veremét alkotó parancsfájlok és konfigurációs fájlok (pl.
nginx.conf
,wsgi.py
ésserve
ugyanaz marad, és nem igényel módosítást. - Az általunk használt
Ubuntu:18.04
mint a Dockerfile alapképe. Ez nem előfeltétel. Az ubuntu alapképet használjuk annak demonstrálására, hogy a konténerek bármilyen alapképpel építhetők. - Az ügyfél dokkolóképének felépítésének, a kép helyi tesztelésének és a tesztelt kép Amazon ECR-be küldésének lépései ugyanazok maradnak, mint korábban.
A rövidség kedvéért, mivel a lépések hasonlóak az előzőekben bemutatott módon; azonban a következőkben csak a megváltozott kódolást mutatjuk be.
Először is, a inference.py
forgatókönyv. Íme egy részlet, amely bemutatja a megvalósítását /ping
és a /invocations
. Hivatkozni következtetés.py alatt a előrejelzője mappát a fájl teljes megvalósításához.
Íme egy részlet a Docker-fájlból az előrejelző modell tárolására. A teljes megvalósításhoz lásd dockerfile a prediktor mappa alatt.
Ezt követően folytatjuk ennek az egyéni előrejelző képnek az építését, tesztelését és az Amazon ECR egy privát adattárába történő elküldését. Hivatkozni előrejelző.ipynb notebook az egyéni kép létrehozásának, tesztelésének és az Amazon ECR-nek való elküldéséhez.
Telepítse a soros következtetési folyamatot
Miután mind a jellemző, mind az előrejelző képeket teszteltük, és továbbítottuk őket az Amazon ECR-hez, most feltöltjük modelltermékeinket egy Amazon S3 tárolóba.
Ezután két modellobjektumot hozunk létre: egyet a featurizer
(azaz, preprocess.joblib
) és egyéb a predictor
(azaz, xgboost-model
) a korábban felépített egyéni kép uri megadásával.
Itt van egy részlet, amely ezt mutatja. Hivatkozni serial-inference-pipeline.ipynb a teljes megvalósításhoz.
Most, hogy ezeket a tárolókat soros módon telepítsük, először létrehozunk egy PipelineModel tárgyat, és adja át a featurizer
modell és a predictor
modellt egy python lista objektumra ugyanabban a sorrendben.
Ezután hívjuk a .deploy()
módszer a PipelineModel a példány típusának és példányszámának megadása.
Ebben a szakaszban az Amazon SageMaker a soros következtetési folyamatot egy valós idejű végponthoz telepíti. Várjuk a végpontot InService
.
Most már tesztelhetjük a végpontot úgy, hogy néhány következtetési kérést küldünk ennek az élő végpontnak.
Hivatkozni serial-inference-pipeline.ipynb a teljes megvalósításhoz.
Tisztítsuk meg
A tesztelés befejezése után kövesse a jegyzetfüzet tisztítási szakaszában található utasításokat az ebben a bejegyzésben biztosított erőforrások törléséhez, hogy elkerülje a felesleges költségeket. Hivatkozni Amazon SageMaker árképzés a következtetési példányok költségeivel kapcsolatos részletekért.
Következtetés
Ebben a bejegyzésben bemutattam, hogyan építhetünk fel és telepíthetünk soros ML következtetési alkalmazást egyéni következtetési tárolók használatával valós idejű végpontokhoz az Amazon SageMakeren.
Ez a megoldás bemutatja, hogyan hozhatják az ügyfelek költséghatékony módon saját egyedi konténereiket az Amazon SageMaker szolgáltatásra. A BYOC opcióval az ügyfelek gyorsan elkészíthetik és hozzáigazíthatják ML-alkalmazásaikat az Amazon SageMaker rendszerbe való telepítéséhez.
Javasoljuk, hogy próbálja ki ezt a megoldást az üzleti kulcsfontosságú teljesítménymutatók (KPI) szempontjából releváns adatkészlettel. Ebben a teljes megoldásra hivatkozhat GitHub tárház.
Referenciák
A szerzőről
Praveen Chamarthi az Amazon Web Services vezető AI/ML szakértője. Szenvedélye az AI/ML és minden AWS. Amerika-szerte segít ügyfeleinek az ML-munkaterhelések AWS-en való hatékony skálázásában, innovációjában és kezelésében. Szabadidejében Praveen szeret olvasni, és szereti a sci-fi filmeket.
- 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. Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- PlatoHealth. Biotechnológiai és klinikai vizsgálatok intelligencia. Hozzáférés itt.
- Forrás: https://aws.amazon.com/blogs/machine-learning/build-and-deploy-ml-inference-applications-from-scratch-using-amazon-sagemaker/
- :van
- :is
- :nem
- :ahol
- $ UP
- 08
- 09
- 1
- 10
- 100
- 11
- 13
- 14
- 150
- 16
- 17
- 20
- 200
- 2023
- 25
- 28
- 30
- 500
- 7
- 8
- 87
- 9
- a
- Rólunk
- Elfogad!
- elfogadja
- hozzáférés
- Eszerint
- Fiók
- át
- alkalmazkodni
- Ezen kívül
- Örökbefogadás
- érintő
- Után
- AI / ML
- algoritmusok
- Minden termék
- mentén
- Is
- amazon
- Amazon SageMaker
- Az Amazon Web Services
- Americas
- an
- és a
- bármilyen
- api
- app
- Alkalmazás
- alkalmazások
- alkalmazandó
- április
- VANNAK
- Sor
- AS
- feltételezi
- At
- elérhető
- elkerülése érdekében
- AWS
- háttér
- bázis
- alapján
- BE
- egyre
- előtt
- hogy
- lent
- test
- emlékeztető
- mindkét
- hoz
- Bringing
- épít
- Épület
- épült
- beépített
- Csomag
- üzleti
- de
- by
- hívás
- hívott
- TUD
- eset
- esetek
- CAT
- bizonyos
- változik
- megváltozott
- Változások
- díjak
- ellenőrizze
- Ellenőrzések
- világosan
- felhő
- kód
- Kódolás
- Oszlop
- Oszlopok
- COM
- Közös
- bonyolult
- számítógép
- Configuration
- összefüggő
- kapcsolat
- megfontolások
- állandó
- konstrukció
- fogyasztás
- Konténer
- Konténerek
- tartalom
- tartalom
- folytatódik
- ellenőrzés
- megtérít
- Költség
- tudott
- teremt
- létrehozása
- teremtés
- Hitelesítő adatok
- szokás
- vevő
- Ügyfelek
- dátum
- találka
- meghatározott
- meghatározott
- bizonyítani
- mutatja
- függőségek
- telepíteni
- telepített
- bevezetéséhez
- bevetés
- bevet
- asztali
- részletek
- eltökélt
- fejlett
- Fejlesztés
- DICT
- DID
- különböző
- Dokkmunkás
- domainek
- csinált
- ne
- két
- alatt
- e
- Korábban
- könnyen
- eredményesen
- más
- ösztönzése
- végtől végig
- Endpoint
- biztosítására
- Egész
- belépés
- Környezet
- környezetek
- hiba
- stb.
- példa
- Kivéve
- kivétel
- végrehajtott
- ismerős
- Divat
- Kedvenc
- Jellemzők
- kevés
- filé
- Fájlok
- vezetéknév
- megfelelő
- szerelvény
- Rugalmasság
- következik
- következő
- A
- forma
- formátum
- talált
- Keretrendszer
- keretek
- ból ből
- Tele
- funkció
- funkcionális
- Nyereség
- gateway
- kap
- GitHub
- GMT
- Goes
- fogantyú
- Fogantyúk
- Kezelés
- Legyen
- he
- Egészség
- magasság
- segít
- segít
- övé
- vendéglátó
- tárhely
- hosts
- Hogyan
- How To
- azonban
- HTML
- http
- HTTPS
- i
- if
- kép
- képek
- végre
- végrehajtás
- importál
- in
- magában foglalja a
- Beleértve
- egyre inkább
- mutatók
- egyéni
- iparágak
- információ
- házon belül
- újít
- bemenet
- belső
- telepíteni
- telepítve
- példa
- utasítás
- integrált
- Felület
- bele
- részt
- szigetelés
- IT
- Munka
- Állások
- jpg
- json
- Tart
- Kulcs
- Címke
- legutolsó
- indít
- indított
- elindítja
- indítás
- tanulás
- balra
- Hossz
- könyvtárak
- vonal
- Lista
- Listázott
- él
- kiszámításának
- betöltés
- terhelések
- helyi
- helyileg
- logika
- Belépés
- szeret
- gép
- gépi tanulás
- főáram
- KÉSZÍT
- Gyártás
- kezelése
- mód
- térkép
- jel
- Mérkőzés
- Lehet..
- módszer
- esetleg
- minimális
- hiányzó
- ML
- Mód
- modell
- modellek
- módosítása
- több
- Filmek
- sok
- többszörös
- kell
- név
- nevek
- Szükség
- igények
- nem
- Egyik sem
- jegyzetfüzet
- Most
- szám
- számtalan
- tárgy
- objektumok
- of
- Ajánlat
- Ajánlatok
- gyakran
- on
- egyszer
- ONE
- azok
- csak
- -ra
- nyitva
- működik
- operatív
- opció
- or
- érdekében
- OS
- Más
- mi
- teljesítmény
- saját
- csomagok
- pandák
- paraméterek
- különös
- elhalad
- szenvedélyes
- ösvény
- tökéletes
- Teljesít
- teljesítmény
- Előadja
- csővezeték
- terv
- Plató
- Platón adatintelligencia
- PlatoData
- kérem
- pont
- állás
- előrejelzés
- Tippek
- Predictor
- be
- korábban
- magán
- problémák
- folyamat
- Folyamatok
- feldolgozás
- Processzor
- elősegíti
- szabadalmazott
- cél
- Nyomja
- meglökött
- Toló
- Piton
- gyorsan
- emel
- hatótávolság
- Nyers
- Olvass
- kész
- real-time
- kapott
- utal
- iktató hivatal
- marad
- cserélni
- raktár
- kérni
- kéri
- szükség
- kötelező
- követelmények
- megköveteli,
- forrás
- Tudástár
- válasz
- eredményez
- Eredmények
- visszatérés
- visszatérő
- Visszatér
- Gyűrű
- Útvonal
- útvonalak
- SOR
- futás
- futás
- fut
- sagemaker
- azonos
- Megtakarítás
- mentett
- Skála
- sci-fi
- kaparni
- forgatókönyv
- szkriptek
- Második
- Rész
- lát
- küld
- elküldés
- idősebb
- küldött
- különálló
- sorozatszám
- Series of
- szolgál
- szerver
- szolgáltatás
- Szolgáltatások
- szolgáló
- ülés
- készlet
- Szettek
- számos
- Szex
- kellene
- előadás
- kimutatta,
- mutatott
- Műsorok
- hasonló
- Egyszerű
- töredék
- So
- megoldások
- SOLVE
- néhány
- valami
- Szikra
- szakember
- különleges
- verem
- Színpad
- standard
- álláspont
- Állapot
- Lépés
- Lépései
- tárolás
- áramlott
- patakok
- Húr
- szerkesztett
- sikeresen
- ilyen
- nap
- Támogatott
- Támogató
- Támogatja
- TAG
- szabott
- tart
- feladatok
- terminál
- teszt
- kipróbált
- Tesztelés
- tesztek
- hogy
- A
- azok
- Őket
- akkor
- Ott.
- ebből adódóan
- Ezek
- dolgok
- ezt
- idő
- nak nek
- szerszámok
- Vonat
- kiképzett
- Képzések
- Átalakítás
- át
- transzformátor
- transzformerek
- transzformáló
- megpróbál
- próbál
- kettő
- típus
- Ubuntu
- alatt
- mögöttes
- felesleges
- frissítés
- használható
- használ
- használati eset
- használt
- Felhasználók
- használ
- segítségével
- Értékek
- különféle
- változó
- ellenőrzése
- változat
- várjon
- akar
- volt
- we
- háló
- webszerver
- webes szolgáltatások
- JÓL
- ami
- míg
- miért
- szélesebb
- lesz
- val vel
- belül
- nélkül
- munkafolyamat
- dolgozó
- írott
- X
- XGBoost
- te
- A te
- zephyrnet