Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia segítségével

Az Amazon termékkeresője több milliárd terméket indexel, vásárlók százmillióit szolgálja ki világszerte, és a világ egyik leggyakrabban használt szolgáltatása. Az Amazon Search csapata gépi tanulási (ML) technológiát fejleszt, amely a Amazon.com keresőmotor, és segít az ügyfeleknek könnyedén keresni. Nagyszerű vásárlói élmény biztosításához és az általa megkövetelt hatalmas léptékű működéshez Amazon.com keresőmotor, ez a csapat mindig keresi a módokat arra, hogy költséghatékonyabb rendszereket építsen fel valós idejű késleltetési és átviteli követelményekkel. A csapat folyamatosan vizsgálja a mély tanulásra optimalizált hardvert és fordítókat, hogy felgyorsítsa a modellképzést és a következtetést, miközben csökkenti a működési költségeket.

Ebben a bejegyzésben leírjuk, hogyan használja az Amazon Search AWS Inferentia, egy nagy teljesítményű gyorsító, amelyet az AWS épített fel, hogy felgyorsítsa a mély tanulási következtetések munkaterhelését. A csapat alacsony késleltetésű ML következtetést futtat a Transformer-alapú NLP-modellekkel AWS Inferentia alapú Amazon rugalmas számítási felhő (Amazon EC2) Inf1 példányok, és akár 85%-os infrastrukturális költségeket takarítanak meg, miközben megőrzik az erős átviteli és késleltetési teljesítményt.

Mély tanulás a duplikált és a lekérdezési szándék előrejelzéséhez

Az Amazon Marketplace keresése többfeladatos, multimodális probléma, amely számos bemenettel foglalkozik, például ASIN-ekkel (Amazon Standard Identification Number, egy 10 jegyű alfanumerikus szám, amely egyedileg azonosítja a termékeket), termékképekkel, szöveges leírásokkal és lekérdezésekkel. A személyre szabott felhasználói élmény megteremtése érdekében számos modellből származó előrejelzéseket használnak a keresés különböző aspektusaihoz. Ez kihívást jelent, mert a keresőrendszer több ezer modellt tartalmaz, amelyek csúcsterhelésnél több tízezer tranzakciót tesznek lehetővé másodpercenként (TPS). Ennek az élménynek két összetevőjére összpontosítunk:

  • Az ügyfelek által észlelt ismétlődő előrejelzések – A felhasználó lekérdezésének megfelelő termékek legrelevánsabb listájának megjelenítéséhez fontos azonosítani azokat a termékeket, amelyeket a vásárlók nehezen tudnak megkülönböztetni
  • Lekérdezési szándék előrejelzése – Ahhoz, hogy a keresőoldalt és a termékelrendezést jobban hozzáigazíthassuk ahhoz, amit az ügyfél keres, fontos előre jelezni a felhasználó lekérdezésének szándékát és típusát (például médiával kapcsolatos lekérdezés, súgólekérdezés és egyéb lekérdezéstípusok).

Mindkét előrejelzés Transformer modellarchitektúrák, nevezetesen BERT-alapú modellek felhasználásával készült. Valójában mindkettő ugyanazon a BERT-alapú modellen alapul, és mindegyik egy osztályozási/regressziós fejet halmozott fel ennek a gerincnek a tetejére.

A duplikált előrejelzés különböző szöveges jellemzőket vesz fel egy pár kiértékelt termékhez bemenetként (például terméktípus, cím, leírás stb.), és rendszeres időközönként számítódik ki nagy adatkészletek esetén. Ezt a modellt a végétől a végéig többfeladatos módon képezték ki. Amazon SageMaker feldolgozási munkák Ezeket a kötegelt munkaterheléseket rendszeresen futtatják, hogy automatizálják az indítást, és csak a felhasznált feldolgozási időért fizessenek. Ennél a kötegelt munkaterhelésnél a következtetési átviteli sebesség 8,800 teljes TPS volt.

A szándék előrejelzése a felhasználó szöveges lekérdezését veszi be, és valós időben szükséges a mindennapi forgalom dinamikus kiszolgálásához és a felhasználói élmény javításához az Amazon Marketplace-en. A modell egy többosztályos osztályozási célkitűzésre van kiképezve. Ezt a modellt ezután telepítik Amazon Elastic Container Service (Amazon ECS), amely lehetővé teszi a gyors automatikus méretezést és egyszerű telepítési meghatározás és kezelés. Mivel ez egy valós idejű használati eset, a P99 késleltetésének 10 ezredmásodperc alatt kellett lennie, hogy kellemes felhasználói élményt biztosítson.

