Mudelite hostimise mustrid SageMakeris: parimad tavad mudelite testimisel ja värskendamisel SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Mudelite hostimise mustrid SageMakeris: SageMakeri mudelite testimise ja värskendamise parimad tavad

Amazon SageMaker on täielikult hallatav teenus, mis annab arendajatele ja andmeteadlastele võimaluse kiiresti masinõppe (ML) mudeleid luua, koolitada ja juurutada. SageMakeriga saate juurutada oma ML-mudeleid hostitud lõpp-punktides ja saada reaalajas järeldustulemusi. Saate hõlpsasti vaadata oma lõpp-punktide toimivusmõõdikuid Amazon CloudWatch, automaatselt skaleerida lõpp-punkte liikluse põhjal ja värskendage oma mudeleid tootmises ilma saadavust kaotamata. SageMaker pakub laias valikus võimalusi ML-mudelite juurutamiseks järelduste tegemiseks ühel järgmistest viisidest, olenevalt teie kasutusjuhtumist.

  • Sünkroonsete ennustuste jaoks, mida tuleb esitada millisekundite järjekorras, kasutage SageMakerit reaalajas järeldus
  • Töökoormuste jaoks, mille liiklusspurtide vahel on jõudeaeg ja mis taluvad külmkäivitust, kasutage Serverita järeldus
  • Suurte, kuni 1 GB kasuliku koormuse, pikkade töötlemisaegade (kuni 15 minutit) ja peaaegu reaalajas latentsusnõuete (sekundite kuni minutite) jaoks kasutage SageMakerit Asünkroonne järeldus
  • Kogu andmestiku ennustuste saamiseks kasutage SageMakerit partii teisendus

Reaalajas järeldus on ideaalne järelduste tegemiseks, kus teil on reaalajas, interaktiivsed ja madala latentsusaja nõuded. Juurutate oma mudeli SageMakeri hostimisteenustesse ja saate lõpp-punkti, mida saab kasutada järelduste tegemiseks. Neid lõpp-punkte toetab täielikult hallatud infrastruktuur ja tugi automaatne skaleerimine. Saate parandada tõhusust ja kulusid, kombineerides mitu mudelit ühte lõpp-punkti kasutades mitme mudeli lõpp-punktid or mitme konteineri lõpp-punktid.

Teatud kasutusjuhtudel soovite tootmisse juurutada sama mudeli mitu varianti, et mõõta nende toimivust, mõõta täiustusi või käitada A/B-teste. Sellistel juhtudel on SageMakeri mitme variandi lõpp-punktid kasulikud, kuna need võimaldavad teil samasse SageMakeri lõpp-punkti juurutada mitu mudeli tootmisvarianti.

Selles postituses käsitleme SageMakeri mitme variandi lõpp-punkte ja optimeerimise parimaid tavasid.

SageMakeri reaalajas järeldusvõimaluste võrdlemine

Järgmine diagramm annab kiire ülevaate SageMakeri reaalajas järelduste tegemise võimalustest.

Ühe mudeli lõpp-punkt võimaldab väikese latentsuse ja suure läbilaskevõime tagamiseks juurutada ühe mudeli konteineris, mis on hostitud spetsiaalsetel eksemplaridel või ilma serverita. Saate luua mudeli ja tooma a SageMakeri toetatud pilt populaarsete raamistike jaoks, nagu TensorFlow, PyTorch, Scikit-learn ja palju muud. Kui töötate oma mudeli jaoks kohandatud raamistikuga, saate seda ka teha võta kaasa oma konteiner mis installib teie sõltuvused.

SageMaker toetab ka täiustatud valikuid, nagu mitme mudeli lõpp-punktid (MME) ja mitme konteineri lõpp-punktid (MCE). MME-d on kasulikud, kui tegemist on sadade kuni kümnete tuhandete mudelitega ja kui te ei pea iga mudelit eraldiseisva lõpp-punktina juurutama. MME-d võimaldavad teil majutada mitut mudelit kuluefektiivsel ja skaleeritaval viisil samas lõpp-punktis, kasutades eksemplaris hostitud jagatud teeninduskonteinerit. Alusinfrastruktuur (konteiner ja eksemplar) jääb samaks, kuid mudelid laaditakse ja laaditakse maha dünaamiliselt ühisest S3 asukohast vastavalt kasutusele ja lõpp-punktis saadaolevale mälumahule. Teie rakendus peab lihtsalt lisama selle lõpp-punkti sihtmudeliga API-kutse, et saavutada madala latentsusajaga ja suure läbilaskevõimega järeldus. Selle asemel, et maksta iga mudeli jaoks eraldi lõpp-punkti eest, saate hostida palju mudeleid ühe lõpp-punkti hinnaga.

