Podcast

Data Talk #59: Antonín Hoskovec (Glami)

epizoda#59 |  vyšlo  |  délka  | 797 poslechů |   |  mp3

V dnešním díle se podíváme na data science módního vyhledávače Glami s Tondou Hoskovcem, který vede jejich AI tým už 3.75 roku. Glami spoustu svého kódu vypouští do světa jako open source. Tonda v AI není žádný nováček a prošel zvučnými firmami jako Seznam nebo Rossum. Mimo komerční projekty svoje know how věnuje i dobročinným projektům a akademické půdě. Rozhovorem vás provedou moderátoři Hynek Walner a Barbora Hinnerová.

Strojový přepis

Dobrý den všem, jmenuji se Hinek Volner.

Ahoj, jmenuji se Barbara Hinerová.

Vítáme vás u dalšího dílu Data Talku.

Naším dnešním hostem je Tonda Vskovec, vedoucí týmu umělé inteligence ve společnosti Glami.

Ahoj, vítej, Tondo.

Ahoj.

Ahoj.

V dnešním díle si budeme povídat zejména o tom, proč je možná překvapivě společnost Glami firmou zaměřenou na umělou inteligenci. Ale ještě než se pustíme do tohoto hlavního tématu, pojď se, Tondo, trochu představit nám i posluchačům a povědět, jak vedla tvoje cesta k datům, kde to všechno začalo, tato vášeň. Myslím, že ta cesta byla poněkud spletitá.

Já jsem se vlastně už na Gimplu setkal s mnoha lidmi z Mytonu a pomáhal jsem jim na Stahui.cz a Heuréce. Poté jsem vystudoval Fakultu elektrotechnickou na ČVUT, kde jsem studoval matematické inženýrství. Jeden můj dobrý kamarád založil firmu Simplia, kde jsme si při našich rozhovorech poprvé začali trochu povídat o doporučování a datech. Odtud jsem pak rovnou přešel do Seznamu, do týmu Honzy Popelky, kde jsem už dělal machine learning na plný úvazek. Potom jsem se na pár let přesunul do Rosumu, odtud do Qminers a nakonec do Glami, kde právě…

Na to, že ta cesta byla takhle spletitá, jsi nám to řekl docela rychle. Můžeš nám k tomu dát nějaký kontext a třeba i časový rámec, kdy se tyto věci staly?

Na ČVUT jsem se věnoval – a dodnes v malém rozsahu věnuji – kvantovým počítačům. Velmi po vzoru Michaela Nielsona jsem si všiml, že když jsem řešil časově nezávislou Schrödingerovu rovnici, tak diferenciální rovnice jsou úplně stejné jako ty, které člověk řeší při backpropagaci v machine learningu. Čistě ze zájmu…

Jestli mohu, zastavím se na chvíli, protože už je to nějaký pátek, co jsem psal Schrödingerovu rovnici do sešitu, ale v čem je ta podobnost?

Podobnost je mezi vlnovou funkcí kvantového systému a gradientním sestupem. Všechno to bylo čistě náhodou, člověk musí zvolit správný systém s vhodným Hamiltoniánem a navíc provést menší transformaci, aby byly rovnice úplně stejné. Ale skutečně existuje Hamiltonián, u kterého jsou ty rovnice totožné. Čistě ze zájmu a také proto, že pro mě bylo jednodušší si přečíst o backpropagaci, když už jsem znal ty diferenciální rovnice, jsem se na to podíval jako na cvičení a musím říct, že mě to docela chytlo.

Největší dojem na mě udělal právě Honza Popelka v Seznamu při pohovoru na pozici výzkumníka, protože to bylo v době, kdy vycházel Word2Vec, a on to tehdy tak intuitivně popsal, že hledají někoho, kdo se těmto věcem bude věnovat, což se mi velmi líbilo.

A kromě Seznamu a Word2Vec, jaké další problémy jste řešili? Protože z toho výčtu firem – seznam.cz, Rosum, Qminers – všechny to jsou odlišné domény, tudíž i různé úlohy. Co bylo pro tebe vodítkem?

To je asi dáno tím, že mě opravdu baví mnoho oblastí strojového učení. V Seznamu jsem pracoval na Skliku, kde jsme řešili hlavně relevanci reklamy. Modely pracovaly s poměrně velkými daty, to byla moje doména v té době. Pak jsem chtěl vyzkoušet vizuální modely a trochu zpracování přirozeného jazyka. Proto jsem zamířil do Rosumu, kde se tomu věnujeme. Doufám, že nevadí, když prozradím, že model, který v Rosumu nyní v produkci rozpoznává jazyk faktury, je třeba můj.

