Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker-skyggetest

Amazon SageMaker giver dig nu mulighed for at sammenligne ydeevnen af ​​en ny version af en modelserveringsstack med den aktuelt implementerede version før en fuld produktionsudrulning ved hjælp af en implementeringssikkerhedspraksis kendt som skyggetest. Skyggetest kan hjælpe dig med at identificere potentielle konfigurationsfejl og ydeevneproblemer, før de påvirker slutbrugerne. Med SageMaker behøver du ikke at investere i at bygge din skyggetestinfrastruktur, så du kan fokusere på modeludvikling. SageMaker sørger for at implementere den nye version sammen med den nuværende version, der betjener produktionsanmodninger, og dirigerer en del af anmodningerne til skyggeversionen. Du kan derefter sammenligne ydeevnen af ​​de to versioner ved hjælp af metrics såsom latens og fejlrate. Dette giver dig større tillid til, at produktionsudrulning til SageMaker-slutpunkter ikke vil forårsage ydeevneregressioner, og hjælper dig med at undgå udfald på grund af utilsigtede fejlkonfigurationer.

I dette indlæg demonstrerer vi denne nye SageMaker-kapacitet. Den tilsvarende prøvenotesbog er tilgængelig i denne GitHub Repository.

Oversigt over løsning

Din modelserveringsinfrastruktur består af maskinlæringsmodellen (ML), serveringsbeholderen eller computerforekomsten. Lad os overveje følgende scenarier:

  • Du overvejer at promovere en ny model, der er blevet valideret offline til produktion, men ønsker at evaluere operationelle præstationsmålinger, såsom latens, fejlrate og så videre, før du træffer denne beslutning.
  • Du overvejer ændringer af din serveringsinfrastrukturcontainer, såsom patchning af sårbarheder eller opgradering til nyere versioner, og du ønsker at vurdere virkningen af ​​disse ændringer før oprykning til produktion.
  • Du overvejer at ændre din ML-instans og ønsker at evaluere, hvordan den nye instans ville klare sig med direkte slutningsanmodninger.

Følgende diagram illustrerer vores løsningsarkitektur.

For hvert af disse scenarier skal du vælge en produktionsvariant, du vil teste imod, og SageMaker implementerer automatisk den nye variant i skyggetilstand og dirigerer en kopi af slutningsanmodningerne til den i realtid inden for det samme slutpunkt. Kun svarene fra produktionsvarianten returneres til den kaldende applikation. Du kan vælge at kassere eller logge svarene fra skyggevarianten til offline sammenligning. Eventuelt kan du overvåge varianterne gennem et indbygget dashboard med en side-by-side sammenligning af ydeevnemålingerne. Du kan bruge denne funktion enten gennem SageMaker inference update-endpoint API'er eller gennem SageMaker-konsollen.

Skyggevarianter bygger oven på produktionsvariantkapaciteten i SageMaker-slutningsendepunkter. For at gentage, a produktionsvariant består af ML-modellen, serveringsbeholder og ML-instans. Fordi hver variant er uafhængig af andre, kan du have forskellige modeller, containere eller instanstyper på tværs af varianter. SageMaker giver dig mulighed for at specificere politikker for automatisk skalering på en per-variant basis, så de kan skaleres uafhængigt baseret på indgående belastning. SageMaker understøtter op til 10 produktionsvarianter pr. slutpunkt. Du kan enten konfigurere en variant til at modtage en del af den indgående trafik ved at indstille variantvægte eller angive målvarianten i den indgående anmodning. Svaret fra produktionsvarianten sendes tilbage til invokeren.

A skyggevariant (ny) har samme komponenter som en produktionsvariant. En brugerspecificeret del af anmodningerne, kendt som trafikprøveprocent, videresendes til skyggevarianten. Du kan vælge at logge svaret fra skyggevarianten ind Amazon Simple Storage Service (Amazon S3) eller kasser den.

Bemærk, at SageMaker maksimalt understøtter én skyggevariant pr. slutpunkt. For et endepunkt med en skyggevariant kan der maksimalt være én produktionsvariant.