Az AWS Inferentia és az AWS Neuron SDK

EC2 Inf1 példányok Az AWS Inferentia hajtja, az első ML-gyorsító, amelyet az AWS épített fel, hogy felgyorsítsa a mélytanulási következtetési munkaterheléseket. Az Inf1 példányok akár 2.3-szor nagyobb átviteli sebességet és akár 70%-kal alacsonyabb következtetésenkénti költséget biztosítanak, mint a hasonló GPU-alapú EC2 példányok. Folytathatja a modellek képzését a választott keretrendszerrel (PyTorch, TensorFlow, MXNet), majd egyszerűen telepítheti őket az AWS Inferentián, hogy kihasználhassa a beépített teljesítményoptimalizálás előnyeit. Az Inf1-példányok használatával modelltípusok széles skáláját telepítheti, a képfelismeréstől, az objektumészleléstől, a természetes nyelvi feldolgozástól (NLP) és a modern ajánlómodellektől kezdve.

AWS Neuron egy szoftverfejlesztő készlet (SDK), amely egy fordítóból, futásidejű és profilkészítő eszközökből áll, amelyek optimalizálják az EC2 Inf1 példányok ML következtetési teljesítményét. A Neuron natívan integrálva van olyan népszerű ML keretrendszerekkel, mint például a TensorFlow és a PyTorch. Ezért a mélytanulási modelleket telepítheti az AWS Inferentián ugyanazokkal az ismerős API-kkal, amelyeket a választott keretrendszer biztosít, és élvezheti a teljesítménynövekedést és a legalacsonyabb következtetésenkénti költséget a felhőben.

Bevezetése óta a Neuron SDK tovább növelte az általa támogatott modellek számát, miközben folyamatosan javítja a teljesítményt és csökkenti a következtetési költségeket. Ide tartoznak az NLP-modellek (BERT-ek), a képosztályozási modellek (ResNet, VGG) és az objektumészlelési modellek (OpenPose és SSD).

Telepítse az Inf1-példányokon az alacsony késleltetés, nagy átviteli sebesség és költségmegtakarítás érdekében

Az Amazon Search csapata költségeket akart megtakarítani, miközben teljesítette a duplikáció előrejelzésére vonatkozó magas átviteli követelményt és a lekérdezési szándék előrejelzésének alacsony késleltetési követelményét. Úgy döntöttek, hogy az AWS Inferentia alapú Inf1-példányokon telepítik, és nemcsak megfeleltek a magas teljesítménykövetelményeknek, hanem akár 85%-ot is megtakarítottak a következtetési költségeken.

Az ügyfelek által észlelt ismétlődő előrejelzések

Az Inf1 használata előtt egy dedikált Amazon EMR A fürt CPU-alapú példányok használatával futott. Anélkül, hogy a hardveres gyorsításra támaszkodtunk volna, nagyszámú példányra volt szükség ahhoz, hogy teljesítsük a magas, 8,800 tranzakció/másodperces átviteli sebességet. A csapat áttért az inf1.6xlarge példányokra, amelyek mindegyike 4 AWS Inferentia gyorsítóval és 16 NeuronCore-szal (4 mag AWS Inferentia chipenként) rendelkezik. Nyomon követték a Transformer-alapú modellt egyetlen NeuronCore számára, és NeuronCore-onként egy módot töltöttek be az átviteli sebesség maximalizálása érdekében. A 16 elérhető NeuronCore előnyeit kihasználva 85%-kal csökkentették a következtetési költségeket (a jelenlegi nyilvános Amazon EC2 on-demand árazás alapján).

Lekérdezési szándék előrejelzése

Tekintettel a 99 ezredmásodperces vagy annál rövidebb P10 késleltetési követelményre, a csapat minden elérhető NeuronCore-ba betöltötte a modellt az inf1.6xlarge példányokon. Ezt könnyedén megteheti a PyTorch Neuron segítségével a fáklya.neuron.DataParallel API. Az Inf1 telepítésével a modell késleltetése 3 ezredmásodperc volt, a végpontok közötti késleltetés körülbelül 10 ezredmásodperc volt, és a maximális átviteli sebesség csúcsterhelésnél elérte a 16,000 XNUMX TPS-t.

Kezdje el a minta-összeállítási és telepítési kóddal

Az alábbiakban néhány mintakód található, amelyek segítenek az Inf1-példányok használatának megkezdésében és a teljesítmény- és költségelőnyök felismerésében, mint például az Amazon Search csapata. Megmutatjuk, hogyan fordítsunk le és hajtsunk végre következtetést egy PyTorch-modell segítségével PyTorch Neuron.