V Rosumu jsem byl lehce přes dva roky. Poté jsem chtěl vyzkoušet algoritmické obchodování v Qminers, což je velmi intelektuální obor, jakési kolbiště, kde si člověk testuje své modely proti modelům ostatních, což je velmi atraktivní. Po této zkušenosti jsem cítil potřebu se vrátit k oborům, které jsou více aplikovatelné, protože finance jsou dost uzavřenou komunitou, kde firmy drží tajemství, a mně vyhovuje být spíše otevřenější. Takže jsem se vrátil úplným kolečkem k lidem z Mytonu a k Glami.

Než se pustíme do Glami, víme, že děláš spoustu projektů mimo práci, které také souvisejí se strojovým učením. Je to tak?

Ano, přesně tak. Například pracoval jsem na doktorském studiu v Seznamu, a kromě toho velmi rád pomáhám třeba v Motole nebo v centru Paraplé se statistickými modely, které pomáhají v jejich výzkumu. Občas to vede k publikacím a když se podaří, i k určitým klinickým změnám, které pak reálně využívají lékaři.

Musíš nám rozhodně více povědět, jaké modely zkoumáš v Parapleti a v Motole.

Myslím, že nejzajímavější byl článek, na němž jsem pomáhal kamarádovi Vojtovi Lengerovi z Motola. Tam pracují s pacienty po velmi složité operaci srdce, myslím, že se tomu říká Fontánova metoda, a mají s nimi dlouhodobou péči, trvající i desítky let. Je to jedna z mála nemocnic na světě, která tento komplexní přístup poskytuje.

Podstatou jejich výzkumu je longitudinální sledování pacienta v průběhu života a klinické testování, co by měli lidé dělat, aby žili co nejplnohodnotněji. Operace totiž přeoperuje srdce na tzv. jednokomorový stav, což může způsobovat potíže běžným životem. Zkoumají, jaký sport je pro ně vhodný, jakou životosprávu mají dodržovat, jak intenzivně se mají hýbat, a také zkoumají parametry z operace a měření a jak tyto informace následně aplikovat v klinické praxi.

Tehdy jsme pracovali na pěkném článku, který vyšel, myslím, v European Journal of Cardiology. Tato práce mě velmi bavila a stále v ní pokračuji.

Když se nám ozvou z centra Paraplé, tak tam zase typicky fyzioterapeuti cvičí s lidmi s různým postižením, často po poranění páteře v různých úrovních, a zkouší, jak jednotlivá cvičení fungují. Tuto problematiku také pravidelně modelujeme.

To je určitě velmi přínosná práce a rozumím, proč tě to tolik baví.

Chtěl jsem se zeptat, jak těžký je pro tebe takový totální přepínací kontext. Kdybych to lehce přehnal, přes den jseš na burze, buduješ kapitalismus, a v noci pomáháš lidem po těžké operaci srdce. Chápu, že společným jmenovatelem je matematika, ale domény jsou zcela odlišné.

Myslím, že hodně souvisí s tím, jak přistupuji k práci. Já se ráno do práce upřímně těším, protože je to pro mě taková hra. Připravím se jako malé dítě, které skládá hračky a sleduje, jak fungují. A protože málokdy mám dost, nevadí mi pak po práci přejít na další „hru“ v podobě cvičení a hraní si s hlavou.

Přes tvé různé „hrací pískoviště“ jsi nakonec skončil na pískovišti Glami, kde vedeš tým strojového učení, nebo jak přesně u vás tento tým nazýváte?

Říkáme si AI tým, ale je to přesně tým strojového učení.

Pojď nám trochu představit Glami. Čím se Glami zabývá, proč má AI tým a čemu se tam věnujete?

Samozřejmě. Vidíme sami sebe jako vyhledávač módy, fashion search engine. Snažíme se co nejvíce usnadnit lidem nalezení toho, co hledají, i kdyby třeba ještě nevěděli, že to hledají. To velmi souvisí s machine learningem, který děláme.

Náš business je postavený tak, že se domluvíme s někým, kdo módu vyrábí a prodává, nebo jen prodává, a snažíme se agregovat nabídku módy napříč trhem, aby naši zákazníci měli co nejširší výběr na jednom místě.

