Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia

Amazonov iskalnik izdelkov indeksira milijarde izdelkov, služi več sto milijonom strank po vsem svetu in je ena najpogosteje uporabljanih storitev na svetu. Ekipa Amazon Search razvija tehnologijo strojnega učenja (ML), ki poganja Amazon.com iskalnik in strankam pomaga pri iskanju brez truda. Za zagotavljanje odlične uporabniške izkušnje in delovanje v velikem obsegu, ki ga zahteva Amazon.com iskalnik, ta ekipa vedno išče načine za izgradnjo stroškovno učinkovitejših sistemov z zahtevami glede zakasnitve in prepustnosti v realnem času. Ekipa nenehno raziskuje strojno opremo in prevajalnike, optimizirane za poglobljeno učenje, da pospeši usposabljanje in sklepanje modelov, hkrati pa zmanjša operativne stroške na vseh področjih.

V tej objavi opisujemo, kako uporablja Amazon Search Sklepanje AWS, visoko zmogljiv pospeševalnik, ki ga je izdelal AWS za pospešitev delovnih obremenitev sklepanja pri globokem učenju. Ekipa izvaja sklepanje ML z nizko zakasnitvijo z modeli NLP, ki temeljijo na Transformerju, na osnovi AWS Inferentia Amazonski elastični računalniški oblak (Amazon EC2) Inf1 instance in prihrani do 85 % pri infrastrukturnih stroških, hkrati pa ohranja visoko prepustnost in zmogljivost zakasnitve.

Poglobljeno učenje za predvidevanje dvojnikov in namena poizvedbe

Iskanje po Amazon Marketplace je večopravilna in večmodalna težava, ki obravnava več vnosov, kot so ASIN (standardna identifikacijska številka Amazon, 10-mestna alfanumerična številka, ki edinstveno identificira izdelke), slike izdelkov, besedilni opisi in poizvedbe. Za ustvarjanje prilagojene uporabniške izkušnje se predvidevanja iz številnih modelov uporabljajo za različne vidike iskanja. To je izziv, ker ima iskalni sistem na tisoče modelov z več deset tisoč transakcijami na sekundo (TPS) pri največji obremenitvi. Osredotočamo se na dve komponenti te izkušnje:

  • Podvojene napovedi, ki jih zaznajo stranke – Za prikaz najustreznejšega seznama izdelkov, ki se ujemajo z uporabnikovo poizvedbo, je pomembno prepoznati izdelke, med katerimi kupci težko razlikujejo
  • Predvidevanje namena poizvedbe – Za prilagoditev iskalne strani in postavitve izdelka, da bolje ustrezata temu, kar stranka išče, je pomembno predvideti namen in vrsto uporabnikove poizvedbe (na primer poizvedba, povezana z mediji, poizvedba za pomoč in druge vrste poizvedb)

Obe napovedi sta narejeni z uporabo arhitektur modela Transformer, in sicer modelov, ki temeljijo na BERT. Pravzaprav imata oba za osnovo isti model, ki temelji na BERT, in vsak na vrhu te hrbtenice zloži klasifikacijsko/regresijsko glavo.

Podvojeno predvidevanje upošteva različne besedilne funkcije za par ocenjenih izdelkov kot vhodne podatke (kot so vrsta izdelka, naslov, opis itd.) in se redno izračunava za velike nabore podatkov. Ta model je treniran od konca do konca na večopravilni način. Opravila obdelave Amazon SageMaker se uporabljajo za redno izvajanje teh paketnih delovnih obremenitev za avtomatizacijo njihovega zagona in plačajo samo za uporabljen čas obdelave. Za ta primer uporabe paketne delovne obremenitve je bila zahteva za prepustnost sklepanja 8,800 skupnih TPS.

Predvidevanje namena vzame uporabnikovo besedilno poizvedbo kot vhod in je potrebno v realnem času za dinamično oskrbo z vsakodnevnim prometom in izboljšanje uporabniške izkušnje na Amazon Marketplace. Model se uri na večrazrednem klasifikacijskem cilju. Ta model se nato uporabi naprej Amazonska storitev za kontejnerje z elastiko (Amazon ECS), ki omogoča hitro samodejno skaliranje in enostavna definicija in upravljanje uvajanja. Ker gre za primer uporabe v realnem času, je zahtevala, da je zakasnitev P99 manjša od 10 milisekund, da se zagotovi čudovita uporabniška izkušnja.

