Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincrone Hugging Face și Amazon SageMaker

Mulți dintre clienții noștri AWS oferă cercetare, analiză și business intelligence ca serviciu. Acest tip de cercetare și business intelligence le permite clienților finali să rămână în fața piețelor și concurenților, să identifice oportunitățile de creștere și să abordeze problemele în mod proactiv. De exemplu, unii dintre clienții noștri din sectorul serviciilor financiare fac cercetări pentru acțiuni, fonduri speculative și companii de administrare a investițiilor pentru a-i ajuta să înțeleagă tendințele și să identifice strategiile de portofoliu. În industria sănătății, o parte din ce în ce mai mare a cercetării în domeniul sănătății se bazează acum pe informații. O mare parte de cercetări implică analiza datelor care au fost inițial colectate pentru diagnostic, tratament sau pentru alte proiecte de cercetare și sunt acum utilizate în noi scopuri de cercetare. Aceste forme de cercetare în domeniul sănătății au condus la prevenirea primară eficientă pentru evitarea cazurilor noi, prevenirea secundară pentru depistarea precoce și prevenirea pentru un management mai bun al bolii. Rezultatele cercetării nu numai că îmbunătățesc calitatea vieții, dar contribuie și la reducerea cheltuielilor cu asistența medicală.

Clienții au tendința de a digera informațiile din surse publice și private. Apoi aplică modele de procesare a limbajului natural (NLP) stabilite sau personalizate pentru a rezuma și a identifica o tendință și pentru a genera perspective pe baza acestor informații. Modelele NLP utilizate pentru aceste tipuri de sarcini de cercetare se ocupă de modele mari și implică, de obicei, articole lungi care trebuie rezumate ținând cont de dimensiunea corpusului - și punctele finale dedicate, care nu sunt optimizate din punct de vedere al costurilor în acest moment. Aceste aplicații primesc o explozie de trafic de intrare în diferite momente ale zilei.

Credem că clienții ar beneficia foarte mult de capacitatea de a reduce la zero și de a-și crește capacitatea de inferență, după cum este necesar. Acest lucru optimizează costul cercetării și tot nu face compromisuri cu privire la calitatea inferențelor. Această postare discută despre modul în care Hugging Face împreună cu Amazon SageMaker inferența asincronă poate ajuta la realizarea acestui lucru.

Puteți construi modele de rezumare a textului cu mai multe cadre de învățare profundă, cum ar fi TensorFlow, PyTorch și Apache MXNet. Aceste modele au, de obicei, o încărcătură utilă de intrare mare de mai multe documente text de dimensiuni diferite. Modelele avansate de învățare profundă necesită preprocesare intensivă în calcul înainte de inferența modelului. Timpii de procesare pot fi de până la câteva minute, ceea ce elimină opțiunea de a rula inferențe în timp real prin transmiterea sarcinilor utile printr-un API HTTP. În schimb, trebuie să procesați sarcinile utile de intrare în mod asincron dintr-un depozit de obiecte, cum ar fi Serviciul Amazon de stocare simplă (Amazon S3) cu așteptare automată și un prag de concurență predefinit. Sistemul ar trebui să poată primi notificări de stare și să reducă costurile inutile prin curățarea resurselor când sarcinile sunt finalizate.

SageMaker îi ajută pe oamenii de știință și dezvoltatorii de date să pregătească, să construiască, să antreneze și să implementeze rapid modele de învățare automată (ML) de înaltă calitate, prin reunirea unui set larg de capabilități concepute special pentru ML. SageMaker oferă cele mai avansate containere open-source de servire a modelelor pentru XGBoost (recipient, SDK), Scikit-Learn (recipient, SDK), PyTorch (recipient, SDK), TensorFlow (recipient, SDK), și Apache MXNet (recipient, SDK).

