Jak firma Tokopedia obniżyła koszty operacyjne, ulepszając swoją aplikację internetową sprzedawcy za pomocą systemów uczących się

Dendi Sunardi
Dendi Sunardi
Geoffrey Prasetyo
Geoffrey Prasetyo
Swetha Gopalakrishnan
Swetha Gopalakrishnan

Tokopedia to indonezyjska firma technologiczna będąca jedną z największych platform e-commerce, która hostuje na swojej platformie ponad 40 produktów cyfrowych i ponad 14 milionów zarejestrowanych sprzedawców.

Mitra Tokopedia, część branży biznesowej Tokopedii, to aplikacja internetowa, która pomaga właścicielom małych firm w sprzedaży produktów cyfrowych, takich jak kupony na kredyty i gry, pakiety danych, tokeny elektryczne, rachunki opieki zdrowotnej itp. Jest ona jednym z głównych kanałów sprzedaży w ponad 700 miastach firmy Mitra Tokopedia, dlatego ma kluczowe znaczenie dla wygody użytkowników.

Kluczowym etapem procesu rejestracji jest zweryfikowanie swojej tożsamości sprzedawców. Aby przejść weryfikację sprzedawcy, sprzedawca musi przesłać swój krajowy dokument tożsamości oraz selfie z tym dokumentem. Jest to tzw. proces poznawania klienta.

Dzięki dodaniu systemów uczących się do tego ważnego procesu PSK w swojej aplikacji internetowej firma Mitra Tokopedia zwiększyła komfort użytkowników, a liczba błędów weryfikacji zmniejszyła się o ponad 20%. Organizacja obniżyła też koszty operacyjne dzięki ograniczeniu konieczności ręcznego zatwierdzania o prawie 70%.

Wyzwanie

Większość danych PSK była odrzucana, więc zespół operacyjny musiał przesyłać tysiące zgłoszeń tygodniowo do ręcznej weryfikacji. Spowodowało to nie tylko wysokie koszty operacyjne, ale również pogorszyło wrażenia użytkowników, których proces weryfikacji się opóźnił. Głównym powodem odrzucenia płatności było to, że sprzedawcy nie przesyłali poprawnie selfie z dokumentami tożsamości. Firma Mitra Tokopedia chciała rozwiązać ten problem w skalowalny sposób, korzystając z nowoczesnych funkcji internetowych.

Rozwiązanie

Zespół Tokopedii postanowił wykorzystać systemy uczące się w TensorFlow.js, aby rozwiązać ten problem już na samym pierwszym etapie procesu PSK, czyli podczas przesyłania obrazów przez użytkownika. Firma wykorzystała MediaPipe i bibliotekę wykrywania twarzy TensorFlow, aby wykryć twarz sprzedawcy za pomocą 6 najważniejszych punktów, gdy przesyłał dokument tożsamości i zdjęcia selfie. Dane wyjściowe modelu są następnie używane do sprawdzenia pod kątem kryteriów akceptacji. Po pomyślnej weryfikacji informacje są wysyłane do backendu. Jeśli weryfikacja się nie powiedzie, sprzedawca zobaczy komunikat o błędzie i wybierz opcję ponownej próby. Zastosowano podejście hybrydowe, w którym model przeprowadza wnioskowanie po stronie urządzenia lub serwera w zależności od specyfikacji telefonu. Urządzenie niższego poziomu dokonałoby wnioskowania na serwerze.

Zastosowanie modelu ML na początku procesu PSK umożliwia:

  • Popraw współczynnik odrzuceń w procesie PSK.
  • Ostrzegaj użytkowników o możliwym odrzuceniu obrazów na podstawie jakości oceny modelu.

Dlaczego warto wybrać systemy uczące się zamiast innych rozwiązań?

Systemy uczące się mogą automatyzować powtarzające się zadania, które są czasochłonne lub niepraktyczne wykonywane ręcznie. W przypadku Tokopedii optymalizacja obecnego rozwiązania niekorzystającego z systemów uczących się nie przyniosła istotnych wyników, natomiast rozwiązanie ML może znacznie zmniejszyć obciążenie zespołu operacyjnego, który musiał ręcznie przetwarzać tysiące zatwierdzeń tygodniowo. Dzięki rozwiązaniu ML sprawdzanie obrazu można przeprowadzać niemal natychmiast, co zwiększa wygodę użytkowników i poprawia wydajność operacyjną. Dowiedz się więcej o ramkach problemów, aby określić, czy systemy uczące się są odpowiednie w przypadku Twojego problemu.

Uwagi na temat wyboru modelu

Przy wyborze modelu ML brane są pod uwagę poniższe czynniki.

Koszt

Zespół sprawdził łączny koszt używania modelu. TensorFlow.js to pakiet open source, w którym Google dobrze zarządza, dzięki czemu oszczędzamy na kosztach licencjonowania i konserwacji. Kolejnym istotnym elementem jest koszt wnioskowania. Przeprowadzanie wnioskowania po stronie klienta pozwala zaoszczędzić dużo pieniędzy w porównaniu z przetwarzaniem ich po stronie serwera za pomocą kosztownych GPU, szczególnie wtedy, gdy dane okażą się nieprawidłowe i nieużyteczne.

Skalowalność

Wzięto pod uwagę skalowalność modelu i technologii. Czy jest w stanie obsłużyć wzrost ilości danych i złożoności modeli w miarę rozwoju naszego projektu? Czy można go rozszerzyć tak, aby obejmował inne projekty lub przypadki użycia? Przetwarzanie na urządzeniu pomaga, ponieważ model może być hostowany w sieci CDN i dostarczany po stronie klienta, co jest bardzo skalowalne.

Wydajność

Wzięto pod uwagę rozmiar biblioteki (w KB) i opóźnienie procesu środowiska wykonawczego. Większość użytkowników aplikacji Mitra Tokopedia korzysta z urządzeń średniej i słabej klasy o średniej szybkości połączenia z internetem. W związku z tym priorytetem jest wydajność pobierania i czasu działania (tj. szybkość, z jaką model może generować dane wyjściowe), która zaspokaja ich konkretne potrzeby i zapewnia użytkownikom doskonałe wrażenia.

Inne uwagi

Zgodność z przepisami: zespół musiał się upewnić, że wybrana biblioteka jest zgodna z odpowiednimi przepisami dotyczącymi ochrony danych i prywatności.

Zestaw umiejętności: ocenił kompetencje i umiejętności swojego zespołu. Niektóre platformy i biblioteki systemów uczących się mogą wymagać określonych języków programowania lub doświadczenia w określonej dziedzinie. Biorąc pod uwagę te czynniki, firma podjęła świadomą decyzję przy wyborze odpowiedniego modelu dla swojego projektu wykorzystującego systemy uczące się.

Wybrana technologia

Po przeanalizowaniu tych czynników TensorFlow.js spełnił ich potrzeby. Może działać w pełni na urządzeniu z użyciem backendu WebGL z wykorzystaniem GPU urządzenia. Uruchomienie modelu na urządzeniu pozwala szybciej docierać do użytkowników z powodu krótszego opóźnienia serwera i obniża koszty mocy obliczeniowej serwera. Więcej informacji o systemach uczących się na urządzeniu znajdziesz w artykule Zalety i ograniczenia systemów uczących się na urządzeniu.

„TensorFlow.js to biblioteka systemów uczących się typu open source opracowana przez Google i stworzona z myślą o programistach JavaScriptu, która może uruchamiać w przeglądarce po stronie klienta. Jest to najlepsza opcja w przypadku sztucznej inteligencji w internecie z kompleksową obsługą operatorów backendu WebGL, WebAssembly i WebGPU, której można używać w przeglądarce o szybkiej wydajności”.Jak firma Adobe wykorzystała Web ML przy użyciu TensorFlow.js, aby ulepszyć program Photoshop dla stron internetowych

Implementacja techniczna

Firma Mitra Tokopedia użyła MediaPipe i biblioteki wykrywania twarzy TensorFlow – pakietu zawierającego modele do uruchamiania wykrywania twarzy w czasie rzeczywistym. W szczególności wykorzystano dostępny w tej bibliotece model MediaPipeFaceDetector-TFJS, który implementuje środowisko wykonawcze tfjs.

Zanim zagłębimy się w implementację, krótko podsumuj, czym jest MediaPipe. MediaPipe umożliwia tworzenie i wdrażanie rozwiązań ML na urządzeniu na urządzeniach mobilnych (Android, iOS), w internecie, na komputerach, na urządzeniach brzegowych oraz na urządzeniach brzegowych.

MediaPipe oferuje 14 różnych rozwiązań w momencie tworzenia tego posta. Możesz używać środowiska wykonawczego mediapipe lub tfjs. Środowisko wykonawcze tfjs zostało utworzone w języku JavaScript i udostępnia pakiet JavaScript, który może pobrać na zewnątrz aplikacja internetowa. Różni się ono od środowiska wykonawczego mediapipe, które zostało utworzone w C++ i skompilowane do modułu WebAssembly. Główne różnice to wydajność, możliwość debugowania i grupowanie. Pakiet JavaScript można połączyć z klasycznymi pakietami, np. webpack. Moduł Wasm jest natomiast większym i oddzielnym zasobem binarnym (który nie jest zależność czasu ładowania) i wymaga innego przepływu pracy Wasm. Działa jednak szybciej, co pozwala spełnić wymagania techniczne i wydajność.

Schemat działania modeli MediaPipe i TensorFlow w różnych środowiskach wykonawczych na przykładzie FaceDetection.
Ogólna ilustracja przedstawiająca sposób działania modeli MediaPipe i TensorFlow w różnych środowiskach wykonawczych z wykorzystaniem FaceDetection jako przykładu

Wróćmy do implementacji w Tokopedii. Najpierw musisz zainicjować model w ten sposób. Gdy użytkownik przesyła zdjęcie, wzorzec HTMLImageElement jest przekazywany jako dane wejściowe do wykrywania.

