Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia

Amazons produktsøkemotor indekserer milliarder av produkter, betjener hundrevis av millioner av kunder over hele verden, og er en av de mest brukte tjenestene i verden. Amazon Search-teamet utvikler maskinlæringsteknologi (ML) som driver Amazon.com søkemotor og hjelper kundene å søke enkelt. For å levere en god kundeopplevelse og operere i den massive skalaen som kreves av Amazon.com søkemotor, er dette teamet alltid på utkikk etter måter å bygge mer kostnadseffektive systemer med sanntids latens og gjennomstrømningskrav. Teamet utforsker hele tiden maskinvare og kompilatorer som er optimalisert for dyp læring for å akselerere modellopplæring og slutninger, samtidig som de reduserer driftskostnadene over hele linjen.

I dette innlegget beskriver vi hvordan Amazon Search bruker AWS slutning, en akselerator med høy ytelse bygget av AWS for å akselerere arbeidsbelastninger for dyp læring. Teamet kjører ML-slutning med lav latens med transformatorbaserte NLP-modeller på AWS Inferentia-basert Amazon Elastic Compute Cloud (Amazon EC2) Inf1-forekomster, og sparer opptil 85 % i infrastrukturkostnader, samtidig som sterk gjennomstrømning og latensytelse opprettholdes.

Dyplæring for duplikat- og spørringshensiktsprediksjon

Å søke på Amazon Marketplace er et multi-oppgave, multimodalt problem, som håndterer flere innganger som ASIN-er (Amazon Standard Identification Number, et 10-sifret alfanumerisk nummer som unikt identifiserer produkter), produktbilder, tekstbeskrivelser og spørringer. For å skape en skreddersydd brukeropplevelse, brukes spådommer fra mange modeller for ulike aspekter ved søk. Dette er en utfordring fordi søkesystemet har tusenvis av modeller med titusenvis av transaksjoner per sekund (TPS) ved toppbelastning. Vi fokuserer på to komponenter av denne opplevelsen:

  • Kundeoppfattede dupliserte spådommer – For å vise den mest relevante listen over produkter som samsvarer med en brukers søk, er det viktig å identifisere produkter som kunder har vanskelig for å skille mellom
  • Forespørselshensiktsprediksjon – For å tilpasse søkesiden og produktlayouten slik at den passer bedre til det kunden ser etter, er det viktig å forutsi intensjonen og typen av brukerens søk (for eksempel et medierelatert søk, hjelpespørring og andre søketyper)

Begge disse spådommene er laget ved hjelp av transformatormodellarkitekturer, nemlig BERT-baserte modeller. Faktisk deler begge den samme BERT-baserte modellen som basis, og hver enkelt stabler et klassifiserings-/regresjonshode på toppen av denne ryggraden.

Duplikatprediksjon tar inn ulike tekstfunksjoner for et par evaluerte produkter som input (som produkttype, tittel, beskrivelse og så videre) og beregnes med jevne mellomrom for store datasett. Denne modellen er trent ende til ende på en multi-oppgave måte. Amazon SageMaker Processing jobber brukes til å kjøre disse batch-arbeidsbelastningene med jevne mellomrom for å automatisere lanseringen og kun betale for behandlingstiden som brukes. For denne brukssaken for batcharbeidsbelastning var kravet for slutningsgjennomstrømning 8,800 XNUMX totalt TPS.

Intentprediksjon tar brukerens tekstsøk som input og er nødvendig i sanntid for dynamisk å betjene daglig trafikk og forbedre brukeropplevelsen på Amazon Marketplace. Modellen er trent på et flerklasses klassifiseringsmål. Denne modellen blir deretter distribuert på Amazon Elastic Container Service (Amazon ECS), som muliggjør rask automatisk skalering og enkel distribusjonsdefinisjon og -administrasjon. Fordi dette er en brukssak i sanntid, krevde det at P99-forsinkelsen var under 10 millisekunder for å sikre en herlig brukeropplevelse.

AWS Inferentia og AWS Neuron SDK

