Główne dania na wynos
W Binance używamy uczenia maszynowego (ML) do rozwiązywania różnych problemów biznesowych, w tym między innymi oszustw związanych z przejęciem konta (ATO), oszustw P2P i kradzieży szczegółów płatności.
Korzystając z operacji uczenia maszynowego (MLops), nasi analitycy danych Binance Risk AI zbudowali kompleksowy potok ML w czasie rzeczywistym, który stale dostarcza usługi ML gotowe do produkcji.

Dlaczego używamy MLOps?
Na początek tworzenie usługi ML jest procesem iteracyjnym. Analitycy danych nieustannie eksperymentują, aby ulepszyć konkretny wskaźnik, zarówno offline, jak i online, w oparciu o cel polegający na dostarczaniu wartości dla firmy. Jak zatem możemy zwiększyć efektywność tego procesu — na przykład skrócić czas wprowadzenia modelu ML na rynek?
Po drugie, na zachowanie usług ML wpływa nie tylko kod, który definiujemy my, programiści, ale także gromadzone przez nie dane. Pomysł ten, znany również jako dryf koncepcji, został podkreślony w artykule Google zatytułowanym Ukryty dług techniczny w systemach uczenia maszynowego.
Weźmy na przykład oszustwo; oszust to nie tylko maszyna, ale także człowiek, który dostosowuje się i stale zmienia sposób ataku. W związku z tym podstawowa dystrybucja danych będzie ewoluować, aby odzwierciedlić zmiany w wektorach ataków. Jak możemy skutecznie zapewnić, że model produkcyjny uwzględnia najnowszy wzorzec danych?
Aby sprostać powyższym wyzwaniom, używamy koncepcji MLOps, terminu zaproponowanego pierwotnie przez Google w 2018 roku. W MLOps skupiamy się na wydajności modelu i infrastrukturze wspierającej system produkcyjny. Dzięki temu możemy budować usługi uczenia maszynowego, które są skalowalne, wysoce dostępne, niezawodne i łatwe w utrzymaniu.
Podział naszego kompleksowego potoku uczenia maszynowego w czasie rzeczywistym
Potraktuj powyższy diagram jako naszą standardową procedurę operacyjną (SOP) dotyczącą opracowywania modelu w czasie rzeczywistym za pomocą magazynu funkcji. Kompleksowy potok uczenia maszynowego określa sposób, w jaki nasz zespół stosuje MLops, i jest zbudowany z dwóch typów wymagań: funkcjonalnych i niefunkcjonalnych.
Funkcjonalny
Przetwarzanie danych
Szkolenie modelowe
Rozwój modelu
Wdrożenie modelu
Monitorowanie
Wymagania niefunkcjonalne
Skalowalne
Wysoka dostępność
Niezawodny
Utrzymalny
Rurociąg jest dalej podzielony na sześć kluczowych elementów:
Warstwa obliczeniowa
Warstwa przechowywania
Scentralizowana baza danych
Szkolenie modelowe
Wdrożenie modelu
Monitorowanie modelu
1. Warstwa obliczeniowa
Warstwa obliczeniowa jest głównie odpowiedzialna za inżynierię funkcji, czyli proces przekształcania surowych danych w przydatne funkcje.
Dzielimy warstwę obliczeniową na dwa typy w zależności od częstotliwości aktualizacji: przetwarzanie strumieniowe w interwałach jednominutowych/sekundowych i przetwarzanie wsadowe w interwałach dziennych/godzinnych.
Dane wejściowe warstwy obliczeniowej zazwyczaj pochodzą z bazy danych opartej na zdarzeniach, która obejmuje Apache Kafka i Kinesis, lub z bazy danych OLAP, która obejmuje Apache Hive dla rozwiązań typu open source i Snowflake dla rozwiązań chmurowych.
2. Przechowuj warstwę
Warstwa magazynu to miejsce, w którym rejestrujemy definicje funkcji i wdrażamy je w naszym magazynie funkcji, a także przeprowadzamy uzupełnianie. Jest to proces, który pozwala nam odbudowywać funkcje na podstawie danych historycznych za każdym razem, gdy zdefiniowana zostanie nowa funkcja. Uzupełnianie to zazwyczaj jednorazowa praca, którą nasi analitycy danych mogą wykonać w środowisku notebooka. Ponieważ Kafka może przechowywać tylko zdarzenia z ostatnich siedmiu dni, wykorzystuje mechanizm tworzenia kopii zapasowych w tabeli s3/hive, aby zwiększyć odporność na błędy.
Zauważysz, że warstwa pośrednia, Hive i Kafka, została celowo umieszczona pomiędzy warstwami obliczeniowymi i sklepowymi. Pomyśl o tym umieszczeniu jako o buforze pomiędzy funkcjami przetwarzania i pisania. Analogią byłoby oddzielenie producenta od konsumenta. Przetwarzanie strumieniowe jest producentem, a przetwarzanie strumieniowe jest konsumentem.
Oddzielenie przetwarzania i pozyskiwania zapewnia szereg korzyści dla naszych potoków uczenia maszynowego. Na początek możemy zwiększyć wytrzymałość rurociągu na wypadek awarii. Nasi analitycy danych mogą nadal pobierać wartości funkcji ze scentralizowanej bazy danych, nawet jeśli warstwa pozyskiwania lub obliczeń jest niedostępna ze względu na problemy operacyjne, sprzętowe lub sieciowe.
Co więcej, możemy indywidualnie skalować różne części infrastruktury i zmniejszać zużycie energii potrzebnej do budowy i eksploatacji rurociągu. Na przykład, jeśli z jakiegokolwiek powodu zakończy się to niepowodzeniem, warstwa pozyskiwania nie zablokuje warstwy obliczeniowej. Na froncie innowacji możemy eksperymentować i wdrażać nowe technologie, takie jak nowa wersja aplikacji Flink, bez wpływu na naszą istniejącą infrastrukturę.
Zarówno warstwa obliczeniowa, jak i warstwa sklepu to tzw. zautomatyzowane potoki funkcji. Te potoki są niezależne, działają według różnych harmonogramów i są klasyfikowane jako potoki strumieniowe lub wsadowe. Oto jak te dwa potoki działają inaczej: jedna grupa funkcji w potoku wsadowym może być odświeżana co noc, podczas gdy inna grupa jest aktualizowana co godzinę. W potoku przesyłania strumieniowego grupa funkcji jest aktualizowana w czasie rzeczywistym, gdy dane źródłowe docierają do strumienia wejściowego, takiego jak temat Apache Kafka.
3. Scentralizowana baza danych
Scentralizowana warstwa DB to miejsce, w którym nasi analitycy danych prezentują swoje gotowe do użycia dane w sklepie z funkcjami online lub offline.
Internetowy magazyn funkcji to sklep o niskim opóźnieniu i wysokiej dostępności, który umożliwia wyszukiwanie rekordów w czasie rzeczywistym. Z drugiej strony magazyn funkcji offline zapewnia bezpieczne i skalowalne repozytorium wszystkich danych funkcji. Umożliwia to naukowcom tworzenie zbiorów danych szkoleniowych, walidacyjnych lub zbiorczych na podstawie zestawu centralnie zarządzanych grup cech z pełnym historycznym zapisem wartości cech w systemie przechowywania obiektów.
Obydwa magazyny funkcji automatycznie synchronizują się ze sobą co 10–15 minut, aby uniknąć zniekształceń w zakresie obsługi szkoleń. W przyszłym artykule szczegółowo omówimy, w jaki sposób wykorzystujemy magazyny funkcji w przygotowaniu.
4. Trening modelowy
Warstwa uczenia modeli to miejsce, w którym nasi naukowcy wyodrębniają dane szkoleniowe ze sklepu funkcji offline w celu udoskonalenia naszych usług uczenia maszynowego. Używamy zapytań do konkretnego momentu, aby zapobiec wyciekowi danych podczas procesu ekstrakcji.
Dodatkowo warstwa ta zawiera kluczowy element znany jako pętla sprzężenia zwrotnego ponownego uczenia modelu. Ponowne uczenie modeli minimalizuje ryzyko dryfowania koncepcji, zapewniając, że wdrożone modele dokładnie odzwierciedlają najnowsze wzorce danych — na przykład zmianę zachowania hakera w przypadku ataku.
5. Wdrożenie modelu
W przypadku wdrażania modeli korzystamy przede wszystkim z usługi scoringowej opartej na chmurze, która stanowi podstawę udostępniania danych w czasie rzeczywistym. Oto diagram pokazujący, jak bieżący kod wnioskowania integruje się ze składnicą funkcji.
6. Monitorowanie modelu
W tej warstwie nasz zespół monitoruje wskaźniki wykorzystania usług oceniania, takie jak QPS, opóźnienia, pamięć i stopień wykorzystania procesora/GPU. Oprócz tych podstawowych wskaźników używamy przechwyconych danych do sprawdzania rozkładu funkcji w czasie, odchylenia w zakresie szkolenia i odchylenia prognoz, aby zapewnić minimalne odchylenia koncepcji.
Zamykające myśli
Podsumowując, luźny podział naszej infrastruktury potokowej na warstwę obliczeniową, warstwę przechowywania i scentralizowaną bazę danych daje nam trzy kluczowe korzyści w porównaniu z ściślej powiązaną architekturą.
Solidniejsze rurociągi w przypadku awarii
Większa elastyczność w wyborze narzędzi do wdrożenia
Niezależnie skalowalne komponenty
Interesuje Cię wykorzystanie ML do ochrony największego na świecie ekosystemu kryptograficznego i jego użytkowników? Sprawdź Binance Engineering/AI na naszej stronie karier, aby zobaczyć otwarte oferty pracy.
