Kuinka Amazon Search alensi ML-päättelykustannuksia 85 % AWS Inferentian avulla

Amazonin tuotehakukone indeksoi miljardeja tuotteita, palvelee satoja miljoonia asiakkaita maailmanlaajuisesti ja on yksi eniten käytetyistä palveluista maailmassa. Amazon Search -tiimi kehittää koneoppimistekniikkaa (ML), joka antaa voiman Amazon.com hakukone ja auttaa asiakkaita etsimään vaivattomasti. Tarjota loistava asiakaskokemus ja toimia palvelun vaatimassa massiivisessa mittakaavassa Amazon.com hakukoneen, tämä tiimi etsii aina tapoja rakentaa kustannustehokkaampia järjestelmiä, joissa on reaaliaikaiset viive- ja suorituskykyvaatimukset. Tiimi tutkii jatkuvasti syvään oppimiseen optimoituja laitteistoja ja kääntäjiä nopeuttaakseen mallin koulutusta ja päättämistä ja samalla vähentääkseen käyttökustannuksia kaikkialla.

Tässä viestissä kuvaamme, kuinka Amazon Search käyttää AWS Inferencia, AWS:n rakentama tehokas kiihdytin, joka nopeuttaa syvän oppimisen päättelyn työtaakkaa. Tiimi suorittaa matalan latenssin ML-päätelmiä muuntajapohjaisilla NLP-malleilla AWS Inferentia -pohjaisella Amazonin elastinen laskentapilvi (Amazon EC2) Inf1-instanssit ja säästää jopa 85 % infrastruktuurikustannuksissa säilyttäen samalla vahvan suorituskyvyn ja viiveen.

Syvä oppiminen päällekkäisyyksien ja kyselyaikojen ennustamiseen

Haku Amazon Marketplacesta on monitehtävä, multimodaalinen ongelma, joka käsittelee useita syötteitä, kuten ASIN-numeroita (Amazon Standard Identification Number, 10-numeroinen aakkosnumeerinen numero, joka yksilöi tuotteet), tuotekuvat, tekstikuvaukset ja kyselyt. Räätälöidyn käyttökokemuksen luomiseksi käytetään useiden mallien ennusteita haun eri osa-alueille. Tämä on haaste, koska hakujärjestelmässä on tuhansia malleja, joissa on kymmeniä tuhansia tapahtumia sekunnissa (TPS) huippukuormalla. Keskitymme kokemuksen kahteen osaan:

  • Asiakkaiden havaitsemat päällekkäiset ennusteet – Jotta voit näyttää osuvimman luettelon tuotteista, jotka vastaavat käyttäjän kyselyä, on tärkeää tunnistaa tuotteet, joita asiakkaiden on vaikea erottaa toisistaan.
  • Kyselyn tarkoitusennustus – Jotta hakusivu ja tuotteen ulkoasu sopisivat paremmin asiakkaan etsimään, on tärkeää ennustaa käyttäjän kyselyn tarkoitus ja tyyppi (esimerkiksi mediaan liittyvä kysely, ohjekysely ja muut kyselytyypit)

Molemmat ennusteet on tehty käyttäen Transformer-malliarkkitehtuuria, nimittäin BERT-pohjaisia ​​malleja. Itse asiassa molemmilla on sama BERT-pohjainen malli perustana, ja jokainen pinoaa luokitus-/regressiopään tämän rungon päälle.

Kaksinkertainen ennuste ottaa käyttöön erilaisia ​​tekstiominaisuuksia arvioitujen tuotteiden parille syötteinä (kuten tuotteen tyyppi, otsikko, kuvaus ja niin edelleen), ja se lasketaan ajoittain suurille tietojoukoille. Tämä malli on koulutettu päästä päähän monitoimityyliin. Amazon SageMaker Processing työpaikkoja käytetään suorittamaan näitä erätyökuormia ajoittain niiden käynnistämisen automatisoimiseksi ja maksamaan vain käytetystä käsittelyajasta. Tässä erätyökuorman käyttötapauksessa päättelyn suorituskyvyn vaatimus oli 8,800 XNUMX TPS:ää.

Intent-ennustus ottaa syötteenä käyttäjän tekstikyselyn, ja sitä tarvitaan reaaliajassa palvelemaan dynaamisesti jokapäiväistä liikennettä ja parantamaan käyttäjäkokemusta Amazon Marketplacessa. Malli on koulutettu moniluokkaiseen luokittelutavoitteeseen. Tämä malli otetaan sitten käyttöön Amazonin elastisten säiliöiden palvelu (Amazon ECS), joka mahdollistaa nopean automaattisen skaalauksen ja helppo käyttöönoton määrittely ja hallinta. Koska tämä on reaaliaikainen käyttötapaus, se vaati P99:n latenssin olevan alle 10 millisekuntia ihastuttavan käyttökokemuksen varmistamiseksi.

