Kuidas Roblox vähendab Sparki liitumispäringu kulusid masinõppele optimeeritud õitsengufiltritega – Robloxi ajaveeb

Kuidas Roblox vähendab Sparki liitumispäringu kulusid masinõppe optimeeritud õitsengufiltritega – Robloxi ajaveeb

Allikasõlm: 2983061

Abstraktne

Iga päev Robloxis, 65.5 miljonit kasutajat kasutavad miljoneid kogemusi, kokku 14.0 miljardit tundi kvartalis. See interaktsioon loob petabaitide skaala andmejärve, mida rikastatakse analüütika ja masinõppe (ML) eesmärkidel. Fakti- ja dimensioonitabelite ühendamine meie andmejärves on ressursimahukas, nii et selle optimeerimiseks ja andmete segamise vähendamiseks võtsime kasutusele Learned Bloom Filters [1] – ML-i kasutavad nutikad andmestruktuurid. Ennustades kohalolekut, kärbivad need filtrid märkimisväärselt liitumisandmeid, suurendades tõhusust ja vähendades kulusid. Samal ajal täiustasime ka oma mudeliarhitektuure ja demonstreerisime olulisi eeliseid, mida need pakuvad mälu ja protsessori töötundide vähendamisel ning tööstabiilsuse suurendamisel.

Sissejuhatus

Meie andmejärves on faktitabelid ja andmekuubikud tõhusaks juurdepääsuks ajutiselt jaotatud, samas kui dimensioonitabelitel sellised partitsioonid puuduvad ja nende ühendamine faktitabelitega värskenduste ajal on ressursimahukas. Ühenduse võtmeruumi juhib ühendatava faktitabeli ajaline partitsioon. Selles ajalises partitsioonis olevad dimensiooniolemid on väike alamhulk kogu dimensiooniandmestikust. Selle tulemusel jäetakse suurem osa nende ühenduste segatud dimensiooniandmetest lõpuks kõrvale. Selle protsessi optimeerimiseks ja tarbetu segamise vähendamiseks kaalusime selle kasutamist Õitsemise filtrid erinevatel liitumisvõtmetel, kuid silmitsi filtri suuruse ja mälumahuga.

Nende käsitlemiseks uurisime Õppinud Bloom filtrid, ML-põhine lahendus, mis vähendab Bloom Filtri suurust, säilitades samal ajal madala valepositiivsete määrade. See uuendus suurendab liitumistoimingute tõhusust, vähendades arvutuskulusid ja parandades süsteemi stabiilsust. Järgmine skeem illustreerib tavapäraseid ja optimeeritud liitumisprotsesse meie hajutatud andmetöötluskeskkonnas.

Suurendage liitumise tõhusust õpitud õitsemisfiltritega

Fakti- ja dimensioonitabelite ühendamise optimeerimiseks võtsime kasutusele õpitud õitsengufiltri. Koostasime indeksi faktitabelis olevate võtmete põhjal ja seejärel juurutasime indeksi dimensiooniandmete eelfiltreerimiseks enne liitumistoimingut. 

Evolutsioon traditsioonilistest õitsemisfiltritest õpitud õitsemisfiltriteks

Kuigi traditsiooniline Bloom Filter on tõhus, lisab see 15–25% lisamälu iga töötaja sõlme kohta, mis peab selle laadima, et saavutada meie soovitud valepositiivsuse määr. Kuid kasutades Learned Bloom Filters, saavutasime märkimisväärselt väiksema indeksi suuruse, säilitades samal ajal sama valepositiivsuse määra. Selle põhjuseks on Bloomi filtri muutmine binaarseks klassifikatsiooniprobleemiks. Positiivsed sildid näitavad väärtuste olemasolu indeksis, negatiivsed aga nende puudumist.

ML-mudeli kasutuselevõtt hõlbustab väärtuste esialgset kontrollimist, millele järgneb Bloomi varufilter valenegatiivsete väärtuste kõrvaldamiseks. Vähendatud suurus tuleneb mudeli tihendatud esitusest ja Bloomi varufiltri jaoks vajalike võtmete arvu vähenemisest. See eristab seda tavapärasest Bloom Filter lähenemisviisist. 

Selle töö osana lõime kaks mõõdikut oma õpitud õitsengufiltri lähenemisviisi hindamiseks: indeksi lõplik serialiseeritud objekti suurus ja protsessori tarbimine liitumispäringute täitmise ajal. 

Rakendamise väljakutsetes navigeerimine

Meie esialgne väljakutse oli käsitleda väga kallutatud koolitusandmestikku, millel oli faktitabelis vähe dimensioonitabeli võtmeid. Seda tehes täheldasime tabelite vahel umbes ühe kolmest klahvi kattumist. Selle probleemi lahendamiseks kasutasime Sandwich Learned Bloom Filter lähenemisviisi [2]. See integreerib esialgse traditsioonilise Bloomi filtri, et tasakaalustada andmestiku jaotust, eemaldades enamiku faktitabelist puuduvatest võtmetest, kõrvaldades tõhusalt negatiivsed proovid andmekogumist. Seejärel edastati ML-mudelile, mida sageli nimetatakse "õpitud oraakliks", ainult algses Bloomi filtris sisalduvad võtmed koos valepositiivsete tulemustega. Selle lähenemisviisi tulemuseks oli õpitud oraakli jaoks hästi tasakaalustatud koolitusandmekogum, mis ületas tõhusalt eelarvamuste probleemi.