AWS Inferentia in AWS Neuron SDK

Primerki EC2 Inf1 poganja AWS Inferentia, prvi pospeševalnik ML, ki ga je izdelal AWS za pospešitev delovnih obremenitev sklepanja pri globokem učenju. Primerki Inf1 zagotavljajo do 2.3-krat višjo prepustnost in do 70 % nižje stroške na sklepanje kot primerljivi primerki EC2, ki temeljijo na GPU. Svoje modele lahko še naprej usposabljate z uporabo ogrodja po vaši izbiri (PyTorch, TensorFlow, MXNet) in jih nato preprosto namestite v AWS Inferentia, da izkoristite prednosti vgrajenih optimizacij delovanja. Z instancami Inf1 lahko uvedete široko paleto vrst modelov, od prepoznavanja slik, zaznavanja objektov, obdelave naravnega jezika (NLP) do sodobnih priporočljivih modelov.

AWS nevron je komplet za razvoj programske opreme (SDK), sestavljen iz prevajalnika, izvajalnega okolja in orodij za profiliranje, ki optimizirajo zmogljivost sklepanja ML instanc EC2 Inf1. Neuron je izvorno integriran s priljubljenimi ogrodji ML, kot sta TensorFlow in PyTorch. Zato lahko uvedete modele poglobljenega učenja na AWS Inferentia z istimi znanimi API-ji, ki jih zagotavlja vaš izbrani okvir, in izkoristite povečanje zmogljivosti in najnižjo ceno na sklepanje v oblaku.

Od svoje uvedbe je Neuron SDK še naprej povečeval širino modelov, ki jih podpira, hkrati pa še naprej izboljšuje zmogljivost in zmanjšuje stroške sklepanja. To vključuje modele NLP (BERT), modele klasifikacije slik (ResNet, VGG) in modele zaznavanja objektov (OpenPose in SSD).

Namestitev na instancah Inf1 za nizko zakasnitev, visoko prepustnost in prihranek stroškov

Skupina Amazon Search je želela prihraniti stroške, hkrati pa izpolniti svojo zahtevo po visoki prepustnosti pri predvidevanju podvajanja in zahtevo glede nizke zakasnitve pri predvidevanju namena poizvedbe. Odločili so se za uvedbo na instancah Inf1, ki temeljijo na AWS Inferentia, in ne samo, da so izpolnili zahteve glede visoke zmogljivosti, ampak tudi prihranili do 85 % pri stroških sklepanja.

Podvojene napovedi, ki jih zaznajo stranke

Pred uporabo Inf1, namenski Amazonski EMR gruča se je izvajala z instancami na osnovi CPE. Brez zanašanja na strojno pospeševanje je bilo potrebno veliko število instanc za izpolnitev zahteve po visoki prepustnosti 8,800 skupnih transakcij na sekundo. Ekipa je prešla na primerke inf1.6xlarge, vsak s 4 pospeševalniki AWS Inferentia in 16 NeuronCores (4 jedra na čip AWS Inferentia). Izsledili so model, ki temelji na transformatorju, za en sam NeuronCore in naložili en način na NeuronCore, da bi povečali prepustnost. Z izkoriščanjem prednosti 16 razpoložljivih NeuronCores so znižali stroške sklepanja za 85 % (na podlagi trenutne javne cene Amazon EC2 na zahtevo).

Predvidevanje namena poizvedbe

Glede na zahtevo po zakasnitvi P99 10 milisekund ali manj je ekipa naložila model v vse razpoložljive NeuronCore na instancah inf1.6xlarge. To lahko preprosto storite s PyTorch Neuron z uporabo torch.neuron.DataParallel API. Z uvedbo Inf1 je bila zakasnitev modela 3 milisekunde, zakasnitev od konca do konca približno 10 milisekund, največja prepustnost pri največji obremenitvi pa je dosegla 16,000 TPS.

Začnite z vzorcem kompilacije in kode za uvajanje

Sledi nekaj vzorčne kode, ki vam bo pomagala začeti z instancami Inf1 in spoznati učinkovitost in stroškovne prednosti, kot je skupina Amazon Search. Pokažemo, kako prevesti in izvesti sklepanje z modelom PyTorch z uporabo Nevron PyTorch.

