Hvordan Amazon Search reducerede omkostningerne til ML-slutninger med 85 % med AWS Inferentia

Amazons produktsøgemaskine indekserer milliarder af produkter, betjener hundreder af millioner af kunder over hele verden og er en af ​​de mest brugte tjenester i verden. Amazon Search-teamet udvikler maskinlæringsteknologi (ML), der driver Amazon.com søgemaskine og hjælper kunder med at søge ubesværet. At levere en fantastisk kundeoplevelse og operere i den massive skala, som kræves af Amazon.com søgemaskine, er dette team altid på udkig efter måder at bygge mere omkostningseffektive systemer med real-time latency og gennemløbskrav. Holdet udforsker konstant hardware og compilere, der er optimeret til dyb læring for at accelerere modeltræning og inferens, samtidig med at driftsomkostningerne reduceres over hele linjen.

I dette indlæg beskriver vi, hvordan Amazon Search bruger AWS-inferens, et højtydende acceleratorformål bygget af AWS til at accelerere deep learning-inferens-arbejdsbelastninger. Holdet kører ML-inferens med lav latens med Transformer-baserede NLP-modeller på AWS Inferentia-baseret Amazon Elastic Compute Cloud (Amazon EC2) Inf1-forekomster og sparer op til 85 % i infrastrukturomkostninger, samtidig med at stærk gennemløbs- og latensydelse opretholdes.

Dyb læring til forudsigelse af duplikat- og forespørgselshensigter

At søge på Amazon Marketplace er et multi-task, multimodalt problem, der håndterer flere input såsom ASIN'er (Amazon Standard Identification Number, et 10-cifret alfanumerisk nummer, der unikt identificerer produkter), produktbilleder, tekstbeskrivelser og forespørgsler. For at skabe en skræddersyet brugeroplevelse bruges forudsigelser fra mange modeller til forskellige aspekter af søgning. Dette er en udfordring, fordi søgesystemet har tusindvis af modeller med titusindvis af transaktioner i sekundet (TPS) ved spidsbelastning. Vi fokuserer på to komponenter af denne oplevelse:

  • Kundeopfattede duplikerede forudsigelser – For at vise den mest relevante liste over produkter, der matcher en brugers forespørgsel, er det vigtigt at identificere produkter, som kunderne har svært ved at skelne mellem
  • Forespørgselshensigtsforudsigelse – For at tilpasse søgesiden og produktlayoutet, så det passer bedre til det, kunden leder efter, er det vigtigt at forudsige hensigten og typen af ​​brugerens forespørgsel (f.eks. en medie-relateret forespørgsel, hjælpeforespørgsel og andre forespørgselstyper)

Begge disse forudsigelser er lavet ved hjælp af Transformer-modelarkitekturer, nemlig BERT-baserede modeller. Faktisk deler begge den samme BERT-baserede model som basis, og hver enkelt stabler et klassifikations-/regressionshoved oven på denne rygrad.

Duplikatforudsigelse indtager forskellige tekstmæssige funktioner for et par evaluerede produkter som input (såsom produkttype, titel, beskrivelse og så videre) og beregnes periodisk for store datasæt. Denne model trænes fra ende til anden på en multi-task måde. Søg efter Amazon SageMaker Processing bruges til at køre disse batch-arbejdsbelastninger periodisk for at automatisere deres lancering og kun betale for den behandlingstid, der bruges. For denne batch-arbejdsbelastningsanvendelse var kravet til slutningsgennemløb 8,800 samlet TPS.

Hensigtsforudsigelse tager brugerens tekstforespørgsel som input og er nødvendig i realtid for dynamisk at betjene hverdagstrafik og forbedre brugeroplevelsen på Amazon Marketplace. Modellen er trænet på et multi-klasse klassifikationsmål. Denne model implementeres derefter på Amazon Elastic Container Service (Amazon ECS), som muliggør hurtig automatisk skalering og nem implementeringsdefinition og -styring. Fordi dette er en real-time use case, krævede det, at P99-forsinkelsen var under 10 millisekunder for at sikre en dejlig brugeroplevelse.

