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
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- Allikas: https://blog.roblox.com/2023/11/roblox-reduces-spark-join-query-costs-machine-learning-optimized-bloom-filters/
- :on
- :mitte
- $ UP
- 1
- 14
- 2017
- 2018
- 30
- 65
- a
- Võimalik
- MEIST
- puudub
- juurdepääs
- Kontod
- saavutada
- üle
- lisamine
- Täiendavad lisad
- aadress
- adresseerimine
- Lisab
- vastu
- Materjal: BPA ja flataatide vaba plastik
- mööda
- Ka
- summa
- an
- analytics
- ja
- lähenemine
- umbes
- arhitektuur
- OLEME
- AS
- At
- atribuudid
- keskmine
- Varundamine
- Saldo
- põhineb
- BE
- sest
- enne
- alustama
- on
- alla
- Kasu
- vahel
- erapoolikus
- erapooletu
- Miljard
- Blogi
- Õitsema
- Kiirendatud
- mõlemad
- kuid
- by
- CAN
- juhul
- juhtudel
- keskele
- väljakutse
- omadused
- Joonis
- odavam
- kontrollima
- valik
- klassika
- klassifikatsioon
- kell
- Cluster
- võrdlema
- võrreldes
- võrdlus
- arvutuslik
- Arvutama
- arvutustehnika
- konfiguratsioon
- kaaluda
- järjepidev
- tarbimine
- sisaldab
- tavaline
- Maksma
- kulud
- Protsessor
- loomine
- andmed
- andmejärv
- päev
- Näidatud
- näitab
- lähetatud
- soovitud
- erinev
- mõõde
- arutama
- arutatud
- eristatav
- jagatud
- hajutatud arvutus
- jaotus
- teeme
- tehtud
- ajendatud
- kaks
- ajal
- e
- iga
- tõhusalt
- efektiivsus
- tõhus
- kõrvaldades
- omaks
- lõppes
- tegelema
- Parandab
- suurendamine
- rikastatud
- Kogu
- üksuste
- üksus
- keskkond
- asutatud
- hindamine
- lõpuks
- näide
- täitmine
- kallis
- Kogemused
- katseid
- uurima
- uurida
- silmitsi seisnud
- hõlbustab
- asjaolu
- vale
- kiiremini
- tunnusjoon
- FUNKTSIOONID
- vähe
- filtreerida
- Filtrid
- lõplik
- viis
- Järgneb
- Järel
- Jalajälg
- eest
- avastatud
- Alates
- loodud
- genereerib
- geograafiline
- antud
- hea
- Kasutamine
- Olema
- aitama
- aitas
- kõrgelt
- Tulemus
- Lahtiolekuajad
- Kuidas
- aga
- HTTPS
- identifikaatorid
- if
- illustreerib
- kujutage ette
- täitmine
- parandama
- paranenud
- parandusi
- Paranemist
- in
- lisatud
- Suurendama
- kasvav
- indeks
- näitama
- näitajad
- eraldi
- info
- informatiivne
- olemuselt
- esialgne
- Innovatsioon
- integreeritud
- Integreerib
- Integreerimine
- suhtlemist
- sisse
- Sissejuhatus
- probleem
- küsimustes
- IT
- ITS
- liituma
- liitunud
- liitumine
- Liita
- juuni
- Võti
- võtmed
- Labels
- puudus
- järv
- keel
- Leads
- õppinud
- õppimine
- Led
- vähem
- võimendatud
- koormus
- liising
- otsin
- kadunud
- Madal
- masin
- masinõpe
- säilitamine
- Enamus
- Tegemine
- max laiuse
- keskmine
- Mälu
- Meetrika
- miljon
- miljonid
- puuduvad
- ML
- mudel
- mudelid
- kuu
- rohkem
- kõige
- liikuv
- palju
- vajav
- negatiivne
- negatiivid
- järgmine
- sõlme
- number
- objekt
- vaadeldud
- of
- pakkuma
- sageli
- on
- ainult
- Avaneb
- töö
- töökorras
- Operations
- optimaalselt
- optimeerimine
- optimeerima
- optimeeritud
- optimeerimine
- or
- oraakel
- Muu
- meie
- edestanud
- üle
- ülesaamine
- osa
- eriline
- kohta
- protsent
- jõudlus
- esitades
- periood
- Phishing
- torujuhe
- Platon
- Platoni andmete intelligentsus
- PlatoData
- positiivne
- võimalus
- potentsiaal
- Täpsus
- ennustada
- prognoosimine
- olemasolu
- esitada
- tõenäosus
- Probleem
- protsess
- Protsessid
- töötlemine
- Produktsioon
- tingimusel
- eesmärkidel
- päringud
- kiire
- määr
- Rates
- tasakaalustamist
- vähendama
- Lühendatud
- vähendab
- vähendamine
- nimetatud
- regulaarne
- eemaldades
- esindamine
- nõutav
- ressurss
- ressursimahukas
- Vahendid
- vastuste
- kaasa
- põhjustanud
- Tulemused
- Roblox
- jooks
- jookseb
- sama
- nägin
- skaneerida
- Teine
- Osa
- istung
- komplekt
- mitu
- näitama
- näidatud
- Näitused
- shuffle
- märgatavalt
- SUURUS
- väike
- väiksem
- So
- lahendus
- Ruum
- Säde
- kiirus
- kasutatud
- Stabiilsus
- stabiilne
- varred
- Samm
- Sammud
- struktuuride
- Järgnevalt
- mahukas
- selline
- süsteem
- T
- tabel
- lahendada
- tingimused
- kui
- et
- .
- Neile
- Need
- nad
- Kolmas
- see
- Seega
- aeg
- et
- Summa
- traditsiooniline
- koolitus
- Transformation
- puu
- kaks
- liigid
- all
- ainulaadne
- erinevalt
- ajakohastatud
- Uudised
- us
- Kasutus
- kasutama
- Kasutatud
- Kasutaja
- Kasutajad
- kasutamine
- Väärtused
- Sein
- oli
- Tee..
- we
- nädalat
- Hästi
- olid
- millal
- kas
- mis
- kuigi
- Wikipedia
- koos
- ilma
- Töö
- töötaja
- oleks
- kirjalik
- sephyrnet