Når du har konfigureret produktions- og skyggevarianterne, kan du overvåge invokationsmålinger til både produktion og skyggevarianter i amazoncloudwatch under AWS/SageMaker navneområde. Alle opdateringer til SageMaker-slutpunktet orkestreres vha blå/grønne udrulninger og sker uden tab af tilgængelighed. Dine slutpunkter vil fortsætte med at svare på produktionsanmodninger, når du tilføjer, ændrer eller fjerner skyggevarianter.

Du kan bruge denne funktion på en af ​​to måder:

  • Administreret skyggetest ved hjælp af SageMaker-konsollen – Du kan udnytte konsollen til en guidet oplevelse til at styre den ende-til-ende rejse med skyggetest. Dette giver dig mulighed for at opsætte skyggetests i en foruddefineret varighed, overvåge fremskridtene gennem et live dashboard, rydde op efter afslutning og handle på resultaterne.
  • Selvbetjent skyggetest ved hjælp af SageMaker Inference API'er – Hvis din implementeringsarbejdsgang allerede bruger oprette/opdater/slet-slutpunkt-API'er, kan du fortsætte med at bruge dem til at administrere Shadow Variants.

I de følgende afsnit gennemgår vi hvert af disse scenarier.

Scenarie 1 – Administreret skyggetest ved hjælp af SageMaker-konsollen

Hvis du ønsker at vælge SageMaker til at styre ende-til-ende-workflowet med at oprette, administrere og handle på resultaterne af skyggetestene, kan du overveje at bruge Shadow-testens muligheder i afsnittet Inference i SageMaker-konsollen. Som nævnt tidligere giver dette dig mulighed for at opsætte skyggetests i en foruddefineret varighed, overvåge fremskridtene gennem et live-dashboard, præsentere oprydningsmuligheder efter afslutning og handle på resultaterne. For at lære mere, besøg venligst skyggetestene sektion af vores dokumentation for en trin-for-trin gennemgang af denne funktion.

Forudsætninger

Modellerne til produktion og skygge skal oprettes på SageMaker. Der henvises til CreateModel API link..

Trin 1 – Opret en skyggetest

Naviger til Inferens sektion af venstre navigationspanel på SageMaker-konsollen, og vælg derefter Shadow tests. Dette fører dig til et dashboard med alle de planlagte, kørende og gennemførte skyggetests. Klik på 'lav en skyggetest'. Indtast et navn til testen og vælg næste.

Dette fører dig til siden med indstillinger for skyggetest. Du kan vælge en eksisterende IAM-rolle eller oprette en, der har AmazonSageMakerFullAccess IAM-politik vedhæftet. Vælg derefter 'Opret et nyt slutpunkt' og indtast et navn (xgb-prod-shadow-1). Du kan tilføje en produktions- og en skyggevariant tilknyttet dette endepunkt ved at klikke på 'Tilføje' i afsnittet Varianter. Du kan vælge de modeller, du har oprettet i 'Tilføj model' dialog boks. Dette skaber en produktion eller variant. Du kan eventuelt ændre den forekomsttype og det antal, der er knyttet til hver variant.

Al trafik går til produktionsvarianten, og den reagerer på anmodninger om invokation. Du kan kontrollere en del af de anmodninger, der sendes til skyggevarianten ved at ændre Traffic Sampling Percentage.

Du kan kontrollere varigheden af ​​testen fra en time til 30 dage. Hvis det ikke er angivet, er det som standard 7 dage. Efter denne periode markeres testen som afsluttet. Hvis du kører en test på et eksisterende endepunkt, vil den blive rullet tilbage til tilstanden, før testen starter, når den er afsluttet.

Du kan valgfrit fange anmodningerne og svarene fra Shadow-varianten ved hjælp af Datafangst muligheder. Hvis det efterlades uspecificeret, kasseres svarene fra skyggevarianten.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Trin 2 – Overvåg en skyggetest

Du kan se listen over skyggetests ved at navigere til Shadow Tests afsnit under Inferens. Klik på den skyggetest, der blev oprettet i det foregående trin, for at se detaljerne i en skyggetest og overvåge den, mens den er i gang, eller efter den er fuldført.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Sektionen Metrics giver en sammenligning af nøglemetrikkene og giver overlejrede grafer mellem produktions- og skyggevarianterne sammen med beskrivende statistik. Du kan sammenligne invokationsmetrics som f.eks ModelLatency , Invocation4xxErrors samt instansmålinger som f.eks CPUUtilization , DiskUtilization.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Trin 3 – Fremhæv Shadow-varianten til den nye produktionsvariant

