Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varjutestiga

Amazon SageMaker võimaldab nüüd võrrelda mudelite serveerimispinu uue versiooni jõudlust praegu juurutatud versiooniga enne täielikku tootmist, kasutades juurutamise ohutust, mida nimetatakse varju testimine. Varitestimine aitab teil tuvastada võimalikud konfiguratsioonivead ja jõudlusprobleemid enne, kui need lõppkasutajaid mõjutavad. SageMakeriga ei pea te investeerima oma varitestimise infrastruktuuri ülesehitamisse, võimaldades teil keskenduda mudelite arendamisele. SageMaker hoolitseb uue versiooni juurutamise eest koos praeguse versiooniga, mis teenindab tootmispäringuid, suunates osa taotlustest variversiooni. Seejärel saate võrrelda kahe versiooni toimivust, kasutades selliseid mõõdikuid nagu latentsusaeg ja veamäär. See annab teile suurema kindlustunde, et SageMakeri järelduste lõpp-punktide tootmise levitamine ei põhjusta jõudluse regressioone ja aitab teil vältida juhuslikest valekonfiguratsioonidest tingitud katkestusi.

Selles postituses demonstreerime seda uut SageMakeri võimalust. Vastav näidismärkmik on saadaval selles GitHubis Hoidla.

Ülevaade lahendusest

Teie mudeli teenindamise infrastruktuur koosneb masinõppe (ML) mudelist, serveerimiskonteinerist või arvutuseksemplarist. Vaatleme järgmisi stsenaariume:

  • Kaalute uue mudeli reklaamimist, mis on võrguühenduseta tootmiseks valideeritud, kuid soovite enne selle otsuse tegemist hinnata toimivusmõõdikuid, nagu latentsusaeg, veamäär ja nii edasi.
  • Kaalute oma teenindusinfrastruktuuri konteineri muutmist, näiteks haavatavuste parandamist või uuematele versioonidele üleviimist, ja soovite enne tootmisse üleviimist hinnata nende muudatuste mõju.
  • Kaalute oma ML-i eksemplari muutmist ja soovite hinnata, kuidas uus eksemplar toimiks reaalajas järelduspäringutega.

Järgmine diagramm illustreerib meie lahenduse arhitektuuri.

Iga sellise stsenaariumi jaoks valige tootmisvariant, mille vastu soovite testida, ja SageMaker juurutab uue variandi automaatselt varirežiimis ja suunab sellele reaalajas sama lõpp-punkti piires järeldustaotluste koopiad. Kutsuvasse rakendusse tagastatakse ainult tootmisvariandi vastused. Võrguühenduseta võrdlemiseks saate varivariandi vastused tühistada või logida. Valikuliselt saate variante jälgida sisseehitatud armatuurlaua kaudu, kus võrreldakse jõudlusnäitajaid. Seda võimalust saate kasutada kas SageMakeri järelduse värskenduse lõpp-punkti API-de või SageMakeri konsooli kaudu.

Varivariandid põhinevad SageMakeri järelduste lõpp-punktide tootmisvariantide võimalusel. Kordades, a tootmisvariant koosneb ML-mudelist, teeninduskonteinerist ja ML-i eksemplarist. Kuna iga variant on teistest sõltumatu, võib teil olla erinevatel variantidel erinevad mudelid, konteinerid või eksemplaritüübid. SageMaker võimaldab teil määrata automaatse skaleerimise poliitikad variandipõhiselt, et nad saaksid sissetuleva koormuse alusel sõltumatult skaleerida. SageMaker toetab kuni 10 tootmisvarianti lõpp-punkti kohta. Saate konfigureerida variandi vastu võtma osa sissetulevast liiklusest, määrates variandi kaalud, või määrata sihtvariandi sissetulevas päringus. Tootmisvariandi vastus edastatakse tagasi kutsujale.

A varivariant (uus) on samad komponendid mis tootmisvariandil. Kasutaja määratud osa taotlustest, mida nimetatakse liikluse proovivõtu protsent, edastatakse varivariandile. Saate valida varivariandi vastuse sisselogimise Amazoni lihtne salvestusteenus (Amazon S3) või visake see ära.

