Hlavní Takeaways

  • Jako největší kryptoburza na světě je zásadní, abychom měli systém detekce rizik, který je rychlý, ale nedělá kompromisy v přesnosti.

  • Výzvou, se kterou jsme se setkali, bylo zajistit, aby naše modely vždy používaly aktuální informace, zejména při zjišťování podezřelé aktivity účtu v reálném čase.

  • Abychom dosáhli větší konzistence funkcí a vyšší rychlosti produkce, nyní vytváříme rozumné předpoklady o našich datech a kombinujeme naše dávkové a streamovací kanály.

Zjistěte, jak náš kanál pro vývoj funkcí vytváří silné a konzistentní funkce pro detekci podvodných výběrů na platformě Binance.

V rámci našeho kanálu strojového učení (ML) – o kterém se můžete dozvědět více v předchozím článku – jsme nedávno vybudovali kanál automatizovaného inženýrství funkcí, který spojuje nezpracovaná data do znovu použitelných online funkcí, které lze sdílet napříč všemi modely souvisejícími s riziky.

V procesu budování a testování tohoto kanálu narazili naši datoví vědci na zajímavý problém konzistence funkcí: Jak vytvoříme přesné sady online funkcí, které se dynamicky mění v čase?

Zvažte tento scénář ze skutečného světa: Kryptoburza – v tomto případě Binance – se snaží odhalit podvodné výběry dříve, než peníze opustí platformu. Jedním z možných řešení je přidat do vašeho modelu funkci, která detekuje čas, který uplynul od poslední konkrétní operace uživatele (např. přihlášení nebo svázání mobilu). Vypadalo by to nějak takto:

user_id|last_bind_google_time_diff_in_days|...

1|3,52|...

Výzva implementace

Počet klíčů potřebných k výpočtu a aktualizaci funkcí v online obchodě funkcí je nepraktický. Použití streamingového kanálu, jako je Flink, by bylo nemožné, protože dokáže vypočítat pouze uživatele se záznamy přicházejícími do Kafky v současné době.

Jako kompromis bychom mohli použít dávkové potrubí a přijmout určité zpoždění. Řekněme, že model může načíst funkce z online obchodu s funkcemi a provést odvození v reálném čase přibližně za jednu hodinu. Pokud zároveň trvá jednu hodinu, než úložiště funkcí dokončí výpočet a příjem dat, dávkový kanál by teoreticky problém vyřešil.

Bohužel je tu jeden do očí bijící problém: použití takového dávkového potrubí je časově velmi náročné. Díky tomu není dokončení do jedné hodiny proveditelné, když jste největší kryptoburza na světě, která má přibližně sto milionů uživatelů a limit TPS pro zápisy.

Zjistili jsme, že osvědčeným postupem je vytvářet o uživatelích předpoklady, a tím zmenšit množství dat, která do našeho obchodu funkcí přicházejí.

Usnadnění problému pomocí praktických předpokladů

Online funkce jsou přijímány v reálném čase a neustále se mění, protože představují nejaktuálnější verzi prostředí. S aktivními uživateli Binance si nemůžeme dovolit používat modely se zastaralými funkcemi.

Je nezbytné, aby náš systém co nejdříve označil jakékoli podezřelé výběry. Jakékoli další zpoždění, byť jen o několik minut, znamená pro zlomyslného herce více času na to, aby se dostal ze svých zločinů.

Z důvodu efektivity tedy předpokládáme, že nedávná přihlášení představují relativně vyšší riziko:

  • Zjistili jsme, že (250 dní + 0,125[3/24 zpoždění] den) vytváří relativně menší chyby než (1 den + 0,125[3/24 zpoždění] den).

  • Většina operací nepřekročí určitou hranici; řekněme 365 dní. Abychom ušetřili čas a výpočetní zdroje, vynecháváme uživatele, kteří se nepřihlásili déle než rok.

Naše řešení

Používáme architekturu lambda, což znamená proces, kdy kombinujeme dávkové a streamingové potrubí, abychom dosáhli silnější konzistence funkcí.

Jak vypadá řešení koncepčně?

  • Batch Pipeline: Provádí inženýrství funkcí pro masivní uživatelskou základnu.

  • Streaming Pipeline: Opravuje zpoždění dávkového kanálu pro poslední přihlášení.

Co když je záznam přijat do online obchodu s funkcemi mezi dobou zpoždění při dávkovém příjmu?

Naše funkce si stále zachovávají silnou konzistenci, i když jsou záznamy zpracovány během jednohodinového dávkového zpoždění příjmu. Je to proto, že online obchod funkcí, který používáme na Binance, vrací nejnovější hodnotu na základě event_time, který zadáte při načítání hodnoty.

Připojte se k našemu týmu!

Zajímá vás využití strojového učení k ochraně největšího světového krypto ekosystému a jeho uživatelů? Podívejte se na Binance Engineering / AI na naší stránce kariéry, kde najdete volná pracovní místa.

Další informace naleznete v následujících užitečných článcích:

  • (Blog) Používání MLOps k vybudování kompletního procesu strojového učení v reálném čase

  • (Blog) Bližší pohled na náš obchod s funkcemi strojového učení