Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferensendepunkter

Mange af vores AWS-kunder leverer research, analyser og business intelligence som en service. Denne type research og business intelligence gør det muligt for deres slutkunder at være på forkant med markeder og konkurrenter, identificere vækstmuligheder og løse problemer proaktivt. For eksempel laver nogle af vores kunder i den finansielle sektor forskning for aktier, hedgefonde og investeringsforvaltningsselskaber for at hjælpe dem med at forstå tendenser og identificere porteføljestrategier. I sundhedsindustrien er en stadig større del af sundhedsforskningen nu informationsbaseret. En stor del af forskningen omfatter analyse af data, der oprindeligt blev indsamlet til diagnostik, behandling eller andre forskningsprojekter, og som nu bliver brugt til nye forskningsformål. Disse former for sundhedsforskning har ført til effektiv primær forebyggelse for at undgå nye tilfælde, sekundær forebyggelse til tidlig opdagelse og forebyggelse for bedre sygdomshåndtering. Forskningsresultaterne forbedrer ikke kun livskvaliteten, men hjælper også med at reducere sundhedsudgifterne.

Kunder har en tendens til at fordøje informationen fra offentlige og private kilder. De anvender derefter etablerede eller brugerdefinerede NLP-modeller (natural language processing) for at opsummere og identificere en tendens og generere indsigt baseret på denne information. NLP-modellerne, der bruges til disse typer af forskningsopgaver, omhandler store modeller og involverer normalt lange artikler, der skal opsummeres i betragtning af korpusets størrelse – og dedikerede endepunkter, som ikke er omkostningsoptimerede i øjeblikket. Disse applikationer modtager en byge af indgående trafik på forskellige tidspunkter af dagen.

Vi mener, at kunderne vil have stor gavn af evnen til at skalere ned til nul og øge deres slutningsevne efter behov. Dette optimerer forskningsomkostningerne og går stadig ikke på kompromis med kvaliteten af ​​slutninger. Dette indlæg diskuterer, hvordan Hugging Face sammen med Amazon SageMaker asynkron inferens kan hjælpe med at opnå dette.

Du kan bygge tekstresumémodeller med flere dybdelæringsrammer som TensorFlow, PyTorch og Apache MXNet. Disse modeller har typisk en stor inputlast af flere tekstdokumenter af varierende størrelse. Avancerede deep learning-modeller kræver computerintensiv forbehandling før modelslutning. Behandlingstiden kan være så lang som et par minutter, hvilket fjerner muligheden for at køre realtidsslutning ved at sende nyttelaster over en HTTP API. I stedet skal du behandle input-nyttelast asynkront fra et objektlager som f.eks Amazon Simple Storage Service (Amazon S3) med automatisk kø og en foruddefineret samtidighedstærskel. Systemet skal kunne modtage statusmeddelelser og reducere unødvendige omkostninger ved at rydde op i ressourcer, når opgaverne er afsluttet.

SageMaker hjælper datavidenskabsfolk og udviklere med at forberede, bygge, træne og implementere højkvalitets maskinlæringsmodeller (ML) hurtigt ved at samle et bredt sæt af funktioner, der er specialbygget til ML. SageMaker leverer de mest avancerede open source-modelserveringscontainere til XGBoost (container, SDK), Scikit-Learn (container, SDK), PyTorch (container, SDK), TensorFlow (container, SDK), og Apache MXNet (container, SDK).

SageMaker giver fire muligheder for at implementere trænede ML-modeller til at generere slutninger om nye data.
  1. Realtidsslutning endepunkter er velegnede til arbejdsbelastninger, der skal behandles med lave latenskrav i størrelsesordenen ms til sekunder.
  2. Batch transformation er ideel til offline forudsigelser på store partier af data.
  3. Amazon SageMaker Serverless Inference (i preview-tilstand og anbefales ikke til produktionsarbejdsbelastninger, da dette skrives) er en specialbygget inferensindstilling, der gør det nemt for dig at implementere og skalere ML-modeller. Serverløs inferens er ideel til arbejdsbelastninger, der har inaktive perioder mellem trafikken og kan tolerere koldstart.
  4. Asynkron inferens endepunkter sætter indgående anmodninger i kø. De er ideelle til arbejdsbelastninger, hvor anmodningsstørrelserne er store (op til 1 GB), og behandlingstiden for slutninger er i størrelsesordenen minutter (op til 15 minutter). Asynkron inferens giver dig mulighed for at spare på omkostningerne ved automatisk at skalere instanstællingen til nul, når der ikke er nogen anmodninger at behandle.

Løsningsoversigt

I dette indlæg implementerer vi en PEGASUS model der var på forhånd trænet til at lave tekstresumé fra Knusende ansigt til SageMaker hostingtjenester. Vi bruger modellen som den er fra Hugging Face for enkelhedens skyld. Det kan du dog finjustere modellen baseret på et brugerdefineret datasæt. Du kan også prøve andre modeller tilgængelige i Hugging Face Model Hub. Vi leverer også et asynkront slutpunkt, der er vært for denne model, hvorfra du kan få forudsigelser.

Det asynkrone inferensendepunkts inferenshandler forventer en artikel som inputnyttelast. Artiklens opsummerede tekst er outputtet. Outputtet gemmes i databasen for at analysere tendenserne eller føres nedstrøms til yderligere analyser. Denne downstream-analyse udleder dataindsigt, der hjælper med forskningen.

Vi demonstrerer, hvordan asynkrone inferensendepunkter gør det muligt for dig at have brugerdefinerede samtidigheds- og afslutningsmeddelelser. Vi konfigurerer automatisk skalering af forekomster bag endepunktet til at skalere ned til nul, når trafikken aftager, og skalere op igen, når anmodningskøen fyldes op.

Vi bruger også amazoncloudwatch målinger til at overvåge køstørrelsen, den samlede behandlingstid og behandlede påkaldelser.

I det følgende diagram viser vi de involverede trin, mens vi udfører inferens ved hjælp af et asynkront inferensslutpunkt.

Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

  1. Vores fortrænede PEGASUS ML-modellen hostes først på skaleringsendepunktet.
  2. Brugeren uploader artiklen for at blive opsummeret til en input S3-bøtte.
  3. Det asynkrone inferensslutpunkt påkaldes ved hjælp af en API.
  4. Når slutningen er fuldført, gemmes resultatet i output S3-bøtten.
  5. An Amazon Simple Notification Service (Amazon SNS) meddelelse sendes til brugeren med besked om den afsluttede succes eller fiasko.

Opret et asynkront inferensslutpunkt

Vi opretter det asynkrone inferensslutpunkt svarende til et realtidshostet slutpunkt. Trinene omfatter oprettelse af en SageMaker-model, efterfulgt af konfiguration af slutpunktet og implementering af slutpunktet. Forskellen mellem de to typer endepunkter er, at den asynkrone inferens endepunktskonfiguration indeholder en AsyncInferenceConfig afsnit. Her specificerer vi S3-outputstien for resultaterne fra slutpunktsindkaldelsen og inkluderer eventuelt SNS-emner for meddelelser om succes og fiasko. Vi angiver også det maksimale antal samtidige påkald pr. instans som bestemt af kunden. Se følgende kode:

AsyncInferenceConfig={ "OutputConfig": { "S3OutputPath": f"s3://{bucket}/{bucket_prefix}/output", # Optionally specify Amazon SNS topics for notifications "NotificationConfig": { "SuccessTopic": success_topic, "ErrorTopic": error_topic, } }, "ClientConfig": { "MaxConcurrentInvocationsPerInstance": 2 #increase this value up to throughput peak for ideal performance } }

For detaljer om API'et til at oprette en slutpunktskonfiguration til asynkron inferens, se Opret et asynkront inferensendepunkt.

Kald det asynkrone inferensslutpunkt

Følgende skærmbillede viser en kort artikel, som vi bruger som vores input-nyttelast:
Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Følgende kode uploader artiklen som en input.json fil til Amazon S3:

sm_session.upload_data( input_location, bucket=sm_session.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "text/plain"})

Vi bruger Amazon S3 URI til input-nyttelastfilen for at påkalde slutpunktet. Responsobjektet indeholder outputplaceringen i Amazon S3 for at hente resultaterne efter afslutning:

response = sm_runtime.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=input_1_s3_location)
output_location = response['OutputLocation']

Følgende skærmbillede viser eksempeloutput efter opsummering:
Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

For detaljer om API'et til at fremkalde et asynkront inferensslutpunkt, se Kald et asynkront inferensslutpunkt.

Sæt påkaldelsesanmodningerne i kø med brugerdefineret samtidighed

Det asynkrone inferensslutpunkt sætter automatisk påkaldelsesanmodningerne i kø. Dette er en fuldt administreret kø med forskellige overvågningsmetrikker og kræver ikke yderligere konfiguration. Den bruger MaxConcurrentInvocationsPerInstance parameter i den foregående slutpunktskonfiguration for at behandle nye anmodninger fra køen, efter at tidligere anmodninger er afsluttet. MaxConcurrentInvocationsPerInstance er det maksimale antal samtidige anmodninger sendt af SageMaker-klienten til modelbeholderen. Hvis der ikke er angivet nogen værdi, vælger SageMaker en optimal værdi for dig.

Autoskaleringsforekomster inden for det asynkrone inferensslutpunkt

Vi indstiller politikken for automatisk skalering med en minimumskapacitet på nul og en maksimal kapacitet på fem forekomster. I modsætning til hostede endepunkter i realtid understøtter asynkrone inferensslutpunkter nedskalering af forekomster til nul ved at indstille minimumskapaciteten til nul. Vi bruger ApproximateBacklogSizePerInstance metric for skaleringspolitikkonfigurationen med et målkøefterslæb på fem pr. instans for at skalere yderligere ud. Vi indstiller nedkølingsperioden for ScaleInCooldown til 120 sekunder og ScaleOutCooldown til 120 sekunder. Værdien for ApproximateBacklogSizePerInstance er valgt ud fra trafikken og din følsomhed over for skaleringshastighed. Jo hurtigere du skalerer ind, jo mindre omkostninger påløber du, men jo mere sandsynligt bliver du nødt til at skalere op igen, når der kommer nye anmodninger. Jo langsommere du skalerer ind, jo flere omkostninger påløber du, men det er mindre sandsynligt, at du får en anmodning kommer ind, når du er underskaleret.

client = boto3.client('application-autoscaling') # Common class representing Application Auto Scaling for SageMaker amongst other services resource_id='endpoint/' + endpoint_name + '/variant/' + 'variant1' # This is the format in which application autoscaling references the endpoint response = client.register_scalable_target(
ServiceNamespace='sagemaker', #
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=5
) response = client.put_scaling_policy(
PolicyName='Invocations-ScalingPolicy',
ServiceNamespace='sagemaker', # The namespace of the AWS service that provides the resource.
ResourceId=resource_id, # Endpoint name
ScalableDimension='sagemaker:variant:DesiredInstanceCount', # SageMaker supports only Instance Count
PolicyType='TargetTrackingScaling', # 'StepScaling'|'TargetTrackingScaling'
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [{'Name': 'EndpointName', 'Value': endpoint_name }], 'Statistic': 'Average',
}, 'ScaleInCooldown': 120, # ScaleInCooldown - The amount of time, in seconds, after a scale-in activity completes before another scale in activity can start. 'ScaleOutCooldown': 120 # ScaleOutCooldown - The amount of time, in seconds, after a scale-out activity completes before another scale out activity can start.
# 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled.
# If the value is true, scale-in is disabled and the target tracking policy won't remove capacity from the scalable resource.
}
)

For detaljer om API'et til automatisk skalering af et asynkront inferensslutpunkt, se Autoskaler et asynkront inferensendepunkt.

Konfigurer meddelelser fra det asynkrone inferensslutpunkt

Vi opretter to separate SNS-emner for succes og fejlmeddelelser for hvert resultat af slutpunktskald:

sns_client = boto3.client('sns')
response = sns_client.create_topic(Name="Async-Demo-ErrorTopic2")
error_topic = response['TopicArn']
response = sns_client.create_topic(Name="Async-Demo-SuccessTopic2")
success_topic = response['TopicArn']

Andre muligheder for meddelelser omfatter periodisk kontrol af output fra S3-bøtten eller brug af S3-bøttemeddelelser til at initialisere en AWS Lambda funktion ved filupload. SNS-meddelelser er inkluderet i endepunktskonfigurationssektionen som tidligere beskrevet.

For detaljer om, hvordan du opsætter meddelelser fra et asynkront inferensslutpunkt, se Tjek forudsigelsesresultater.

Overvåg det asynkrone inferensendepunkt