Móda je v několika ohledech velmi unikátní oblast. Produkty velmi rychle rotují – každý výrobce vydává letní kolekce, zimní kolekce, nabídky na Valentýna a další příležitosti. To znamená, že v móde je obrovské množství produktů, v nichž je velmi těžké se orientovat.

Když někdo například hledá šaty v retro stylu, může projít spoustu e-shopů a zkoušet všechny obrázky, ale často se stává, že výrobce nelabeluje produkty dostatečně přesně, nevyplňuje všechny kategorie a filtry.

Zde přicházíme my, Glami, které sjednocuje například kategorizaci a všechny možné filtry napříč nejrůznějšími e-shopy. Když tedy uživatel přijde a označí filtr „šaty v retro stylu“, my mu vyfiltrujeme nabídku napříč stovkami tisíc e-shopů.

Díky tomu, že u nás jde takto vyhledávat, je velká šance, že si zákazník produkt koupí u našeho partnera.

My ho zpravidla nasměrujeme přímo na e-shop partnera a většinou si ho objedná.

Máme s partnery dohodu, podle níž dostáváme část prodeje jako odměnu za to, že jim přivádíme zákazníky.

Systém tedy funguje na modelu platby za klik a je nastaven právě podle této dohody.

Takže GlamID je dnes běžnou součástí marketingového mixu módních e-shopů, pokud tomu správně rozumíme.

Ano, na jedné straně máme uživatele, kterým poskytujeme obrovskou přidanou hodnotu, protože nemusí prolézat tisíce obrázků šatů, a na druhé straně máme partnery, tedy e-shopy.

Můžete prosím trochu více rozvést, jak se tyto dvě linky doplňují a co přesně děláte v rámci machine learningového oddělení? Co je nejdůležitější pro jednu, co pro druhou stranu?

Myslím, že činnost AI týmu velmi úzce souvisí s fungováním GlamID.

Primárně se zaměřujeme na dvě oblasti.

Za prvé, je zde problematika anotace objektů – ta je ohromná, protože je velmi obtížné manuálně označovat a kategorizovat tak obrovské množství produktů.

Máme proto rozsáhlou skupinu modelů, které právě kategorizují a anotují.

Pro představu, měsíčně u nás projde systémem přibližně 60 milionů produktů.

Tyto data potom doplňujeme sjednoceným kategoriickým stromem a všemi filtry.

Druhá důležitá oblast, která zajišťuje, že se lidé na GlamID vrací, je doporučování.

Například v České republice máme kolem 180 tisíc různých šatů.

Je nereálné, aby člověk prošel i jen jedno procento všech nabízených šatů.

Úkolem systému je proto na prvních pár pozicích zobrazit to, co se uživateli pravděpodobně bude líbit, a tím mu usnadnit nalezení hledaného produktu.

Takže to jsou dvě hlavní oblasti, kde AI tým přímo pomáhá v rámci GlamID.

Jak velký je váš AI tým? Můžete se nám představit, kolik vás je, jak máte organizovanou práci a jak to funguje?

Ve Glami je celkem 125 lidí, z toho AI tým tvoří 10 lidí.

Máme také velmi blízký platformní tým, který se stará o web, a ten čítá přibližně 30 lidí.

Je tedy relativně malý tým, ale obsluhuje poměrně velký trh a poměrně hodně zemí.

Máte to tedy „v malíčku“. Business model Glami je již poměrně dobře zavedený, existujete více než deset let.

Když mluvíme o dalším růstu firmy, jednou ze základních strategií je rozšířit se na nové trhy.

Momentálně působíme ve třinácti zemích, což také souvisí s prací AI týmu; země jsou převážně evropské a každá má vlastní jazyk, takže nám velmi pomáhá zpracování přirozeného jazyka – NLP, které je u nás velké téma.

V podcastu jste nám představil v podstatě dva produkty, za které odpovídáš jako vedoucí AI týmu, a to kategorizaci a doporučování.

Pojďme se nyní podrobněji podívat na kategorizaci. Jak to funguje, co nám chceš odhalit?

Ano, začali jsme s tímto modelem před asi osmi lety, pokud se nepletu.

Tehdy vznikly modely jako VGG a ResNet.

Původní model se zaměřoval pouze na analýzu obrázku.

Postupem času začal model využívat i titulky a popisky produktů, aby přiřazoval všechny kategorie a filtry.

Poslední významnou změnou, která nastala přibližně před rokem a půl, byl přechod na model, kterému říkáme „Language Agnostic“.

Ten dokáže pracovat s titulky a popisky bez ohledu na jazyk.