SageMaker oferă patru opțiuni pentru a implementa modele ML instruite pentru generarea de inferențe asupra datelor noi.
  1. Inferință în timp real punctele finale sunt potrivite pentru sarcinile de lucru care trebuie procesate cu cerințe de latență scăzute, de ordinul de la ms la secunde.
  2. Transformarea lotului este ideal pentru predicții offline pe loturi mari de date.
  3. Inferență fără server Amazon SageMaker (în modul de previzualizare și nu este recomandat pentru încărcăturile de lucru de producție din momentul scrierii acestui articol) este o opțiune de inferență creată special care vă facilitează implementarea și scalarea modelelor ML. Inferența fără server este ideală pentru sarcinile de lucru care au perioade de inactivitate între exploziile de trafic și pot tolera pornirile la rece.
  4. Inferență asincronă punctele finale pun în coadă cererile primite. Sunt ideale pentru sarcinile de lucru în care dimensiunile solicitărilor sunt mari (până la 1 GB) și timpii de procesare a inferenței sunt de ordinul minutelor (până la 15 minute). Inferența asincronă vă permite să economisiți costuri prin scalarea automată a numărului de instanțe la zero atunci când nu există solicitări de procesat.

Prezentare generală a soluțiilor

În această postare, implementăm un Modelul PEGASUS care a fost pre-antrenat pentru a face rezumat text din Fata îmbrățișată la Servicii de gazduire SageMaker. Folosim modelul așa cum este de la Hugging Face pentru simplitate. Totuși, poți reglați fin modelul pe baza unui set de date personalizat. De asemenea, puteți încerca și alte modele disponibile în Hugging Face Model Hub. De asemenea, punem la dispoziție un punct final de inferență asincron care găzduiește acest model, de la care puteți obține predicții.

Managerul de inferență al punctului final de inferență asincron așteaptă un articol ca sarcină utilă de intrare. Textul rezumat al articolului este rezultatul. Rezultatul este stocat în baza de date pentru analiza tendințelor sau este alimentat în aval pentru analize ulterioare. Această analiză în aval derivă informații despre date care ajută la cercetare.

Demonstrăm modul în care punctele finale de inferență asincrone vă permit să aveți concurență și notificări de finalizare definite de utilizator. Configuram scalarea automată a instanțelor din spatele punctului final pentru a reduce la zero atunci când traficul se diminuează și a crește o copie de rezervă pe măsură ce coada de solicitări se umple.

De asemenea, folosim Amazon CloudWatch metrici pentru a monitoriza dimensiunea cozii, timpul total de procesare și invocările procesate.

În diagrama următoare, arătăm pașii implicați în timpul efectuării inferenței folosind un punct final de inferență asincron.

Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

  1. Pre-antrenamentul nostru PEGASUS Modelul ML este mai întâi găzduit pe punctul final de scalare.
  2. Utilizatorul încarcă articolul pentru a fi rezumat într-un compartiment S3 de intrare.
  3. Punctul final de inferență asincron este invocat folosind un API.
  4. După ce concluzia este completă, rezultatul este salvat în găleată S3 de ieșire.
  5. An Serviciul de notificare simplă Amazon Notificarea (Amazon SNS) este trimisă utilizatorului, notificându-l despre succesul sau eșecul finalizat.

Creați un punct final de inferență asincron

Creăm punctul final de inferență asincron similar cu un punct final găzduit în timp real. Pașii includ crearea unui model SageMaker, urmată de configurarea punctului final și implementarea punctului final. Diferența dintre cele două tipuri de puncte finale este că configurația punctului final de inferență asincronă conține un AsyncInferenceConfig secțiune. Aici specificăm calea de ieșire S3 pentru rezultatele de la invocarea punctului final și, opțional, includem subiecte SNS pentru notificări privind succesul și eșecul. Specificăm, de asemenea, numărul maxim de invocări simultane pe instanță, așa cum este determinat de client. Vezi următorul cod:

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

