Kuidas Amazon Search vähendas AWS Inferentia abil ML-i järeldamiskulusid 85%.

Amazoni tooteotsingumootor indekseerib miljardeid tooteid, teenindab sadu miljoneid kliente kogu maailmas ja on üks enimkasutatud teenuseid maailmas. Amazon Searchi meeskond töötab välja masinõppe (ML) tehnoloogiat, mis annab jõudu Amazon.com otsingumootor ja aitab klientidel vaevata otsida. Suurepärase kliendikogemuse pakkumiseks ja laialdaseks tegutsemiseks, mida nõuab Amazon.com otsingumootor, see meeskond otsib alati viise, kuidas luua kuluefektiivsemaid süsteeme reaalajas latentsus- ja läbilaskevõimenõuetega. Meeskond uurib pidevalt süvaõppe jaoks optimeeritud riistvara ja kompilaatoreid, et kiirendada mudeli väljaõpet ja järeldusi, vähendades samal ajal tegevuskulusid.

Selles postituses kirjeldame, kuidas Amazon Search kasutab AWS Inferentia, AWS-i loodud suure jõudlusega kiirendi eesmärk sügava õppimise järelduste töökoormuse kiirendamiseks. Meeskond teeb väikese latentsusega ML-i järeldusi transformeripõhiste NLP-mudelitega AWS Inferentia-põhisel Amazon Elastic Compute Cloud (Amazon EC2) Inf1 eksemplarid ja säästab kuni 85% infrastruktuuri kuludelt, säilitades samal ajal tugeva läbilaskevõime ja latentsuse.

Sügav õppimine dubleerimise ja päringu kavatsuse ennustamiseks

Amazoni turuplatsil otsimine on mitut ülesannet hõlmav, mitmeliigiline probleem, mis tegeleb mitme sisendiga, nagu ASIN-id (Amazon Standard Identification Number, 10-kohaline tähtnumbriline number, mis identifitseerib tooteid üheselt), tootepildid, tekstilised kirjeldused ja päringud. Kohandatud kasutajakogemuse loomiseks kasutatakse paljude mudelite ennustusi otsingu erinevate aspektide jaoks. See on väljakutse, sest otsingusüsteemis on tuhandeid mudeleid kümnete tuhandete tehingutega sekundis (TPS) tippkoormusel. Keskendume selle kogemuse kahele komponendile:

  • Kliendi poolt tajutavad topeltprognoosid – Kasutaja päringule vastavate toodete kõige asjakohasema loendi kuvamiseks on oluline tuvastada tooted, mida klientidel on raske eristada.
  • Päringu kavatsuse ennustus – Otsingulehe ja tootepaigutuse kohandamiseks nii, et see sobiks paremini kliendi otsitavaga, on oluline ennustada kasutaja päringu eesmärki ja tüüpi (nt meediaga seotud päring, abipäring ja muud päringutüübid).

Mõlemad ennustused on tehtud Transformeri mudeliarhitektuuride, nimelt BERT-põhiste mudelite abil. Tegelikult on mõlemal aluseks sama BERT-põhine mudel ja kumbki asetab selle selgroo peale klassifitseerimis-/regressioonipea.

Dubleeritud ennustus kasutab hinnatud tootepaari jaoks sisenditena erinevaid tekstifunktsioone (nt toote tüüp, pealkiri, kirjeldus jne) ja arvutatakse suurte andmehulkade puhul perioodiliselt. Seda mudelit treenitakse otsast lõpuni mitme ülesande täitmiseks. Amazon SageMaker töötlemise tööpakkumised kasutatakse nende partiitöökoormuste perioodiliseks käitamiseks, et automatiseerida nende käivitamist ja maksta ainult kasutatud töötlemisaja eest. Selle partii töökoormuse kasutusjuhtumi puhul oli järelduste läbilaskevõime nõue 8,800 TPS-i kokku.

Kavatsuse ennustamine võtab sisendiks kasutaja tekstipäringu ja seda on vaja reaalajas igapäevase liikluse dünaamiliseks teenindamiseks ja Amazon Marketplace'i kasutajakogemuse parandamiseks. Mudel on koolitatud mitme klassi klassifitseerimise eesmärgil. Seejärel võetakse see mudel kasutusele Amazoni elastsete konteinerite teenus (Amazon ECS), mis võimaldab kiiret automaatset skaleerimist ja lihtne juurutamise määratlemine ja haldamine. Kuna see on reaalajas kasutusjuht, pidi veetleva kasutuskogemuse tagamiseks P99 latentsus olema alla 10 millisekundi.

