Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtesten

Amazon Sage Maker stelt u nu in staat om de prestaties van een nieuwe versie van een modelservingstack te vergelijken met de momenteel geïmplementeerde versie voorafgaand aan een volledige productie-implementatie met behulp van een implementatieveiligheidspraktijk die bekend staat als schaduw testen. Schaduwtesten kunnen u helpen mogelijke configuratiefouten en prestatieproblemen te identificeren voordat ze gevolgen hebben voor eindgebruikers. Met SageMaker hoeft u niet te investeren in het bouwen van uw schaduwtestinfrastructuur, zodat u zich kunt concentreren op modelontwikkeling. SageMaker zorgt voor de implementatie van de nieuwe versie naast de huidige versie voor productieverzoeken, waarbij een deel van de verzoeken naar de schaduwversie wordt geleid. U kunt vervolgens de prestaties van de twee versies vergelijken met behulp van statistieken zoals latentie en foutpercentage. Dit geeft u meer vertrouwen dat productie-implementaties naar SageMaker-inferentie-eindpunten geen prestatieregressie zullen veroorzaken, en helpt u uitval als gevolg van onbedoelde verkeerde configuraties te voorkomen.

In dit bericht demonstreren we deze nieuwe SageMaker-mogelijkheid. Het bijbehorende voorbeeldnotitieboekje is beschikbaar in deze GitHub bewaarplaats.

Overzicht van de oplossing

Uw modelserving-infrastructuur bestaat uit het machine learning-model (ML), de serving-container of de compute-instantie. Laten we de volgende scenario's bekijken:

  • U overweegt een nieuw model dat offline is gevalideerd naar productie te promoten, maar u wilt operationele prestatiestatistieken evalueren, zoals latentie, foutenpercentage, enzovoort, voordat u deze beslissing neemt.
  • U overweegt wijzigingen aan de serverinfrastructuurcontainer, zoals het patchen van kwetsbaarheden of upgraden naar nieuwere versies, en u wilt de impact van deze wijzigingen beoordelen voordat u naar productie gaat.
  • U overweegt uw ML-instantie te wijzigen en wilt evalueren hoe de nieuwe instantie zou presteren met live gevolgtrekkingsverzoeken.

Het volgende diagram illustreert onze oplossingsarchitectuur.

Selecteer voor elk van deze scenario's een productievariant waarmee u wilt testen en SageMaker implementeert de nieuwe variant automatisch in de schaduwmodus en stuurt er in realtime een kopie van de gevolgtrekkingsverzoeken naartoe binnen hetzelfde eindpunt. Alleen de antwoorden van de productievariant worden teruggestuurd naar de aanroepende applicatie. U kunt ervoor kiezen om de reacties van de schaduwvariant te negeren of te loggen voor offline vergelijking. Optioneel kunt u de varianten volgen via een ingebouwd dashboard met een zij-aan-zij vergelijking van de prestatiestatistieken. U kunt deze mogelijkheid gebruiken via SageMaker-inferentie-update-eindpunt-API's of via de SageMaker-console.

Schaduwvarianten bouwen voort op de mogelijkheden voor productievarianten in SageMaker-inferentie-eindpunten. Om te herhalen, een productie variant bestaat uit het ML-model, de servercontainer en de ML-instantie. Omdat elke variant onafhankelijk is van andere, kunt u verschillende modellen, containers of instantietypen hebben voor verschillende varianten. Met SageMaker kunt u beleid voor automatisch schalen per variant specificeren, zodat ze onafhankelijk kunnen schalen op basis van inkomende belasting. SageMaker ondersteunt maximaal 10 productievarianten per eindpunt. U kunt een variant configureren om een ​​deel van het inkomende verkeer te ontvangen door variantgewichten in te stellen, of u kunt de doelvariant specificeren in het inkomende verzoek. Het antwoord van de productievariant wordt teruggestuurd naar de invoker.

A schaduwvariant(nieuw) heeft dezelfde componenten als een productievariant. Een door de gebruiker gespecificeerd deel van de verzoeken, bekend als de percentage verkeersmonsters, wordt doorgestuurd naar de schaduwvariant. U kunt ervoor kiezen om de respons van de schaduwvariant in te loggen Amazon eenvoudige opslagservice (Amazon S3) of gooi het weg.

Houd er rekening mee dat SageMaker maximaal één schaduwvariant per eindpunt ondersteunt. Voor een eindpunt met een schaduwvariant kan er maximaal één productievariant zijn.