Najprej je model sestavljen s 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")

Za celoten seznam možnih argumentov za trace metoda, glej PyTorch-Neuron trace Python API. Kot lahko vidite, argumenti prevajalnika se lahko prenese na torch.neuron API neposredno. Vsi operaterji FP32 so pretvorjeni v BF16 with --fp32-cast=all, ki zagotavlja najvišjo zmogljivost ob ohranjanju dinamičnega razpona. Na voljo je več možnosti za ulivanje, ki vam omogočajo nadzor zmogljivosti za kompromis glede natančnosti modela. Modeli, uporabljeni za oba primera uporabe, so bili sestavljeni za en NeuronCore (št cevovod).

Nato model naložimo na Inferentia z torch.jit.loadin ga uporabite za napovedovanje. The Čas delovanja nevronov samodejno naloži model v 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)

zaključek

Skupini Amazon Search je uspelo zmanjšati svoje stroške sklepanja za 85 % z uporabo instanc Inf1, ki temeljijo na AWS Inferentia, ob velikem prometu in zahtevnih zahtevah glede zmogljivosti. AWS Inferentia in Neuron SDK sta ekipi zagotovila prilagodljivost za optimizacijo postopka uvajanja, ločeno od usposabljanja, in predstavila plitvo krivuljo učenja prek dobro zaokroženih orodij in znanih okvirnih API-jev.

Zmogljivost in stroškovne ugodnosti lahko odklenete tako, da začnete z vzorčno kodo, ki je na voljo v tej objavi. Preverite tudi od konca do konca vaje za zagon modelov ML na Inferentii PyTorch in TensorFlow.


O avtorjih

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.João Moura je specialist za rešitve AI/ML pri Amazon Web Services. Večinoma se osredotoča na primere uporabe NLP in pomaga strankam optimizirati usposabljanje in uvajanje modela globokega učenja. Je tudi aktiven zagovornik strojne opreme, specializirane za ML, in rešitev ML z nizko kodo.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Weiqi Zhang je vodja programskega inženiringa pri Search M5, kjer dela na izdelavi velikih modelov za aplikacije strojnega učenja Amazon. Njegovi interesi vključujejo iskanje informacij in infrastrukturo strojnega učenja.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jason Carlson je programski inženir za razvoj cevovodov strojnega učenja, ki pomaga zmanjšati število ukradenih iskalnih prikazov zaradi dvojnikov, ki jih zaznajo stranke. Večinoma sodeluje z Apache Spark, AWS in PyTorch za pomoč pri uvajanju in podajanju/obdelavi podatkov za modele ML. V prostem času rad bere in teče.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Shaohui Xi je SDE v skupini Infra za razumevanje iskalnih poizvedb. Vodi prizadevanja za izgradnjo obsežnih spletnih storitev sklepanja globokega učenja z nizko zakasnitvijo in visoko razpoložljivostjo. Zunaj službe uživa v smučanju in raziskovanju dobre hrane.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Zhuoqi Zhang je inženir za razvoj programske opreme pri skupini Search Query Understanding Infra. Dela na gradnji ogrodij za streženje modelov za izboljšanje zakasnitve in prepustnosti za storitve spletnega sklepanja globokega učenja. Izven službe rad igra košarko, deska na snegu in vozi.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Haowei Sun je programski inženir v ekipi Search Query Understanding Infra. Dela na oblikovanju API-jev in infrastrukture, ki podpira storitve spletnega sklepanja globokega učenja. Njeni interesi vključujejo načrtovanje storitvenega API-ja, postavitev infrastrukture in vzdrževanje. Zunaj dela rada teče, pohodi in potuje.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jaspreet Singh je uporabni znanstvenik v ekipi M5, kjer dela na obsežnih modelih temeljev za izboljšanje nakupovalne izkušnje strank. Njegovi raziskovalni interesi vključujejo večopravilno učenje, iskanje informacij in reprezentacijsko učenje.

Kako je Amazon Search znižal stroške sklepanja ML za 85 % z AWS Inferentia PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Šruti Koparkar je višji vodja trženja izdelkov pri AWS. Strankam pomaga raziskati, oceniti in sprejeti pospešeno računalniško infrastrukturo EC2 za njihove potrebe strojnega učenja.

Časovni žig:

Več od Strojno učenje AWS