// Create the detector.
const model = faceDetection.SupportedModels.MediaPipeFaceDetector;
const detectorConfig = {
  runtime: 'tfjs'
};

const detector = await faceDetection.createDetector(model, detectorConfig);

// Run inference to start detecting faces.
const estimationConfig = {flipHorizontal: false};
const faces = await detector.estimateFaces(image, estimationConfig);

Wynik listy twarzy zawiera wykryte twarze wszystkich osób na zdjęciu. Jeśli model nie może wykryć żadnych twarzy, lista jest pusta. W przypadku każdej twarzy zawiera ramkę ograniczającą wykrywaną twarz oraz tablica 6 punktów kluczowych dla wykrytej twarzy. Dotyczy to np. oczu, nosa i ust. Każdy punkt klucza zawiera znaki x i y, a także nazwę.

[
  {
    box: {
      xMin: 304.6476503248806,
      xMax: 502.5079975897382,
      yMin: 102.16298762367356,
      yMax: 349.035215984403,
      width: 197.86034726485758,
      height: 246.87222836072945
    },
    keypoints: [
      {x: 446.544237446397, y: 256.8054528661723, name: "rightEye"},
      {x: 406.53152857172876, y: 255.8, "leftEye },
      ...
    ],
  }
]

box reprezentuje ramkę ograniczającą płaszczyznę w przestrzeni pikseli obrazu, gdzie xMin to wartości graniczne osi x, xMax oznaczają granice x, yMin oznaczają granicę y, a width to wymiary ramki ograniczającej.yMaxheight W przypadku elementów keypoints, x i y reprezentują rzeczywiste położenie punktu klucza w przestrzeni piksela obrazu. name określa etykietę punktu klucza: 'rightEye', 'leftEye', 'noseTip', 'mouthCenter', 'rightEarTragion' i 'leftEarTragion'. Jak wspomnieliśmy na początku tego posta, aby dokończyć weryfikację, sprzedawca musi przesłać swój dokument tożsamości i selfie z tym dokumentem. Dane wyjściowe modelu są następnie używane do sprawdzenia pod kątem kryteriów akceptacji, czyli dopasowania do 6 wspomnianych wcześniej kluczowych punktów, które zostały uznane za prawidłową kartę identyfikacyjnej i zdjęcie selfie.

Po pomyślnej weryfikacji odpowiednie informacje o sprzedawcy są przekazywane do backendu. Jeśli weryfikacja się nie powiedzie, sprzedawca zobaczy komunikat o niepowodzeniu i będzie mógł spróbować ponownie. Żadne informacje nie zostaną wysłane do backendu.

Diagram strony Mitra KYC, modelu TensorFlow.js oraz interakcji serwera.
Jak strona Mitra KYC, model TensorFlow.js i serwer wchodzą ze sobą w interakcje

Wydajność urządzeń słabszych

Ten pakiet ma rozmiar tylko 24,8 KB (w postaci zmniejszonej i zapakowanej w postaci pliku gzip), co nie wpływa znacząco na czas pobierania. Jednak w przypadku słabszych urządzeń przetwarzanie w czasie działania trwa bardzo długo. Dodaliśmy dodatkową logikę sprawdzającą pamięć RAM i CPU urządzenia przed przekazaniem 2 obrazów do modelu wykrywania twarzy dla systemów uczących się.

Jeśli urządzenie ma więcej niż 4 GB pamięci RAM, połączenie sieciowe większe niż 4G i procesor z więcej niż 6 rdzeniami, obrazy są przesyłane do modelu na urządzeniu w celu weryfikacji twarzy. Jeśli te wymagania nie są spełnione, model na urządzeniu jest pomijany, a obrazy są przesyłane bezpośrednio na serwer w celu weryfikacji. W tym celu hybrydowo w przypadku starszych urządzeń. Wraz z rozwojem sprzętu coraz więcej urządzeń będzie w stanie odciążyć serwer od mocy obliczeniowej.

Wpływ

Dzięki integracji z systemami uczącymi się Tokopedia zdołała rozwiązać problem z wysokim współczynnikiem odrzuceń i uzyskała te wyniki:

  • Współczynnik odrzuceń spadł o ponad 20%.
  • Liczba zatwierdzeń ręcznych zmalała o prawie 70%.

W ten sposób nie tylko ułatwiło to sprzedawcom korzystanie z aplikacji, ale także obniżyło koszty operacyjne zespołu Tokopedii.

Podsumowanie

Ogólnie wyniki tego studium przypadku pokazały, że w odpowiednich przypadkach użycia internetowe systemy uczące się na urządzeniu mogą być cenne dla poprawy komfortu użytkowników i skuteczności funkcji, a także do osiągnięcia oszczędności i innych korzyści biznesowych.

Wypróbuj funkcję wykrywania twarzy MediaPipe samodzielnie, używając MediaPipe Studio, oraz przykładowego kodu MediaPipe Face Detector w przeglądarce.

Jeśli chcesz rozszerzyć możliwości własnej aplikacji internetowej o systemy uczące się działające na urządzeniu, zapoznaj się z tymi materiałami: