Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker

Številne naše stranke AWS ponujajo raziskave, analitiko in poslovno inteligenco kot storitev. Ta vrsta raziskav in poslovnega obveščanja njihovim končnim strankam omogoča, da ostanejo pred trgi in konkurenti, prepoznajo priložnosti za rast in proaktivno obravnavajo težave. Na primer, nekatere naše stranke v sektorju finančnih storitev izvajajo raziskave za delniške vrednostne papirje, hedge sklade in družbe za upravljanje naložb, da bi jim pomagale razumeti trende in identificirati portfeljske strategije. V zdravstveni industriji vedno večji del zdravstvenih raziskav zdaj temelji na informacijah. Veliko raziskav vključuje analizo podatkov, ki so bili prvotno zbrani za diagnostiko, zdravljenje ali druge raziskovalne projekte, zdaj pa se uporabljajo za nove raziskovalne namene. Te oblike zdravstvenih raziskav so vodile do učinkovite primarne preventive za preprečevanje novih primerov, sekundarne preventive za zgodnje odkrivanje in preventive za boljše obvladovanje bolezni. Rezultati raziskave ne le izboljšujejo kakovost življenja, ampak tudi pomagajo zmanjšati stroške zdravstvenega varstva.

Stranke ponavadi prebavljajo informacije iz javnih in zasebnih virov. Nato uporabijo uveljavljene ali prilagojene modele obdelave naravnega jezika (NLP), da povzamejo in prepoznajo trend ter ustvarijo vpoglede na podlagi teh informacij. Modeli NLP, ki se uporabljajo za te vrste raziskovalnih nalog, se ukvarjajo z velikimi modeli in običajno vključujejo dolge članke, ki jih je treba povzeti glede na velikost korpusa – in namenske končne točke, ki trenutno niso stroškovno optimizirane. Te aplikacije prejmejo niz dohodnega prometa ob različnih urah dneva.

Verjamemo, da bi strankam zelo koristila zmožnost zmanjšanja na nič in povečanja njihove zmožnosti sklepanja po potrebi. To optimizira stroške raziskave in še vedno ne ogroža kakovosti sklepanja. Ta objava obravnava, kako Hugging Face skupaj z Amazon SageMaker asinhrono sklepanje lahko pomaga doseči to.

Modele povzemanja besedila lahko sestavite z več ogrodji za poglobljeno učenje, kot so TensorFlow, PyTorch in Apache MXNet. Ti modeli imajo običajno veliko vhodno koristno količino več besedilnih dokumentov različnih velikosti. Napredni modeli globokega učenja zahtevajo računalniško intenzivno predprocesiranje pred sklepanjem modela. Časi obdelave so lahko dolgi tudi nekaj minut, kar odstrani možnost izvajanja sklepanja v realnem času s posredovanjem uporabnih obremenitev prek API-ja HTTP. Namesto tega morate asinhrono obdelati vhodne obremenitve iz shrambe objektov, kot je Preprosta storitev shranjevanja Amazon (Amazon S3) s samodejnim postavljanjem v čakalno vrsto in vnaprej določenim pragom sočasnosti. Sistem bi moral biti sposoben prejemati obvestila o stanju in zmanjšati nepotrebne stroške s čiščenjem virov, ko so naloge končane.

SageMaker pomaga podatkovnim znanstvenikom in razvijalcem hitro pripraviti, zgraditi, usposobiti in uvesti visokokakovostne modele strojnega učenja (ML), tako da združi širok nabor zmogljivosti, namensko izdelanih za ML. SageMaker ponuja najnaprednejše odprtokodne vsebnike za prikazovanje modelov za XGBoost (posoda, SDK), Scikit-Learn (posoda, SDK), PyTorch (posoda, SDK), TensorFlow (posoda, SDK) in Apache MXNet (posoda, SDK).

