Główne dania na wynos

  • Jako największa giełda kryptowalut na świecie niezwykle ważne jest, abyśmy mieli system wykrywania ryzyka, który jest szybki, a jednocześnie nie pogarsza dokładności.

  • Wyzwaniem, jakie napotkaliśmy, było zapewnienie, że nasze modele zawsze korzystały z aktualnych informacji, szczególnie w przypadku wykrywania podejrzanej aktywności na koncie w czasie rzeczywistym.

  • Aby osiągnąć większą spójność funkcji i większą szybkość produkcji, przyjmujemy teraz rozsądne założenia dotyczące naszych danych i łączymy nasze potoki wsadowe i strumieniowe.

Odkryj, w jaki sposób nasz proces inżynierii funkcji tworzy silne, spójne funkcje do wykrywania fałszywych wypłat na platformie Binance.

W ramach naszego potoku uczenia maszynowego (ML) — o którym możesz dowiedzieć się więcej w poprzednim artykule — zbudowaliśmy niedawno zautomatyzowany potok inżynierii funkcji, który przekazuje surowe dane do funkcji online nadających się do ponownego wykorzystania, które można udostępniać we wszystkich modelach związanych z ryzykiem.

W procesie tworzenia i testowania tego potoku nasi analitycy danych napotkali intrygujący problem ze spójnością funkcji: w jaki sposób tworzymy dokładne zestawy funkcji online, które dynamicznie zmieniają się w czasie?

Rozważmy ten realny scenariusz: giełda kryptowalut – w tym przypadku Binance – próbuje wykryć oszukańcze wypłaty, zanim pieniądze opuszczą platformę. Jednym z możliwych rozwiązań jest dodanie do modelu funkcji wykrywającej czas, jaki upłynął od ostatniej określonej operacji użytkownika (np. zalogowania się lub powiązania telefonu komórkowego). Wyglądałoby to mniej więcej tak:

user_id|last_bind_google_time_diff_in_days|...

1|3,52|...

Wyzwanie wdrożenia

Liczba kluczy wymaganych do obliczania i aktualizowania funkcji w internetowym magazynie funkcji jest niepraktyczna. Korzystanie z potoku przesyłania strumieniowego, takiego jak Flink, byłoby niemożliwe, ponieważ może on obliczać tylko użytkowników z rekordami przychodzącymi w tej chwili do Kafki.

Jako kompromis moglibyśmy zastosować potok wsadowy i zaakceptować pewne opóźnienia. Załóżmy, że model może pobrać funkcje z internetowego sklepu z funkcjami i przeprowadzić wnioskowanie w czasie rzeczywistym w ciągu około godziny. Jednocześnie, jeśli magazyn funkcji zakończy obliczanie i przetwarzanie danych w ciągu godziny, potok wsadowy — teoretycznie — rozwiąże problem.

Niestety istnieje jeden rażący problem: użycie takiego potoku wsadowego jest bardzo czasochłonne. To sprawia, że ​​zakończenie w ciągu godziny jest niewykonalne, gdy jesteś największą na świecie giełdą kryptowalut, obsługującą około sto milionów użytkowników i limit TPS dla zapisów.

Odkryliśmy, że najlepszą praktyką jest przyjmowanie założeń na temat naszych użytkowników, zmniejszając w ten sposób ilość danych trafiających do naszego magazynu funkcji.

Łagodzenie problemu za pomocą praktycznych założeń

Funkcje online są pobierane w czasie rzeczywistym i stale się zmieniają, ponieważ reprezentują najbardziej aktualną wersję środowiska. Mając aktywnych użytkowników Binance, nie możemy sobie pozwolić na korzystanie z modeli z przestarzałymi funkcjami.

Konieczne jest, aby nasz system jak najszybciej sygnalizował wszelkie podejrzane wypłaty. Każde dodatkowe opóźnienie, nawet o kilka minut, oznacza więcej czasu dla złośliwego podmiotu na uniknięcie zbrodni.

Dlatego ze względu na wydajność zakładamy, że ostatnie logowanie wiąże się ze stosunkowo większym ryzykiem:

  • Ustaliliśmy, że (250 dni + 0,125 [3/24 opóźnienia] dnia) powoduje stosunkowo mniejsze błędy niż (1 dzień + 0,125 [3/24 opóźnienia] dnia).

  • Większość operacji nie przekroczy określonego progu; powiedzmy 365 dni. Aby zaoszczędzić czas i zasoby obliczeniowe, pomijamy użytkowników, którzy nie logowali się ponad rok.

Nasze rozwiązanie

Używamy architektury lambda, która obejmuje proces, w którym łączymy potoki wsadowe i strumieniowe, aby osiągnąć większą spójność funkcji.

Jak rozwiązanie wygląda koncepcyjnie?

  • Batch Pipeline: Wykonuje inżynierię funkcji dla ogromnej bazy użytkowników.

  • Streaming Pipeline: Naprawia opóźnienie potoku wsadowego w przypadku ostatnich logowań.

Co się stanie, jeśli rekord zostanie pobrany do magazynu funkcji online pomiędzy czasem opóźnienia w przetwarzaniu wsadowym?

Nasze funkcje nadal zachowują dużą spójność, nawet jeśli rekordy są pozyskiwane w godzinnym okresie opóźnienia przetwarzania wsadowego. Dzieje się tak, ponieważ internetowy sklep z funkcjami, z którego korzystamy na Binance, zwraca najnowszą wartość na podstawie czasu_zdarzenia, który określisz podczas pobierania wartości.

Dołącz do naszej drużyny!

Interesuje Cię wykorzystanie uczenia maszynowego do ochrony największego na świecie ekosystemu kryptograficznego i jego użytkowników? Sprawdź Binance Engineering / AI na naszej stronie karier, aby zapoznać się z ofertami pracy.

Aby uzyskać więcej informacji, przeczytaj następujące pomocne artykuły:

  • (Blog) Wykorzystanie MLOps do zbudowania kompleksowego potoku uczenia maszynowego w czasie rzeczywistym

  • (Blog) Bliższe spojrzenie na nasz sklep z funkcjami uczenia maszynowego