MCE-d võimaldavad teil ühes lõpp-punktis käitada kuni 15 erinevat ML-konteinerit ja neid iseseisvalt kutsuda. Saate need ML-konteinerid ehitada erinevatele teenindusvirnadele (nt ML-raamistik, mudelserver ja algoritm), et neid kulude kokkuhoiu eesmärgil käitada samas lõpp-punktis. Konteinerid saate kokku õmmelda a jadajärelduskonveier või avage konteiner iseseisvalt. See võib olla ideaalne, kui teil on mitu erinevat ML-mudelit, millel on erinevad liiklusmustrid ja sarnased ressursivajadused. MCE-de kasutamise näited hõlmavad, kuid ei ole nendega piiratud, järgmist:

  • Majutusmudelid erinevates raamistikes (nt TensorFlow, PyTorch ja Scikit-learn), millel pole eksemplari täisvõimsuse küllastamiseks piisavalt liiklust
  • Samast raamistikust pärit mudelite hostimine erinevate ML-algoritmide (nt soovitused, prognoosimine või klassifitseerimine) ja töötleja funktsioonidega
  • Erinevates raamistiku versioonides (nt TensorFlow 1.x vs. TensorFlow 2.x) töötavate sarnaste arhitektuuride võrdlused selliste stsenaariumide jaoks nagu A/B testimine

SageMakeri mitme variandi lõpp-punktid (MVE-d) võimaldavad tootmisvariantide abil testida mitut mudelit või mudeliversiooni sama lõpp-punkti taga. Iga tootmisvariant tuvastab ML-mudeli ja mudeli majutamiseks juurutatud ressursid, nagu serveerimiskonteiner ja eksemplar.

SageMakeri mitme variandi lõpp-punktide ülevaade

Tootmis-ML-i töövoogudes täiustavad andmeteadlased ja ML-insenerid mudeleid erinevate meetodite abil, nagu andmete/mudelite/kontseptsioonide triivil põhinev ümberõpe, hüperparameetrite häälestamine, funktsioonide valik, raamistiku valik ja palju muud. A/B testimine uue mudeli ja vana tootmisliiklusega mudeli vahel võib olla tõhus viimane etapp uue mudeli valideerimisprotsessis. A/B-testimisel testite oma mudelite erinevaid variante ja võrdlete iga variandi toimivust üksteise suhtes. Seejärel valite kõige paremini toimiva mudeli, et asendada eelmine mudel uue versiooniga, mis tagab parema jõudluse kui eelmine versioon. Tootmisvariante kasutades saate neid ML-mudeleid ja erinevaid mudeliversioone testida sama lõpp-punkti taga. Saate neid ML-mudeleid treenida erinevate andmekogumite, erinevate algoritmide ja ML-raamistike abil; juurutada need erinevatele eksemplaritüüpidele; või nende valikute mis tahes kombinatsioon. SageMakeri lõpp-punktiga ühendatud koormuse tasakaalustaja võimaldab jaotada kutsumistaotlused mitme tootmisvariandi vahel. Näiteks saate jaotada liiklust tootmisvariantide vahel, määrates iga variandi jaoks liiklusjaotuse, või saate iga päringu jaoks otse konkreetse variandi kutsuda.

Saate konfigureerida ka automaatse skaleerimise reegli, et skaleerida variante automaatselt sisse või välja, lähtudes mõõdikutest (nt päringud sekundis).

Järgnev diagramm illustreerib üksikasjalikumalt, kuidas MVE töötab.

SageMakeri mitme variandi lõpp-punkt

MVE juurutamine on samuti väga lihtne. Kõik, mida pead tegema, on määratleda mudeliobjektid kujutise ja mudeliandmetega, kasutades create_model konstrueerida SageMaker Python SDK-st ja määratleda lõpp-punkti konfiguratsioonid kasutades production_variant konstrueerib tootmisvariantide loomiseks, millest igaühel on oma erinev mudel ja ressursinõue (eksemplari tüüp ja arv). See võimaldab testida mudeleid ka erinevatel eksemplaritüüpidel. Juurutamiseks kasutage endpoint_from_production_variant konstrueerida lõpp-punkti loomiseks.