AWS Inferentia og AWS Neuron SDK

EC2 Inf1 tilfælde er drevet af AWS Inferentia, det første ML-acceleratorformål bygget af AWS til at accelerere deep learning-inferens-arbejdsbelastninger. Inf1-instanser leverer op til 2.3 gange højere gennemløb og op til 70 % lavere pris pr. slutning end sammenlignelige GPU-baserede EC2-instanser. Du kan blive ved med at træne dine modeller ved at bruge dit valgte framework (PyTorch, TensorFlow, MXNet), og derefter nemt implementere dem på AWS Inferentia for at drage fordel af de indbyggede ydelsesoptimeringer. Du kan implementere en bred vifte af modeltyper ved hjælp af Inf1-instanser, lige fra billedgenkendelse, objektgenkendelse, naturlig sprogbehandling (NLP) og moderne anbefalingsmodeller.

AWS Neuron er et softwareudviklingssæt (SDK) bestående af en compiler, runtime og profileringsværktøjer, der optimerer ML-inferensydelsen af ​​EC2 Inf1-instanserne. Neuron er indbygget integreret med populære ML-frameworks såsom TensorFlow og PyTorch. Derfor kan du implementere deep learning-modeller på AWS Inferentia med de samme velkendte API'er, som din foretrukne ramme, og drage fordel af boostet i ydeevne og den laveste pris pr. slutning i skyen.

