Modelltárhely-minták a SageMakerben: A modellek tesztelésének és frissítésének legjobb gyakorlatai a SageMaker PlatoBlockchain Data Intelligence rendszeren. Függőleges keresés. Ai.

Modelltárhely-minták a SageMakerben: A modellek tesztelésének és frissítésének legjobb gyakorlatai a SageMakerben

Amazon SageMaker egy teljesen felügyelt szolgáltatás, amely lehetővé teszi a fejlesztők és adattudósok számára a gépi tanulási (ML) modellek gyors felépítését, betanítását és üzembe helyezését. A SageMaker segítségével telepítheti ML-modelleit a hosztolt végpontokon, és valós időben kaphat következtetéseket. Könnyen megtekintheti a végpontjai teljesítménymutatóit amazonfelhőóra, automatikusan skálázza a végpontokat forgalom alapján, és frissítse modelljeit éles állapotban anélkül, hogy elveszítené a rendelkezésre állást. A SageMaker a lehetőségek széles skáláját kínálja az ML-modellek telepítéséhez a következő módokon, a felhasználási esettől függően:

  • Szinkron előrejelzésekhez, amelyeket ezredmásodpercek nagyságrendjében kell megjeleníteni, használja a SageMaker alkalmazást valós idejű következtetés
  • Olyan munkaterhelések esetén, amelyeknél a forgalmi ugrások között üresjáratok vannak, és elviselik a hidegindítást, használja a Szerver nélküli következtetés
  • Nagy, akár 1 GB-os hasznos adatmennyiséggel, hosszú feldolgozási idővel (akár 15 perc) és közel valós idejű késleltetési követelményekkel (másodperctől percig) a SageMaker-t kell használni. Aszinkron következtetés
  • Ha előrejelzéseket szeretne kapni egy teljes adatkészletre, használja a SageMaker alkalmazást kötegelt átalakítás

A valós idejű következtetés ideális olyan következtetési munkaterhelésekhez, ahol valós idejű, interaktív, alacsony késleltetési követelmények vannak. Telepíti a modellt a SageMaker hosting szolgáltatásokban, és kap egy végpontot, amelyből következtetéseket lehet levonni. Ezeket a végpontokat egy teljesen felügyelt infrastruktúra és támogatás támogatja automatikus méretezés. Növelheti a hatékonyságot és a költségeket, ha több modellt egyetlen végpontba kombinál több modellből álló végpontok or több tárolóból álló végpontok.

Vannak bizonyos használati esetek, amikor ugyanannak a modellnek több változatát szeretné üzembe helyezni a teljesítményük mérése, a fejlesztések mérése vagy az A/B tesztek futtatása érdekében. Ilyen esetekben a SageMaker többváltozatos végpontjai hasznosak, mert lehetővé teszik egy modell több éles változatának telepítését ugyanarra a SageMaker-végpontra.

Ebben a bejegyzésben a SageMaker többváltozatos végpontjait és az optimalizálás bevált gyakorlatait tárgyaljuk.

A SageMaker valós idejű következtetési lehetőségeinek összehasonlítása

Az alábbi diagram gyors áttekintést nyújt a SageMaker valós idejű következtetési lehetőségeiről.

Az egymodelles végpont lehetővé teszi egy modell üzembe helyezését egy dedikált példányokon vagy kiszolgáló nélküli tárolón az alacsony késleltetés és a nagy átvitel érdekében. Létrehozhat egy modellt és visszahoz a A SageMaker által támogatott kép olyan népszerű keretrendszerekhez, mint a TensorFlow, PyTorch, Scikit-learn stb. Ha egyéni keretrendszerrel dolgozik a modellhez, ezt is megteheti hozza a saját konténerét amely telepíti a függőségeit.

A SageMaker olyan fejlettebb opciókat is támogat, mint például a többmodell végpontok (MME) és a multi-container endpoints (MCE). Az MME-k akkor hasznosak, ha több száz-tízezer modellel van dolgunk, és ahol nem kell minden modellt egyedi végpontként telepíteni. Az MME-k lehetővé teszik több modell üzemeltetését költséghatékony, méretezhető módon ugyanazon a végponton belül egy példányon tárolt megosztott kiszolgálókonténer használatával. Az alapul szolgáló infrastruktúra (tároló és példány) ugyanaz marad, de a modellek dinamikusan be- és kirakodnak egy közös S3 helyről, a használattól és a végponton rendelkezésre álló memória mennyiségétől függően. Az alkalmazásnak egyszerűen tartalmaznia kell egy API-hívást a célmodellel ehhez a végponthoz, hogy alacsony késleltetésű, nagy áteresztőképességű következtetést lehessen elérni. Ahelyett, hogy minden egyes modellhez külön végpontot fizetne, több modellt is tárolhat egyetlen végpont áráért.