Nadat je de productie- en schaduwvarianten hebt ingesteld, kun je de aanroepstatistieken voor zowel productie- als schaduwvarianten in Amazon Cloud Watch onder de AWS/SageMaker naamruimte. Alle updates voor het SageMaker-eindpunt worden georkestreerd met behulp van blauw/groene implementaties en gebeuren zonder verlies van beschikbaarheid. Uw endpoints blijven reageren op productieverzoeken terwijl u schaduwvarianten toevoegt, wijzigt of verwijdert.

U kunt deze mogelijkheid op twee manieren gebruiken:

  • Beheerde schaduwtesten met behulp van de SageMaker-console - U kunt de console gebruiken voor een begeleide ervaring om de end-to-end reis van schaduwtesten te beheren. Hiermee kunt u schaduwtesten instellen voor een vooraf gedefinieerde tijdsduur, de voortgang volgen via een live dashboard, opschonen na voltooiing en actie ondernemen op basis van de resultaten.
  • Self-service schaduwtesten met behulp van de SageMaker Inference API's - Als uw implementatieworkflow al API's voor het maken/bijwerken/verwijderen van eindpunten gebruikt, kunt u deze blijven gebruiken om schaduwvarianten te beheren.

In de volgende secties lopen we door elk van deze scenario's.

Scenario 1 – Beheerde schaduwtesten met behulp van de SageMaker-console

Als u SageMaker wilt kiezen om de end-to-end-workflow te beheren voor het maken, beheren en uitvoeren van de resultaten van de schaduwtesten, overweeg dan om de mogelijkheid van de schaduwtesten te gebruiken in het gedeelte Inferentie van de SageMaker-console. Zoals eerder vermeld, stelt dit u in staat om schaduwtesten in te stellen voor een vooraf gedefinieerde tijdsduur, de voortgang te volgen via een live dashboard, opschoonopties te presenteren na voltooiing en te reageren op de resultaten. Ga voor meer informatie naar de schaduwtesten sectie van onze documentatie voor een stapsgewijze uitleg van deze mogelijkheid.

Pre-requisites

De modellen voor productie en schaduw moeten op SageMaker worden gemaakt. Raadpleeg de CreateModel API hier.

Stap 1 – Maak een schaduwtest aan

Navigeer naar de Gevolgtrekking gedeelte van het linkernavigatiepaneel van de SageMaker-console en kies vervolgens Schaduwtesten. Dit brengt u naar een dashboard met alle geplande, lopende en voltooide schaduwtesten. Klik 'maak een schaduwtest'. Voer een naam in voor de test en kies Volgende.

Hiermee gaat u naar de instellingenpagina voor de schaduwtest. U kunt een bestaande IAM-rol kiezen of er een maken met de AmazonSageMakerFullAccess IAM-beleid bijgevoegd. Kies vervolgens 'Maak een nieuw eindpunt' en voer een naam in (xgb-prod-shadow-1). U kunt één productie- en één schaduwvariant toevoegen die aan dit eindpunt is gekoppeld door te klikken op 'Toevoegen' in de sectie Varianten. U kunt de modellen die u heeft gemaakt selecteren in de 'Model toevoegen' dialoog venster. Hierdoor ontstaat een productie of variant. Optioneel kunt u het instantietype en het aantal van elke variant wijzigen.

Al het verkeer gaat naar de productievariant en deze reageert op aanroepverzoeken. U kunt een deel van de verzoeken die naar de schaduwvariant worden doorgestuurd, beheren door de Traffic Sampling Percentage.

U kunt de duur van de test regelen van een uur tot 30 dagen. Indien niet gespecificeerd, is dit standaard 7 dagen. Na deze periode wordt de test als voltooid gemarkeerd. Als u een test uitvoert op een bestaand eindpunt, wordt dit na voltooiing teruggezet naar de status van vóór het starten van de test.

U kunt optioneel de verzoeken en antwoorden van de Shadow-variant vastleggen met behulp van de Gegevensopname opties. Indien niet gespecificeerd, worden de antwoorden van de schaduwvariant weggegooid.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Stap 2 – Bewaak een schaduwtest

U kunt de lijst met schaduwtesten bekijken door naar het Shadow Tests sectie onder Inferentie. Klik op de schaduwtest die in de vorige stap is gemaakt om de details van een schaduwtest te bekijken en te controleren terwijl deze aan de gang is of nadat deze is voltooid.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het gedeelte Metrics biedt een vergelijking van de belangrijkste statistieken en biedt overlappende grafieken tussen de productie- en schaduwvarianten, samen met beschrijvende statistieken. U kunt aanroepstatistieken vergelijken, zoals ModelLatency en Invocation4xxErrors evenals instantiestatistieken zoals CPUUtilization en DiskUtilization.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Stap 3 – Promoot de Shadow-variant naar de nieuwe productievariant