AWS Inferentia ja AWS Neuron SDK

EC2 Inf1 -esiintymiä ovat AWS Inferentia, ensimmäinen ML-kiihdyttimen tarkoitus, jonka AWS on rakentanut nopeuttamaan syvän oppimisen päättelytyökuormia. Inf1-instanssit tarjoavat jopa 2.3 kertaa suuremman suorituskyvyn ja jopa 70 % pienemmät päättelykustannukset kuin vastaavat GPU-pohjaiset EC2-instanssit. Voit jatkaa malliesi koulutusta valitsemallasi viitekehyksellä (PyTorch, TensorFlow, MXNet) ja ottaa ne sitten helposti käyttöön AWS Inferentiassa hyötyäksesi sisäänrakennetuista suorituskyvyn optimoinneista. Voit ottaa käyttöön laajan valikoiman mallityyppejä käyttämällä Inf1-esiintymiä, kuten kuvantunnistukseen, objektien tunnistukseen, luonnollisen kielen käsittelyyn (NLP) ja nykyaikaisiin suositusmalleihin.

AWS Neuron on ohjelmistokehityspaketti (SDK), joka koostuu kääntäjästä, ajonaikaisista ja profilointityökaluista, jotka optimoivat EC2 Inf1 -esiintymien ML-päättelyn suorituskyvyn. Neuron on integroitu natiivisti suosittuihin ML-kehyksiin, kuten TensorFlow ja PyTorch. Siksi voit ottaa käyttöön syväoppimismalleja AWS Inferentiassa samoilla tutuilla sovellusliittymillä, jotka valitsemasi puitteet tarjoavat, ja hyötyä pilven suorituskyvyn parantumisesta ja alhaisimmista päättelykohtaisista kustannuksista.

Lanseerauksestaan ​​lähtien Neuron SDK on jatkanut tukemiensa mallien laajentamista samalla kun se on parantanut suorituskykyä ja alentanut päättelykustannuksia. Tämä sisältää NLP-mallit (BERT), kuvan luokitusmallit (ResNet, VGG) ja objektien tunnistusmallit (OpenPose ja SSD).

Ota käyttöön Inf1-esiintymissä alhaisen viiveen, suuren suorituskyvyn ja kustannussäästöjen saavuttamiseksi

Amazon Search -tiimi halusi säästää kustannuksia samalla, kun se täytti päällekkäisyyden ennustamisen korkean suorituskyvyn vaatimuksen ja kyselyn tarkoitusennusteen alhaisen latenssivaatimuksen. He päättivät ottaa käyttöön AWS Inferentia -pohjaisissa Inf1-esiintymissä ja täyttivät korkeat suorituskykyvaatimukset, mutta myös säästivät jopa 85 % päättelykuluissa.

Asiakkaiden havaitsemat päällekkäiset ennusteet

Ennen Inf1:n käyttöä omistettu Amazonin EMR klusteri oli käynnissä CPU-pohjaisten esiintymien avulla. Laitteistokiihdytykseen luottamatta tarvittiin suuri määrä esiintymiä korkean suorituskyvyn vaatimuksen täyttämiseksi, eli 8,800 1.6 tapahtumaa sekunnissa. Tiimi siirtyi inf4xlarge-esiintymiin, joissa kussakin oli 16 AWS Inferentia -kiihdytintä ja 4 NeuronCorea (16 ydintä per AWS Inferentia -siru). He jäljittelivät Transformer-pohjaisen mallin yhdelle NeuronCorelle ja ladasivat yhden tilan per NeuronCore maksimoidakseen suorituskyvyn. Hyödyntämällä 85 saatavilla olevaa NeuronCorea, he laskivat päättelykustannuksia 2 % (nykyisen julkisen Amazon ECXNUMX:n on-demand -hinnoittelun perusteella).

Kyselyn tarkoitusennustus

Koska P99:n latenssivaatimus on 10 millisekuntia tai vähemmän, tiimi latasi mallin jokaiseen saatavilla olevaan NeuronCoreen inf1.6xlarge-esiintymissä. Voit tehdä tämän helposti PyTorch Neuronilla käyttämällä torch.neuron.DataParallel API. Inf1:n käyttöönoton yhteydessä mallin latenssi oli 3 millisekuntia, päästä päähän -latenssi noin 10 millisekuntia ja huippukuormituksen maksimikapasiteetti saavutti 16,000 XNUMX TPS.

Aloita esimerkkien kokoaminen ja käyttöönottokoodi

Seuraavassa on esimerkkikoodi, joka auttaa sinua pääsemään alkuun Inf1-instanssien käytössä ja ymmärtämään Amazon Search -tiimin kaltaiset suoritus- ja kustannusedut. Näytämme, kuinka PyTorch-mallilla käännetään ja tehdään päätelmiä käyttämällä PyTorch Neuron.

Ensin malli kootaan 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")

