Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone inferensendepunkter

Mange av våre AWS-kunder tilbyr forskning, analyser og business intelligence som en tjeneste. Denne typen forskning og forretningsintelligens gjør det mulig for sluttkundene å ligge i forkant av markeder og konkurrenter, identifisere vekstmuligheter og ta opp problemer proaktivt. For eksempel gjør noen av våre kunder i finanssektoren undersøkelser for aksjer, hedgefond og investeringsforvaltningsselskaper for å hjelpe dem med å forstå trender og identifisere porteføljestrategier. I helsebransjen er en stadig større del av helseforskningen nå informasjonsbasert. Mye forskning innebærer analyse av data som i utgangspunktet ble samlet inn for diagnostikk, behandling eller andre forskningsprosjekter, og som nå brukes til nye forskningsformål. Disse formene for helseforskning har ført til effektiv primær forebygging for å unngå nye tilfeller, sekundær forebygging for tidlig oppdagelse og forebygging for bedre sykdomshåndtering. Forskningsresultatene forbedrer ikke bare livskvaliteten, men bidrar også til å redusere helseutgifter.

Kunder har en tendens til å fordøye informasjonen fra offentlige og private kilder. De bruker deretter etablerte eller tilpassede naturlige språkbehandlingsmodeller (NLP) for å oppsummere og identifisere en trend og generere innsikt basert på denne informasjonen. NLP-modellene som brukes for denne typen forskningsoppgaver omhandler store modeller og involverer vanligvis lange artikler som skal oppsummeres med tanke på størrelsen på korpus – og dedikerte endepunkter, som ikke er kostnadsoptimalisert for øyeblikket. Disse applikasjonene mottar en rekke innkommende trafikk på forskjellige tider av dagen.

Vi tror kundene vil ha stor nytte av muligheten til å skalere ned til null og øke slutningsevnen etter behov. Dette optimerer forskningskostnadene og går fortsatt ikke på akkord med kvaliteten på slutninger. Dette innlegget diskuterer hvordan Hugging Face sammen med Amazon SageMaker asynkron inferens kan bidra til å oppnå dette.

Du kan bygge tekstoppsummeringsmodeller med flere dyplæringsrammer som TensorFlow, PyTorch og Apache MXNet. Disse modellene har vanligvis en stor inndatalast av flere tekstdokumenter av varierende størrelse. Avanserte dyplæringsmodeller krever dataintensiv forbehandling før modellslutning. Behandlingstiden kan være så lang som noen få minutter, noe som fjerner muligheten til å kjøre sanntidsslutning ved å sende nyttelast over en HTTP API. I stedet må du behandle input-nyttelast asynkront fra et objektlager som Amazon enkel lagringstjeneste (Amazon S3) med automatisk kø og en forhåndsdefinert samtidighetsterskel. Systemet skal kunne motta statusvarsler og redusere unødvendige kostnader ved å rydde opp i ressurser når oppgavene er fullført.

SageMaker hjelper dataforskere og utviklere med å forberede, bygge, trene og distribuere høykvalitets maskinlæringsmodeller (ML) raskt ved å samle et bredt sett med funksjoner spesialbygd for ML. SageMaker tilbyr de mest avanserte åpen kildekode-modellserveringsbeholderne for XGBoost (container, SDK), Scikit-Learn (container, SDK), PyTorch (container, SDK), TensorFlow (container, SDK), og Apache MXNet (container, SDK).

SageMaker tilbyr fire alternativer for å distribuere trente ML-modeller for å generere slutninger om nye data.
  1. Slutning i sanntid endepunkter er egnet for arbeidsbelastninger som må behandles med lave latenskrav i størrelsesorden ms til sekunder.
  2. Batchtransformasjon er ideell for offline spådommer på store mengder data.
  3. Amazon SageMaker Serverless Inference (i forhåndsvisningsmodus og anbefales ikke for produksjonsbelastninger når dette skrives) er et spesialbygd slutningsalternativ som gjør det enkelt for deg å distribuere og skalere ML-modeller. Serverløs inferens er ideell for arbeidsbelastninger som har inaktive perioder mellom trafikksprut og som tåler kaldstart.
  4. Asynkron inferens endepunkter køer innkommende forespørsler. De er ideelle for arbeidsbelastninger der forespørselsstørrelsene er store (opptil 1 GB) og behandlingstiden for slutninger er i størrelsesorden minutter (opptil 15 minutter). Asynkron inferens lar deg spare kostnader ved å automatisk skalere forekomsttellingen til null når det ikke er noen forespørsler å behandle.

Løsningsoversikt

I dette innlegget distribuerer vi en PEGASUS modell som var forhåndsopplært til å gjøre tekstoppsummering fra Klemme ansiktet til SageMaker vertstjenester. Vi bruker modellen som den er fra Hugging Face for enkelhets skyld. Du kan imidlertid finjustere modellen basert på et tilpasset datasett. Du kan også prøve andre modeller tilgjengelig i Hugging Face Model Hub. Vi tilbyr også et asynkront inferensendepunkt som er vert for denne modellen, som du kan få spådommer fra.

Det asynkrone slutningsendepunktets slutningsbehandler forventer en artikkel som input nyttelast. Den oppsummerte teksten i artikkelen er resultatet. Utdataene lagres i databasen for å analysere trendene eller mates nedstrøms for videre analyser. Denne nedstrømsanalysen utleder datainnsikt som hjelper med forskningen.

Vi viser hvordan asynkrone inferensendepunkter gjør at du kan ha brukerdefinerte samtidighets- og fullføringsvarsler. Vi konfigurerer automatisk skalering av forekomster bak endepunktet for å skalere ned til null når trafikken avtar og skalere opp igjen når forespørselskøen fylles opp.

Vi bruker også Amazon CloudWatch beregninger for å overvåke køstørrelsen, total behandlingstid og påkallinger som behandles.

I det følgende diagrammet viser vi trinnene som er involvert mens du utfører inferens ved å bruke et asynkront inferensendepunkt.

Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

  1. Våre forhåndstrente PEGASUS ML-modellen vert først på skaleringsendepunktet.
  2. Brukeren laster opp artikkelen for å bli oppsummert til en S3-inngang.
  3. Det asynkrone inferensendepunktet påkalles ved hjelp av en API.
  4. Etter at slutningen er fullført, lagres resultatet i S3-utgangen.
  5. An Amazon enkel varslingstjeneste (Amazon SNS) varsel sendes til brukeren og varsler dem om fullført suksess eller fiasko.

Opprett et asynkront inferensendepunkt

Vi lager det asynkrone slutningsendepunktet som ligner på et vertsbasert endepunkt i sanntid. Trinnene inkluderer å lage en SageMaker-modell, etterfulgt av å konfigurere endepunktet og distribuere endepunktet. Forskjellen mellom de to typene endepunkter er at den asynkrone inferens-endepunktkonfigurasjonen inneholder en AsyncInferenceConfig seksjon. Her spesifiserer vi S3-utdatabanen for resultatene fra endepunktspåkallelsen og inkluderer valgfritt SNS-emner for varsler om suksess og fiasko. Vi spesifiserer også maksimalt antall samtidige påkallinger per forekomst som bestemt av 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 for å opprette en endepunktkonfigurasjon for asynkron inferens, se Opprett et asynkront inferensendepunkt.

Påkall det asynkrone inferensendepunktet

Følgende skjermbilde viser en kort artikkel som vi bruker som nyttelast:
Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Følgende kode laster opp artikkelen 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 bruker Amazon S3 URI til input-nyttelastfilen for å påkalle endepunktet. Responsobjektet inneholder utdataplasseringen i Amazon S3 for å hente resultatene etter fullføring:

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

Følgende skjermbilde viser eksempelutdata etter oppsummering:
Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

For detaljer om API for å påkalle et asynkront slutningsendepunkt, se Påkalle et asynkront inferensendepunkt.

Sett påkallingsforespørslene i kø med brukerdefinert samtidighet

Det asynkrone slutningsendepunktet setter automatisk invokasjonsforespørslene i kø. Dette er en fullstendig administrert kø med ulike overvåkingsverdier og krever ingen ytterligere konfigurasjon. Den bruker MaxConcurrentInvocationsPerInstance parameter i den foregående endepunktkonfigurasjonen for å behandle nye forespørsler fra køen etter at tidligere forespørsler er fullført. MaxConcurrentInvocationsPerInstance er det maksimale antallet samtidige forespørsler sendt av SageMaker-klienten til modellbeholderen. Hvis ingen verdi er oppgitt, velger SageMaker en optimal verdi for deg.

Automatisk skaleringsforekomster innenfor det asynkrone slutningsendepunktet

Vi setter policyen for automatisk skalering med en minimumskapasitet på null og en maksimal kapasitet på fem forekomster. I motsetning til vertsbaserte endepunkter i sanntid, støtter asynkrone slutningsendepunkter nedskalering av forekomster til null ved å sette minimumskapasiteten til null. Vi bruker ApproximateBacklogSizePerInstance metrikk for skaleringspolicykonfigurasjonen med et målkøetterslep på fem per forekomst for å skalere ut ytterligere. Vi setter nedkjølingsperioden for ScaleInCooldown til 120 sekunder og ScaleOutCooldown til 120 sekunder. Verdien for ApproximateBacklogSizePerInstance velges basert på trafikken og din følsomhet for skaleringshastighet. Jo raskere du skalerer inn, jo mindre kostnad pådrar du deg, men jo mer sannsynlig må du skalere opp igjen når nye forespørsler kommer inn. Jo langsommere du skalerer inn, jo mer koster du, men det er mindre sannsynlighet for en forespørsel kommer inn når du er underskalert.

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 for å automatisk skalere et asynkront inferensendepunkt, se Autoskaler et asynkront inferensendepunkt.

Konfigurer varsler fra endepunktet for asynkron slutning