Interně funguje tak, že máme model předtrénovaný na mnoha jazycích, mnohem více než těch, se kterými nakonec pracujeme.

Díky tomu model umí fungovat prakticky v jakékoli zemi, což nám teoreticky umožňuje expandovat do dalších zemí – model totiž již daný jazyk viděl v rámci tréninku.

Model má dvě velké „hlavy“: jednu vizuální, která analyzuje obrázky, a druhou, která zpracovává veškeré textové informace.

Nad nimi pak funguje model, který tyto vstupy kombinuje a na základě toho označuje příslušné kategorie a štítky.

Jaké jsou největší problémy, které konkrétně na tomto modelu řešíte? Pokud bychom to přirovnali k běžně řešeným problémům, například rozpoznání plemene psa, tak na to máme vyřešené metody. Co ale pro vás představují stěžejní výzvy? Nebo jestli výzvy nejsou?

Jednou z hlavních výzev je mít metriky, jako je precision a recall, co nejblíže jedné, protože každá chyba se uživateli dostane pod kůži.

V módních fotografiích se často vyskytují takzvané evergreen problémy, které působí značné obtíže.

Například trička často na sobě mají vyobrazení jiné osoby v odlišném oblečení, což situaci komplikuje.

Další komplikací je různorodost fotografií – některé e-shopy fotí produkty na bílém pozadí, jiné se zákazníkem či modelem.

Ještě jedna věc, které jsme si všimli, je, že před přidáním textové informace byly modely velmi zmatené při rozlišení dětských a dospělých oděvů.

Obzvláště u bot je to dosti obtížné i pro lidi, pokud je bota nafocena bez škály, protože není jasné, zda jde o dětskou či dospělou velikost.

Takové chyby jsou velmi nežádoucí, protože pokud si uživatel objedná a přijde mu dětská bota, není motivace produkt vracet.

To jsou tedy stálé výzvy.

Poslední rok jsme řešili také oblast, kterou bych označil jako operativní část, kdy jsme řešili, jak zajistit, aby model fungoval velmi stabilně a zároveň nebyl příliš nákladný.

Hodně jsme ladili, jak co nejefektivněji využívat dostupné nástroje, jako je Kubernetes.

Napsali jsme vlastní škálování, které nám nakupuje hardware vždy, když je… (text končí).

Potřeba je, protože například při importu produktů se někdy stane, že přijde čtvrt milionu produktů, které je potřeba všechny okategorizovat a otagovat co nejrychleji. Chceme se totiž co nejdříve ukazovat uživatelům. V ten okamžik se automaticky spustí část s využitím strojového učení, která nakoupí spoustu GPU, zařadí je do klastru, predikuje a následně se vše naškáluje dolů.

Možná bych se ještě malinko vrátila k té kategorizaci, protože s Jenkem trochu nesouhlasím, že je to vyřešený problém. Jasně, rozlišujete psy a kočky, ale obecně pro e-shop je klíčem úspěchu mít produkty správně kategorizované a správně nastavené jednotlivé kategorie, aby to bylo uživatelsky příjemné. Myslím si tedy, že to úplně dořešené není a že naopak z vašeho řešení, z toho jak máte nastavený kategorizací strom, mohou čerpat i ostatní hráči na trhu, zejména vaši partneři, tedy e-shopy.

Setkáváte se s tím, že by od vás partneři chtěli i pomoc s tím, jak kategorizují oni? Nebo že by přímo poptávali nějakou část vašeho řešení, aby to implementovali u sebe?

Určitě. Je to na více úrovních. Vlastně všechny kategorie a filtry u nás vznikají diskuzí s content týmem, kdy se partner s nimi sejde, podívají se, jaké kategorie už partner má a jaké by bylo možné přidat. Poté probíhá nějaká individuální diskuze. Částečně to vnímáme jako pomoc menším e-shopům, protože na řešení se strojovým učením nebo na ruční tagování menší partneři často nedosáhnou. My jim tak můžeme pomoct tím, že to za ně uděláme a produkty označíme.

Získávají tak konkurenceschopnost na extrémně konkurenčním trhu v souboji s velkými hráči, jako je About You a podobní. Díky tomu, že umíme pomoct i víc než jen při hledání, mají menší partneři šanci soutěžit s většími.

Například pokud někdo hledá ekologickou módu, máme na to filtr a když ho aktivuje, zobrazí se právě ti partneři, jejichž e-shopy s ekologickou módou mají třeba jen několik set produktů. Jsou tak jediní, kdo se zobrazí. Pro menší e-shopy je to tedy velká výhoda.