Täydellinen luettelo mahdollisista argumenteista trace menetelmä, katso PyTorch-Neuron Trace Python API. Kuten näet, kääntäjän argumentit voidaan siirtää torch.neuron API suoraan. Kaikki FP32-operaattorit on lähetetty BF16 with --fp32-cast=all, joka tarjoaa parhaan suorituskyvyn säilyttäen samalla dynaamisen alueen. Saatavilla on enemmän valuvaihtoehtoja, joiden avulla voit hallita suorituskykyä ja mallintaa tarkkuutta. Molemmissa käyttötapauksissa käytetyt mallit on koottu yhdelle NeuronCorelle (nro putkisto).

Sitten lataamme mallin Inferentiaan torch.jit.loadja käytä sitä ennustamiseen. The Neuronin käyttöaika lataa mallin automaattisesti NeuronCoresiin.

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)

Yhteenveto

Amazon Search -tiimi pystyi alentamaan päättelykulujaan 85 % käyttämällä AWS Inferentia -pohjaisia ​​Inf1-instansseja raskaan liikenteen ja vaativien suorituskykyvaatimusten aikana. AWS Inferentia ja Neuron SDK tarjosivat tiimille joustavuutta optimoida käyttöönottoprosessi erillään koulutuksesta ja esittää matalan oppimiskäyrän monipuolisten työkalujen ja tuttujen kehyssovellusliittymien avulla.

Voit avata suorituskyky- ja kustannusedut aloittamalla tässä viestissä olevan mallikoodin avulla. Katso myös päästä päähän opetusohjelmat käyttää ML-malleja Inferentiassa PyTorch ja TensorFlow.


Tietoja kirjoittajista

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.João Moura on AI/ML Specialist Solutions -arkkitehti Amazon Web Servicesissä. Hän keskittyy enimmäkseen NLP-käyttötapauksiin ja auttaa asiakkaita optimoimaan syvän oppimismallin koulutusta ja käyttöönottoa. Hän on myös aktiivinen ML-spesifisten laitteistojen ja matalan koodin ML-ratkaisujen kannattaja.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Weiqi Zhang on ohjelmistosuunnittelupäällikkö Search M5:ssä, jossa hän työskentelee Amazonin koneoppimissovelluksille tarkoitettujen suurten mallien tuotteistamisessa. Hänen kiinnostuksen kohteitaan ovat tiedonhaku ja koneoppimisinfrastruktuuri.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Jason Carlson on ohjelmistosuunnittelija, joka kehittää koneoppimisputkia, joka auttaa vähentämään varastettujen hakunäyttökertojen määrää asiakkaiden havaitsemien kaksoiskappaleiden vuoksi. Hän työskentelee enimmäkseen Apache Sparkin, AWS:n ja PyTorchin kanssa auttaakseen ML-mallien tietojen käyttöönottoa ja syöttämistä/käsittelyä. Vapaa-ajallaan hän tykkää lukea ja käydä lenkillä.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Shaohui Xi on SDE Search Query Understanding Infra -tiimissä. Hän johtaa yritystä rakentaa laajamittaisia ​​syväoppimisen verkkopäätelmäpalveluita, joilla on alhainen latenssi ja korkea saatavuus. Työn ulkopuolella hän nauttii hiihtämisestä ja hyvien ruokien tutkimisesta.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Zhuoqi Zhang on ohjelmistokehitysinsinööri Search Query Understanding Infra -tiimissä. Hän rakentaa malleja palvelevia kehyksiä parantaakseen syvän oppimisen verkkopäätelmäpalvelujen latenssia ja suorituskykyä. Työn ulkopuolella hän pitää koripallon pelaamisesta, lumilautailusta ja autoilusta.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Haowein aurinko on ohjelmistosuunnittelija Search Query Understanding Infra -tiimissä. Hän suunnittelee sovellusliittymiä ja infrastruktuuria, jotka tukevat syvän oppimisen verkkopäätelmäpalveluita. Hänen kiinnostuksen kohteitaan ovat palvelun API-suunnittelu, infrastruktuurin käyttöönotto ja ylläpito. Työn ulkopuolella hän nauttii juoksemisesta, patikoinnista ja matkustamisesta.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Jaspreet Singh on soveltava tutkija M5-tiimissä, jossa hän työskentelee laajamittaisten perusmallien parissa parantaakseen asiakkaiden ostokokemusta. Hänen tutkimusalueitaan ovat monitehtäväoppiminen, tiedonhaku ja esitysoppiminen.

Kuinka Amazon Search alensi ML-päätelmien kustannuksia 85 % AWS Inferentia PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Shruti Koparkar on AWS:n tuotemarkkinointipäällikkö. Hän auttaa asiakkaita tutkimaan, arvioimaan ja ottamaan käyttöön EC2-kiihdytettyä laskentainfrastruktuuria koneoppimistarpeisiinsa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen