Blog

04 listopada 2019 Tomasz Lis

eSky ML

eSky ML

Hurtownia danych

Kilka lat temu cała analiza danych w eSky odbywała się z wykorzystaniem silnika MSSQL. Ilość miejsca nie była nieograniczona i mogliśmy przechowywać dane jedynie z kilku miesięcy. Dodatkowo przetwarzanie dużych ilości danych trwało na tyle długo, że podczas oczekiwania na wykonanie zapytań, nasi analitycy mogli trenować grę w piłkarzyki i stali się czołowymi graczami w naszej firmie. Wtedy podjęliśmy decyzję o utworzeniu jednej hurtowni danych, gdzie będziemy gromadzić wszystkie nasze dane do celów analitycznych. Rozwiązanie miało zapewniać tańsze przechowywanie danych i w miarę możliwości brak dużego kosztu na początku projektu, a w późniejszym terminie koszt uzależniony od stopnia wykorzystania. Do zrealizowania tego projektu zdecydowaliśmy się wykorzystać BigQuery od Google. Usługa ta pozwala niewielkim kosztem gromadzić duże ilości danych bez opłat za utrzymywanie stałej infrastruktury. Opłaty są pobierane przede wszystkim za wykonywanie zapytań na danych. Od tamtej pory zebraliśmy w BigQuery ponad 70TB. Dane archiwalne sprzed kilku lat nadal są dostępne do analizy bez przywracania z kopii zapasowych. Można weryfikować trendy zmian obejmujące lata zamiast miesięcy, jak to było w dotychczasowym rozwiązaniu. Łatwość dostępu do danych, którą zapewnia nam usługa BigQuery, otworzyła nam drzwi w kierunku uczenia maszynowego.

Początki ML

Potrzeba uproszczenia konfiguracji naszych aplikacji i chęć lepszego dostosowania oferty do oczekiwań naszych klientów spowodowały, że zaczęliśmy się interesować uczeniem maszynowym. W marcu 2018r. odbył się Google ML Kickstarter, w którym wzięliśmy udział. W ramach intensywnego warsztatu z pomocą inżynierów Google zrealizowaliśmy pierwszą wersję modelu do wyboru oferty ubezpieczeniowej oferowanej naszym klientom do kupowanego lotu. Po usprawnieniach i kolejnych wersjach model ten został pierwszym wdrożonym produkcyjnie w eSky modelem ML. Od tamtej pory zespół analityków danych w eSky, oprócz wnioskowania na podstawie zbieranych przez nas danych, zaczął utrzymywać produkcyjne rozwiązania oparte o ML Engine w Google Cloud Platform, które obecnie jest częścią całego AI Platform w GCP. Przy tworzeniu tego modelu nie obyło się jednak bez przeszkód. Analitycy, mający do dyspozycji dane dostępne w naszej hurtowni danych, skorzystali z nich tak, jak im było wygodnie i wykorzystując wybrane przez siebie dane, wytrenowali model. Późniejsza próba wykorzystania modelu okazała się dosyć trudna ze względu na brak tych samych danych, jakie zostały użyte do nauki modelu w warstwie aplikacji, która miała korzystać z predykcji modelu ML. Nauczeni tym doświadczeniem, postanowiliśmy kolejne prace wykonać w inny sposób.

Obecna infrastruktura ML

Do realizacji kolejnego projektu postanowiliśmy powołać zespół złożony z osób uzupełniających się kompetencjami w taki sposób, że zespół ten mógł zrealizować projekt bez jakiejkolwiek pomocy z zewnątrz. W ramach tego zespołu znaleźli się analitycy, specjaliści od uczenia maszynowego, deweloperzy python, deweloperzy tworzący pipeline wdrożeniowe i deweloperzy z zespołów, które miałyby skorzystać z utworzonego modelu ML. Pierwszy dwutygodniowy cykl przerósł nasze najśmielsze oczekiwania. Oprócz wdrożenia nauczonego modelu został opracowany framework do flow nauczania modelu, który planujemy wykorzystywać w przyszłych rozwiązaniach. Ma to znacznie przyspieszyć implementację przygotowania danych i nauczania modeli dzięki wykorzystaniu gotowych komponentów operujących na naszej hurtowni danych i naszej infrastrukturze AI. Pierwszy model został wytrenowany z wykorzystaniem powyższego frameworka na klastrze kubernetes i wdrożony na produkcję z wykorzystaniem pipeline w jenkinsie do Google AI Platform. Wszystkie kolejne przeuczenia modelu na najświeższych danych nie będą zajmować czasu pracy osoby tworzącej model, gdyż będą wykonywane automatycznie w naszej infrastrukturze CI. Kolejną korzyścią, jaką osiągnęliśmy, było otwarcie kodu do uczenia modeli dla wszystkich programistów pracujących w naszej firmie, co zaowocowało już w kolejnym cyklu. W  cyklu tym grupa innych programistów wspólnie ze specjalistami ML, z wykorzystaniem stworzonego wcześniej frameworka, była w stanie zaimplementować i wdrożyć zupełnie nowy model ML w ciągu jedynie dwutygodniowego okresu, gdyż obecnie proces tworzenia modelu to jedynie kwestia implementacji kroku przygotowania danych i nauki modelu, cała pozostała infrastruktura jest gotowa. Dzięki takiej pracy wyeliminowaliśmy również problem nauki i ewaluacji modelu na innych danych, gdyż dostarczeniem danych do nauki i do ewaluacji modelu zajęli się ci sami programiści, a nie zupełnie inni jak to było w przypadku pierwszych podejść do ML w eSky. Model ten zajmuje się klasyfikacją komunikacji z klientem, która jest prowadzona w wielu różnych językach (grupa eSky jest obecna już w prawie 50 krajach na świecie!)

Plany na przyszłość

Dzięki włączeniu programistów tworzących nasze aplikacje w proces budowania rozwiązań ML w eSky, poszerzyliśmy ich kompetencje w tym zakresie, co owocuje większym ich zaangażowaniem w jego realizację. 

Wykorzystując stworzony framework i zdobyte doświadczenia, planujemy tworzyć kolejne modele przy ścisłej współpracy programistów, analityków i specjalistów ML w ramach zespołów deweloperskich implementujących konkretne rozwiązania. Chcemy, aby dzięki temu nasza oferta była jeszcze bardziej dopasowana do oczekiwań klientów, żeby pilne potrzeby naszych klientów były realizowane jeszcze szybciej i sprawniej niż dotychczas.

P.S. śledźcie nasz profil na facebooku, będziemy realizować meetup związany z powyższą tematyką 🙂

Zobacz na blogu

17.11.2019
Dariusz Rusin
eSky zaproszony do współpracy z Huawei w celu integracji aplikacji mobilnej z nowym asystentem eSky zaproszony do współpracy  z Huawei w celu integracji aplikacji mobilnej z nowym asystentem

Chiński gigant w odpowiedzi na blokady technologiczne i handlowe ze strony Stanów Zjednoczonych rozpoczął ambitny...

17.10.2019
Tomasz Kołodziej
Advanced Kubernetes Workshop – Tel Awiw Advanced Kubernetes Workshop – Tel Awiw

Kubernetes to otwarta, elastyczna i  dynamicznie rozwijająca się platforma pozwalająca na uruchamianie skonteneryzowanych usług. Kiedy...