Než se dostaneme k doporučování, chtěl bych se ještě naposled zeptat na kategorizaci. Zmiňoval jsi, že jsou tam ještě určitá úskalí a výzvy. Jak s nimi pracujete? Zmiňoval jsi content tým, je to někdo, kdo vám pomáhá být poslední branou, aby se nestalo, že dětské boty budou nabízeny jako dospělá obuv, nebo že bude na tričku fotka všeho možného? Spoléháte i na metadata, která vám poskytují e-shopy? A jak musí metadata vypadat, aby byla využitelná pro vaše potřeby?

Určitě, motivujeme partnery, aby nám posílali kvalitní data, protože čím kvalitnější data máme, tím lépe můžeme produkty otagovat a lépe se zobrazují. Pro ně je důležité posílat kvalitní data, protože bez nich jejich produkty lidé nenajdou.

Tím, že máme NLP model, který rozumí volnému textu, hodně toho umíme i dokompensovat. Například velikost boty si však neumíme vymyslet, pokud není uvedená v popisku. Pokud tam není žádná velikost, nemáme šanci ji určit.

Promiň, mezi tím jsem zapomněl, jak otázka začínala.

Zajímalo mě to právě kvůli tomu gatekeeping mechanismu – jak zajistit, aby se kategorie správně dostaly na web. Nastavujete nějaký proces kontroly?

Ano, máme nastavený proces, kde AI tým vnímá content tým jako hlavního zákazníka pro kategorizaci. Contentový tým je zodpovědný za veškerý obsah na stránce. Sleduje proto, jak kategorizace a tagování běží, a pokud jsou problémy, spouští nový trénink. Proces kontroly nazýváme quality check.

Jednou za čas nasamplujeme množství produktů, manuálně je zkontrolujeme a zjistíme, jestli některý tag přiřazujeme příliš často nebo naopak vůbec. Taky identifikujeme kategorie, které nám dělají problém.

Velmi často potom koukáme do datasetu, protože to hodně souvisí s kvalitními metadaty. Už se nám například stalo, že jeden partner poslal deset tisíc kraťasů označených jako kalhoty, a to model dost rozbilo.

Při dostatečně dlouhých nohavicích však mohou být kraťasy považovány za kalhoty, takže to není úplně jasné rozlišení. Typicky najdeme chybu v datasetu, pustíme nový trénink a snažíme se metriky zlepšit. Když jsou všichni spokojeni, přepneme produkci na nové kategorie a tagy.

To je ale jenom jeden z dvou hlavních produktů, za které zodpovídáte. Druhým je doporučování. Můžeš o něm něco říct?

Ano, doporučování personalizované v Glammy začalo asi před čtyřmi lety. Hned na začátku jsme si s Radkem Bartizalem řekli, že chceme dělat doporučování morálně, tedy bez nákupu nebo prodeje dat. Spoléháme se jen na to, co uživatel dělá na našich stránkách a co je s námi ochotný sdílet.

Máme normální cookie bar, kde když člověk s cookies nesouhlasí, vše smažeme. Snažíme se dělat doporučování pro lidi, kteří o něj stojí a vrací se, protože jim funguje. Nechceme uživatele otravovat ani prodávat jejich data.

Systém si vyvíjíme interně a obsloužíme asi 400 milionů requestů měsíčně. Cílíme na to, aby bylo nakupování příjemné – když uživatel hledá a opakovaně dává signály zájmu, chce, aby se mu tyto produkty zobrazovaly vysoko. Občas jej také příjemně překvapíme něčím, co by si sám neodfiltroval, ale může ho to zaujmout.

Zmínil jsi morální aspekt. Jak těžké bylo organizačně prosadit tento model, když je ve světě e-commerce běžné data kupovat a prodávat?

Samozřejmě jsme toto diskutovali, ale už od začátku s námi CEO Tomáš Hodboť souhlasil. Nenarazili jsme na problémy v organizačních procesech. Věřili jsme, že to zvládneme bez toho, protože máme zkušenosti a nechtěli jsme přispívat k neřízenému sběru dat.

Systém jsme řádně otestovali a důvěra postupně rostla. Začínali jsme s menší množinou uživatelů a postupně doporučování rozšiřovali, vždy jsme byli opatrní a postupně mu více věřili.

Máme rádi morální firmy a byznysy, které staví na hodnotách.