Először a modellt állítják össze 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")

A lehetséges érvek teljes listájáért a trace módszer, lásd PyTorch-Neuron nyomkövetési Python API. Amint látod, fordítói argumentumok átadható a torch.neuron API közvetlenül. Minden FP32 operátor átküldésre kerül BF16 with --fp32-cast=all, amely a legnagyobb teljesítményt nyújtja a dinamikatartomány megőrzése mellett. További öntési lehetőségek állnak rendelkezésre, amelyek lehetővé teszik a teljesítmény szabályozását a precíziós kompromisszum modellezéséhez. A mindkét felhasználási esethez használt modelleket egyetlen NeuronCore-ra (1. sz csővezetékezés).

Ezután betöltjük a modellt az Inferentiára azzal torch.jit.load, és használja azt előrejelzésre. A Neuron futási ideje automatikusan betölti a modellt a NeuronCores-ba.

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)

Következtetés

Az Amazon Search csapata 85%-kal tudta csökkenteni következtetési költségeit az AWS Inferentia alapú Inf1 példányok használatával, nagy forgalom és szigorú teljesítménykövetelmények mellett. Az AWS Inferentia és a Neuron SDK rugalmasságot biztosított a csapatnak ahhoz, hogy a telepítési folyamatot a képzéstől elkülönítve optimalizálja, és egy sekély tanulási görbét hozzon létre a jól lekerekített eszközök és az ismerős keretrendszer API-k segítségével.

Feloldhatja a teljesítmény- és költségelőnyöket, ha elkezdi használni az ebben a bejegyzésben található mintakódot. Nézze meg a végétől a végéig oktatóanyagok ML modellek futtatásához az Inferentián azzal PyTorch és a TensorFlow.


A szerzőkről

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.João Moura AI/ML Specialist Solutions Architect az Amazon Web Servicesnél. Leginkább az NLP-használati esetekre összpontosít, és segít ügyfeleinek a mély tanulási modell képzésében és bevezetésében. Emellett aktív támogatója az ML-re specializált hardvereknek és az alacsony kódú ML-megoldásoknak.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Weiqi Zhang a Search M5 szoftvermérnöki menedzsere, ahol nagyméretű modellek gyártásával foglalkozik Amazon gépi tanulási alkalmazásaihoz. Érdeklődési köre az információkeresés és a gépi tanulási infrastruktúra.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Jason Carlson egy szoftvermérnök a gépi tanulási folyamatok fejlesztésével, hogy segítsen csökkenteni az ügyfelek által észlelt ismétlődések miatt ellopott keresési megjelenítések számát. Leginkább az Apache Spark-kal, az AWS-szel és a PyTorch-al dolgozik, hogy segítse az ML-modellek adatok üzembe helyezését és betáplálását/feldolgozását. Szabadidejében szeret olvasni és futni.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Shaohui Xi SDE a Search Query Understanding Infra csapatánál. Ő vezeti a nagyszabású mély tanulási online következtetési szolgáltatások kiépítését alacsony késleltetéssel és magas rendelkezésre állással. Munkán kívül szeret síelni és jó ételeket felfedezni.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Zhuoqi Zhang a Search Query Understanding Infra csapat szoftverfejlesztő mérnöke. Modellkiszolgáló keretrendszerek felépítésén dolgozik, hogy javítsa a késleltetést és az áteresztőképességet a mélytanulási online következtetési szolgáltatásokhoz. A munkán kívül szeret kosárlabdázni, snowboardozni és vezetni.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Haowei Sun a Search Query Understanding Infra csapat szoftvermérnöke. A mély tanulást támogató online következtetési szolgáltatásokat támogató API-k és infrastruktúra tervezésén dolgozik. Érdeklődési köre a szolgáltatási API tervezés, az infrastruktúra beállítása és a karbantartás. Munkán kívül szeret futni, túrázni és utazni.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Jaspreet Singh az M5 csapatának alkalmazott tudósa, ahol nagyszabású alapozási modelleken dolgozik, hogy javítsa az ügyfelek vásárlási élményét. Kutatási területe a többfeladatos tanulás, az információkeresés és a reprezentációs tanulás.

Hogyan csökkentette az Amazon Search 85%-kal az ML következtetés költségeit az AWS Inferentia PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Shruti Koparkar az AWS vezető termékmarketing-menedzsere. Segít az ügyfeleknek az EC2 gyorsított számítási infrastruktúra felfedezésében, értékelésében és gépi tanulási igényeik kielégítésében.

Időbélyeg:

Még több AWS gépi tanulás