Modelhostingpatronen in SageMaker: best practices bij het testen en bijwerken van modellen op SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Modelhostingpatronen in SageMaker: best practices voor het testen en bijwerken van modellen op SageMaker

Amazon Sage Maker is een volledig beheerde service die ontwikkelaars en datawetenschappers de mogelijkheid biedt om snel machine learning (ML)-modellen te bouwen, trainen en implementeren. Met SageMaker kunt u uw ML-modellen implementeren op gehoste eindpunten en inferentieresultaten in realtime krijgen. U kunt eenvoudig de prestatiestatistieken voor uw eindpunten bekijken in Amazon Cloud Watch, eindpunten automatisch schalen op basis van verkeer en update uw modellen in productie zonder enige beschikbaarheid te verliezen. SageMaker biedt een breed scala aan opties om ML-modellen voor inferentie op een van de volgende manieren in te zetten, afhankelijk van uw gebruiksscenario:

  • Gebruik SageMaker voor synchrone voorspellingen die in de orde van milliseconden moeten worden weergegeven real-time gevolgtrekking
  • Gebruik voor workloads met periodes van inactiviteit tussen verkeersspurts en die koude starts kunnen verdragen Serverloze inferentie
  • Gebruik SageMaker voor verzoeken met grote payloads tot 1 GB, lange verwerkingstijden (tot 15 minuten) en near-real-time latentievereisten (seconden tot minuten). Asynchrone gevolgtrekking
  • Gebruik SageMaker om voorspellingen te krijgen voor een volledige dataset batch-transformatie

Realtime inferentie is ideaal voor inferentieworkloads waarbij u realtime, interactieve vereisten met lage latentie hebt. U implementeert uw model bij SageMaker-hostingservices en krijgt een eindpunt dat kan worden gebruikt voor gevolgtrekkingen. Deze endpoints worden ondersteund door een volledig beheerde infrastructuur en ondersteuning automatisch schalen. U kunt de efficiรซntie en kosten verbeteren door meerdere modellen te combineren tot รฉรฉn eindpunt met behulp van eindpunten met meerdere modellen or eindpunten met meerdere containers.

Er zijn bepaalde use-cases waarbij u meerdere varianten van hetzelfde model in productie wilt nemen om hun prestaties te meten, verbeteringen te meten of A/B-tests uit te voeren. In dergelijke gevallen zijn SageMaker-eindpunten met meerdere varianten nuttig omdat u hiermee meerdere productievarianten van een model op hetzelfde SageMaker-eindpunt kunt implementeren.

In dit bericht bespreken we de multivariante eindpunten van SageMaker en best practices voor optimalisatie.

Vergelijking van real-time inferentie-opties van SageMaker

Het volgende diagram geeft een snel overzicht van de real-time inferentie-opties met SageMaker.

Met een eindpunt met รฉรฉn model kunt u รฉรฉn model implementeren op een container die wordt gehost op speciale instanties of serverloos voor lage latentie en hoge doorvoer. U kunt een model maken en terugvinden a Door SageMaker ondersteunde afbeelding voor populaire frameworks zoals TensorFlow, PyTorch, Scikit-learn en meer. Als u met een aangepast raamwerk voor uw model werkt, kan dat ook neem je eigen bakje mee die uw afhankelijkheden installeert.

SageMaker ondersteunt ook meer geavanceerde opties zoals multi-model endpoints (MME's) en multi-container endpoints (MCE's). MME's zijn handig wanneer u te maken heeft met honderden tot tienduizenden modellen en waarbij u niet elk model als afzonderlijk eindpunt hoeft te implementeren. Met MME's kunt u op een kosteneffectieve, schaalbare manier meerdere modellen hosten binnen hetzelfde endpoint door gebruik te maken van een shared serving container die op een instance wordt gehost. De onderliggende infrastructuur (container en instantie) blijft hetzelfde, maar de modellen worden dynamisch geladen en ontladen vanaf een gemeenschappelijke S3-locatie, afhankelijk van het gebruik en de hoeveelheid geheugen die beschikbaar is op het eindpunt. Uw toepassing hoeft alleen maar een API-aanroep met het doelmodel naar dit eindpunt op te nemen om inferentie met lage latentie en hoge doorvoer te bereiken. In plaats van te betalen voor een apart eindpunt voor elk afzonderlijk model, kunt u vele modellen hosten voor de prijs van รฉรฉn enkel eindpunt.