Pange tähele, et SageMaker toetab maksimaalselt ühte varivarianti lõpp-punkti kohta. Varivariandiga lõpp-punkti puhul võib olla maksimaalselt üks tootmisvariant.

Pärast tootmis- ja varivariantide seadistamist saate jälgida kutsumismõõdikud aastal nii tootmis- kui ka varivariantide jaoks Amazon CloudWatch Vastavalt AWS/SageMaker nimeruum. Kõik SageMakeri lõpp-punkti värskendused on korraldatud kasutades sinine/roheline kasutuselevõtt ja ilmnevad ilma saadavust kaotamata. Teie lõpp-punktid vastavad jätkuvalt tootmispäringutele, kui lisate, muudate või eemaldate varivariante.

Saate seda võimalust kasutada kahel viisil.

  • Hallatud varjutestimine SageMakeri konsooli abil – Saate kasutada konsooli juhendatud kogemuse saamiseks, et hallata täielikku varitestimise teekonda. See võimaldab teil seadistada varjuteste etteantud aja jooksul, jälgida edenemist reaalajas armatuurlaua kaudu, pärast lõpetamist puhastada ja tulemuste põhjal tegutseda.
  • Iseteeninduse varjutestimine SageMaker Inference API-de abil – Kui teie juurutamise töövoog juba kasutab lõpp-punkti loomise/värskendamise/kustutamise API-sid, saate jätkata nende kasutamist varjuvariantide haldamiseks.

Järgmistes osades käsitleme kõiki neid stsenaariume.

1. stsenaarium – hallatud varjutestimine SageMakeri konsooli abil

Kui soovite valida SageMakeri, et hallata varjutestide loomise, haldamise ja nende tulemuste põhjal toimimise töövoogu, siis kaaluge SageMakeri konsooli jaotises Järelduste funktsiooni Varjutestide kasutamine. Nagu varem öeldud, võimaldab see seadistada varjuteste ettemääratud aja jooksul, jälgida edenemist reaalajas armatuurlaua kaudu, esitada pärast lõpetamist puhastusvalikud ja tegutseda vastavalt tulemustele. Lisateabe saamiseks külastage varjuteste lõik meie dokumentatsioonist, et saada selle võimaluse samm-sammult ülevaade.

Eeltingimused

Tootmis- ja varjumudelid tuleb luua SageMakeris. Palun vaadake CreateModel API siin.

1. samm – looge varjutest

Liikuge Järeldus SageMakeri konsooli vasakpoolsel navigeerimispaneelil ja seejärel valige Varjutestid. See viib teid armatuurlauale, kus on kõik ajastatud, töötavad ja lõpetatud varitestid. Klõpsake 'loo varjutest". Sisestage testi nimi ja valige järgmine.

See viib teid varjutesti sätete lehele. Saate valida olemasoleva IAM-rolli või luua selle, millel on AmazonSageMakerFullAccess IAM-i eeskirjad on lisatud. Järgmisena vali 'Loo uus lõpp-punkt ja sisestage nimi (xgb-prod-shadow-1). Saate lisada selle lõpp-punktiga seotud ühe tootmise ja ühe varivariandi, klõpsates nuppuLisama' jaotises Variandid. Saate valida loodud mudelid jaotisesLisa mudel' Dialoogikast. See loob lavastuse või variandi. Soovi korral saate muuta iga variandiga seotud eksemplari tüüpi ja arvu.

Kogu liiklus läheb tootmisvariandile ja see vastab kutsumistaotlustele. Saate juhtida osa taotlustest, mis suunatakse varivariandile, muutes Traffic Sampling Percentage.

Saate kontrollida testi kestust ühest tunnist 30 päevani. Kui see pole täpsustatud, on see vaikimisi 7 päeva. Pärast seda perioodi märgitakse test lõpetatuks. Kui käitate testi olemasoleva lõpp-punktiga, pööratakse see pärast lõpetamist tagasi olekusse enne testi alustamist.

Valikuliselt saate varjuvariandi päringuid ja vastuseid jäädvustada, kasutades Andmete hõivamine valikuid. Kui jäetakse täpsustamata, jäetakse varivariandi vastused kõrvale.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