Pentru detalii despre API pentru a crea o configurație de punct final pentru inferența asincronă, consultați Creați un punct final de inferență asincron.

Invocați punctul final de inferență asincron

Următoarea captură de ecran arată un articol scurt pe care îl folosim ca sarcină utilă de intrare:
Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Următorul cod încarcă articolul ca un input.json fișier către Amazon S3:

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

Folosim URI-ul Amazon S3 la fișierul de încărcare utilă de intrare pentru a invoca punctul final. Obiectul răspuns conține locația de ieșire în Amazon S3 pentru a prelua rezultatele după finalizare:

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

Următoarea captură de ecran arată exemplul de rezultat după rezumatul:
Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Pentru detalii despre API pentru a invoca un punct final de inferență asincron, consultați Invocați un punct final de inferență asincron.

Puneți în coadă cererile de invocare cu concurență definită de utilizator

Punctul final de inferență asincron pune automat în coadă cererile de invocare. Aceasta este o coadă complet gestionată, cu diverse valori de monitorizare și nu necesită configurare suplimentară. Acesta folosește MaxConcurrentInvocationsPerInstance parametrul din configurația precedentă a punctului final pentru a procesa cereri noi din coadă după ce cererile anterioare sunt finalizate. MaxConcurrentInvocationsPerInstance este numărul maxim de solicitări simultane trimise de clientul SageMaker către containerul model. Dacă nu este furnizată nicio valoare, SageMaker alege o valoare optimă pentru dvs.

Scalare automată a instanțelor din punctul final de inferență asincron

Am stabilit politica de scalare automată cu o capacitate minimă de zero și o capacitate maximă de cinci instanțe. Spre deosebire de punctele finale găzduite în timp real, punctele finale de inferență asincrone acceptă reducerea la zero a instanțelor prin setarea capacității minime la zero. Noi folosim ApproximateBacklogSizePerInstance metrica pentru configurația politicii de scalare, cu un întârziere în coadă țintă de cinci per instanță pentru a extinde în continuare. Am stabilit perioada de răcire pentru ScaleInCooldown la 120 de secunde și ScaleOutCooldown la 120 de secunde. Valoarea pentru ApproximateBacklogSizePerInstance este ales în funcție de trafic și de sensibilitatea dvs. la viteza de scalare. Cu cât extindeți mai repede, cu atât veți suporta mai puține costuri, dar cu atât este mai probabil să vă extindeți din nou când apar noi solicitări. o cerere vine atunci când ești sub-scalat.

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

Pentru detalii despre API-ul pentru scalarea automată a unui punct final de inferență asincron, consultați Scalare automată a unui punct final de inferență asincron.

Configurați notificările de la punctul final de inferență asincron

Creăm două subiecte SNS separate pentru notificări de succes și eroare pentru fiecare rezultat al invocării punctului final:

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

Alte opțiuni pentru notificări includ verificarea periodică a ieșirii compartimentului S3 sau utilizarea notificărilor compartimentului S3 pentru a inițializa un AWS Lambdas funcția de încărcare a fișierelor. Notificările SNS sunt incluse în secțiunea de configurare a punctului final, așa cum a fost descris anterior.

Pentru detalii despre configurarea notificărilor de la un punct final de inferență asincron, consultați Verificați rezultatele predicției.

Monitorizați punctul final de inferență asincron

Monitorizăm punctul final de inferență asincronă cu metrici CloudWatch suplimentare încorporate specifice inferenței asincrone. De exemplu, monitorizăm lungimea cozii în fiecare instanță cu ApproximateBacklogSizePerInstance și lungimea totală a cozii cu ApproximateBacklogSize.

Pentru o listă completă de valori, consultați Monitorizarea punctelor finale de inferență asincronă.

Putem optimiza configurația punctului final pentru a obține cea mai rentabilă instanță cu performanță ridicată. De exemplu, putem folosi o instanță cu Amazon Elastic Inference sau AWS Inferentia. De asemenea, putem crește treptat nivelul de concurență până la vârful debitului în timp ce ajustăm alți parametri de server și container model.