EC2 Inf1-forekomster er drevet av AWS Inferentia, det første ML-akseleratorformålet bygget av AWS for å akselerere arbeidsbelastninger for dyp læringsslutning. Inf1-forekomster leverer opptil 2.3 ganger høyere gjennomstrømning og opptil 70 % lavere kostnad per slutning enn sammenlignbare GPU-baserte EC2-forekomster. Du kan fortsette å trene modellene dine ved å bruke ditt valgte rammeverk (PyTorch, TensorFlow, MXNet), og deretter enkelt distribuere dem på AWS Inferentia for å dra nytte av de innebygde ytelsesoptimaliseringene. Du kan distribuere et bredt spekter av modelltyper ved å bruke Inf1-forekomster, fra bildegjenkjenning, objektgjenkjenning, naturlig språkbehandling (NLP) og moderne anbefalingsmodeller.

AWS nevron er et programvareutviklingssett (SDK) som består av en kompilator, kjøretids- og profileringsverktøy som optimaliserer ML-inferensytelsen til EC2 Inf1-forekomstene. Neuron er integrert med populære ML-rammeverk som TensorFlow og PyTorch. Derfor kan du distribuere dyplæringsmodeller på AWS Inferentia med de samme kjente API-ene som leveres av ditt valgte rammeverk, og dra nytte av ytelsesøkningen og laveste kostnad per slutning i skyen.

Siden lanseringen har Neuron SDK fortsatt å øke bredden av modeller den støtter samtidig som den fortsetter å forbedre ytelsen og redusere slutningskostnadene. Dette inkluderer NLP-modeller (BERT), bildeklassifiseringsmodeller (ResNet, VGG) og objektdeteksjonsmodeller (OpenPose og SSD).

Distribuer på Inf1-instanser for lav ventetid, høy gjennomstrømning og kostnadsbesparelser

Amazon Search-teamet ønsket å spare kostnader samtidig som de oppfyller kravet til høy gjennomstrømning for dupliseringsprediksjon, og kravet til lav latens for prediksjon av spørringshensikt. De valgte å distribuere på AWS Inferentia-baserte Inf1-instanser og oppfylte ikke bare de høye ytelseskravene, men sparte også opptil 85 % på slutningskostnader.

Kundeoppfattede dupliserte spådommer

Før bruk av Inf1, en dedikert Amazon EMR klyngen kjørte med CPU-baserte forekomster. Uten å stole på maskinvareakselerasjon, var et stort antall tilfeller nødvendig for å møte det høye gjennomstrømningskravet på 8,800 totale transaksjoner per sekund. Teamet byttet til inf1.6xlarge instanser, hver med 4 AWS Inferentia-akseleratorer og 16 NeuronCores (4 kjerner per AWS Inferentia-brikke). De sporet den transformatorbaserte modellen for en enkelt NeuronCore og lastet inn én modus per NeuronCore for å maksimere gjennomstrømningen. Ved å dra nytte av de 16 tilgjengelige NeuronCores, reduserte de slutningskostnadene med 85 % (basert på gjeldende offentlige Amazon EC2 on-demand-priser).

Forespørselshensiktsprediksjon

Gitt P99-latenskravet på 10 millisekunder eller mindre, lastet teamet modellen til alle tilgjengelige NeuronCore på inf1.6xlarge forekomster. Du kan enkelt gjøre dette med PyTorch Neuron ved å bruke torch.neuron.DataParallel API. Med Inf1-distribusjonen var modellforsinkelsen 3 millisekunder, ende-til-ende-latens var omtrent 10 millisekunder, og maksimal gjennomstrømning ved toppbelastning nådde 16,000 XNUMX TPS.

Kom i gang med eksempelkompilering og distribusjonskode

Følgende er noen eksempelkode for å hjelpe deg med å komme i gang med Inf1-forekomster og realisere ytelsen og kostnadsfordelene som Amazon Search-teamet. Vi viser hvordan du kompilerer og utfører inferens med en PyTorch-modell ved å bruke PyTorch Neuron.