AWS Inferentia ja AWS Neuron SDK

EC2 Inf1 eksemplarid toiteallikaks on AWS Inferentia, esimene ML-kiirendi eesmärk, mille AWS ehitas, et kiirendada sügava õppimise järelduste töökoormust. Inf1 eksemplarid pakuvad kuni 2.3 korda suuremat läbilaskevõimet ja kuni 70% madalamat kulu ühe järelduse kohta kui võrreldavad GPU-põhised EC2 eksemplarid. Saate jätkata oma mudelite treenimist oma valitud raamistikuga (PyTorch, TensorFlow, MXNet) ja seejärel hõlpsasti juurutada need AWS Inferentias, et saada kasu sisseehitatud jõudluse optimeerimisest. Inf1 eksemplaride abil saate juurutada laia valikut mudelitüüpe alates pildituvastusest, objektituvastusest, loomuliku keele töötlemisest (NLP) ja kaasaegsetest soovitusmudelitest.

AWS Neuron on tarkvaraarenduskomplekt (SDK), mis koosneb kompilaatorist, käitusajast ja profiilide koostamise tööriistadest, mis optimeerivad EC2 Inf1 eksemplaride ML-i järelduste jõudlust. Neuron on algselt integreeritud populaarsete ML-i raamistikega, nagu TensorFlow ja PyTorch. Seetõttu saate AWS Inferentias juurutada süvaõppemudeleid samade tuttavate API-dega, mida pakub teie valitud raamistik, ning saada kasu pilve jõudluse kasvust ja madalaimast järelduse hinnast.

Alates selle käivitamisest on Neuron SDK jätkanud toetatavate mudelite arvu suurendamist, parandades samal ajal jõudlust ja vähendades järelduskulusid. See hõlmab NLP-mudeleid (BERT), kujutiste klassifitseerimise mudeleid (ResNet, VGG) ja objektituvastusmudeleid (OpenPose ja SSD).

Kasutage Inf1 eksemplaridel madala latentsusaja, suure läbilaskevõime ja kulude kokkuhoiu tagamiseks

Amazon Searchi meeskond soovis kulusid kokku hoida, täites samal ajal dubleerimise prognoosi kõrge läbilaskevõime ja päringu kavatsuste prognoosimise madala latentsusaja nõude. Nad otsustasid juurutada AWS Inferentia-põhistel Inf1 eksemplaridel ja mitte ainult ei vastanud kõrgetele jõudlusnõuetele, vaid säästsid ka kuni 85% järelduskuludelt.

Kliendi poolt tajutavad topeltprognoosid

Enne Inf1 kasutamist spetsiaalne Amazon EMR klaster töötas CPU-põhiseid eksemplare kasutades. Ilma riistvaralisele kiirendusele tuginemata oli suure läbilaskevõime nõude (8,800 tehingut sekundis) täitmiseks vaja palju eksemplare. Meeskond läks üle inf1.6xsuurtele eksemplaridele, millest igaühel oli 4 AWS Inferentia kiirendit ja 16 NeuronCore'i (4 tuuma AWS Inferentia kiibi kohta). Nad jälgisid ühe NeuronCore'i transformaatoril põhinevat mudelit ja laadisid läbilaskevõime maksimeerimiseks ühe režiimi NeuronCore'i kohta. Kasutades ära 16 saadaolevat NeuronCore'i, vähendasid nad järelduskulusid 85% (praeguse avaliku Amazon EC2 tellitava hinnakujunduse alusel).

Päringu kavatsuse ennustus

Arvestades, et P99 latentsusnõue on 10 millisekundit või vähem, laadis meeskond mudeli igasse saadaolevasse NeuronCore'i inf1.6xlarge eksemplaridel. Saate seda PyTorch Neuroniga hõlpsalt teha, kasutades tõrvik.neuroni.DataParallel API. Inf1 juurutamisel oli mudeli latentsusaeg 3 millisekundit, otsast lõpuni latentsusaeg ligikaudu 10 millisekundit ja maksimaalne läbilaskevõime tippkoormusel jõudis 16,000 XNUMX TPS-ni.

Alustage näidiskoostamise ja juurutamiskoodiga

Järgnevalt on toodud mõned näidiskoodid, mis aitavad teil Inf1 eksemplaride kasutamist alustada ning jõudlust ja kulukasu realiseerida, nagu Amazon Searchi meeskond. Näitame, kuidas PyTorchi mudeliga kompileerida ja järeldusi teha, kasutades PyTorchi neuron.

Esiteks koostatakse mudel 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")