Grafice CloudWatch

Am simulat un trafic de 10,000 de solicitări de inferență care circulă într-o perioadă către punctul final de inferență asincron activat cu politica de scalare automată descrisă în secțiunea anterioară.

Următoarea captură de ecran arată valorile instanțelor înainte ca cererile să înceapă să circule. Începem cu un punct final live cu zero instanțe care rulează:
Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Următorul grafic arată modul în care BacklogSize și BacklogSizePerInstance valorile se modifică pe măsură ce scalarea automată începe și sarcina de pe punctul final este partajată de mai multe instanțe care au fost furnizate ca parte a procesului de scalare automată.
Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

După cum se arată în următoarea captură de ecran, numărul de instanțe a crescut odată cu creșterea numărului de inferențe:
Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Următoarea captură de ecran arată cum scalarea aduce înapoi punctul final la starea inițială de zero instanțe de rulare:
Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

A curăța

După ce toate solicitările sunt finalizate, putem șterge punctul final similar cu ștergerea punctelor finale găzduite în timp real. Rețineți că, dacă setăm capacitatea minimă a punctelor finale de inferență asincrone la zero, nu există taxe de instanță suportate după ce scade la zero.

Dacă ați activat scalarea automată pentru punctul final, asigurați-vă că anulați înregistrarea punctului final ca țintă scalabilă înainte de a șterge punctul final. Pentru a face acest lucru, rulați următorul cod:

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

Nu uitați să vă ștergeți punctul final după utilizare, deoarece veți fi taxat pentru instanțele utilizate în această demonstrație.

sm_client.delete_endpoint(EndpointName=endpoint_name)

De asemenea, trebuie să ștergeți obiectele S3 și subiectele SNS. Dacă ați creat orice alte resurse AWS pentru a le consuma și a acționa asupra notificărilor SNS, este posibil să doriți să le ștergeți.

Concluzie

În această postare, am demonstrat cum să folosim noua capacitate de inferență asincronă de la SageMaker pentru a procesa o sarcină utilă de intrare mare tipică care face parte dintr-o sarcină de rezumat. Pentru inferență, am folosit un model de la Hugging Face și l-am implementat pe un punct final de inferență asincron. Am explicat provocările comune ale traficului în rafală, timpilor mari de procesare a modelului și sarcinile utile mari implicate în analiza cercetării. Capacitatea inerentă a punctului final de inferență asincronă de a gestiona cozile interne, limitele de concurență predefinite, de a configura notificările de răspuns și de a reduce automat la zero ne-a ajutat să rezolvăm aceste provocări. Codul complet pentru acest exemplu este disponibil pe GitHub.

Pentru a începe cu inferența asincronă SageMaker, verificați Inferență asincronă.


Despre Autori

Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dinesh Kumar Subramani este arhitect senior de soluții cu echipa UKIR SMB, cu sediul în Edinburgh, Scoția. El este specializat în inteligență artificială și învățare automată. Dinesh îi place să lucreze cu clienții din diverse industrii pentru a-i ajuta să-și rezolve problemele cu serviciile AWS. În afara serviciului, îi place să petreacă timpul cu familia sa, să joace șah și să se bucure de muzică în toate genurile.

Îmbunătățiți cercetarea de mare valoare cu punctele finale de inferență asincronă Hugging Face și Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Raghu Ramesha este arhitect de soluții ML cu echipa Amazon SageMaker Service. El se concentrează pe a ajuta clienții să construiască, să implementeze și să migreze sarcinile de lucru de producție ML către SageMaker la scară. El este specializat în domeniile învățarea automată, AI și viziunea pe computer și deține o diplomă de master în Informatică de la UT Dallas. În timpul liber, îi place să călătorească și să fotografieze.

Timestamp-ul:

Mai mult de la Învățare automată AWS