Først er modellen kompilert 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 fullstendige listen over mulige argumenter til trace metode, se PyTorch-Neuron sporing av Python API. Som du kan se, kompilatorargumenter kan føres til torch.neuron API direkte. Alle FP32-operatører er castet til BF16 with --fp32-cast=all, gir den høyeste ytelsen samtidig som dynamisk rekkevidde bevares. Flere støpealternativer er tilgjengelige for å la deg kontrollere ytelsen for å modellere presisjonsavveininger. Modellene som ble brukt for begge brukstilfellene ble kompilert for en enkelt NeuronCore (nr rørledning).

Vi laster deretter modellen på Inferentia med torch.jit.load, og bruk det til prediksjon. De Neuron kjøretid laster 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)

konklusjonen

Amazon Search-teamet klarte å redusere slutningskostnadene sine med 85 % ved å bruke AWS Inferentia-baserte Inf1-forekomster, under stor trafikk og krevende ytelseskrav. AWS Inferentia og Neuron SDK ga teamet fleksibiliteten til å optimalisere distribusjonsprosessen separat fra trening, og legge frem en grunn læringskurve via godt avrundede verktøy og kjente rammeverk-APIer.

Du kan låse opp ytelses- og kostnadsfordeler ved å komme i gang med eksempelkoden i dette innlegget. Sjekk også ut ende-til-ende tutorials å kjøre ML-modeller på Inferentia med PyTorch og tensorflow.


Om forfatterne

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.João Moura er en AI/ML-spesialistløsningsarkitekt hos Amazon Web Services. Han er for det meste fokusert på NLP-brukstilfeller og å hjelpe kunder med å optimalisere opplæring og implementering av dyplæringsmodeller. Han er også en aktiv talsmann for ML-spesialisert maskinvare og lavkode ML-løsninger.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Weiqi Zhang er Software Engineering Manager hos Search M5, hvor han jobber med å produktisere store modeller for Amazons maskinlæringsapplikasjoner. Hans interesser inkluderer informasjonsinnhenting og maskinlæringsinfrastruktur.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jason Carlson er en programvareingeniør for å utvikle pipelines for maskinlæring for å redusere antallet stjålne søkevisninger på grunn av kundeoppfattede duplikater. Han jobber for det meste med Apache Spark, AWS og PyTorch for å hjelpe til med å distribuere og mate/behandle data for ML-modeller. På fritiden liker han å lese og løpe.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Shaohui Xi er en SDE ved Search Query Understanding Infra-teamet. Han leder arbeidet med å bygge storskala dyplæringstjenester på nett med lav ventetid og høy tilgjengelighet. Utenom jobben liker han å gå på ski og utforske god mat.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Zhuoqi Zhang er programvareutviklingsingeniør ved Search Query Understanding Infra-teamet. Han jobber med å bygge modellserveringsrammer for å forbedre latens og gjennomstrømning for dyplæringstjenester på nett. Utenom jobben liker han å spille basketball, kjøre snowboard og kjøre bil.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Haowei Sun er programvareingeniør i Search Query Understanding Infra-teamet. Hun jobber med å designe APIer og infrastruktur som støtter dyplæringstjenester på nett. Hennes interesser inkluderer service API-design, infrastrukturoppsett og vedlikehold. Utenom jobben liker hun å løpe, gå på tur og reise.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jaspreet Singh er en Applied Scientist på M5-teamet, hvor han jobber med storskala fundamentmodeller for å forbedre kundekjøpsopplevelsen. Hans forskningsinteresser inkluderer fleroppgavelæring, informasjonsinnhenting og representasjonslæring.

Hvordan Amazon Search reduserte ML-slutningskostnadene med 85 % med AWS Inferentia PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Shruti Koparkar er Senior Product Marketing Manager hos AWS. Hun hjelper kundene med å utforske, evaluere og ta i bruk EC2-akselerert datainfrastruktur for deres maskinlæringsbehov.

Tidstempel:

Mer fra AWS maskinlæring