SageMaker ponuja štiri možnosti za uvajanje usposobljenih modelov ML za ustvarjanje sklepov na novih podatkih.
  1. Sklepanje v realnem času končne točke so primerne za delovne obremenitve, ki jih je treba obdelati z zahtevami po nizki zakasnitvi v vrstnem redu od ms do sekund.
  2. Paketno preoblikovanje je idealen za napovedi brez povezave za velike serije podatkov.
  3. Sklep brez strežnika Amazon SageMaker (v načinu predogleda in ni priporočljivo za produkcijske delovne obremenitve od tega pisanja) je namensko izdelana možnost sklepanja, ki vam olajša uvajanje in prilagajanje modelov ML. Brezstrežniško sklepanje je idealno za delovne obremenitve, ki imajo obdobja mirovanja med prometnimi sunki in lahko dopuščajo hladne zagone.
  4. Asinhrono sklepanje končne točke postavijo dohodne zahteve v čakalno vrsto. Idealne so za delovne obremenitve, kjer so zahteve velike (do 1 GB) in so časi obdelave sklepanja v minutah (do 15 minut). Asinhrono sklepanje vam omogoča prihranek pri stroških s samodejnim skaliranjem števila primerkov na nič, ko ni nobenih zahtev za obdelavo.

Pregled rešitev

V tej objavi uvajamo a Model PEGASUS ki je bil predhodno usposobljen za povzemanje besedila iz Objemni obraz do Storitve gostovanja SageMaker. Zaradi enostavnosti uporabljamo model, kot je iz Hugging Face. Vendar pa lahko natančno prilagodite model na podlagi nabora podatkov po meri. Preizkusite lahko tudi druge modele, ki so na voljo v Hugging Face Model Hub. Ponujamo tudi končno točko asinhronega sklepanja, ki gosti ta model, iz katerega lahko dobite napovedi.

Upravljalnik sklepanja končne točke asinhronega sklepanja pričakuje članek kot vhodni koristni tovor. Izhod je povzetek besedila članka. Izhodni podatki so shranjeni v zbirki podatkov za analizo trendov ali pa se podajo navzdol za nadaljnjo analitiko. Ta nadaljnja analiza izpelje vpoglede v podatke, ki pomagajo pri raziskavi.

Demonstriramo, kako vam končne točke asinhronega sklepanja omogočajo, da imate uporabniško definirana obvestila o sočasnosti in dokončanju. Samodejno skaliranje instanc za končno točko konfiguriramo tako, da se zmanjša na nič, ko se promet umiri, in ponovno poveča, ko se čakalna vrsta zahtev zapolni.

Uporabljamo tudi amazoncloudwatch metrike za spremljanje velikosti čakalne vrste, skupnega časa obdelave in obdelanih klicev.

V naslednjem diagramu prikazujemo korake med izvajanjem sklepanja z uporabo končne točke asinhronega sklepanja.

Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

  1. Naši predhodno usposobljeni PEGASUS Model ML najprej gostuje na končni točki skaliranja.
  2. Uporabnik naloži članek, ki ga je treba povzeti, v vhodno vedro S3.
  3. Končna točka asinhronega sklepanja se prikliče z uporabo API-ja.
  4. Ko je sklepanje končano, se rezultat shrani v izhodno vedro S3.
  5. An Amazon Simple notification Service (Amazon SNS) se uporabniku pošlje obvestilo o dokončanem uspehu ali neuspehu.

Ustvarite končno točko asinhronega sklepanja

Končno točko asinhronega sklepanja ustvarimo podobno končni točki, ki gostuje v realnem času. Koraki vključujejo ustvarjanje modela SageMaker, ki mu sledi konfiguracija končne točke in uvajanje končne točke. Razlika med obema vrstama končnih točk je v tem, da konfiguracija končne točke asinhronega sklepanja vsebuje AsyncInferenceConfig razdelek. Tukaj določimo izhodno pot S3 za rezultate priklica končne točke in po želji vključimo teme SNS za obvestila o uspehu in neuspehu. Določimo tudi največje število sočasnih klicev na primerek, kot ga določi stranka. Oglejte si naslednjo kodo:

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 } }

Za podrobnosti o API-ju za ustvarjanje konfiguracije končne točke za asinhrono sklepanje glejte Ustvari končno točko asinhronega sklepanja.

Prikličite končno točko asinhronega sklepanja