Võimalike argumentide täieliku loendi jaoks trace meetod, viidata PyTorch-Neuron Trace Python API. Nagu sa näed, kompilaatori argumendid saab edasi anda torch.neuron API otse. Kõik FP32 operaatorid on üle kantud BF16 with --fp32-cast=all, mis tagab kõrgeima jõudluse, säilitades samal ajal dünaamilise ulatuse. Saadaval on rohkem valamisvalikuid, mis võimaldavad teil jõudlust kontrollida ja modelleerida täpsuse kompromissi. Mõlema kasutusjuhtumi jaoks kasutatud mudelid koostati ühe NeuronCore'i jaoks (nr torujuhtmestik).

Seejärel laadime mudeli Inferentiasse koos torch.jit.loadja kasutage seda ennustamiseks. The Neuronite tööaeg laadib mudeli automaatselt NeuronCoresi.

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)

Järeldus

Amazon Searchi meeskond suutis oma järelduskulusid 85% vähendada, kasutades AWS Inferentia-põhiseid Inf1 eksemplare, suure liikluse ja nõudlike jõudlusnõuete korral. AWS Inferentia ja Neuron SDK andsid meeskonnale paindlikkuse, et optimeerida juurutamisprotsessi eraldi koolitusest ning luua pinnapealne õppimiskõver, kasutades hästi ümardatud tööriistu ja tuttavaid raamistiku API-sid.

Saate jõudluse ja kulukasu avada, alustades selles postituses esitatud näidiskoodiga. Vaadake ka otsast lõpuni õpetused ML-mudelite käivitamiseks Inferentias PyTorch ja TensorFlow.


Autoritest

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.João Moura on AI/ML spetsialistilahenduste arhitekt ettevõttes Amazon Web Services. Ta keskendub peamiselt NLP kasutusjuhtudele ning aitab klientidel optimeerida süvaõppemudeli koolitust ja juurutamist. Samuti on ta aktiivne ML-le spetsialiseerunud riistvara ja madala koodiga ML-lahenduste pooldaja.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Weiqi Zhang on Search M5 tarkvaratehnika juht, kus ta töötab Amazoni masinõpperakenduste jaoks suuremahuliste mudelite tootmisega. Tema huvide hulka kuuluvad teabeotsing ja masinõppe infrastruktuur.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Jason Carlson on tarkvarainsener masinõppe torujuhtmete arendamiseks, et aidata vähendada klientide poolt tajutavate duplikaatide tõttu varastatud otsingu näitamiste arvu. Ta töötab enamasti Apache Sparki, AWS-i ja PyTorchiga, et aidata ML-mudelite jaoks andmeid juurutada ja edastada/töötleda. Vabal ajal meeldib talle lugeda ja jooksmas käia.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Shaohui Xi on SDE otsingupäringute mõistmise infrastruktuuri meeskonnas. Ta juhib jõupingutusi suuremahuliste süvaõppe veebipõhiste järeldusteenuste loomisel, millel on madal latentsusaeg ja kõrge kättesaadavus. Väljaspool tööd naudib ta suusatamist ja heade toitude avastamist.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Zhuoqi Zhang on tarkvaraarenduse insener Search Query Understanding Infra meeskonnas. Ta töötab mudelite teenindamise raamistike loomise kallal, et parandada süvaõppe veebipõhiste järeldusteenuste latentsust ja läbilaskevõimet. Väljaspool tööd meeldib talle mängida korvpalli, sõita lumelauaga ja sõita.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Haowei päike on tarkvarainsener Search Query Understanding Infra meeskonnas. Ta töötab API-de ja infrastruktuuri kujundamisel, mis toetab süvaõppe veebipõhiseid järeldusteenuseid. Tema huvid hõlmavad teenuse API disaini, infrastruktuuri seadistamist ja hooldust. Väljaspool tööd naudib ta jooksmist, matkamist ja reisimist.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Jaspreet Singh on rakendusteadlane M5 meeskonnas, kus ta töötab suuremahuliste alusmudelite kallal, et parandada klientide ostukogemust. Tema uurimishuvide hulka kuuluvad mitme ülesandega õppimine, teabeotsing ja esitusõpe.

Kuidas Amazon Search AWS Inferentia PlatoBlockchain Data Intelligence abil ML-i järelduskulusid 85% võrra vähendas. Vertikaalne otsing. Ai.Shruti Koparkar on AWS-i vanemtoodete turundusjuht. Ta aitab klientidel uurida, hinnata ja oma masinõppe vajaduste jaoks EC2 kiirendatud andmetöötluse infrastruktuuri kasutusele võtta.

Ajatempel:

Veel alates AWS-i masinõpe