Ved sammenligning kan du enten vælge at promovere skyggevarianten til at være den nye produktionsvariant eller fjerne skyggevarianten. For begge disse muligheder skal du vælge 'Markér fuldført' øverst på siden. Dette giver dig mulighed for enten at fremme eller fjerne skyggevarianten.

Hvis du vælger at promovere, vil du blive ført til en implementeringsside, hvor du kan bekræfte variantindstillingerne før implementeringen. Inden implementeringen anbefaler vi at dimensionere dine skyggevarianter, så de kan håndtere 100 % af invokationstrafikken. Hvis du ikke bruger skyggetest til at evaluere alternative forekomsttyper eller -størrelser, kan du bruge knappen 'bevare produktionsvariantindstillingerne. Ellers kan du vælge at 'behold indstillinger for skyggevarianter. Hvis du vælger denne mulighed, skal du sørge for, at din trafiksampling er sat til 100 %. Alternativt kan du angive instanstypen og tælleren, hvis du ønsker at tilsidesætte disse indstillinger.

Når du har bekræftet implementeringen, starter SageMaker en opdatering af dit slutpunkt for at promovere skyggevarianten til den nye produktionsvariant. Som med SageMaker alle opdateringer, vil dit slutpunkt stadig være operationelt under opdateringen.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Scenarie 2: Skyggetest ved hjælp af SageMaker inference API'er

Dette afsnit dækker, hvordan man bruger de eksisterende SageMaker create/update/delete-endpoint API'er til at implementere skyggevarianter.

Til dette eksempel har vi to XGBoost-modeller, der repræsenterer to forskellige versioner af de modeller, der er blevet fortrænet. model.tar.gz er den model, der i øjeblikket anvendes i produktionen. model2 er den nyere model, og vi ønsker at teste dens ydeevne i form af operationelle målinger såsom latency, før vi beslutter os for at bruge den i produktionen. Vi sætter ind model2 som en skyggevariant af model.tar.gz. Begge fortrænede modeller opbevares i den offentlige S3-spand s3://sagemaker-sample-files. Vi downloader først modellen vores lokale computerforekomst og uploader derefter til S3.

Modellerne i dette eksempel bruges til at forudsige sandsynligheden for, at en mobilkunde forlader deres nuværende mobiloperatør. Datasættet, vi bruger, er offentligt tilgængeligt og blev nævnt i bogen Opdagelse af viden i data af Daniel T. Larose. Disse modeller blev trænet ved hjælp af XGB Churn Prediction Notebook i SageMaker. Du kan også bruge dine egne præ-trænede modeller, i hvilket tilfælde du kan springe over at downloade fra s3://sagemaker-sample-files og kopier dine egne modeller direkte til model/mappe.

!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/

Trin 1 – Opret modeller

Vi uploader modelfilerne til vores egen S3-spand og laver to SageMaker-modeller. Se følgende kode:

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

Trin 2 – Implementer de to modeller som produktions- og skyggevarianter til et slutpunkt i realtid

Vi opretter en slutpunktskonfiguration med produktions- og skyggevarianterne. Det ProductionVariants , ShadowProductionVariants er af særlig interesse. Begge disse varianter har ml.m5.xlarge forekomster med 4 vCPU'er og 16 GiB hukommelse, og det indledende antal forekomster er sat til 1. Se følgende kode:

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

Til sidst skaber vi produktions- og skyggevarianten:

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

Trin 3 – Kald slutpunktet til test

Når slutpunktet er blevet oprettet, kan du begynde at kalde det. Vi sender omkring 3,000 anmodninger på en sekventiel måde:

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)

Trin 4 – Sammenlign metrics

Nu hvor vi har implementeret både produktions- og skyggemodellerne, lad os sammenligne påkaldelsesmetrikkene. For en liste over opkaldsmetrikker, der er tilgængelige til sammenligning, henvises til Overvåg Amazon SageMaker med Amazon CloudWatch. Lad os starte med at sammenligne påkaldelser mellem produktions- og skyggevarianterne.