Vi overvåger det asynkrone inferens-endepunkt med indbyggede yderligere CloudWatch-metrikker, der er specifikke for asynkron inferens. For eksempel overvåger vi kølængden i hver instans med ApproximateBacklogSizePerInstance og samlet kølængde med ApproximateBacklogSize.

Se en komplet liste over målinger Overvågning af asynkrone inferensendepunkter.

Vi kan optimere slutpunktskonfigurationen for at få den mest omkostningseffektive instans med høj ydeevne. For eksempel kan vi bruge en instans med Amazon Elastic Inference eller AWS Inferentia. Vi kan også gradvist øge samtidighedsniveauet op til gennemstrømningsspidsen, mens vi justerer andre modelserver- og containerparametre.

CloudWatch-grafer

Vi simulerede en trafik på 10,000 slutningsanmodninger, der strømmer ind over en periode til det asynkrone slutningsendepunkt, der er aktiveret med den automatiske skaleringspolitik beskrevet i det foregående afsnit.

Følgende skærmbillede viser forekomstmålinger, før anmodninger begyndte at strømme ind. Vi starter med et live-slutpunkt, hvor nul forekomster kører:
Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Følgende graf viser, hvordan BacklogSize , BacklogSizePerInstance metrics ændres, efterhånden som den automatiske skalering starter, og belastningen på slutpunktet deles af flere forekomster, der blev klargjort som en del af den automatiske skaleringsprocessen.
Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Som vist på det følgende skærmbillede steg antallet af tilfælde, efterhånden som slutningsantallet blev skaleret op:
Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Følgende skærmbillede viser, hvordan indskaleringen bringer slutpunktet tilbage til starttilstanden med nul kørende forekomster:
Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Ryd op

Når alle anmodninger er afsluttet, kan vi slette slutpunktet svarende til sletning af hostede realtidsslutpunkter. Bemærk, at hvis vi sætter minimumskapaciteten for asynkrone inferensendepunkter til nul, er der ingen instansafgifter, der påløber, efter at den er nedskaleret til nul.

Hvis du aktiverede automatisk skalering for dit endepunkt, skal du sørge for at afregistrere endepunktet som et skalerbart mål, før du sletter endepunktet. For at gøre dette skal du køre følgende kode:

response = client.deregister_scalable_target(ServiceNamespace='sagemaker',ResourceId='resource_id',ScalableDimension='sagemaker:variant:DesiredInstanceCount')

Husk at slette dit slutpunkt efter brug, da du vil blive opkrævet for de tilfælde, der bruges i denne demo.

sm_client.delete_endpoint(EndpointName=endpoint_name)

Du skal også slette S3-objekter og SNS-emner. Hvis du har oprettet andre AWS-ressourcer til at forbruge og handle på SNS-meddelelserne, vil du måske også slette dem.

Konklusion

I dette indlæg demonstrerede vi, hvordan man bruger den nye asynkrone slutningsevne fra SageMaker til at behandle en typisk stor input-nyttelast, der er en del af en opsummeringsopgave. Til inferens brugte vi en model fra Hugging Face og implementerede den på asynkront inferensslutpunkt. Vi forklarede de almindelige udfordringer med burst-trafik, høje modelbehandlingstider og store nyttelaster involveret i forskningsanalyse. Det asynkrone inferensendepunkts iboende evne til at administrere interne køer, foruddefinerede samtidighedsgrænser, konfigurere svarmeddelelser og automatisk skalere ned til nul hjalp os med at løse disse udfordringer. Den komplette kode for dette eksempel er tilgængelig på GitHub.

For at komme i gang med SageMaker asynkron inferens, tjek ud Asynkron inferens.


Om forfatterne

Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dinesh Kumar Subramani er Senior Solutions Architect hos UKIR SMB-teamet med base i Edinburgh, Skotland. Han har specialiseret sig i kunstig intelligens og maskinlæring. Dinesh nyder at arbejde med kunder på tværs af brancher for at hjælpe dem med at løse deres problemer med AWS-tjenester. Uden for arbejdet elsker han at tilbringe tid med sin familie, spille skak og nyde musik på tværs af genrer.

Forbedre forskning af høj værdi med Hugging Face og Amazon SageMaker asynkrone inferens-endepunkter PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Raghu Ramesha er en ML 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 nyder han at rejse og fotografere.

Tidsstempel:

Mere fra AWS maskinindlæring