2. samm – jälgige varjutesti

Varitestide loendit saate vaadata, navigeerides lehele Shadow Tests jaotises Järeldus. Varjutesti üksikasjade vaatamiseks ja selle jälgimiseks, kui see on pooleli või pärast selle lõppemist, klõpsake eelmises etapis loodud varjutestil.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Jaotises Mõõdikud võrreldakse põhimõõdikuid ja kuvatakse tootmis- ja varivariantide kattuvad graafikud koos kirjeldava statistikaga. Saate võrrelda kutsumismõõdikuid, näiteks ModelLatency ja Invocation4xxErrors samuti eksemplarimõõdikud nagu CPUUtilization ja DiskUtilization.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

3. samm – reklaamige varivariant uuele tootmisvariandile

Võrdlemisel saate valida, kas tõstate varivariandi uueks tootmisvariandiks või eemaldate varivariandi. Mõlema valiku jaoks valige "Märgi lõpetatuks" lehe ülaosas. See annab teile võimaluse varjuvariandi reklaamimiseks või eemaldamiseks.

Kui otsustate reklaamida, suunatakse teid juurutamise lehele, kus saate enne juurutamist kinnitada variandi sätted. Enne juurutamist soovitame määrata oma varivariantide suurused, et need saaksid käidelda 100% kutseliiklusest. Kui te ei kasuta alternatiivsete eksemplaritüüpide või suuruste hindamiseks varitestimist, võite kasutada käsku „säilitada tootmisvariandi seaded. Vastasel juhul saate valida "säilitada varjuvariandi sätted. Kui valite selle valiku, veenduge, et teie liikluse valim oleks 100%. Teise võimalusena saate määrata eksemplari tüübi ja arvu, kui soovite need sätted tühistada.

Kui olete juurutamise kinnitanud, käivitab SageMaker teie lõpp-punkti värskenduse, et viia varivariand üle uuele tootmisvariandile. Nagu kõigi SageMakeri värskenduste puhul, töötab teie lõpp-punkt ka värskenduse ajal.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

2. stsenaarium: varjutestimine SageMakeri järelduste API-de abil

See jaotis käsitleb olemasolevate SageMakeri lõpp-punkti loomise/värskendamise/kustutamise API-de kasutamist varivariantide juurutamiseks.

Selle näite jaoks on meil kaks XGBoosti mudelit, mis esindavad mudelite kahte erinevat versiooni, mis on eelnevalt koolitatud. model.tar.gz on praegu tootmises kasutusel olev mudel. model2 on uuem mudel ja tahame testida selle toimivust töömõõdikute, näiteks latentsusaja osas, enne kui otsustame seda tootmises kasutada. Me rakendame model2 varjuvariandina model.tar.gz. Mõlemad eelkoolitatud mudelid on salvestatud avalikku S3 ämbrisse s3://sagemaker-sample-files. Esmalt laadime mudeli alla oma kohaliku arvutuseksemplari ja seejärel laadime üles S3-sse.

Selle näite mudeleid kasutatakse mobiilikliendi praegusest mobiilioperaatorist lahkumise tõenäosuse ennustamiseks. Meie kasutatav andmestik on avalikult kättesaadav ja seda on raamatus mainitud Teadmiste avastamine andmetes autor Daniel T. Larose. Neid mudeleid koolitati kasutades XGB Churn Prediction sülearvuti SageMakeris. Võite kasutada ka oma eelkoolitatud mudeleid, sel juhul võite allalaadimise vahele jätta s3://sagemaker-sample-files ja kopeerige oma mudelid otse mudelisse/kausta.

!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model.tar.gz model/
!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model2.tar.gz model/

1. samm – looge mudeleid

Laadime mudelifailid üles oma S3 ämbrisse ja loome kaks SageMakeri mudelit. Vaadake järgmist koodi:

model_url = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
)
model_url2 = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model2.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
from sagemaker import image_uris
image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-1")
image_uri2 = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-2")

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"

resp = sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri, "ModelDataUrl": model_url}],
)

resp = sm.create_model(
    ModelName=model_name2,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri2, "ModelDataUrl": model_url2}],
)