InvocationsPerInstance metrisk refererer til antallet af opkald sendt til produktionsvarianten. En brøkdel af disse påkald, specificeret i variantvægten, sendes til skyggevarianten. Påkaldelsen pr. instans beregnes ved at dividere det samlede antal kald med antallet af instanser i en variant. Som vist i de følgende diagrammer kan vi bekræfte, at både produktions- og skyggevarianterne modtager invokationsanmodninger i henhold til vægtene specificeret i slutpunktskonfigurationen.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Lad os derefter sammenligne modelforsinkelsen (ModelLatency metrisk) mellem produktions- og skyggevarianterne. Model latency er den tid, det tager en model at reagere, set fra SageMaker. Vi kan observere, hvordan modellatensen for skyggevarianten sammenlignes med produktionsvarianten uden at udsætte slutbrugere for skyggevarianten.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Vi forventer overhead latens (OverheadLatency metrisk) for at være sammenlignelige på tværs af produktions- og skyggevarianter. Overhead latency er intervallet målt fra det tidspunkt, SageMaker modtager anmodningen, indtil den returnerer et svar til klienten, minus model latens.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Trin 5- Markedsfør din skyggevariant

For at fremme skyggemodellen til produktion skal du oprette en ny slutpunktskonfiguration med nuværende ShadowProductionVariant som den nye ProductionVariant og fjern ShadowProductionVariant. Dette vil fjerne strømmen ProductionVariant og promovere skyggevarianten til at blive den nye produktionsvariant. Som altid er alle SageMaker-opdateringer orkestreret som blå/grønne installationer under hætten, og der er ingen tab af tilgængelighed, mens opdateringen udføres.

Eventuelt kan du udnytte Indsættelsesværn hvis du vil bruge alt på én gang trafikskift og automatisk tilbagerulning under din opdatering.

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)

Trin 6 – Ryd op

Hvis du ikke planlægger at bruge dette endepunkt yderligere, bør du slette endepunktet for at undgå at pådrage dig yderligere gebyrer og rydde op i andre ressourcer, der er oprettet i denne blog.

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)

Konklusion

I dette indlæg introducerede vi en ny mulighed for SageMaker-inferens til at sammenligne ydeevnen af ​​en ny version af en modelserveringsstack med den aktuelt implementerede version før en fuld produktionsudrulning ved hjælp af en implementeringssikkerhedspraksis kendt som skyggetest. Vi ledte dig igennem fordelene ved at bruge skyggevarianter og metoder til at konfigurere varianterne med en ende-til-ende eksempel. For at lære mere om skyggevarianter henvises til skyggetests dokumentation.


Om forfatterne

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Raghu Ramesha er en Machine Learning Solutions Architect hos Amazon SageMaker Service-teamet. Han fokuserer på at hjælpe kunder med at opbygge, implementere og migrere ML-produktionsarbejdsbelastninger til SageMaker i stor skala. Han har specialiseret sig i maskinlæring, kunstig intelligens og computersyn og har en mastergrad i datalogi fra UT Dallas. I sin fritid holder han af at rejse og fotografere.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Qingwei Li er Machine Learning Specialist hos Amazon Web Services. Han fik sin ph.d. i Operations Research, efter at han brød sin rådgivers forskningsbevillingskonto og undlod at levere den nobelpris, han lovede. I øjeblikket hjælper han kunder i finans- og forsikringsbranchen med at bygge maskinlæringsløsninger på AWS. I sin fritid kan han godt lide at læse og undervise.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Qiyun Zhao er senior softwareudviklingsingeniør hos Amazon SageMaker Inference Platform-teamet. Han er den ledende udvikler af Deployment Guardrails og Shadow Deployments, og han fokuserer på at hjælpe kunder med at administrere ML-arbejdsbelastninger og -implementeringer i stor skala med høj tilgængelighed. Han arbejder også på udvikling af platformsarkitektur for hurtig og sikker implementering af ML-job og afvikling af ML-onlineeksperimenter med lethed. I sin fritid nyder han at læse, spille og rejse.

Minimer produktionspåvirkningen af ​​ML-modelopdateringer med Amazon SageMaker skyggetest af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Tarun Sairam er Senior Product Manager for Amazon SageMaker Inference. Han er interesseret i at lære om de seneste trends inden for maskinlæring og hjælpe kunder med at udnytte dem. I sin fritid nyder han at cykle, stå på ski og spille tennis.

Tidsstempel:

Mere fra AWS maskinindlæring