Met MCE's kunt u maximaal 15 verschillende ML-containers op รฉรฉn eindpunt uitvoeren en deze onafhankelijk aanroepen. U kunt deze ML-containers bouwen op verschillende serveerstacks (zoals ML-framework, modelserver en algoritme), om op hetzelfde eindpunt te worden uitgevoerd om kosten te besparen. U kunt de containers aan elkaar naaien in een seriรซle inferentiepijplijn of de container onafhankelijk aanroepen. Dit kan ideaal zijn wanneer u verschillende ML-modellen heeft met verschillende verkeerspatronen en vergelijkbare resourcebehoeften. Voorbeelden van het gebruik van MCE's omvatten, maar zijn niet beperkt tot, het volgende:

  • Hostingmodellen in verschillende frameworks (zoals TensorFlow, PyTorch en Scikit-learn) die niet voldoende verkeer hebben om de volledige capaciteit van een instantie te verzadigen
  • Modellen hosten uit hetzelfde framework met verschillende ML-algoritmen (zoals aanbevelingen, prognoses of classificatie) en handlerfuncties
  • Vergelijkingen van vergelijkbare architecturen die draaien op verschillende framework-versies (zoals TensorFlow 1.x vs. TensorFlow 2.x) voor scenario's zoals A/B-testen