Bij het vergelijken kunt u ervoor kiezen om de schaduwvariant te promoveren tot de nieuwe productievariant of de schaduwvariant te verwijderen. Selecteer voor beide opties 'Markeer voltooid' bovenaan de pagina. Dit biedt u een optie om de schaduwvariant te promoten of te verwijderen.

Als u ervoor kiest om te promoveren, wordt u naar een implementatiepagina geleid, waar u de variantinstellingen kunt bevestigen voorafgaand aan de implementatie. Voorafgaand aan de implementatie raden we aan om de grootte van uw schaduwvarianten te bepalen om 100% van het oproepverkeer te kunnen verwerken. Als u geen schaduwtesten gebruikt om alternatieve instantietypen of -grootten te evalueren, kunt u de optie 'instellingen voor productievarianten behouden. Anders kunt u ervoor kiezen om 'instellingen voor schaduwvarianten behouden. Als u deze optie kiest, zorg er dan voor dat uw verkeerssteekproef is ingesteld op 100%. U kunt ook het instantietype en aantal specificeren als u deze instellingen wilt overschrijven.

Zodra u de implementatie hebt bevestigd, start SageMaker een update van uw eindpunt om de schaduwvariant te promoveren naar de nieuwe productievariant. Net als bij alle updates van SageMaker, blijft uw eindpunt operationeel tijdens de update.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Scenario 2: Schaduwtesten met SageMaker-inferentie-API's

In dit gedeelte wordt beschreven hoe u de bestaande API's voor het maken/bijwerken/verwijderen van eindpunten van SageMaker kunt gebruiken om schaduwvarianten te implementeren.

Voor dit voorbeeld hebben we twee XGBoost-modellen die twee verschillende versies vertegenwoordigen van de modellen die vooraf zijn getraind. model.tar.gz is het model dat momenteel in productie wordt genomen. model2 is het nieuwere model en we willen de prestaties ervan testen in termen van operationele statistieken, zoals latentie, voordat we besluiten het in productie te gebruiken. Wij zetten in model2 als schaduwvariant van model.tar.gz. Beide vooraf getrainde modellen worden opgeslagen in de openbare S3-bucket s3://sagemaker-sample-files. We downloaden eerst het model van onze lokale rekeninstantie en uploaden het vervolgens naar S3.

De modellen in dit voorbeeld worden gebruikt om de kans te voorspellen dat een mobiele klant zijn huidige mobiele provider verlaat. De dataset die we gebruiken is openbaar beschikbaar en werd vermeld in het boek Kennis ontdekken in data door Daniel T. Larose. Deze modellen zijn getraind met behulp van de XGB-notitieblok voor verloopvoorspelling in SalieMaker. U kunt ook uw eigen vooraf getrainde modellen gebruiken, in dat geval kunt u het downloaden van overslaan s3://sagemaker-sample-files en kopieer uw eigen modellen rechtstreeks naar model/map.

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

Stap 1 – Maak modellen

We uploaden de modelbestanden naar onze eigen S3-bucket en maken twee SageMaker-modellen. Zie de volgende code:

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

Stap 2 – Implementeer de twee modellen als productie- en schaduwvarianten naar een real-time inferentie-eindpunt

We maken een eindpuntconfiguratie met de productie- en schaduwvarianten. De ProductionVariants en ShadowProductionVariants zijn van bijzonder belang. Beide varianten hebben ml.m5.xlarge-instanties met 4 vCPU's en 16 GiB geheugen, en het aanvankelijke aantal exemplaren is ingesteld op 1. Zie de volgende code:

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

Als laatste creëren we de productie- en schaduwvariant:

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

Stap 3 – Roep het eindpunt aan om te testen

Nadat het eindpunt met succes is gemaakt, kunt u het aanroepen. We sturen ongeveer 3,000 verzoeken achtereenvolgens:

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)

Stap 4 – Statistieken vergelijken

Nu we zowel het productie- als het schaduwmodel hebben geïmplementeerd, gaan we de aanroepstatistieken vergelijken. Raadpleeg voor een lijst met aanroepstatistieken die beschikbaar zijn voor vergelijking Bewaak Amazon SageMaker met Amazon CloudWatch. Laten we beginnen met het vergelijken van aanroepingen tussen de productie- en schaduwvarianten.