Naslednji posnetek zaslona prikazuje kratek članek, ki ga uporabljamo kot naš vhodni tovor:
Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Naslednja koda naloži članek kot input.json datoteko v Amazon S3:

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

Uporabimo Amazon S3 URI za vhodno koristno datoteko za priklic končne točke. Odzivni objekt vsebuje izhodno lokacijo v Amazon S3 za pridobitev rezultatov po zaključku:

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

Naslednji posnetek zaslona prikazuje vzorčni rezultat po povzetku:
Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Za podrobnosti o API-ju za priklic končne točke asinhronega sklepanja glejte Prikličite končno točko asinhronega sklepanja.

Zahteve za priklic postavite v čakalno vrsto s sočasnostjo, ki jo določi uporabnik

Končna točka asinhronega sklepanja samodejno postavi zahteve za priklic v čakalno vrsto. To je v celoti upravljana čakalna vrsta z različnimi metrikami spremljanja in ne zahteva dodatne konfiguracije. Uporablja MaxConcurrentInvocationsPerInstance parameter v prejšnji konfiguraciji končne točke za obdelavo novih zahtev iz čakalne vrste, potem ko so prejšnje zahteve dokončane. MaxConcurrentInvocationsPerInstance je največje število sočasnih zahtev, ki jih odjemalec SageMaker pošlje vsebniku modela. Če vrednost ni navedena, SageMaker za vas izbere optimalno vrednost.

Samodejno skaliranje primerkov znotraj končne točke asinhronega sklepanja

Politiko samodejnega skaliranja smo nastavili z najmanjšo zmogljivostjo nič in največjo zmogljivostjo petih primerkov. Za razliko od končnih točk, gostujočih v realnem času, končne točke asinhronega sklepanja podpirajo zmanjšanje primerkov na nič z nastavitvijo najmanjše zmogljivosti na nič. Uporabljamo ApproximateBacklogSizePerInstance metrika za konfiguracijo pravilnika skaliranja s petim zaostankom ciljne čakalne vrste na primerek za nadaljnje skaliranje. Nastavili smo čas ohlajanja za ScaleInCooldown do 120 sekund in ScaleOutCooldown do 120 sekund. Vrednost za ApproximateBacklogSizePerInstance je izbran glede na promet in vašo občutljivost na hitrost skaliranja. Hitreje kot se širite, manj stroškov boste imeli, vendar je večja verjetnost, da boste morali znova povečati stopnjo, ko bodo prispele nove zahteve. Počasneje kot se širite, večji bodo stroški, vendar je manj verjetno, zahteva pride, ko ste premajhni.

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.
}
)

Za podrobnosti o API-ju za samodejno prilagajanje končne točke asinhronega sklepanja glejte Samodejno skaliranje končne točke asinhronega sklepanja.

Konfigurirajte obvestila iz končne točke asinhronega sklepanja

Ustvarimo dve ločeni temi SNS za obvestila o uspehu in napakah za vsak rezultat priklica končne točke:

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

Druge možnosti za obvestila vključujejo redno preverjanje izhoda vedra S3 ali uporabo obvestil vedra S3 za inicializacijo AWS Lambda funkcijo pri nalaganju datoteke. Obvestila SNS so vključena v razdelek za konfiguracijo končne točke, kot je opisano prej.

Za podrobnosti o tem, kako nastaviti obvestila iz končne točke asinhronega sklepanja, glejte Preverite rezultate napovedi.

Spremljajte končno točko asinhronega sklepanja

Končno točko asinhronega sklepanja spremljamo z vgrajenimi dodatnimi meritvami CloudWatch, značilnimi za asinhrono sklepanje. Na primer, spremljamo dolžino čakalne vrste v vsakem primeru z ApproximateBacklogSizePerInstance in skupno dolžino čakalne vrste z ApproximateBacklogSize.

Za celoten seznam meritev glejte Spremljanje končnih točk asinhronega sklepanja.

Konfiguracijo končne točke lahko optimiziramo, da dobimo najbolj stroškovno učinkovit primerek z visoko zmogljivostjo. Na primer, lahko uporabimo primerek z Amazon Elastic Inference ali AWS Inferentia. Prav tako lahko postopoma povečamo raven sočasnosti do najvišje prepustnosti, medtem ko prilagajamo druge modelne parametre strežnika in vsebnika.