Az MCE-k lehetővé teszik akár 15 különböző ML-tároló futtatását egyetlen végponton, és ezek egymástól függetlenül történő meghívását. Ezeket az ML-tárolókat különböző kiszolgálóveremekre (például ML-keretrendszerre, modellkiszolgálóra és algoritmusra) építheti, hogy ugyanazon a végponton futtassák a költségmegtakarítás érdekében. A tartályokat összevarrhatja a soros következtetési csővezeték vagy önállóan hívja meg a tárolót. Ez akkor lehet ideális, ha több különböző ML-modellje van, amelyek eltérő forgalmi mintákkal és hasonló erőforrásigénnyel rendelkeznek. Példák az MCE használatára, de nem kizárólag, a következők:

  • Tárolási modellek különböző keretrendszereken (például TensorFlow, PyTorch és Scikit-learn), amelyek nem rendelkeznek elegendő forgalommal egy példány teljes kapacitásának telítéséhez
  • Ugyanabból a keretrendszerből származó modellek tárolása különböző ML-algoritmusokkal (például ajánlásokkal, előrejelzésekkel vagy osztályozással) és kezelőfunkciókkal
  • Különböző keretrendszer-verziókon futó hasonló architektúrák összehasonlítása (mint például a TensorFlow 1.x vs. TensorFlow 2.x) olyan forgatókönyvekhez, mint az A/B tesztelés

A SageMaker többváltozatos végpontjai (MVE-k) lehetővé teszik több modell vagy modellverzió tesztelését ugyanazon végpont mögött éles változatok használatával. Minden éles változat azonosít egy ML-modellt és a modell üzemeltetéséhez telepített erőforrásokat, például a kiszolgáló tárolót és a példányt.

A SageMaker többváltozatos végpontjainak áttekintése

Az éles ML munkafolyamatok során az adattudósok és az ML mérnökök különféle módszerekkel finomítják a modelleket, például az adatok/modell/koncepció eltolódásán alapuló újraképzéssel, a hiperparaméter-hangolással, a funkciók kiválasztásával, a keretrendszer kiválasztásával stb. Az A/B tesztelés egy új modell és egy régi, éles forgalmú modell között az új modell érvényesítési folyamatának hatékony utolsó lépése lehet. Az A/B tesztelés során a modellek különböző változatait teszteli, és összehasonlítja az egyes változatok teljesítményét egymáshoz képest. Ezután kiválaszthatja a legjobban teljesítő modellt, hogy lecserélje az előző modellt egy új verzióra, amely jobb teljesítményt nyújt, mint az előző verzió. Éles változatok használatával tesztelheti ezeket az ML-modelleket és a különböző modellverziókat ugyanazon végpont mögött. Ezeket az ML modelleket különböző adatkészletek, különböző algoritmusok és ML keretrendszerek segítségével taníthatja; telepítse őket különböző példánytípusokra; vagy ezeknek a lehetőségeknek bármely kombinációja. A SageMaker végponthoz csatlakoztatott terheléselosztó lehetővé teszi a hívási kérelmek több éles változatban történő elosztását. Például eloszthatja a forgalmat az éles változatok között az egyes változatok forgalomeloszlásának megadásával, vagy közvetlenül meghívhat egy adott változatot az egyes kérésekhez.

Az automatikus skálázási házirendet úgy is beállíthatja, hogy a mérőszámok, például a másodpercenkénti kérések alapján automatikusan be- vagy kicsinyítse a változatokat.

Az alábbi ábra részletesebben szemlélteti az MVE működését.

SageMaker többváltozatos végpont

Az MVE telepítése is nagyon egyszerű. Mindössze annyit kell tennie, hogy modellobjektumokat definiál a képpel és a modelladatokkal a segítségével create_model konstruálja meg a SageMaker Python SDK-ból, és határozza meg a végpont-konfigurációkat a használatával production_variant konstrukciók gyártási változatok létrehozásához, amelyek mindegyike saját eltérő modell- és erőforrásigényekkel rendelkezik (példánytípus és számok). Ez lehetővé teszi a modellek tesztelését különböző példánytípusokon. A telepítéshez használja a endpoint_from_production_variant konstrukciót a végpont létrehozásához.