Teine väljakutse keskendus mudeli arhitektuurile ja koolitusfunktsioonidele. Erinevalt klassikalisest andmepüügi URL-ide probleemist [1] ei olnud meie liitumisvõtmed (mis on enamikul juhtudel kasutajate/kogemuste kordumatud identifikaatorid) oma olemuselt informatiivsed. See viis meid uurima dimensiooniatribuute kui potentsiaalseid mudelifunktsioone, mis aitavad ennustada, kas dimensiooniüksus on faktitabelis olemas. Kujutage näiteks ette faktitabelit, mis sisaldab kasutajaseansi teavet teatud keele kogemuste kohta. Kasutaja dimensiooni geograafiline asukoht või keele-eelistuse atribuut näitaksid hästi, kas üksikkasutaja on faktitabelis olemas või mitte.

Kolmas väljakutse – järelduste latentsus – nõudis mudeleid, mis nii minimeerisid valenegatiivseid kui ka andsid kiireid vastuseid. Gradiendiga võimendatud puumudel oli nende põhimõõdikute jaoks optimaalne valik ja me kärpisime selle funktsioonikomplekti, et tasakaalustada täpsust ja kiirust.

Meie värskendatud liitumispäring, kasutades õpitud Bloomi filtreid, on järgmine:

Tulemused

Siin on meie andmejärves Learned Bloom filtritega tehtud katsete tulemused. Integreerisime need viieks tootmistöökoormuseks, millest igaühel olid erinevad andmeomadused. Nende töökoormuste arvutuslikult kõige kallim osa on faktitabeli ja dimensioonitabeli ühendamine. Faktitabelite võtmeruum on ligikaudu 30% dimensioonitabelist. Alustuseks arutleme selle üle, kuidas Learned Bloom Filter edestas traditsioonilisi Bloomi filtreid lõpliku järjestikuse objekti suuruse poolest. Järgmisena näitame jõudluse täiustusi, mida täheldasime õpitud õitsengufiltrite integreerimisel meie töökoormuse töötlemise torustikesse.

Õpitud Bloomi filtri suuruse võrdlus

Nagu allpool näidatud, parandavad õpitud õitsengufiltri kaks varianti antud valepositiivsuse määra vaadates objekti kogusuurust 17–42% võrreldes traditsiooniliste õitsemisfiltritega.

Lisaks, kui kasutasime oma gradientvõimendiga puupõhises mudelis väiksemat funktsioonide alamhulka, kaotasime vaid väikese protsendi optimeerimisest, muutes järeldused kiiremaks.

Õpitud Bloom-filtri kasutamise tulemused 

Selles jaotises võrdleme mitme mõõdiku lõikes Bloom Filtril põhinevate ühenduste toimivust tavaliste ühendustega. 

Allolevas tabelis võrreldakse töökoormuste toimivust nii õpitud õitsengufiltrite kasutamisega kui ka ilma. Õppitud õitsengufilter 1% valepositiivse kogutõenäosusega demonstreerib allolevat võrdlust, säilitades samal ajal mõlema liitumistüübi jaoks sama klastri konfiguratsiooni. 

Esiteks avastasime, et Bloom Filteri juurutamine ületas tavalist liitumist protsessoritundides koguni 60%. Õppitud õitsengufiltri lähenemisviisi skannimisetapi protsessorikasutus suurenes tänu Bloom-filtri hindamisele kulutatud täiendavatele arvutustele. Kuid selles etapis tehtud eelfiltreerimine vähendas segatavate andmete suurust, mis aitas vähendada allavoolu etappides kasutatavat protsessorit, vähendades seega kogu protsessori tundide arvu.

Teiseks on Learned Bloom filtritel umbes 80% väiksem andmete kogumaht ja umbes 80% vähem kirjutatud segamisbaite kui tavalisel liitumisel. See toob kaasa stabiilsema liitumise, nagu allpool kirjeldatud. 

Samuti nägime meie teiste katsetatavate tootmistöökoormuste ressursikasutuse vähenemist. Kahe nädala jooksul kõigi viie töökoormuse kohta andis õpitud õitsengu filtri lähenemisviis keskmise igapäevane kulude kokkuhoid of 25% mis arvestab ka mudelikoolituse ja indeksi loomisega.

Ühenduse ajal segatud andmehulga vähenemise tõttu suutsime märkimisväärselt vähendada oma analüütikakonveieri tegevuskulusid, muutes selle ka stabiilsemaks.Järgmine diagramm näitab töökestuse (sein) varieeruvust (kasutades variatsioonikoefitsienti). kellaaeg) tavalise liitumiskoormuse jaoks ja õpitud Bloomi filtril põhineva töökoormuse jaoks kahenädalase perioodi jooksul viie töökoormuse jaoks, millega katsetasime. Õpitud õitsengufiltreid kasutanud käitamised olid stabiilsemad – kestusega ühtlasem –, mis avab võimaluse teisaldada need odavamatele mööduvatele ebausaldusväärsetele arvutusressurssidele. 

viited

[1] T. Kraska, A. Beutel, EH Chi, J. Dean ja N. Polyzotis. Õppitud indeksistruktuuride näide. https://arxiv.org/abs/1712.01208, 2017.

[2] M. Mitzenmacher. Õppitud õitsemisfiltrite optimeerimine Sandwichingu abil. 

https://arxiv.org/abs/1803.01474, 2018.


¹ 3. juunil 30 lõppenud 2023 kuu seisuga

² 3. juunil 30 lõppenud 2023 kuu seisuga

Ajatempel:

Veel alates Roblox