Stejně jako Hinek u kategorizace, i já u predikce mohu namítnout, že toto už hodně firem řeší a existují různé řešení pro e-shopy. Bojíte se, že vás někdo neobstřihne, že e-shopy nebudou chtít třetí stranu v takovém procesu a nebude už místo pro Glammy?

Snažíme se být poctiví a vyhodnocujeme naše modely v kontextu toho, co je dostupné. Spolupracovali jsme s mnoha partnery a zjistili jsme, že náš systém má několik výhod.

Používáme jen vlastní data, která nikdo jiný nemá, takže model je natrénovaný přímo pro nás. Dokážeme jej dobře odladit podle požadavků a zpětné vazby od uživatelů i týmu.

Móda je specifická oblast s řadou zvláštností, na které musí systém reagovat, například sezónnost a trendy.

Doporučování přetrénováváme každý den a dokážeme personalizovat již po první interakci uživatele. Stačí jeden klik a další stránka toto zohlední, což ne každý systém umí.

Testujeme a vidíme, že v hlavních metrikách si vedeme lépe, když používáme náš vlastní systém. To je tím, že umíme systém přesně přizpůsobit módě a našemu webu.

Jaké metriky používáte pro vyhodnocení?

Metriky nejsou tajné, je to věčná diskuze v týmu, která metrika je nejlepší. Nejvíce cílíme na objem objednávek, který je univerzální.

Osobně mám rád NDCG, což je o tom, jak vysoko je v seznamu položka, na kterou uživatel nakonec klikl. Je to takové měřítko spolehlivosti modelu.

Rozumím tomu. Já se taky občas zabývám projekty se strojem učením a co mě děsí, je náklad na výpočet a provozní dobu modelu. Předpokládám, že to řešíte a hodně optimalizujete.

Ano, to je i dané kulturou firmy a naším CEO Jankem Kešvákem, který na to velmi dbá. Kdykoliv přicházíme s novým projektem, vyhodnocujeme, jestli dokážeme vydělat víc, než utratíme. To je základní metrika.

Dobrá metrika, souhlasím.

To jsou i důvody, proč jsme při vyhodnocování nových modelů, zejména těch využívajících velké jazykové modely, opatrní, protože i když by spousta takových modelů měla dobré skóre NDCG, vnímáme je jako kanón na vrabce.

K čemu by nám byl obrovský model schopný psát domácí úkoly, když chceme doporučovat módu a produkty, které se uživatelům opravdu líbí?

Proto držíme modely na doporučování poměrně lehké, nejsou to žádné hluboké neuronové sítě.

Jak je systém zapojen do webu? Platformní tým programátorů odvádí skvělou práci, aby byl web rychlý a responzivní, takže vás nemohou brzdit.

Ano, lightweight model nepotřebuje gigantický hardware ani vysoké provozní náklady. Odpovídá velmi rychle, v řádu desítek milisekund. To je hned jeden z hlavních aspektů, které řešíme.

Zmínil jsi, že máš tým deseti lidí a zároveň se zaměřujete na kvalitu modelů, rychlost a nízké náklady. Jak to funguje? Jsou tam čistě programátoři, výzkumníci, nebo jaká je struktura týmu?

Máme velmi odlišný přístup než jiné týmy. U nás chceme, aby všichni v týmu pracovali na většině fází projektu.

Když vzniká nový projekt, ten samý člověk, který jej zkoumá a dělá rešerši, zároveň kód píše a pak projekt přechází do produkce. Takže z deseti lidí je část rozdělena podle projektu, třeba čtyři se věnují doporučování.

To platí obecně pro všechny v týmu, každý umí připojit produkci, restartovat model, nasadit novou verzi. Je to hodně projektově orientované.

Někdo se věnuje víc MLOps – péči o infrastrukturu – protože ho to baví a je to potřeba, zatímco jiní jsou spíš programátoři nebo výzkumníci, podle zájmu a potřeb projektu.

Ideálně každý umí trochu ze všeho, aby se nebál přecházet mezi disciplínami.

Mám zkušenost, že výzkumníky zajímá, jak to funguje v produkci, často se baví s programátory, aby se to naučili. Naopak programátoři chtějí rozumět tomu, jak model funguje, když chtějí ML implementovat sami.

Doufáme, že to lidi baví, protože si zkusí každou část a to má pozitivní dopad na kvalitu modelů v produkci.

Když výzkumník při vývoji myslí na stabilitu a rychlost v produkci, eliminuje tak nereálné nápady na složité modely, které by nebyly provozně použitelné.

Že tedy to potom budu muset naprogramovat a budu muset odpovědět do 50 milisekund, tak mě prostě přejde tam dávat miliardy vazeb.

Jak těžké je pro tebe z pohledu vedoucího týmu budovat takový multifunkční tým lidí? Předpokládám, že takových, kteří by vyhovovali, nechodí po ulici stovky každý den.

Je to určitě výzva, je to něco, co často diskutujeme. Když někoho hledáme, tak se na pohovorech účastní více lidí z týmu. Hodně často se díváme na to, co v ten okamžik nutně potřebujeme a co jsme schopni toho člověka naučit.

Takže když jsme zrovna nestíhali programovat, hledali jsme někoho, kdo je solidní softwarový inženýr, má za sebou nějaké zkušenosti a umí psát velmi dobře kód. S tím, že machine learning ho doučíme. A naopak, jednou za čas máme úlohu, která je hodně otevřená z pohledu strojového učení, a najdeme někoho, kdo se tomu už roky věnuje, a tomu pak umíme trošku doučit zase my.

Co znamená produkční kód v nějakém smyslu? Jak funguje třeba deploy? To je milestone. Takže je to o potřebě v daný okamžik a zatím to zvládáme organicky.

Tomáši, musím přiznat, že před natáčením jsme se bavili o jednom tématu, které mě u vás hodně překvapilo. Ty jsi několikrát zmínil, že všechno si vyvíjíte sami. V podstatě vaše modely jsou lepší než konkurence. Co mě ale překvapilo, je, že k nim nepřistupujete tak, že byste si je schovali pouze pro sebe, ale naopak publikujete docela hodně v open source, sbíráte úspěchy. Jak se tohle stalo? Jak k tomu přistupujete? Můžeš nám o tom říct více?

Myslím, že to je trochu odrazem lidí, které máme v týmu. Všichni nás to poměrně baví a vidíme v tom důležitost. Je to tak, že všechno, co jsem zmínil, je open source. Necítili bychom se dobře, kdybychom jen využívali open source, ale sami k němu nepřispívali. Takže rádi vracíme komunitě.

Vidíme v tom velkou hodnotu nejen pro okolí, ale i pro nás, protože když jedeme na nějakou konferenci nebo napíšeme článek, dostáváme hodně zpětné vazby. Lidé nás upozorní na spoustu věcí, které pak můžeme využít. V mnoha případech, když něco publikujeme a opravdu vydáme open source balíček, se stane, že nám někdo rovnou přispěje novou funkcí, kterou by rád viděl, a my ji můžeme rovnou použít.

S článkem jsme začali loni v listopadu, takže jsme na něm pracovali poměrně dlouho. Publikovali jsme i část našeho datasetu pro kategorizaci a tagování. Ten proces se nám hodně líbil. Říkali jsme si, že v tom budeme pokračovat. Jasně, vydali jsme dataset kategorie, kterých je už hodně, ale i tak, když jsme na konferenci potkali lidi, kteří chtěli dataset využít, například ve třinácti jazycích, bylo to velmi příjemné.

Od té doby jsme rovnou zakomponovali spoustu nápadů do našeho modelu. Podobně to bylo teď, když jsme publikovali článek na Exisu v Singapuru, kde jsme získali druhé místo v kategorii Short Papers. Díky tomu, že jsme se objevili na hlavním pódiu, přišlo za námi mnoho lidí a teď máme dlouhý backlog nápadů, co bychom mohli vyzkoušet. Je otázka, zda by nás samotné všechny ty nápady napadly.

Hodně toho tedy využíváme. Je to takový kontrapunkt k tomu machine learningu – ukážeme, na čem pracujeme, lidi, které to baví, se na to podívají a dají nám zpětnou vazbu.

To je skvělé. Přijde mi to podobné jako u příkladu, jak správně dělat morální machine learning – musí být opravdu velká podpora ze strany byznysu. Když to vezmu jednoduše, vy přicházíte s tím, že budete připravovat se na konference, publikovat články a dávat do toho spoustu práce, která nemusí nutně přinášet přímo zisk firmy. Možná má sekundární efekt, ale těžko se to měří. Jak tyhle diskuze probíhají? Jak těžké bylo přesvědčit vedení?

Myslím si, že základem je, že projekty, které mají přímý dopad na byznys, hrají prim. I když publikujeme na konferencích, časově jsou na posledním místě za produkčními věcmi. Musíme splnit, co jsme firmě slíbili, a pokud to splníme a ještě stihneme napsat článek, většině to nevadí.

Kdybychom jezdili na konference, ale neměli nic v produkci, tak by nám to dlouho neprocházelo. Takže je to spíše pěkný víkendový projekt.

Mezi motivem a Glamy… No, je to tak, že na některých článcích jsme opravdu strávili spíš dovolenou a víkendy. Ale to je dáno hodně tím akademickým prostředím, kde řada požadavků na článek přijde v pátek večer. Musíme to skloubit, mít to v rovnováze. Primárně se ale stoprocentně soustředíme na produkci.

To zní skvěle, že podporujete komunitu a rozvoj oboru machine learningu tím, že přispíváte zpátky a vše tvoříte v open source. Ale zároveň je tu otázka, zda tím náhodou nepodporujete rozvoj konkurenčního prostředí a konkurenčních služeb, které vás mohou v nejhorším případě nahradit, nebo vám sebrat část trhu. Jak nad tím přemýšlíte?

Určitě jsme to diskutovali. Když konkurence vezme model, který publikujeme, a začne ho používat, zjistili jsme dvě věci.

První je, že cesta od článku do produkce je často velmi trnitá. I když vydáme zdrojové kódy modelu, zapojit ho do celého ekosystému není vůbec jednoduché a trvá roky. My chceme systém dál rozvíjet, jsme v tom aktivní a pokud bychom dva roky nepřišli s klíčovým zlepšením, nebyli bychom spokojeni.

Takže od doby, co publikujeme, je tam od vydání až do praktického nasazení určitá doba, která hodně závisí na oblasti a modelu.

Druhá věc je, že machine learning neděláme izolovaně. Hodně spoléháme na celý zbytek firmy. Abychom takovou službu nasadili, například doporučovací systém, není to možné bez silného týmu kolem týmu strojového učení.

Máme výborný platformní tým skvělých programátorů, který nejde sestavit rychle a snadno. Je otázka, zda by to vůbec někdo znovu zvládl.

Celý ten byznys existoval už předtím, než jsme začali dělat doporučování, a myslím, že z toho hodně těžíme, protože máme podporu celé firmy. To by konkurence musela také mít, což není jednoduché.

Jistě, podklady pro učení, váš contentový tým, stylistky a další zdroje – rozumím, není snadné to jednoduše zkopírovat.

Tomáši, zmiňoval jsi, že se neustále chcete zlepšovat a nechcete usnout na vavřínech. Co tě čeká? Jaká je tvoje vize pro machine learning v Glammy v následujících letech? Kam to chcete posunout?

Rozumím. Chceme dál rozvíjet hlavně core služby pro Glamu, tedy ty, na kterých je byznys postavený.

Máme spoustu nápadů na menší projekty, například připravujeme vlastního chatbota, pomocí kterého by šlo vyhledávat přímo přes dialog.

Je tam řada menších projektů, ale primárně se budeme soustředit na náš core, dál modely zlepšovat a zrychlovat.

Těšíme se, až přijde chatbot a vyhledávání módy bude o hodně jednodušší.

Mimochodem hodně mluvíš o komunitě. Zajímáte se o strojové učení obecně a máte pro komunitu něco plánováno, že?

Ano, snažíme se být aktivní v komunitě. Přibližně jednou za měsíc až dva měsíce pořádáme meetup, kterému říkáme Mython AI Times, a tam…

Určitě bych chtěl pozvat všechny posluchače. Další edice se bude konat v listopadu. Najdete nás snadno na Meetup.com nebo Eventbrite. Jde přijít osobně i online.

Další meetup bude věnován modelu SANZA, který jsme publikovali v Singapuru.

Kdo má zájem, rád se s námi setká a poslechnout diskuzi, bude moc rád, když přijde.

Děkujeme za rozhovor, Tomáši. Moc děkujeme za pozvání na meetup. Doufám, že se tam nejen s tebou, ale i s posluchači a dalšími lidmi z Glamy potkáme.

Těším se na příští návštěvu.

Děkuji také za pozvání. Mějte se hezky. Ahoj.

Ahoj.

To je vše. Děkujeme, že jste doposlouchali další díl podcastu Datatolk. Díky také našim partnerům – Bighubu, Vypnoutu, Mantě, Natinu, a mně, Jean Beamou, Seznamu.cz a Muse.

Pokud vás zajímají další informace ze světa datových technologií a československé datové scény, navštivte naše stránky datatolk.cz.

Nechť vás provází data!

Odebírejte Data Talk

Apple Podcasts Spotify Deezer Overcast Podcast Index RSS Feed