A végpont létrehozása során a SageMaker létrehozza a végpont beállításaiban megadott tárhelypéldányt, és letölti az éles változat által megadott modellt és következtetéstárolót a tárhelypéldányhoz. Ha sikeres választ ad vissza a tároló elindítása és állapotellenőrzés végrehajtása egy ping segítségével, akkor a végpont létrehozásának befejezését jelző üzenetet küld a felhasználónak. Lásd a következő kódot:

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

Az előző példában két változatot hoztunk létre, mindegyiknek saját modellje van (ezek eltérő példánytípussal és számmal is rendelkezhetnek). Beállítottunk egy initial_weight 1-ből mindkét változat esetében: ez azt jelenti, hogy kéréseink 50%-a címre érkezik Variant1, a fennmaradó 50%-ot pedig Variant2. A két változat súlyozásának összege 2, és mindegyik változathoz 1 a súlyozás. Ez azt jelenti, hogy mindegyik változat a teljes forgalom 50%-át kapja.

A végpont meghívása hasonló a közös SageMaker konstrukcióhoz invoke_endpoint; közvetlenül hívhatja a végpontot az adatokkal hasznos adatként:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

A SageMaker olyan mutatókat bocsát ki, mint pl Latency és a Invocations a CloudWatch minden változatához. A SageMaker által kibocsátott mutatók teljes listáját lásd Az Amazon SageMaker monitorozása az Amazon CloudWatch segítségével. Lekérdezheti a CloudWatch-ot, hogy lekérdezze a meghívások számát változatonként, és megtudja, hogy a meghívások alapértelmezés szerint hogyan vannak felosztva a változatok között.

A modell egy adott verziójának meghívásához adjon meg egy változatot a TargetVariant a felhívásban invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Kiértékelheti az egyes gyártási változatok teljesítményét az olyan mérőszámok áttekintésével, mint a pontosság, precizitás, visszahívás, F1 pontszám és a vevő működési jellemzői/görbe alatti területe az egyes változatoknál. Amazon SageMaker Model Monitor. Ezt követően dönthet úgy, hogy a legjobb modellre növeli a forgalmat az egyes változatokhoz rendelt súlyok hívásával történő frissítésével Frissítse a végpontsúlyokat és kapacitásokat. Ez megváltoztatja az éles változatok forgalomeloszlását a végpont frissítése nélkül. Tehát a kezdeti beállításból származó forgalom 50%-a helyett a forgalom 75%-át áthelyezzük a következőre Variant2 segítségével minden változathoz új súlyokat rendelünk UpdateEndpointWeightsAndCapacities. Lásd a következő kódot:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Ha elégedett egy változat teljesítményével, a forgalom 100%-át az adott változatra irányíthatja. Például beállíthatja a súlyát Variant1 0-ra és a súlyra Variant2 A SageMaker ezután az összes következtetési kérés 1%-át elküldi a címre Variant2. Ezután biztonságosan frissítheti és törölheti a végpontot Variant1 a végpontodtól. Folytathatja az új modellek éles tesztelését is, ha új változatokat ad hozzá a végpontjához. Beállíthatja úgy is, hogy ezek a végpontok automatikusan skálázódnak a végpontok által fogadott forgalom alapján.

A többváltozatos végpontok előnyei

A SageMaker MVE-k a következőket teszik lehetővé:

  • Telepítsen és teszteljen egy modell több változatát ugyanazzal a SageMaker-végponttal. Ez hasznos egy modell változatainak teszteléséhez a gyártás során. Tegyük fel például, hogy üzembe helyezett egy modellt a termelésbe. A modell egy változatát úgy tesztelheti, hogy kis mennyiségű forgalmat, mondjuk 5%-ot, az új modellre irányít.
  • Értékelje a modell teljesítményét az éles környezetben a forgalom megszakítása nélkül az egyes változatok működési mutatóinak figyelésével a CloudWatchban.
  • Frissítse a gyártásban lévő modelleket anélkül, hogy elveszítené a rendelkezésre állást. Módosíthat egy végpontot anélkül, hogy a már éles üzembe helyezett modelleket kivonná a szolgálatból. Például hozzáadhat új modellváltozatokat, frissítheti a meglévő modellváltozatok ML számítási példány konfigurációit, vagy módosíthatja a forgalom eloszlását a modellváltozatok között. További információkért lásd Végpont frissítése és a Frissítse a végpontsúlyokat és kapacitásokat.

Kihívások többváltozatos végpontok használatakor

A SageMaker MVE-k a következő kihívásokkal néznek szembe:

  • Terhelési tesztelési erőfeszítés – Meglehetősen erőfeszítéseket és erőforrásokat kell fordítania az egyes változatok tesztelésére és modellmátrix-összehasonlítására. Ahhoz, hogy egy A/B-tesztet sikeresnek lehessen tekinteni, el kell végeznie a tesztből összegyűjtött mérőszámok statisztikai elemzését, hogy megállapítsa, van-e statisztikailag szignifikáns eredmény. Kihívást jelenthet a gyengén teljesítő változatok feltárásának minimalizálása. Használhatnád a többkarú bandita optimalizálási technikát, hogy elkerülje a forgalom nem működő kísérletekhez való továbbítását, és optimalizálja a teljesítményt a tesztelés során. A terhelési teszteléshez azt is felfedezheti Amazon SageMaker Inference Recommender kiterjedt benchmarkok elvégzésére a várakozási időre és az átviteli sebességre, az egyéni forgalmi mintákra és a kiválasztott példányokra (legfeljebb 10) vonatkozó termelési követelmények alapján.
  • Szoros kapcsolat a modellváltozat és a végpont között – A modell üzembe helyezési gyakoriságától függően bonyolult lehet, mert a végpont bekerülhet updating állapota minden egyes frissített gyártási változathoz. A SageMaker is támogatja bevetési védőkorlátok, melynek segítségével könnyedén, ellenőrzött módon válthat át a jelenlegi gyártási modellről egy újra. Ez az opció bevezeti kanári és a lineáris forgalomváltási módok, így a frissítés során részletesen szabályozhatja a forgalom jelenlegi modelljéről az új modellre való áttolását. A beépített biztosítékokkal, például az automatikus visszagörgetéssel, korán észlelheti a problémákat, és automatikusan megteheti a korrekciós intézkedéseket, mielőtt azok jelentős hatást gyakorolnának a termelésre.

Többváltozatos végpontok bevált gyakorlatai

Ha SageMaker MVE-ket használó modelleket tárol, vegye figyelembe a következőket:

  • A SageMaker kiválóan alkalmas új modellek tesztelésére, mert egyszerűen telepítheti őket A/B tesztelési környezetbe, és csak azért kell fizetni, amit használ. A végpont futása során az egyes példányok által felhasznált példányóránként kell fizetnie. Ha végzett a tesztekkel, és már nem használja széles körben a végpontot vagy a változatokat, a költségek megtakarítása érdekében törölje azt. Amikor újra szüksége van rá, bármikor újra létrehozhatja, mert a modell tárolva van Amazon egyszerű tárolási szolgáltatás (Amazon S3).
  • A modellek telepítéséhez a legoptimálisabb példánytípust és -méretet kell használnia. A SageMaker jelenleg kínál ML számítási példányok különböző példánycsaládokon. Egy végpontpéldány folyamatosan fut (amíg a példány szolgáltatásban van). Ezért a megfelelő típusú példány kiválasztása jelentős hatással lehet az ML modellek összköltségére és teljesítményére. Terhelési tesztelés Ez a legjobb gyakorlat a megfelelő példánytípus és flottaméret meghatározására, akár automatikus méretezéssel, akár anélkül az élő végponthoz, hogy elkerülje a túlzott kiépítést és a felesleges kapacitásért való extra fizetést.
  • A CloudWatch szolgáltatásban nyomon követheti a modell teljesítményét és az erőforrás-kihasználást. Beállíthatja a ProductionVariant használata Alkalmazás automatikus méretezése. Méretezési szabályzat metrikáinak és célértékeinek megadásához konfiguráljon egy célkövető skálázási szabályzatot. Használhat előre meghatározott mérőszámot vagy egyéni mérőszámot. A házirend-konfiguráció szintaxisával kapcsolatos további információkért lásd: TargetTrackingScalingPolicyConfiguration. Az automatikus méretezés konfigurálásával kapcsolatos információkért lásd: Automatikusan méretezheti az Amazon SageMaker modelleket. Ha gyorsan szeretne meghatározni egy változathoz tartozó célkövetési skálázási szabályzatot, kiválaszthat egy adott CloudWatch-mutatót, és beállíthat küszöbértékeket. Például használjon metrikát SageMakerVariantInvocationsPerInstance figyelni, hogy egy változat egyes példányai hányszor fordulnak elő percenként átlagosan, vagy használjon metrikát CPUUtilization a CPU által végzett munka összegének figyelésére. A következő példa a SageMakerVariantInvocationsPerInstance előre meghatározott metrika a változatpéldányok számának beállításához, hogy minden példány rendelkezzen egy InvocationsPerInstance 70-es mérőszám:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • A modell műtermékeinek módosítása vagy törlése vagy a következtetési kód megváltoztatása a modell telepítése után kiszámíthatatlan eredményeket eredményez. A modellek éles üzembe helyezése előtt célszerű ellenőrizni, hogy a helyi módban tárolt modell sikeres-e a következtetési kódrészletek (pl. model_fn, input_fn, predict_fnés output_fn) a helyi fejlesztői környezetben, például egy SageMaker notebook példányban vagy helyi szerverben. Ha módosítania kell vagy törölnie kell a modell melléktermékeit, vagy módosítania kell a következtetési kódot, módosítsa a végpontot egy új végpont-konfiguráció megadásával. Az új végpont-konfiguráció megadása után módosíthatja vagy törölheti a régi végpont-konfigurációnak megfelelő modelltermékeket.
  • Használhatja a SageMaker-t kötegelt átalakítás gyártási változatok tesztelésére. A kötegelt transzformáció ideális a nagy adatkészletekből származó következtetések levonásához. Minden új modellváltozathoz külön átalakítási feladatot hozhat létre, és egy érvényesítési adatkészletet használhat a teszteléshez. Minden átalakítási feladathoz adjon meg egyedi modellnevet és helyet az Amazon S3-ban a kimeneti fájlhoz. Az eredmények elemzéséhez használja következtetési folyamatnaplók és metrikák.