De InvocationsPerInstance metric verwijst naar het aantal aanroepen dat naar de productievariant is verzonden. Een fractie van deze aanroepingen, gespecificeerd in het variantgewicht, wordt naar de schaduwvariant gestuurd. De aanroep per instantie wordt berekend door het totale aantal aanroepen te delen door het aantal instanties in een variant. Zoals te zien is in de volgende grafieken, kunnen we bevestigen dat zowel de productie- als de schaduwvarianten aanroepverzoeken ontvangen volgens de gewichten die zijn opgegeven in de eindpuntconfiguratie.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Laten we vervolgens de latentie van het model vergelijken (ModelLatency metrisch) tussen de productie- en schaduwvarianten. Modellatentie is de tijd die een model nodig heeft om te reageren, gezien vanuit SageMaker. We kunnen zien hoe de modellatentie van de schaduwvariant zich verhoudt tot de productievariant zonder eindgebruikers bloot te stellen aan de schaduwvariant.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

We verwachten de overheadlatentie (OverheadLatency metrisch) om vergelijkbaar te zijn tussen productie- en schaduwvarianten. Overheadlatentie is het interval dat wordt gemeten vanaf het moment dat SageMaker het verzoek ontvangt totdat het een reactie naar de client retourneert, minus de modellatentie.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Stap 5- Promoot uw schaduwvariant

Om het schaduwmodel naar productie te promoveren, maakt u een nieuwe eindpuntconfiguratie met current ShadowProductionVariant als de nieuwe ProductionVariant en verwijder het ShadowProductionVariant. Hierdoor wordt de stroom verwijderd ProductionVariant en promoot de schaduwvariant om de nieuwe productievariant te worden. Zoals altijd worden alle SageMaker-updates georkestreerd als blauw/groene implementaties onder de motorkap en is er geen verlies van beschikbaarheid tijdens het uitvoeren van de update.

Optioneel kunt u een hefboomwerking gebruiken Inzet vangrails als u verkeersverschuiving en automatische rollbacks in één keer wilt gebruiken tijdens uw update.

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)

Stap 6 - Opruimen

Als u niet van plan bent dit eindpunt verder te gebruiken, moet u het eindpunt verwijderen om te voorkomen dat er extra kosten in rekening worden gebracht en om andere bronnen die in deze blog zijn gemaakt, op te schonen.

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)

Conclusie

In dit bericht hebben we een nieuwe mogelijkheid van SageMaker-inferentie geïntroduceerd om de prestaties van een nieuwe versie van een modelservingstack te vergelijken met de momenteel geïmplementeerde versie voorafgaand aan een volledige productie-uitrol met behulp van een implementatieveiligheidspraktijk die bekend staat als schaduwtesten. We hebben u door de voordelen van het gebruik van schaduwvarianten en methoden geleid om de varianten te configureren met een end-to-end voorbeeld. Raadpleeg schaduwtesten voor meer informatie over schaduwvarianten documentatie.


Over de auteurs

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Raghu Ramesha is een Machine Learning Solutions Architect bij het Amazon SageMaker Service-team. Hij richt zich op het helpen van klanten bij het op grote schaal bouwen, implementeren en migreren van ML-productieworkloads naar SageMaker. Hij is gespecialiseerd in machine learning, AI en computervisie, en heeft een masterdiploma in Computer Science van UT Dallas. In zijn vrije tijd houdt hij van reizen en fotografie.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Qingwei Li is Machine Learning Specialist bij Amazon Web Services. Hij behaalde zijn Ph.D. in Operations Research nadat hij de onderzoeksbeursrekening van zijn adviseur had verbroken en de beloofde Nobelprijs niet kon leveren. Momenteel helpt hij klanten in de financiële dienstverlening en de verzekeringssector bij het bouwen van machine learning-oplossingen op AWS. In zijn vrije tijd houdt hij van lezen en lesgeven.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Qiyun Zhao is een Senior Software Development Engineer bij het Amazon SageMaker Inference Platform-team. Hij is de hoofdontwikkelaar van de Deployment Guardrails en Shadow Deployments, en hij richt zich op het helpen van klanten bij het beheren van ML-workloads en -implementaties op schaal met hoge beschikbaarheid. Hij werkt ook aan platformarchitectuurevoluties voor een snelle en veilige implementatie van ML-taken en het gemakkelijk uitvoeren van online ML-experimenten. In zijn vrije tijd houdt hij van lezen, gamen en reizen.

Minimaliseer de productie-impact van ML-modelupdates met Amazon SageMaker-schaduwtests PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Tarun Sairam is Senior Product Manager voor Amazon SageMaker Inference. Hij is geïnteresseerd in het leren van de nieuwste trends op het gebied van machine learning en het helpen van klanten om deze te benutten. In zijn vrije tijd houdt hij van fietsen, skiën en tennissen.

Tijdstempel:

Meer van AWS-machine learning