Absztrakt
Minden nap a Robloxon, 65.5 millió felhasználó több millió élményben vesz részt, összesen 14.0 milliárd óra negyedévente. Ez az interakció egy petabájtos adatforrást hoz létre, amelyet elemzési és gépi tanulási (ML) célokra dúsítanak. Erőforrásigényes tény- és dimenziótáblázatok összekapcsolása az adattóban, ezért ennek optimalizálása és az adatkeverés csökkentése érdekében a Learned Bloom Filters [1] – intelligens, ML-t használó adatszerkezeteket alkalmaztunk. A jelenlét előrejelzésével ezek a szűrők jelentősen csökkentik a csatlakozási adatokat, növelve a hatékonyságot és csökkentve a költségeket. Útközben továbbfejlesztettük modellarchitektúránkat is, és bemutattuk, milyen jelentős előnyökkel járnak a feldolgozáshoz szükséges memória- és CPU-órák csökkentése, valamint a működési stabilitás növelése terén.
Bevezetés
Data Lake-ünkben a ténytáblák és adatkockák ideiglenesen particionálva vannak a hatékony hozzáférés érdekében, míg a dimenziótáblákból hiányoznak ezek a partíciók, és a frissítések során a ténytáblákkal való összekapcsolásuk erőforrás-igényes. Az összekapcsolás kulcsterét az összekapcsolandó ténytábla időbeli partíciója határozza meg. Az ebben az időbeli partícióban jelen lévő dimenzió entitások a teljes dimenzióadatkészletben jelenlévők kis részhalmazát képezik. Ennek eredményeként ezekben az illesztésekben a megkevert méretadatok többsége végül eldobásra kerül. A folyamat optimalizálása és a szükségtelen keverés csökkentése érdekében fontolóra vettük a használatát Bloom szűrők különböző csatlakozási kulcsokon, de szűrőmérettel és memóriaterület-problémákkal szembesültek.
Hogy megválaszoljuk őket, feltártuk Tanult Bloom szűrők, egy ML-alapú megoldás, amely csökkenti a Bloom-szűrő méretét, miközben fenntartja az alacsony hamis pozitív arányt. Ez az innováció a számítási költségek csökkentésével és a rendszer stabilitásának javításával növeli az összekapcsolási műveletek hatékonyságát. Az alábbi vázlat a hagyományos és optimalizált összekapcsolási folyamatokat szemlélteti elosztott számítási környezetünkben.
Növelje a csatlakozási hatékonyságot tanult virágzási szűrőkkel
A tény- és dimenziótáblázatok összekapcsolásának optimalizálása érdekében a Tanult Bloom-szűrő implementációt alkalmaztuk. Összeállítottunk egy indexet a ténytáblázatban lévő kulcsokból, majd az indexet üzembe helyeztük a dimenzióadatok előszűrésére az összekapcsolási művelet előtt.
Evolúció a hagyományos virágzási szűrőktől a tanult virágzási szűrőkig
Míg a hagyományos Bloom-szűrő hatékony, 15-25%-kal bővíti a memóriát dolgozó csomópontonként, ha be kell töltenie, hogy elérje a kívánt téves pozitív arányt. De a Learned Bloom Filters kihasználásával jelentősen csökkentett indexméretet értünk el, miközben megtartottuk ugyanazt a hamis pozitív arányt. Ennek oka a Bloom-szűrő bináris osztályozási problémává való átalakulása. A pozitív címkék az értékek jelenlétét jelzik az indexben, míg a negatív címkék azt, hogy hiányoznak.
Az ML-modell bevezetése megkönnyíti az értékek kezdeti ellenőrzését, majd egy tartalék Bloom-szűrőt a hamis negatívok kiküszöbölésére. A csökkentett méret a modell tömörített ábrázolásából és a tartalék Bloom-szűrő által igényelt kulcsok számának csökkenéséből adódik. Ez különbözteti meg a hagyományos Bloom Filter megközelítéstől.
Ennek a munkának a részeként két mérőszámot állítottunk fel a Tanult Bloom Filter megközelítésünk értékelésére: az index végső soros objektumméretét és a CPU-fogyasztást az összekapcsolási lekérdezések végrehajtása során.
Navigálás a megvalósítási kihívások között
A kezdeti kihívásunk egy erősen elfogult képzési adatkészlet kezelése volt, amelyhez kevés dimenziótábla kulcs volt a ténytáblázatban. Ennek során a táblázatok között körülbelül egy a három kulcsból álló átfedést figyeltünk meg. Ennek megoldására a Sandwich Learned Bloom Filter megközelítést alkalmaztuk [2]. Ez egy kezdeti hagyományos Bloom-szűrőt integrál az adatkészlet-eloszlás újraegyensúlyozására azáltal, hogy eltávolítja a ténytáblából hiányzó kulcsok többségét, hatékonyan eltávolítva a negatív mintákat az adatkészletből. Ezt követően csak a kezdeti Bloom Filterben szereplő kulcsok, valamint a hamis pozitív értékek kerültek továbbításra az ML modellbe, amelyet gyakran „tanult orákulumnak” is neveznek. Ez a megközelítés egy jól kiegyensúlyozott képzési adatkészletet eredményezett a tanult orákulum számára, hatékonyan leküzdve az elfogultság problémáját.
A második kihívás a modellarchitektúrára és a képzési funkciókra összpontosított. Az adathalász URL-ek klasszikus problémájával [1] ellentétben a csatlakozási kulcsaink (amelyek a legtöbb esetben egyedi azonosítók a felhasználóknak/élményeknek) nem voltak eleve informatívak. Ez arra vezetett, hogy megvizsgáljuk a dimenzióattribútumokat mint lehetséges modelljellemzőket, amelyek segíthetnek előre jelezni, hogy egy dimenzió entitás jelen van-e a ténytáblázatban. Képzeljünk el például egy ténytáblázatot, amely felhasználói munkamenet-információkat tartalmaz egy adott nyelvű tapasztalatokhoz. A felhasználói dimenzió földrajzi elhelyezkedése vagy nyelvi preferencia attribútuma jó mutató lenne annak meghatározására, hogy egy adott felhasználó jelen van-e a ténytáblázatban vagy sem.
A harmadik kihívás – a következtetési késleltetés – olyan modelleket igényelt, amelyek minimalizálták a hamis negatívokat és gyors válaszokat adtak. A színátmenettel növelt famodell volt az optimális választás ezekhez a kulcsfontosságú mérőszámokhoz, és a funkciókészletét a pontosság és a sebesség egyensúlyának megteremtése érdekében csökkentettük.
A tanult Bloom szűrőket használó frissített csatlakozási lekérdezésünk a következő:
Eredmények
Íme az adattavunkban a Learned Bloom szűrőkkel végzett kísérleteink eredményei. Öt termelési munkaterhelésbe integráltuk őket, amelyek mindegyike eltérő adatjellemzőkkel rendelkezett. E munkaterhelések számítási szempontból legdrágább része a ténytábla és a dimenziótábla összekapcsolása. A ténytáblázat kulcstere a dimenziótábla körülbelül 30%-a. Először is megvitatjuk, hogy a Tanult Bloom-szűrő hogyan teljesített felül a hagyományos Bloom-szűrőknél a végső soros objektumméret tekintetében. Ezután bemutatjuk azokat a teljesítményjavulásokat, amelyeket a Learned Bloom Filters munkaterhelés-feldolgozási folyamatainkba való integrálásával figyeltünk meg.
Tanult Bloom-szűrő méret-összehasonlítása
Ahogy az alábbiakban látható, ha egy adott téves pozitív arányt nézünk, a tanult Bloom-szűrő két változata 17-42%-kal javítja a teljes objektumméretet a hagyományos Bloom-szűrőkkel összehasonlítva.
Ezen túlmenően, mivel a gradiens-növelt fa alapú modellünkben a funkciók egy kisebb részhalmazát használtuk, az optimalizálásnak csak egy kis százalékát veszítettük el, miközben gyorsabb következtetéseket hajtottunk végre.
Tanult Bloom-szűrő használati eredmények
Ebben a szakaszban összehasonlítjuk a Bloom-szűrő alapú illesztések teljesítményét a normál összekapcsolások teljesítményével több metrika szerint.
Az alábbi táblázat összehasonlítja a munkaterhelések teljesítményét tanult virágzási szűrőkkel és anélkül. Az 1%-os teljes hamis pozitív valószínűségű tanult virágzási szűrő az alábbi összehasonlítást szemlélteti, miközben ugyanazt a fürtkonfigurációt tartja mindkét csatlakozástípusnál.
Először is azt találtuk, hogy a Bloom Filter implementációja a CPU órákban akár 60%-kal is jobban teljesített a szokásos csatlakozásnál. Megnövekedett a CPU-használat a letapogatási lépésben a Learned Bloom Filter megközelítéshez a Bloom-szűrő kiértékelésére fordított további számítások miatt. Az ebben a lépésben végrehajtott előszűrés azonban csökkentette a kevert adatok méretét, ami segített csökkenteni a lefelé irányuló lépések által használt CPU-t, így csökkentve a teljes CPU-órát.
Másodszor, a Learned Bloom Filterek körülbelül 80%-kal kisebb teljes adatmérettel és körülbelül 80%-kal kevesebb megírt keverési bájttal rendelkeznek, mint egy normál csatlakozásnál. Ez stabilabb csatlakozási teljesítményt eredményez, amint azt alább tárgyaljuk.
Csökkentett erőforrás-felhasználást tapasztaltunk a kísérletezés alatt álló egyéb termelési munkaterheléseinkben is. Kéthetes időszak alatt mind az öt munkaterhelésnél a Learned Bloom Filter megközelítés átlagot generált napi költségmegtakarítás of 25% amely modellképzéssel és indexkészítéssel is számol.
Az összekapcsolás során megkeveredett adatmennyiség csökkenése miatt jelentősen csökkenteni tudtuk analitikai folyamatunk működési költségeit, miközben stabilabbá is tettük azt. A következő diagram a futási időtartamok (falon) változóit mutatja (variációs együttható használatával). óra) rendszeres csatlakozási munkaterheléshez és tanult Bloom-szűrő alapú munkaterheléshez egy kéthetes időszak alatt, az általunk kísérletezett öt munkaterheléshez. A Learned Bloom Filters használatával végzett futtatások stabilabbak voltak – konzisztensebbek voltak az időtartamban –, ami lehetőséget teremt arra, hogy olcsóbb átmeneti, megbízhatatlan számítási erőforrásokba helyezzék át őket.
Referenciák
[1] T. Kraska, A. Beutel, EH Chi, J. Dean és N. Polyzotis. A tanult indexstruktúrák esete. https://arxiv.org/abs/1712.01208, 2017.
[2] M. Mitzenmacher. A tanult virágzási szűrők optimalizálása Sandwiching segítségével.
https://arxiv.org/abs/1803.01474, 2018.
¹ A 3. június 30-án végződött 2023 hónap
² 3. június 30-án végződött 2023 hónap
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoData.Network Vertical Generative Ai. Erősítse meg magát. Hozzáférés itt.
- PlatoAiStream. Web3 Intelligence. Felerősített tudás. Hozzáférés itt.
- PlatoESG. Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- PlatoHealth. Biotechnológiai és klinikai vizsgálatok intelligencia. Hozzáférés itt.
- Forrás: https://blog.roblox.com/2023/11/roblox-reduces-spark-join-query-costs-machine-learning-optimized-bloom-filters/
- :is
- :nem
- $ UP
- 1
- 14
- 2017
- 2018
- 30
- 65
- a
- Képes
- Rólunk
- hiányzó
- hozzáférés
- Fiókok
- elért
- át
- mellett
- További
- cím
- címzés
- Hozzáteszi
- fogadott
- Minden termék
- mentén
- Is
- összeg
- an
- analitika
- és a
- megközelítés
- körülbelül
- építészet
- VANNAK
- AS
- At
- attribútumok
- átlagos
- mentés
- Egyenleg
- alapján
- BE
- mert
- előtt
- kezdődik
- hogy
- lent
- Előnyök
- között
- előítélet
- elfogult
- Billió
- Blog
- Virágzik
- Javítottak
- mindkét
- de
- by
- TUD
- eset
- esetek
- központú
- kihívás
- jellemzők
- Táblázatos
- olcsóbb
- ellenőrizze
- választás
- klasszikus
- besorolás
- óra
- Fürt
- összehasonlítani
- képest
- összehasonlítás
- számítási
- Kiszámít
- számítástechnika
- Configuration
- figyelembe vett
- következetes
- fogyasztás
- tartalmaz
- hagyományos
- Költség
- kiadások
- CPU
- teremtés
- dátum
- adattó
- nap
- igazolták
- mutatja
- telepített
- kívánatos
- különböző
- Dimenzió
- megvitatni
- tárgyalt
- különböző
- megosztott
- elosztott számítástechnika
- terjesztés
- Ennek
- csinált
- hajtott
- két
- alatt
- e
- minden
- hatékonyan
- hatékonyság
- hatékony
- megszüntetése
- felkarolta
- véget ért
- vegyenek
- Javítja
- fokozása
- dúsított
- Egész
- Szervezetek
- egység
- Környezet
- megalapozott
- értékelő
- végül is
- példa
- végrehajtás
- drága
- Tapasztalatok
- kísérletek
- feltárása
- feltárt
- szembe
- megkönnyíti
- tény
- hamis
- gyorsabb
- Funkció
- Jellemzők
- kevés
- szűrő
- Szűrők
- utolsó
- öt
- követ
- következő
- Lábnyom
- A
- talált
- ból ből
- generált
- generál
- földrajzi
- adott
- jó
- hasznosítása
- Legyen
- segít
- segített
- nagyon
- Találat
- NYITVATARTÁS
- Hogyan
- azonban
- HTTPS
- azonosítók
- if
- illusztrálja
- kép
- végrehajtás
- javul
- javított
- fejlesztések
- javuló
- in
- beleértve
- Növelje
- növekvő
- index
- jelez
- mutatók
- egyéni
- információ
- tájékoztató
- eredendően
- kezdetben
- Innováció
- integrált
- integrál
- integrálása
- kölcsönhatás
- bele
- Bevezetés
- kérdés
- kérdések
- IT
- ITS
- csatlakozik
- csatlakozott
- csatlakozott
- csatlakozik
- június
- Kulcs
- kulcsok
- Címkék
- hiány
- tó
- nyelv
- vezetékek
- tanult
- tanulás
- Led
- kevesebb
- mobilizálható
- kiszámításának
- elhelyezkedés
- keres
- elveszett
- Elő/Utó
- gép
- gépi tanulás
- fenntartása
- Többség
- Gyártás
- max-width
- jelent
- Memory design
- Metrics
- millió
- Több millió
- hiányzó
- ML
- modell
- modellek
- hónap
- több
- a legtöbb
- mozgó
- sok
- igénylő
- negatív
- negatívok
- következő
- csomópont
- szám
- tárgy
- megfigyelt
- of
- ajánlat
- gyakran
- on
- csak
- nyit
- működés
- operatív
- Művelet
- optimálisan
- optimalizálás
- Optimalizálja
- optimalizált
- optimalizálása
- or
- jóslat
- Más
- mi
- túlteljesítette
- felett
- leküzdése
- rész
- különös
- mert
- százalék
- teljesítmény
- előadó
- időszak
- Adathalászat
- csővezeték
- Plató
- Platón adatintelligencia
- PlatoData
- pozitív
- lehetőség
- potenciális
- Pontosság
- előre
- előrejelzésére
- jelenlét
- be
- valószínűség
- Probléma
- folyamat
- Folyamatok
- feldolgozás
- Termelés
- feltéve,
- célokra
- lekérdezések
- gyors
- Arány
- Az árak
- egyensúlyának helyreállítása
- csökkenteni
- Csökkent
- csökkenti
- csökkentő
- említett
- szabályos
- eltávolítása
- képviselet
- kötelező
- forrás
- erőforrás-igényes
- Tudástár
- válaszok
- eredményez
- eredményezett
- Eredmények
- roblox
- futás
- fut
- azonos
- látta
- beolvasás
- Második
- Rész
- ülés
- készlet
- számos
- előadás
- mutatott
- Műsorok
- keverés
- jelentősen
- Méret
- kicsi
- kisebb
- So
- megoldások
- Hely
- Szikra
- sebesség
- költött
- Stabilitás
- stabil
- szárak
- Lépés
- Lépései
- struktúrák
- Később
- lényeges
- ilyen
- rendszer
- T
- táblázat
- felszerelés
- feltételek
- mint
- hogy
- A
- Őket
- Ezek
- ők
- Harmadik
- ezt
- Így
- idő
- nak nek
- Végösszeg
- hagyományos
- Képzések
- Átalakítás
- fa
- kettő
- típusok
- alatt
- egyedi
- nem úgy mint
- frissítve
- Frissítés
- us
- Használat
- használ
- használt
- használó
- Felhasználók
- segítségével
- Értékek
- Fal
- volt
- Út..
- we
- Hetek
- JÓL
- voltak
- amikor
- vajon
- ami
- míg
- Wikipedia
- val vel
- nélkül
- Munka
- munkás
- lenne
- írott
- zephyrnet