Lõpp-punkti loomise ajal varustab SageMaker lõpp-punkti sätetes määratud hostieksemplari ja laadib tootmisvariandis määratud mudeli ja järelduskonteineri hostieksemplari alla. Kui pärast konteineri käivitamist ja pingiga tervisekontrolli sooritamist tagastatakse edukas vastus, saadetakse kasutajale teade, mis näitab, et lõpp-punkti loomine on lõppenud. Vaadake järgmist koodi:

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]
	)

Eelmises näites lõime kaks varianti, millest igaühel on erinev mudel (neil võib olla ka erinev eksemplari tüüp ja arv). Seadsime an initial_weight 1-st mõlema variandi puhul: see tähendab, et 50% meie päringutest läheb aadressile Variant1, ja ülejäänud 50% kuni Variant2. Mõlema variandi kaalude summa on 2 ja iga variandi kaal on 1. See tähendab, et iga variant saab 50% kogu liiklusest.

Lõpp-punkti kutsumine sarnaneb tavalise SageMakeri konstruktsiooniga invoke_endpoint; saate otse lõpp-punktile helistada, kasutades andmeid kasuliku koormusena:

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

SageMaker kiirgab selliseid mõõdikuid nagu Latency ja Invocations iga variandi jaoks CloudWatchis. Täieliku loendi mõõdikutest, mida SageMaker väljastab, vt Jälgige Amazon SageMakerit rakendusega Amazon CloudWatch. Saate teha päringu CloudWatchist, et saada väljakutsete arv variandi kohta, et näha, kuidas kutsed vaikimisi variantide vahel jaotatakse.

Mudeli konkreetse versiooni käivitamiseks määrake variant kui TargetVariant kõnes aadressile invoke_endpoint:

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

Saate hinnata iga tootmisvariandi jõudlust, vaadates üle mõõdikud, nagu täpsus, täpsus, tagasikutsumine, F1 skoor ja vastuvõtja tööomadused/kõveraalune ala iga variandi puhul, kasutades Amazon SageMakeri mudelimonitor. Seejärel saate otsustada suurendada liiklust parima mudelini, värskendades helistades igale variandile määratud kaalusid Värskenda lõpp-punkti kaalusid ja võimsusi. See muudab teie tootmisvariantide liikluse jaotust, ilma et oleks vaja lõpp-punkti värskendada. Nii et algse seadistuse 50% liikluse asemel nihutame 75% liiklusest edasi Variant2 määrates igale variandile uued kaalud kasutades UpdateEndpointWeightsAndCapacities. Vaadake järgmist koodi:

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

Kui olete mõne variandi toimivusega rahul, saate 100% liiklusest sellele variandile suunata. Näiteks saate määrata kaalu Variant1 0-ni ja kaal Variant2 1. Seejärel saadab SageMaker 100% kõigist järeldustaotlustest aadressile Variant2. Seejärel saate oma lõpp-punkti turvaliselt värskendada ja kustutada Variant1 teie lõpp-punktist. Samuti saate jätkata uute tootmismudelite testimist, lisades oma lõpp-punktile uusi variante. Samuti saate konfigureerida need lõpp-punktid automaatselt skaleerima, lähtudes lõpp-punktide vastuvõetavast liiklusest.

Mitme variandiga lõpp-punktide eelised

SageMaker MVE-d võimaldavad teil teha järgmist.

  • Juurutage ja testige mudeli mitut varianti, kasutades sama SageMakeri lõpp-punkti. See on kasulik mudeli variatsioonide testimiseks tootmises. Oletame näiteks, et olete mudeli tootmisse juurutanud. Saate testida mudeli variatsiooni, suunates väikese liikluse, näiteks 5%, uuele mudelile.
  • Hinnake mudeli jõudlust tootmises ilma liiklust katkestamata, jälgides CloudWatchis iga variandi töömõõdikuid.
  • Värskendage tootmises olevaid mudeleid ilma saadavust kaotamata. Saate muuta lõpp-punkti ilma juba tootmisesse juurutatud mudeleid kasutusest välja võtmata. Näiteks saate lisada uusi mudelivariante, värskendada olemasolevate mudelivariantide ML-i arvutamise eksemplari konfiguratsioone või muuta liikluse jaotust mudelivariantide vahel. Lisateabe saamiseks vt Värskenda lõpp-punkti ja Värskenda lõpp-punkti kaalusid ja võimsusi.

Väljakutsed mitme variandi lõpp-punktide kasutamisel

SageMaker MVE-del on järgmised väljakutsed:

  • Koormuse testimise pingutus – Iga variandi testimiseks ja mudelimaatriksi võrdlemiseks peate panustama küllaltki jõupingutusi ja ressursse. Selleks, et A/B-testi lugeda edukaks, peate läbi viima testist kogutud mõõdikute statistilise analüüsi, et teha kindlaks, kas tulemus on statistiliselt oluline. Halvasti toimivate variantide uurimise minimeerimine võib osutuda keeruliseks. Sa võiksid potentsiaalselt kasutada mitmekäeline bandiit optimeerimistehnika, et vältida liikluse saatmist katsetele, mis ei tööta, ja optimeerida testimise ajal toimivust. Koormustestimiseks võiks ka uurida Amazon SageMakeri järelduste soovitus et viia läbi ulatuslikke võrdlusuuringuid, mis põhinevad latentsuse ja läbilaskevõime tootmisnõuetel, kohandatud liiklusmustritel ja teie valitud eksemplaridel (kuni 10).
  • Tihe ühendus mudeli variandi ja lõpp-punkti vahel – Sõltuvalt mudeli juurutamise sagedusest võib see muutuda keeruliseks, kuna lõpp-punkt võib sattuda updating iga uuendatava tootmisvariandi olek. SageMaker toetab ka kaitsepiirded, mille abil saate hõlpsasti kontrollitud viisil lülituda praeguselt tootmismudelilt uuele. See valik tutvustab kanaria ja sirgjooneline liikluse nihutamise režiimid, et saaksite värskenduse käigus oma praeguselt mudelilt uuele liikluse nihutamist üksikasjalikult juhtida. Sisseehitatud kaitsemehhanismide (nt automaatne tagasipööramine) abil saate probleeme varakult tabada ja võtta automaatselt parandusmeetmeid enne, kui need avaldavad märkimisväärset mõju tootmisele.

Mitme variandi lõpp-punktide parimad tavad

SageMakeri MVE-sid kasutavate mudelite hostimisel võtke arvesse järgmist.

  • SageMaker sobib suurepäraselt uute mudelite testimiseks, kuna saate neid hõlpsasti A/B testimiskeskkonda juurutada ja maksate ainult selle eest, mida kasutate. Lõpp-punkti töötamise ajal võetakse teilt tasu iga eksemplari kulutatud eksemplari tunni eest. Kui olete oma testidega lõpetanud ega kasuta enam lõpp-punkti ega variante laialdaselt, peaksite selle kulude säästmiseks kustutama. Saate selle alati uuesti luua, kui seda uuesti vajate, kuna mudel on salvestatud Amazoni lihtne salvestusteenus (Amazon S3).
  • Mudelite juurutamiseks peaksite kasutama kõige optimaalsemat eksemplari tüüpi ja suurust. SageMaker pakub praegu ML arvutamise eksemplarid erinevatel perekondadel. Lõpp-punkti eksemplar töötab kogu aeg (sel ajal kui eksemplar on kasutuses). Seetõttu võib õiget tüüpi eksemplari valimine oluliselt mõjutada ML-mudelite kogukulusid ja jõudlust. Koormustestimine on parim tava sobiva eksemplari tüübi ja masinapargi suuruse määramiseks koos reaalajas lõpp-punkti automaatse skaleerimisega või ilma, et vältida ülevarustamist ja mittevajaliku võimsuse eest lisatasusid.
  • CloudWatchis saate jälgida mudeli jõudlust ja ressursside kasutamist. Saate konfigureerida a ProductionVariant kasutada Rakenduse automaatne skaleerimine. Skaleerimispoliitika mõõdikute ja sihtväärtuste määramiseks konfigureerite sihtmärgi jälgimise skaleerimise poliitika. Võite kasutada kas eelmääratud mõõdikut või kohandatud mõõdikut. Lisateavet poliitika konfiguratsiooni süntaksi kohta leiate teemast TargetTrackingScalingPolicyConfiguration. Lisateavet automaatse skaleerimise konfigureerimise kohta vt Skaleerige Amazon SageMakeri mudeleid automaatselt. Variandi jaoks sihtmärgi jälgimise skaleerimispoliitika kiireks määratlemiseks saate valida konkreetse CloudWatchi mõõdiku ja määrata läviväärtused. Näiteks kasutage mõõdikut SageMakerVariantInvocationsPerInstance et jälgida, mitu korda minutis keskmiselt iga variandi eksemplari välja kutsutakse, või kasutage mõõdikut CPUUtilization et jälgida protsessori poolt tehtava töö summat. Järgmises näites kasutatakse SageMakerVariantInvocationsPerInstance eelmääratletud mõõdik, et kohandada variantide arvu nii, et igal eksemplaril oleks InvocationsPerInstance mõõdik 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Mudeli artefaktide muutmine või kustutamine või järelduskoodi muutmine pärast mudeli juurutamist annab ettearvamatuid tulemusi. Enne mudelite tootmisse juurutamist on hea tava pärast järelduskoodijuppide (nt. model_fn, input_fn, predict_fnja output_fn) kohalikus arenduskeskkonnas, näiteks SageMakeri sülearvuti eksemplaris või kohalikus serveris. Kui teil on vaja muuta või kustutada mudeli artefakte või muuta järelduskoodi, muutke lõpp-punkti, esitades uue lõpp-punkti konfiguratsiooni. Pärast uue lõpp-punkti konfiguratsiooni esitamist saate muuta või kustutada vanale lõpp-punkti konfiguratsioonile vastavaid mudeliartefakte.
  • Saate kasutada SageMakerit partii teisendus tootmisvariantide testimiseks. Partii teisendus on ideaalne järelduste tegemiseks suurtest andmekogumitest. Saate luua iga uue mudelivariandi jaoks eraldi teisendustöö ja kasutada testimiseks valideerimisandmestikku. Iga teisendustöö jaoks määrake väljundfaili jaoks unikaalne mudeli nimi ja asukoht Amazon S3-s. Tulemuste analüüsimiseks kasutage järelduste konveieri logid ja mõõdikud.