Met SageMaker multi-variant endpoints (MVE's) kunt u meerdere modellen of modelversies achter hetzelfde endpoint testen met behulp van productievarianten. Elke productievariant identificeert een ML-model en de resources die zijn ingezet voor het hosten van het model, zoals de dienende container en instantie.

Overzicht van SageMaker-eindpunten met meerdere varianten

In productie-ML-workflows verfijnen datawetenschappers en ML-engineers modellen via verschillende methoden, zoals omscholing op basis van data/model/concept-drift, afstemming van hyperparameters, functieselectie, raamwerkselectie en meer. Het uitvoeren van A/B-testen tussen een nieuw model en een oud model met productieverkeer kan een effectieve laatste stap zijn in het validatieproces voor een nieuw model. Bij A/B-testen test je verschillende varianten van je modellen en vergelijk je hoe elke variant ten opzichte van elkaar presteert. Vervolgens kies je het best presterende model om het vorige model te vervangen door een nieuwe versie die betere prestaties levert dan de vorige versie. Door productievarianten te gebruiken, kunt u deze ML-modellen en verschillende modelversies achter hetzelfde eindpunt testen. U kunt deze ML-modellen trainen met verschillende datasets, verschillende algoritmen en ML-frameworks; implementeer ze op verschillende instantietypen; of een combinatie van deze opties. De load balancer die is verbonden met het SageMaker-eindpunt biedt de mogelijkheid om de aanroepverzoeken te verdelen over meerdere productievarianten. U kunt bijvoorbeeld verkeer tussen productievarianten verdelen door de verkeersverdeling voor elke variant op te geven, of u kunt voor elk verzoek rechtstreeks een specifieke variant aanroepen.

U kunt ook het beleid voor automatisch schalen configureren om uw varianten automatisch in of uit te schalen op basis van statistieken zoals verzoeken per seconde.

Het volgende diagram illustreert hoe MVE in meer detail werkt.

SageMaker multivariant eindpunt

Het implementeren van een MVE is ook heel eenvoudig. Het enige dat u hoeft te doen, is modelobjecten definiรซren met de afbeelding en modelgegevens met behulp van de create_model construct van de SageMaker Python SDK en definieer de eindpuntconfiguraties met behulp van production_variant constructies om productievarianten te maken, elk met zijn eigen verschillende model- en resourcevereisten (exemplaartype en aantallen). Hierdoor kunt u ook modellen op verschillende instantietypen testen. Gebruik de endpoint_from_production_variant construct om het eindpunt te maken.

Tijdens het maken van het eindpunt richt SageMaker de hostinginstantie in die is opgegeven in de eindpuntinstellingen en downloadt het model en de inferentiecontainer gespecificeerd door de productievariant naar de hostinginstantie. Als er een succesvol antwoord wordt geretourneerd na het starten van de container en het uitvoeren van een statuscontrole met een ping, wordt er een bericht naar de gebruiker verzonden dat aangeeft dat het maken van het eindpunt is voltooid. Zie de volgende code:

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

In het voorgaande voorbeeld hebben we twee varianten gemaakt, elk met een eigen model (deze kunnen ook verschillende instantietypen en aantallen hebben). We zetten een initial_weight van 1 voor beide varianten: dit betekent dat 50% van onze verzoeken naar Variant1, en de resterende 50% aan Variant2. De som van de gewichten voor beide varianten is 2 en elke variant heeft een gewichtstoewijzing van 1. Dit betekent dat elke variant 50% van het totale verkeer ontvangt.

Het aanroepen van het eindpunt is vergelijkbaar met de gebruikelijke SageMaker-constructie invoke_endpoint; u kunt het eindpunt rechtstreeks aanroepen met de gegevens als payload:

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

SageMaker zendt statistieken uit zoals Latency en Invocations voor elke variant in CloudWatch. Zie voor een volledige lijst met statistieken die SageMaker uitzendt Bewaak Amazon SageMaker met Amazon CloudWatch. U kunt CloudWatch opvragen om het aantal aanroepen per variant te krijgen, om te zien hoe aanroepen standaard over varianten worden verdeeld.

Om een โ€‹โ€‹specifieke versie van het model aan te roepen, geeft u een variant op als de TargetVariant in de oproep naar invoke_endpoint:

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

U kunt de prestaties van elke productievariant evalueren door statistieken zoals nauwkeurigheid, precisie, terugroeping, F1-score en bedieningskarakteristiek/gebied onder de curve van de ontvanger voor elke variant te bekijken met behulp van Amazon SageMaker-modelmonitor. U kunt vervolgens besluiten om het verkeer naar het beste model te verhogen door de gewichten bij te werken die aan elke variant zijn toegewezen door te bellen UpdateEndpointWeightsAndCapacities. Dit verandert de verkeersdistributie naar uw productievarianten zonder dat er updates voor uw eindpunt nodig zijn. Dus in plaats van 50% van het verkeer van de initiรซle setup, verplaatsen we 75% van het verkeer naar Variant2 door aan elke variant nieuwe gewichten toe te kennen met behulp van UpdateEndpointWeightsAndCapacities. Zie de volgende code:

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

Als u tevreden bent met de prestaties van een variant, kunt u 100% van het verkeer naar die variant leiden. U kunt bijvoorbeeld het gewicht instellen voor Variant1 tot 0 en het gewicht voor Variant2 naar 1. SageMaker stuurt vervolgens 100% van alle gevolgtrekkingsverzoeken naar Variant2. U kunt uw eindpunt vervolgens veilig bijwerken en verwijderen Variant1 vanaf uw eindpunt. U kunt ook doorgaan met het testen van nieuwe modellen in productie door nieuwe varianten aan uw eindpunt toe te voegen. U kunt deze eindpunten ook zo configureren dat ze automatisch worden geschaald op basis van het verkeer dat de eindpunten ontvangen.

Voordelen van eindpunten met meerdere varianten

Met SageMaker MVE's kunt u het volgende doen:

  • Implementeer en test meerdere varianten van een model met hetzelfde SageMaker-eindpunt. Dit is handig voor het testen van varianten van een model in productie. Stel dat u een model in productie hebt geรฏmplementeerd. U kunt een variant van het model testen door een kleine hoeveelheid verkeer, bijvoorbeeld 5%, naar het nieuwe model te leiden.
  • Evalueer de modelprestaties in productie zonder het verkeer te onderbreken door de operationele statistieken voor elke variant in CloudWatch te bewaken.
  • Werk modellen in productie bij zonder beschikbaarheid te verliezen. U kunt een eindpunt wijzigen zonder modellen die al in productie zijn genomen buiten gebruik te stellen. U kunt bijvoorbeeld nieuwe modelvarianten toevoegen, de ML-rekeninstantieconfiguraties van bestaande modelvarianten bijwerken of de verdeling van verkeer over modelvarianten wijzigen. Voor meer informatie, zie Eindpunt bijwerken en UpdateEndpointWeightsAndCapacities.

Uitdagingen bij het gebruik van eindpunten met meerdere varianten

SageMaker MVE's komen met de volgende uitdagingen:

  • Laad testinspanning โ€“ U moet voor elke variant behoorlijk wat moeite en middelen besteden aan testen en modelmatrixvergelijkingen. Om een โ€‹โ€‹A/B-test als succesvol te beschouwen, moet u een statistische analyse uitvoeren van de statistieken die uit de test zijn verzameld om te bepalen of er een statistisch significant resultaat is. Het kan een uitdaging worden om het verkennen van slecht presterende varianten tot een minimum te beperken. Je zou eventueel kunnen gebruiken de meerarmige bandiet optimalisatietechniek om te voorkomen dat verkeer naar experimenten wordt gestuurd die niet werken en om de prestaties tijdens het testen te optimaliseren. Voor belastingstests kunt u ook verkennen Amazon SageMaker Inferentie-aanbeveler om uitgebreide benchmarks uit te voeren op basis van productievereisten voor latentie en doorvoer, aangepaste verkeerspatronen en instanties (maximaal 10) die u selecteert.
  • Strakke koppeling tussen modelvariant en eindpunt โ€“ Het kan lastig worden, afhankelijk van de implementatiefrequentie van het model, omdat het eindpunt kan eindigen in updating status voor elke productievariant die wordt bijgewerkt. SageMaker ondersteunt ook inzet vangrails, waarmee u eenvoudig en gecontroleerd kunt overstappen van het huidige model in productie naar een nieuw model. Deze optie introduceert kanarie en lineair verkeersverschuivingsmodi, zodat u gedetailleerde controle heeft over de verschuiving van verkeer van uw huidige model naar het nieuwe tijdens de update. Met ingebouwde beveiligingen, zoals automatische rollbacks, kunt u problemen vroegtijdig opsporen en automatisch corrigerende maatregelen nemen voordat ze een aanzienlijke impact op de productie hebben.

Best practices voor eindpunten met meerdere varianten

Houd bij het hosten van modellen met SageMaker MVE's rekening met het volgende:

  • SageMaker is geweldig voor het testen van nieuwe modellen omdat u ze eenvoudig kunt implementeren in een A/B-testomgeving en u alleen betaalt voor wat u gebruikt. U betaalt per verbruikte instantie-uur voor elke instantie terwijl het eindpunt actief is. Wanneer u klaar bent met uw tests en het eindpunt of de varianten niet meer uitgebreid gebruikt, moet u het verwijderen om kosten te besparen. Je kunt het altijd opnieuw maken wanneer je het weer nodig hebt, omdat het model is opgeslagen in Amazon eenvoudige opslagservice (Amazone S3).
  • U moet het meest optimale exemplaartype en de meest optimale grootte gebruiken om modellen te implementeren. SageMaker biedt momenteel ML-rekeninstanties op verschillende instantiefamilies. Een eindpuntinstantie is de hele tijd actief (terwijl de instantie in gebruik is). Daarom kan het selecteren van het juiste type instantie een aanzienlijke impact hebben op de totale kosten en prestaties van ML-modellen. Load testen is de best practice om het juiste instantietype en de grootte van het wagenpark te bepalen, met of zonder automatisch schalen voor uw live eindpunt om overprovisioning te voorkomen en extra te betalen voor capaciteit die u niet nodig hebt.
  • U kunt de modelprestaties en het gebruik van resources in CloudWatch bewaken. U kunt een configureren ProductionVariant gebruiken Automatische schaling van toepassing. Om de statistieken en doelwaarden voor een schaalbeleid op te geven, configureert u een schaalbeleid voor het bijhouden van doelen. U kunt een vooraf gedefinieerde metriek of een aangepaste metriek gebruiken. Zie voor meer informatie over de syntaxis van beleidsconfiguratie TargetTrackingScalingPolicyConfiguration. Zie voor informatie over het configureren van automatisch schalen Schaal Amazon SageMaker-modellen automatisch. Om snel een schaalbeleid voor het volgen van doelen voor een variant te definiรซren, kunt u een specifieke CloudWatch-statistiek kiezen en drempelwaarden instellen. Gebruik bijvoorbeeld metrische gegevens SageMakerVariantInvocationsPerInstance om het gemiddelde aantal keren per minuut te controleren dat elke instantie voor een variant wordt aangeroepen, of gebruik statistiek CPUUtilization om de som van het werk dat door een CPU wordt afgehandeld te controleren. In het volgende voorbeeld wordt de SageMakerVariantInvocationsPerInstance vooraf gedefinieerde statistiek om het aantal variantinstanties aan te passen, zodat elke instantie een InvocationsPerInstance metriek van 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Het wijzigen of verwijderen van modelartefacten of het wijzigen van inferentiecode na het implementeren van een model levert onvoorspelbare resultaten op. Voordat u modellen implementeert voor productie, is het een goede gewoonte om te controleren of het hosten van het model in lokale modus succesvol is na voldoende debuggen van de inferentiecodefragmenten (zoals model_fn, input_fn, predict_fn en output_fn) in de lokale ontwikkelomgeving zoals een SageMaker-notebookinstantie of lokale server. Als u modelartefacten of deductiecode moet wijzigen of verwijderen, past u het eindpunt aan door een nieuwe eindpuntconfiguratie op te geven. Nadat u de nieuwe eindpuntconfiguratie hebt opgegeven, kunt u de modelartefacten wijzigen of verwijderen die overeenkomen met de oude eindpuntconfiguratie.
  • U kunt SageMaker gebruiken batch-transformatie om productievarianten te testen. Batchtransformatie is ideaal om conclusies te trekken uit grote datasets. U kunt voor elke nieuwe modelvariant een afzonderlijke transformatietaak maken en een validatiegegevensset gebruiken om te testen. Geef voor elke transformatietaak een unieke modelnaam en locatie op in Amazon S3 voor het uitvoerbestand. Gebruik om de resultaten te analyseren logboeken en statistieken van deductiepijplijn.

Conclusie

Met SageMaker kunt u eenvoudig ML-modellen in productie A/B testen door meerdere productievarianten op een eindpunt uit te voeren. U kunt de mogelijkheden van SageMaker gebruiken om modellen te testen die zijn getraind met behulp van verschillende trainingsdatasets, hyperparameters, algoritmen of ML-frameworks; hoe ze presteren op verschillende instantietypen; of een combinatie van al het bovenstaande. U kunt de verkeersverdeling tussen de varianten op een eindpunt opgeven en SageMaker splitst het afgeleide verkeer naar de varianten op basis van de opgegeven verdeling. Als u modellen voor specifieke klantsegmenten wilt testen, kunt u ook de variant specificeren die een deductieverzoek moet verwerken door de TargetVariant header en SageMaker stuurt het verzoek door naar de variant die u hebt opgegeven. Zie voor meer informatie over A/B-testen Werk modellen in productie veilig bij.

Referenties


Over de auteurs

Modelhostingpatronen in SageMaker: best practices bij het testen en bijwerken van modellen op SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Deepali Rajale is AI/ML Specialist Technical Account Manager bij Amazon Web Services. Ze werkt samen met zakelijke klanten en biedt technische begeleiding bij het implementeren van machine learning-oplossingen met best practices. In haar vrije tijd houdt ze van wandelen, films kijken en uitgaan met familie en vrienden.

Modelhostingpatronen in SageMaker: best practices bij het testen en bijwerken van modellen op SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dhawal Patel is een Principal Machine Learning Architect bij AWS. Hij heeft gewerkt met organisaties variรซrend van grote ondernemingen tot middelgrote startups aan problemen met betrekking tot gedistribueerde computing en kunstmatige intelligentie. Hij richt zich op Deep learning inclusief NLP en Computer Vision domeinen. Hij helpt klanten bij het bereiken van high-performance modelinferentie op SageMaker.

Modelhostingpatronen in SageMaker: best practices bij het testen en bijwerken van modellen op SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. Saurabh Trikande is Senior Product Manager voor Amazon SageMaker Inference. Hij heeft een passie voor het werken met klanten en wordt gemotiveerd door het doel om machine learning te democratiseren. Hij richt zich op kernuitdagingen met betrekking tot het inzetten van complexe ML-applicaties, multi-tenant ML-modellen, kostenoptimalisaties en het toegankelijker maken van de inzet van deep learning-modellen. In zijn vrije tijd houdt Saurabh van wandelen, leren over innovatieve technologieรซn, TechCrunch volgen en tijd doorbrengen met zijn gezin.

Tijdstempel:

Meer van AWS-machine learning