Siden lanceringen har Neuron SDK fortsat med at øge bredden af ​​modeller, den understøtter, samtidig med at den fortsætter med at forbedre ydeevnen og reducere omkostningerne ved slutninger. Dette inkluderer NLP-modeller (BERT'er), billedklassificeringsmodeller (ResNet, VGG) og objektdetekteringsmodeller (OpenPose og SSD).

Implementer på Inf1-instanser for lav latenstid, høj gennemløb og omkostningsbesparelser

Amazon Search-teamet ønskede at spare omkostninger og samtidig leve op til deres høje gennemløbskrav til forudsigelse af duplikering og kravet om lav latens på forudsigelse af forespørgselshensigter. De valgte at implementere på AWS Inferentia-baserede Inf1-instanser og opfyldte ikke kun de høje ydeevnekrav, men sparede også op til 85 % på inferensomkostninger.

Kundeopfattede duplikerede forudsigelser

Før brugen af ​​Inf1, en dedikeret Amazon EMR klyngen kørte ved hjælp af CPU-baserede forekomster. Uden at stole på hardwareacceleration var et stort antal tilfælde nødvendige for at opfylde det høje gennemløbskrav på 8,800 samlede transaktioner i sekundet. Holdet skiftede til inf1.6xlarge instanser, hver med 4 AWS Inferentia-acceleratorer og 16 NeuronCores (4 kerner pr. AWS Inferentia-chip). De sporede den transformer-baserede model for en enkelt NeuronCore og indlæste en tilstand pr. NeuronCore for at maksimere gennemløbet. Ved at udnytte de 16 tilgængelige NeuronCores reducerede de slutningsomkostningerne med 85 % (baseret på den nuværende offentlige Amazon EC2 on-demand-prissætning).

Forespørgselshensigtsforudsigelse

I betragtning af P99-latenskravet på 10 millisekunder eller mindre, indlæste holdet modellen til alle tilgængelige NeuronCore på inf1.6xlarge forekomster. Du kan nemt gøre dette med PyTorch Neuron ved hjælp af torch.neuron.DataParallel API. Med Inf1-implementeringen var modellatenstiden 3 millisekunder, ende-til-ende-latenstiden var cirka 10 millisekunder, og maksimal gennemstrømning ved spidsbelastning nåede 16,000 TPS.

Kom godt i gang med eksempler på kompilering og implementeringskode

Det følgende er en prøvekode, der hjælper dig med at komme i gang med Inf1-forekomster og realisere ydeevnen og omkostningsfordelene som Amazon Search-teamet. Vi viser, hvordan man kompilerer og udfører inferens med en PyTorch-model ved hjælp af PyTorch Neuron.

Først kompileres modellen med torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

For den fulde liste over mulige argumenter til trace metode, se PyTorch-Neuron sporing af Python API. Som du kan se, kompilator argumenter kan videregives til torch.neuron API direkte. Alle FP32-operatører er castet til BF16 with --fp32-cast=all, der giver den højeste ydeevne, samtidig med at dynamisk rækkevidde bevares. Flere støbningsmuligheder er tilgængelige, så du kan styre ydeevnen for at modellere præcision. De modeller, der blev brugt til begge use cases, blev kompileret til en enkelt NeuronCore (nr rørledning).

Vi indlæser så modellen på Inferentia med torch.jit.load, og brug det til forudsigelse. Det Neuron køretid indlæser automatisk modellen til NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

Konklusion

Amazon Search-teamet var i stand til at reducere deres slutningsomkostninger med 85 % ved at bruge AWS Inferentia-baserede Inf1-instanser under tung trafik og krævende ydeevnekrav. AWS Inferentia og Neuron SDK gav teamet fleksibiliteten til at optimere implementeringsprocessen adskilt fra træning og fremlægge en overfladisk læringskurve via velafrundede værktøjer og velkendte ramme-API'er.

Du kan låse op for ydeevne og omkostningsfordele ved at komme i gang med prøvekoden i dette indlæg. Tjek også ende-til-ende tutorials at køre ML-modeller på Inferentia med PyTorch , TensorFlow.


Om forfatterne

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.João Moura er AI/ML Specialist Solutions Architect hos Amazon Web Services. Han er for det meste fokuseret på NLP-brugscases og hjælper kunder med at optimere træning og implementering af deep learning-modeller. Han er også en aktiv fortaler for ML-specialiseret hardware og lavkode ML-løsninger.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Weiqi Zhang er Software Engineering Manager hos Search M5, hvor han arbejder med at produktisere modeller i stor skala til Amazons maskinlæringsapplikationer. Hans interesser omfatter informationssøgning og maskinlæringsinfrastruktur.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Jason Carlson er en softwareingeniør til udvikling af maskinlæringspipelines for at hjælpe med at reducere antallet af stjålne søgevisninger på grund af kundeopfattede dubletter. Han arbejder for det meste med Apache Spark, AWS og PyTorch for at hjælpe med at implementere og feed/behandle data til ML-modeller. I sin fritid kan han godt lide at læse og løbe.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Shaohui Xi er en SDE hos Search Query Understanding Infra-teamet. Han leder indsatsen for at bygge storstilede dyb læring online inferenstjenester med lav latenstid og høj tilgængelighed. Uden for arbejdet nyder han at stå på ski og udforske god mad.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Zhuoqi Zhang er softwareudviklingsingeniør hos Search Query Understanding Infra-teamet. Han arbejder på at opbygge modelserveringsrammer for at forbedre latens og gennemløb til dyb læring online inferenstjenester. Uden for arbejdet kan han lide at spille basketball, snowboarde og køre bil.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Haowei Sun er softwareingeniør i Search Query Understanding Infra-teamet. Hun arbejder på at designe API'er og infrastruktur, der understøtter deep learning online inferenstjenester. Hendes interesser omfatter service API-design, infrastrukturopsætning og vedligeholdelse. Uden for arbejdet nyder hun at løbe, vandre og rejse.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Jaspreet Singh er en Applied Scientist på M5-teamet, hvor han arbejder på store funderingsmodeller for at forbedre kundekøbsoplevelsen. Hans forskningsinteresser omfatter multi-task læring, informationssøgning og repræsentationslæring.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Shruti Koparkar er Senior Product Marketing Manager hos AWS. Hun hjælper kunder med at udforske, evaluere og anvende EC2 accelereret computerinfrastruktur til deres maskinlæringsbehov.

Tidsstempel:

Mere fra AWS maskinindlæring