Järeldus

SageMaker võimaldab teil hõlpsasti A/B-testida ML-mudeleid tootmises, käivitades lõpp-punktis mitu tootmisvarianti. Saate kasutada SageMakeri võimalusi, et testida mudeleid, mida on koolitatud erinevate koolitusandmete kogumite, hüperparameetrite, algoritmide või ML-raamistike abil; kuidas need toimivad erinevatel eksemplaritüüpidel; või kõigi eelnimetatute kombinatsioon. Saate anda liikluse jaotuse lõpp-punkti variantide vahel ja SageMaker jagab järeldusliikluse variantide vahel määratud jaotuse alusel. Teise võimalusena, kui soovite testida konkreetsete kliendisegmentide mudeleid, saate määrata variandi, mis peaks järeldamispäringut töötlema, esitades TargetVariant päis ja SageMaker suunab päringu teie määratud variandile. A/B testimise kohta lisateabe saamiseks vt Uuendage ohutult tootmises olevaid mudeleid.

viited


Autoritest

Mudelite hostimise mustrid SageMakeris: parimad tavad mudelite testimisel ja värskendamisel SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.Deepali Rajale on AI/ML spetsialiseerunud tehniline kontohaldur ettevõttes Amazon Web Services. Ta töötab äriklientidega, pakkudes tehnilisi juhiseid masinõppelahenduste rakendamiseks parimate tavadega. Vabal ajal meeldib talle matkata, filme vaadata ning pere ja sõpradega aega veeta.

Mudelite hostimise mustrid SageMakeris: parimad tavad mudelite testimisel ja värskendamisel SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.Dhawal Patel on AWS-i peamine masinõppearhitekt. Ta on töötanud hajutatud andmetöötluse ja tehisintellektiga seotud probleemide lahendamisel organisatsioonidega alates suurettevõtetest kuni keskmise suurusega idufirmadeni. Ta keskendub süvaõppele, sealhulgas NLP ja Computer Vision domeenidele. Ta aitab klientidel teha SageMakeris suure jõudlusega mudeli järeldusi.

Mudelite hostimise mustrid SageMakeris: parimad tavad mudelite testimisel ja värskendamisel SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai. Saurabh Trikande on Amazon SageMaker Inference'i vanemtootejuht. Ta on kirglik töö klientidega ja teda motiveerib eesmärk demokratiseerida masinõpe. Ta keskendub põhiprobleemidele, mis on seotud keeruliste ML-rakenduste, mitme rentniku ML-mudelite, kulude optimeerimise ja süvaõppemudelite juurutamise kättesaadavamaks muutmisega. Vabal ajal naudib Saurabh matkamist, uuenduslike tehnoloogiate õppimist, TechCrunchi jälgimist ja perega aega veetmist.

Ajatempel:

Veel alates AWS-i masinõpe