Következtetés

A SageMaker lehetővé teszi az ML-modellek egyszerű A/B tesztelését a termelésben azáltal, hogy több éles változatot futtat egy végponton. A SageMaker képességeit használhatja olyan modellek tesztelésére, amelyeket különböző oktatási adatkészletekkel, hiperparaméterekkel, algoritmusokkal vagy ML keretrendszerekkel tanítottak meg; hogyan teljesítenek a különböző példánytípusokon; vagy a fentiek kombinációja. Megadhatja a forgalom eloszlását a változatok között egy végponton, és a SageMaker felosztja a következtetési forgalmat a változatokra a megadott eloszlás alapján. Alternatív megoldásként, ha bizonyos vásárlói szegmensekre szeretne modelleket tesztelni, megadhatja azt a változatot, amely feldolgozza a következtetési kérelmet a TargetVariant fejlécet, és a SageMaker a kérést az Ön által megadott változathoz irányítja. Az A/B teszteléssel kapcsolatos további információkért lásd: A gyártásban lévő modellek biztonságos frissítése.

Referenciák


A szerzőkről

Modelltárhely-minták a SageMakerben: A modellek tesztelésének és frissítésének legjobb gyakorlatai a SageMaker PlatoBlockchain Data Intelligence rendszeren. Függőleges keresés. Ai.Deepali Rajale az Amazon Web Services mesterséges intelligenciára/ML-re szakosodott ügyfélmenedzsere. Vállalati ügyfelekkel dolgozik, műszaki útmutatást adva a gépi tanulási megoldások bevált gyakorlatokkal történő megvalósításához. Szabadidejében szeret túrázni, filmezni és családjával és barátaival lógni.

Modelltárhely-minták a SageMakerben: A modellek tesztelésének és frissítésének legjobb gyakorlatai a SageMaker PlatoBlockchain Data Intelligence rendszeren. Függőleges keresés. Ai.Dhawal Patel az AWS vezető gépi tanulási építésze. Az elosztott számítástechnikával és a mesterséges intelligenciával kapcsolatos problémákon a nagyvállalatoktól a közepes méretű induló vállalkozásokig szervezetekkel dolgozott együtt. A mély tanulásra összpontosít, beleértve az NLP és a Computer Vision tartományokat. Segít az ügyfeleknek abban, hogy a SageMaker-en nagy teljesítményű modellkövetkeztetést érjenek el.

Modelltárhely-minták a SageMakerben: A modellek tesztelésének és frissítésének legjobb gyakorlatai a SageMaker PlatoBlockchain Data Intelligence rendszeren. Függőleges keresés. Ai. Saurabh Trikande az Amazon SageMaker Inference vezető termékmenedzsere. Szenvedélyesen dolgozik az ügyfelekkel, és a gépi tanulás demokratizálásának célja motiválja. A komplex ML-alkalmazások telepítésével, a több bérlős ML-modellekkel, a költségoptimalizálással és a mély tanulási modellek bevezetésének elérhetőbbé tételével kapcsolatos alapvető kihívásokra összpontosít. Szabadidejében Saurabh szeret túrázni, innovatív technológiákat tanulni, követi a TechCrunch-ot és a családjával tölt időt.

Időbélyeg:

Még több AWS gépi tanulás