Vi oppretter to separate SNS-emner for suksess og feilmeldinger for hvert resultat av endepunktanrop:

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 alternativer for varsler inkluderer periodisk kontroll av utdata fra S3-bøtten, eller bruk av S3-bøttevarslinger for å initialisere en AWS Lambda funksjon ved filopplasting. SNS-varsler er inkludert i endepunktkonfigurasjonsdelen som tidligere beskrevet.

For detaljer om hvordan du setter opp varsler fra et asynkront slutningsendepunkt, se Sjekk prediksjonsresultater.

Overvåk endepunktet for asynkron inferens

Vi overvåker endepunktet for asynkron inferens med innebygde ekstra CloudWatch-beregninger som er spesifikke for asynkron inferens. For eksempel overvåker vi kølengden i hver instans med ApproximateBacklogSizePerInstance og total kølengde med ApproximateBacklogSize.

For en fullstendig liste over beregninger, se Overvåking av asynkrone inferensendepunkter.

Vi kan optimalisere endepunktkonfigurasjonen for å få den mest kostnadseffektive forekomsten med høy ytelse. For eksempel kan vi bruke en instans med Amazon Elastic Inference eller AWS Inferentia. Vi kan også gradvis øke samtidighetsnivået opp til gjennomstrømstoppen mens vi justerer andre modellserver- og containerparametere.

CloudWatch-grafer

Vi simulerte en trafikk på 10,000 XNUMX slutningsforespørsler som strømmet inn over en periode til det asynkrone slutningspunktet aktivert med den automatiske skaleringspolicyen beskrevet i forrige avsnitt.

Følgende skjermbilde viser forekomstberegninger før forespørsler begynte å strømme inn. Vi starter med et live-endepunkt med null forekomster som kjører:
Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Følgende graf viser hvordan BacklogSize og BacklogSizePerInstance beregninger endres etter hvert som den automatiske skaleringen starter og belastningen på endepunktet deles av flere forekomster som ble klargjort som en del av den automatiske skaleringsprosessen.
Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Som vist i følgende skjermbilde, økte antallet forekomster etter hvert som inferanseantallet ble oppskalert:
Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Følgende skjermbilde viser hvordan innskaleringen bringer endepunktet tilbake til starttilstanden med null kjørende forekomster:
Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Rydd opp

Etter at alle forespørslene er fullført, kan vi slette endepunktet på samme måte som å slette endepunkter som er vert i sanntid. Merk at hvis vi setter minimumskapasiteten til asynkrone inferensendepunkter til null, er det ingen forekomstkostnader som påløper etter at den skaleres ned til null.

Hvis du har aktivert automatisk skalering for endepunktet, sørg for at du avregistrerer endepunktet som et skalerbart mål før du sletter endepunktet. For å gjøre dette, kjør følgende kode:

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

Husk å slette endepunktet ditt etter bruk, da du vil bli belastet for forekomstene som brukes i denne demoen.

sm_client.delete_endpoint(EndpointName=endpoint_name)

Du må også slette S3-objektene og SNS-emnene. Hvis du opprettet andre AWS-ressurser for å konsumere og handle på SNS-varslene, kan det hende du også ønsker å slette dem.

konklusjonen

I dette innlegget demonstrerte vi hvordan man bruker den nye asynkrone slutningsevnen fra SageMaker til å behandle en typisk stor input-nyttelast som er en del av en oppsummeringsoppgave. For slutninger brukte vi en modell fra Hugging Face og distribuerte den på asynkront slutningsendepunkt. Vi forklarte de vanlige utfordringene med burst-trafikk, høye modellbehandlingstider og store nyttelaster involvert i forskningsanalyse. Det asynkrone slutningsendepunktets iboende evne til å administrere interne køer, forhåndsdefinerte samtidighetsgrenser, konfigurere svarvarsler og automatisk skalere ned til null hjalp oss med å takle disse utfordringene. Den komplette koden for dette eksemplet er tilgjengelig på GitHub.

For å komme i gang med SageMaker asynkron inferens, sjekk ut Asynkron inferens.


Om forfatterne

Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dinesh Kumar Subramani er en senior løsningsarkitekt med UKIR SMB-teamet, basert i Edinburgh, Skottland. Han spesialiserer seg på kunstig intelligens og maskinlæring. Dinesh liker å jobbe med kunder på tvers av bransjer for å hjelpe dem med å løse problemene deres med AWS-tjenester. Utenom jobben elsker han å tilbringe tid med familien, spille sjakk og nyte musikk på tvers av sjangere.

Forbedre forskning med høy verdi med Hugging Face og Amazon SageMaker asynkrone sluttpunkter PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Raghu Ramesha er en ML Solutions Architect med Amazon SageMaker Service-teamet. Han fokuserer på å hjelpe kunder med å bygge, distribuere og migrere ML-produksjonsarbeidsmengder til SageMaker i stor skala. Han spesialiserer seg på maskinlæring, AI og datasynsdomener, og har en mastergrad i informatikk fra UT Dallas. På fritiden liker han å reise og fotografere.

Tidstempel:

Mer fra AWS maskinlæring