Grafi CloudWatch

Simulirali smo promet 10,000 zahtev za sklepanje, ki teče v določenem obdobju do končne točke asinhronega sklepanja, omogočenega s pravilnikom samodejnega skaliranja, opisanim v prejšnjem razdelku.

Naslednji posnetek zaslona prikazuje meritve primerkov, preden so zahteve začele pritekati. Začnemo z živo končno točko z nič delujočimi primerki:
Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Naslednji graf prikazuje, kako BacklogSize in BacklogSizePerInstance metrike se spremenijo, ko se začne samodejno skaliranje in obremenitev končne točke si deli več primerkov, ki so bili omogočeni kot del postopka samodejnega skaliranja.
Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Kot je prikazano na naslednjem posnetku zaslona, ​​se je število primerkov povečalo, ko se je število sklepanja povečevalo:
Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Naslednji posnetek zaslona prikazuje, kako skaliranje vrne končno točko v začetno stanje nič delujočih primerkov:
Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Čiščenje

Ko so vse zahteve dokončane, lahko izbrišemo končno točko, podobno kot če izbrišemo gostujoče končne točke v realnem času. Upoštevajte, da če minimalno zmogljivost končnih točk asinhronega sklepanja nastavimo na nič, po zmanjšanju na nič ne nastanejo nobeni stroški primerka.

Če ste za svojo končno točko omogočili samodejno skaliranje, se prepričajte, da ste končno točko odjavili kot razširljivi cilj, preden končno točko izbrišete. Če želite to narediti, zaženite to kodo:

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

Po uporabi ne pozabite izbrisati končne točke, saj vam bomo zaračunali primerke, uporabljene v tej predstavitvi.

sm_client.delete_endpoint(EndpointName=endpoint_name)

Prav tako morate izbrisati objekte S3 in teme SNS. Če ste ustvarili druge vire AWS za uporabo in ukrepanje v zvezi z obvestili SNS, jih boste morda želeli tudi izbrisati.

zaključek

V tej objavi smo pokazali, kako uporabiti novo zmožnost asinhronega sklepanja iz SageMakerja za obdelavo tipične velike vhodne obremenitve, ki je del naloge povzemanja. Za sklepanje smo uporabili model iz Hugging Face in ga razmestili na končni točki asinhronega sklepanja. Pojasnili smo pogoste izzive hitrega prometa, dolgih časov obdelave modela in velikih obremenitev, povezanih z analitiko raziskav. Inherentna zmožnost končne točke asinhronega sklepanja za upravljanje notranjih čakalnih vrst, vnaprej določenih omejitev sočasnosti, konfiguracije odzivnih obvestil in samodejnega zmanjšanja na nič nam je pomagala pri reševanju teh izzivov. Celotna koda za ta primer je na voljo na GitHub.

Če želite začeti z asinhronim sklepanjem SageMaker, preverite Asinhrono sklepanje.


O avtorjih

Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Dinesh Kumar Subramani je višji arhitekt rešitev pri ekipi UKIR SMB s sedežem v Edinburghu na Škotskem. Specializiran je za umetno inteligenco in strojno učenje. Dinesh uživa v delu s strankami v različnih panogah, da bi jim pomagal rešiti njihove težave s storitvami AWS. Zunaj službe rad preživlja čas s svojo družino, igra šah in uživa v glasbi različnih žanrov.

Izboljšajte raziskave visoke vrednosti s končnimi točkami asinhronega sklepanja Hugging Face in Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Raghu Ramesha je arhitekt rešitev ML pri ekipi Amazon SageMaker Service. Osredotoča se na pomoč strankam pri izgradnji, uvajanju in selitvi proizvodnih delovnih obremenitev ML na SageMaker v velikem obsegu. Specializiran je za področje strojnega učenja, umetne inteligence in računalniškega vida ter ima magisterij iz računalništva na UT Dallas. V prostem času rada potuje in fotografira.

Časovni žig:

Več od Strojno učenje AWS