2. samm – juurutage kaks mudelit tootmis- ja varivariantidena reaalajas järelduse lõpp-punkti

Loome lõpp-punkti konfiguratsiooni tootmis- ja varivariantidega. The ProductionVariants ja ShadowProductionVariants pakuvad erilist huvi. Mõlemal variandil on ml.m5.xlarge eksemplarid 4 vCPU ja 16 GiB mäluga ning esialgseks eksemplaride arvuks on seatud 1. Vaadake järgmist koodi:

ep_config_name = f"Shadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"
production_variant_name = "production"
shadow_variant_name = "shadow"
create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=ep_config_name,
    ProductionVariants=[
    # Type: Array of ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) objects
      { 
         "VariantName": shadow_variant_name,
        {
            "VariantName": production_variant_name,
            "ModelName": model_name,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1,
        }
    ],
     # Type: Array of ShadowProductionVariants 
    ShadowProductionVariants = [
         "ModelName": model_name2,
         "InitialInstanceCount": 1,
         "InitialVariantWeight": 0.5,
         "InstanceType": "ml.m5.xlarge" 
      }
   ]
)

Viimasena loome tootmis- ja varivariandi:

endpoint_name = f"xgb-prod-shadow-{datetime.now():%Y-%m-%d-%H-%M-%S}"
create_endpoint_api_response = sm.create_endpoint(
                                    EndpointName=endpoint_name,
                                    EndpointConfigName=ep_config_name,
                                )

3. samm – kutsuge testimiseks välja lõpp-punkt

Kui lõpp-punkt on edukalt loodud, võite alustada selle väljakutsumist. Saadame umbes 3,000 päringut järjestikku:

def invoke_endpoint(endpoint_name, wait_interval_sec=0.01, should_raise_exp=False):
    with open("test_data/test-dataset-input-cols.csv", "r") as f:
        for row in f:
            payload = row.rstrip("n")
            try:
                for i in range(10): #send the same payload 10 times for testing purpose
                    response = sm_runtime.invoke_endpoint(
                        EndpointName=endpoint_name, ContentType="text/csv", Body=payload
                    )
            except Exception as e:
                print("E", end="", flush=True)
                if should_raise_exp:
                    raise e

invoke_endpoint(endpoint_name)

4. samm – võrrelge mõõdikuid

Nüüd, kui oleme kasutusele võtnud nii tootmis- kui ka varimudelid, võrdleme kutsumõõdikuid. Võrdluseks saadaolevate kutsumismõõdikute loendi leiate aadressilt Jälgige Amazon SageMakerit rakendusega Amazon CloudWatch. Alustame tootmis- ja varivariantide kutsumiste võrdlemisega.

. InvocationsPerInstance mõõdik viitab tootmisvariandile saadetud kutsete arvule. Varivariandile saadetakse murdosa neist väljakutsetest, mis on määratud variandi kaalus. Eksemplari väljakutse arvutamiseks jagatakse kutsete koguarv variandi eksemplaride arvuga. Nagu on näidatud järgmistel diagrammidel, saame kinnitada, et nii tootmis- kui ka varivariandid saavad kutsumistaotlusi vastavalt lõpp-punkti konfiguratsioonis määratud kaaludele.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Järgmiseks võrdleme mudeli latentsust (ModelLatency meetermõõdustik) tootmis- ja varivariantide vahel. Mudeli latentsus on aeg, mis mudelil SageMakerist vaadatuna reageerimiseks kulub. Saame jälgida, kuidas varivariandi mudeli latentsus on võrreldav tootmisvariandiga, ilma lõppkasutajaid varivariandile avaldamata.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Ootame üldist latentsust (OverheadLatency mõõdik), et need oleksid tootmis- ja varivariantide lõikes võrreldavad. Üldkulud on ajavahemik, mida mõõdetakse ajast, mil SageMaker päringu saab, kuni kliendile vastuse tagastamiseni, millest on maha arvatud mudeli latentsusaeg.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

5. samm – reklaamige oma varjuvarianti

Varimudeli tootmisse viimiseks looge uus lõpp-punkti konfiguratsioon praegusega ShadowProductionVariant uuena ProductionVariant ja eemaldage ShadowProductionVariant. See eemaldab voolu ProductionVariant ja reklaamida varivariandi uueks tootmisvariandiks. Nagu alati, korraldatakse kõik SageMakeri värskendused kapoti all siniste/roheliste juurutustena ja värskenduse ajal ei kao saadavus.

Valikuliselt saate finantsvõimendust kasutada Kaitsepiirete kasutuselevõtt kui soovite värskendamise ajal kasutada korraga liikluse nihutamist ja automaatset tagasipööramist.

promote_ep_config_name = f"PromoteShadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=promote_ep_config_name,
    ProductionVariants=[
        {
            "VariantName": shadow_variant_name,
            "ModelName": model_name2,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1.0,
        }
    ],
)
print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")

update_endpoint_api_response = sm.update_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=promote_ep_config_name,
)

wait_for_endpoint_in_service(endpoint_name)

sm.describe_endpoint(EndpointName=endpoint_name)

6. samm – puhastamine

Kui te ei kavatse seda lõpp-punkti enam kasutada, peaksite lisatasude vältimiseks lõpp-punkti kustutama ja puhastama muud selles ajaveebis loodud ressursid.

dsm.delete_endpoint(EndpointName=endpoint_name)
sm.delete_endpoint_config(EndpointConfigName=ep_config_name)
sm.delete_endpoint_config(EndpointConfigName=promote_ep_config_name)
sm.delete_model(ModelName=model_name)
sm.delete_model(ModelName=model_name2)

Järeldus

Selles postituses tutvustasime uut SageMakeri järelduse võimalust, et võrrelda mudelite serveerimispinu uue versiooni jõudlust praegu juurutatud versiooniga enne täielikku tootmist, kasutades juurutamise ohutust, mida nimetatakse varitestimiseks. Rääkisime teile varjuvariantide kasutamise eelistest ja variantide konfigureerimiseks meetoditega otsast lõpuni näide. Varjuvariantide kohta lisateabe saamiseks vaadake varjuteste dokumentatsioon.


Autoritest

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Raghu Ramesha on masinõppelahenduste arhitekt koos Amazon SageMaker Service meeskonnaga. Ta keskendub sellele, et aidata klientidel luua, juurutada ja ML-i tootmise töökoormust SageMakerile ulatuslikult üle viia. Ta on spetsialiseerunud masinõppele, tehisintellektile ja arvutinägemisvaldkondadele ning tal on magistrikraadi arvutiteaduses TÜ Dallases. Vabal ajal naudib ta reisimist ja fotograafiat.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Qingwei Li on Amazon Web Servicesi masinõppe spetsialist. Ta sai doktorikraadi. operatsioonide uurimisel pärast seda, kui ta murdis oma nõustaja uurimistoetuse konto ja ei suutnud väljastada lubatud Nobeli preemiat. Praegu aitab ta finantsteenuste ja kindlustussektori klientidel AWS-is masinõppelahendusi luua. Vabal ajal meeldib talle lugeda ja õpetada.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Qiyun Zhao on Amazon SageMaker Inference Platformi meeskonna tarkvaraarenduse vaneminsener. Ta on juurutamise kaitsepiirete ja varjujuurutuste juhtiv arendaja ning ta keskendub klientide abistamisele hallata ML-i töökoormust ja juurutusi mastaapselt kõrge kättesaadavusega. Ta tegeleb ka platvormi arhitektuuri arendustega, et ML-i töökohti kiiresti ja turvaliselt juurutada ning ML-i veebikatseid hõlpsalt käitada. Vabal ajal meeldib talle lugeda, mängida ja reisida.

Minimeerige ML-mudeli värskenduste mõju tootmisele Amazon SageMakeri varitestiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Tarun Sairam on Amazon SageMaker Inference'i vanemtootejuht. Ta on huvitatud masinõppe uusimate suundumuste tundmaõppimisest ja klientide abistamisest neid kasutada. Vabal ajal meeldib talle jalgrattaga sõita, suusatada ja tennist mängida.

Ajatempel:

Veel alates AWS-i masinõpe