Blog
22. januára 2019 Gabriel Lachmann

Ako si postaviť svoju zlatú baňu.

Machine learning v praxi? Po viac ako roku spolupráce má zákazník vybudované oddelenie, ktoré spracováva obchodné dáta z celého sveta.

Po pár rokoch na rôznych IT projektoch som si všimol, že okrem určitých nemenných pravidiel sa  stále objavuje kúzlo v podobe zázračného pomenovania niečoho síce starého, ale dobre oprášeného, čo získava pozornosť dodávateľov aj zákazníkov. Nosná vlna týchto trendov vychádza z marketingových oddelení veľkých firiem, alebo ju spúšťajú ambiciózni akademici. V prípade aktuálne horúceho buzzwordu Machine learning (ML) a Umelá inteligencia (UI) je to asi veľmi podobné. Je tu príležitosť. Je tu výkon aký tu nebol, konečne sú dostupné ľahko realizovateľné a „lacné“ datacentrá a je tu hlavne veľa dát.

Pri povrchnom pohľade pod ML a UI chápeme implementácie niektorých algoritmov, ktoré sú známe už niekoľko desaťročí. Na univerzitách sa študenti roky stretávajú s ich implementáciami v prostrediach ako RMathlab atď. a mnohé aplikácie ako neurónové siete a fuzzy matching aplikácie sú už roky súčasťou zariadení, programov a appiek, ktoré denne používame. Niečo ale dnešný raketový boom ML a UI spustilo a veľké firmy v tomto prípade naháňajú chvost trendu.

Na jednej strane vznikajú skutočné Big Data z množstva dátových zdrojov a na druhej strane sa stáva stále dostupnejší vysoký výkon. Datacentrá nám prinášajú doslova do domáceho notebooku obrovský procesorový potenciál a v princípe neobmedzené úložné kapacity. Samo o sebe by to ale nestačilo, keby nedošlo k radikálnemu posunu v samotnej implementácii známych algoritmov a v oblasti obslužných platforiem, ktoré nové implementácie algoritmov dokážu spúšťať v paralelizovanom prostredí. Historicky sa v tejto oblasti pohybuje niekoľko veľkých dodávateľov technológií, ale skutočný gamechanger je niekde inde.

Kľúčovú rolu v tejto oblasti podľa mňa zohrala Open-source komunita a veľkí hráči, ktorí naskočili na túto, z korporátneho pohľadu novú, vlnu. Pri podrobnejšom pohľade na mnohé komerčné platformy a rokmi overené produkty, ktoré začali v posledných mesiacoch ponúkať zázračné možnosti matematiky a štatistiky, narazíte na tie isté open-soruce knižnice algoritmov a rovnaké výpočtové prostredia. Existujú síce hráči na trhu, ktorí roky vyvíjajú vlastné implementácie ML a UI algoritmov, ale  dominancia projektov z rodiny Apache je očividná.

Tento blog má za cieľ ísť hlbšie pod povrch témy a priblížiť reálnu skúsenosť implementácie zákazníckej potreby v oblasti korporátnych big data. Tento príbeh začal sucho. Nákup veľkej svetovej korporácie našiel na webe EEA informáciu o našej kompetencii v oblasti opensource platforiem a zaslal nám dopyt ohľadom potenciálnej implementácie štatistických algoritmov pomocou opensource platforiem.

 

Klient niečo chce, ale vy viete, že chce niečo iné

Po prvej výmene názorov a vysvetlení očakávaní zákazníka nastala situácia, pred ktorou sa často nachádza obchodník a konzultant dodávateľa. Klient niečo chce, ale vy viete, že chce niečo iné.
Klient chce „len“ vyskúšať konkrétnu rodinu štatistických algoritmov a zistiť na malej vzorke dát, či mu výsledky otvárajú priestor pre rozvoj a investície v oblasti predikcie nových obchodných príležitostí, alebo je to slepá cesta. Zároveň výpočty môžu trvať aj dni, podstatný je výsledok. Naprogramovaný výsledok musí byť open-source, alebo v prípade hotových komponentov je možné použiť len open-source.

Skúsenosti z mnohých projektov hovoria, že „len“ je v skutočnosti požiadavka zákazníka, že to nemá byť drahé a má to trvať krátko. Pre dodávateľa to znamená, že z pohľadu výskumu a know-how musí do projektu dať minimálne 90% toho, čo by investoval do veľkého (tisíce dní práce) projektu.
Druhá požiadavka, že čas spracovania nehrá rolu, znamenala, že zákazník nemá žiadnu robustnú infraštruktúru a jeho predstava je, že riešenie bude fungovať na bežných počítačoch. Pre dodávateľa to znamená, že v projekte nie je žiaden rozpočet na infraštruktúru.
Požiadavka na open-soruce je v súčasnosti štandard. Firmy sa už naučili, že open-soruce neznamená zadarmo, ale znamená to hlavne minimalizáciu rizika vendor lock-in https://en.wikipedia.org/wiki/Vendor_lock-in – závislosti na jednom dodávateľovi. Open-source zároveň minimalizuje právne riziká vychádzajúce z rôznych temných zákutí autorského práva a patentov.

 

Hľadáme riešenie

Späť ale k dileme obchodníka. Dalo by sa túto situáciu čítať rôzne. V mojom prípade som si možnosti vyhodnotil nasledovne.

  1. Môžem striktne dodržať zákazníkove požiadavky a pokúsiť sa byť medzi potenciálnymi dodávateľmi najlacnejší. Predpokladaný budget niekde medzi riadkami trčí a všetky zdroje na projekt by sa sústredili do naprogramovania algoritmu a pokus zvládnuť predloženú dátovú vzorku v rozumnom čase.
    Túto možnosť ja osobne volám Preteky ku dnu (dno ceny a dno kvality) a nie je väčšinou výhodná ani pre zákazníka. Takého plytvanie potenciálom si môže dovoliť len štátna správa na Slovensku viď https://slovensko.digital/.
    Korporácie majú tú výhodu, že vedia využiť potenciál dodávateľa aj počas samotného obstarávania a cena nemusí byť jediný ukazovateľ.
    Rozhodnutie opustiť túto alternatívu nastalo po internom overení technologických možností. Požadovanú vzorku dát sme otestovali v štatistickom prostredí R https://www.r-project.org/  a použili sme jeden z požadovaných algoritmov – Apriori https://en.wikipedia.org/wiki/Apriori_algorithm, ktorý nám pri prvom pokuse zrútil aplikáciu na nedostatku pamäte. Zákazník mal na vstupe skutočné Big Data a Apriori algoritmus nie je jedným z tých, ktorý „zabúda“ počas svojho behu na predchádzajúce iterácie. Potrebuje veľa zdrojov.
    Rozhodnutie vyrábať implementáciu známeho algoritmu v rámci nášho EEA interného vývoja, ktorá bude lepšia ako implementácia z akademického projektu R, by bolo chvíľu zábavné – zaprogramovali by sme si, ale v kontexte obchodného uvažovania by to bola cesta do pekla. Na druhej strane sme vedeli, že väčšina našej konkurencie pôjde slepo po zadaní. My sme sa rozhodli zákazníka naučiť niečo nové.
  2. Druhou možnosťou mohol byť pokus zmeniť zákazníkove vnímanie problematiky a pokúsiť sa zmeniť zadanie obstarávania. V prípade väčšieho zákazníka sa už rozbehnutý vlak ťažko zastavuje. Museli sme sa pokúsiť v rámci existujúceho rámca navrhnúť funkčné riešenie.
  3. Jedinou pre nás viditeľnou možnosťou bolo využitie existujúcich riešení s už implementovanými algoritmami využívajúcimi parallel-computing https://en.wikipedia.org/wiki/Parallel_computing. Požiadavka na open-source nám zjednodušila výber platformy na rodinu Apache a R riešení. Požiadavka na možnosť spracovania skutočných Big data nám vyradila možnosť použitia Rka. Stratégia bola na svete. Použijeme Apache Spark https://spark.apache.org/ a existujúce implementácie algoritmov MLlib https://spark.apache.org/mllib/. Pokúsime sa zákazníka presvedčiť, že využitie robustnejšej platformy bude dobrá investícia do budúceho rozvoja projektu. Nebudeme najlacnejší, ale budeme najperspektívnejší dodávateľ.

 

Výpočet na pár minút?

Asi by som nepísal tento príbeh, keby sme daný tender nevyhrali. Takže v skratke. Zákazník dostal v rámci predstavenia riešenia demo v podobe Docker virtuálneho servera, kam sa dali namapovať zdrojové datasety a z príkazového riadku bolo možné spustiť algoritmus, ktorý vygeneroval výsledky do výsledného datasetu. Veľmi zaujímavé výsledky… Výpočet netrval dni, trval rádovo jednotky minút. Zákazník dostal od nás ponuku, že v rámci riešenia dostane virtualizované výpočtové prostredie, ktoré bude obsahovať okrem existujúcich implementovaných algoritmov niekoľko rozhraní pre implementáciu vlastných algoritmov, hlavne pre spracovanie vstupných datasetov a namapovanie výstupov výpočtov na zdrojové dáta  = aplikovanie poznania zo štatistiky na skutočnosť zákazníka (o tom ale budú blogy v budúcnosti).

Zároveň ponuka obsahovala webové grafické prostredie Zeppelin https://zeppelin.apache.org/, ktoré umožní prístup k platforme cez web prehliadač a sprístupní riešenie množstvu dátových analytikov súčasne. Zeppelin umožní zjednotiť na úrovni jednej obrazovky množstvo platforiem a ide o veľmi perspektívny nástroj na zabezpečenie frontend integrácie systémov aj mimo Spark výpočtovú platformu.

 

Ako to dopadlo?

Po viac ako roku spolupráce má zákazník vybudované oddelenie, ktoré spracováva obchodné dáta z celého sveta. Má k dispozícii informácie o miliónoch transakcií z rôznych trhov a rôznych segmentov až po informácie o samotných transakciách produktov smerom na zákazníkov.

Využitie ML algoritmov pomáha obchodu spoločnosti identifikovať nových zákazníkov. V súčasnosti systém poskytuje informácie o tom, ktorému zákazníkovi sa oplatí ponúknuť daný produkt a s akou pravdepodobnosťou si ho kúpi. Odhady na začiatku boli, že dosiahneme úspešnosť takýchto obchodných odporúčaní pod 50% a cieľ bol dosiahnuť aspoň 40%. Dnes sa výsledky pohybujú v pásme medzi 80-98% úspešnostičo prekonalo akékoľvek očakávania. ML ale nie je nový mozog, čo nahradí existujúcich obchodníkov. ML sa len vie učiť a opakovať.

Pre to, aby bolo možné algoritmy používať viac-menej v reálnom čase, je podstatné zvoliť vhodné vstupné parametre. Ak sú parametre nastavené „nízko“, algoritmus nedáva žiadne výsledky. Ak sa nastavia „vysoko“, množstvo výstupov a kombinácii výsledkov môže byť blízko k nekonečnu a výpočtový aparát sa zasekne, zahltí, alebo minimálne nedá odpovede, ktoré by bolo možné rozumne interpretovat. Tu je obrovský priestor pre UI. Niekedy aj tisícina v hodnote parametra rozhoduje o tom, či algoritmus „funguje“. V tejto oblasti má EEA niekoľko unikátnych konceptov a riešení. Vieme bežne dostupné algoritmy „ochrániť“ umelou inteligenciou, ktorá sa priebežne učí ako prebiehajú výpočty na daných zákazníckych dátach. Efektivita takto optimalizovaného a zabezpečeného výpočtového aparátu môže byť hlavný argument, či je dané algoritmy vôbec možné s danými dátami a požiadavkami použiť. V tomto je portfólio EEA originálne a v súčasnosti nás odlišuje od konkurencie.

 

Sedliacky rozum a Machine learning

ML je honosný buzzword ako naznačujem na začiatku blogu. Ide o obyčajnú štatistiku zapojenú do vhodne implementovaných algoritmov. Bez rozumnej požiadavky a vhodných dát však nemá pre používateľov žiadnu hodnotu. Na druhej strane, ak existuje rozumná požiadavka u zákazníka, dáta, ktorými disponuje, majú potenciál zlatej rudy. ML môže byť tou zlatou baňou, ktorá dokáže business zákazníka posunúť na novú úroveň. To, či sa zákazník nachádza v situácii, v ktorej mu ML môže pomôcť v dosahovaní jeho cieľov, je otázka pre skúsených expertov v tejto oblasti, alebo je to o pochopení štatistiky ako takej a jej potenciálu v danej doméne, v ktorej sa zákazník pohybuje.

Ak by som to mal zhrnúť, ML a UI nie je nič nové.
Ak majú byť efektívne nasadené, ide o klasickú poctivú prácu v oblasti konzultingu, informatiky a matematiky. Bez schopnosti používať sedliacky rozum a danej doménovej znalosti sú to prázdne pojmy. Za určitých podmienok je to ale obrovská príležitosť a dnes je možné odlíšiť sa od konkurencie len v málo odtieňoch. Nasadenie ML a UI môže byť ten odtieň, ktorý Vás môže posunúť vpred.

Ak máte pocit, že by ste vedeli v tejto oblasti uvažovať o vybudovaní Vašej zlatej bane, pokojne sa na nás obráťte. Niekoľko ich už prevádzkujeme a budujeme.

 

Gabriel Lachmann

Podobné projekty