Nasazení neuronových sítí a velkých jazykových modelů slibuje velkou proměnu toho, jak dnes pracujeme s informacemi. Google oznámil vlastní konverzační AI pojmenovanou Bard, která má vylepšit vyhledávač a časem také další služby. Společnost Microsoft obratem potvrdila integraci konverzačních technologií firmy OpenAI, které mají být pokročilejší než známý ChatGPT, do svého vyhledávače Bing a prohlížeče Edge. Svůj konverzační model chystá i čínský Baidu. Potrvá ještě týdny či měsíce, než se novinky dostanou k masové veřejnosti, už teď je ale jasné, že se online svět výrazně změní.
Nejde přitom jen o změnu rozhraní, přes které budou uživatelé informace získávat. Vyhledávače také budou odpovědi více poskytovat samy a dále omezí svou funkci rozcestníků na jiné weby. Obrovská hardwarová náročnost pokročilých AI modelů také znamená, že si jejich vývoj a provoz bude moci dovolit jen pár globálních firem.
Server Lupa.cz slaví 25. narozeniny. K výročí vám nabídneme sérii textů, podcastů a offline diskusí k dopadům AI na podobu internetu. Vše najdete na této speciální stránce.
Přestanou někdy vyhledávače odkazovat? Jak náročný je provoz velkého jazykového modelu? A jak se strojovým učením ve vyhledávání pracuje Seznam.cz? O fungování velkých jazykových modelů jsme mluvili s expertem na technologie internetového vyhledávání Dušanem Janovským, který je konzultantem právě pro Seznam.cz.
Jsou oznámené integrace konverzačních neuronových sítí do vyhledávačů jen změnou rozhraní, nebo je ta změna hlubší?
Změny jsou hlubší a chat je jen jednou z jejich větví. První větví jsou neuronové sítě, které se už docela dlouho používají přímo ve vyhledávání. Pomáhají v tom, jak výsledky optimálně seřadit. Velký jazykový model umí jednu zásadní věc: převést text na určitá čísla, vektory. Takto funguje tzv. encoder: dostane text a vrátí vektor. Zároveň platí, že jestliže jsou na vstupu dva sémanticky podobné texty, mají na výstupu podobné vektory. Jejich podobnost se měří třeba kosinovou podobností, skalárním součinem – prostě běžnými, jednoduchými matematickými operacemi.
Podle toho se dá poznat, zda jsou si nějaké texty podobné, nebo nepodobné. To se pak dá výborně použít ve vyhledávání ve chvíli, kdy jedním z těch textů je vyhledávací dotaz, který zadává uživatel, a druhým je stránka nebo část stránky, která o něčem pojednává. Vyhledávač má velkou databázi informací o tom, jaký vektor mají jednotlivé stránky, a potom mu stačí při samotném vyhledávání provést velké množství jednoduchých matematických operací. To pomáhá řadit výsledky.
V případě chatu teď k technologii výpočtu modelů, enkódování, přichází i druhá větev změn, které se říká dekódování. Dohromady to enkódování a dekódování tvoří něco, čemu se říká transformer. Transformery se vždycky používaly v automatickém překladu. Teď se dá říct, že když uživatel zadá dotaz, tak ten chat je tak trochu automatický překlad. Překládá z prostoru dotazů do prostoru odpovědí, které si sám v tu chvíli generuje nějakým dekóderem. Ten dekóder je výpočetně vždycky složitější.
A proč je to důležité pro vyhledávače?
Existuje například třída dotazů, které nemají dobrou odpověď. Buď z toho důvodu, že je otázka hodně obtížná, nebo je téměř jisté, že se odpověď na žádné webové stránce nevyskytuje. Těmto dotazům se říká NORA – No One Right Answer. Když je potřeba, aby uživatel na takovou otázku dostal odpověď, je lepší mu ji vygenerovat.
Vyhledávačům to dává smysl mimo jiné i z pohledu na to, jak se dnes weby vyvíjejí. Už dnes je internet plný automatických překladů a například popisky zboží na e-shopech se vytvářejí automatizovanou cestou. Dřív lidé psali na internet texty většinou sami, ale teď se bude běžně stávat, že stránky budou generované nějakou „umělou inteligencí“. Proč z nich má vyhledávač čerpat, když si je může vygenerovat sám? Nemusí pak utrácet velké peníze za indexaci textů, které jsou vytvořené uměle.
Jak to je s poskytováním mylných nebo chybných informací, kterého jsme svědky u současné veřejně dostupné verze ChatGPT? Systém často dává sebevědomé, ale naprosto mylné odpovědi, vymýšlí si. Dá se tenhle problém vyřešit?
Je to problém, ale asi půjde vyřešit. Jazykový model tvoří odpovědi na základě toho, co mu bylo předloženo za informace. Obvykle to jsou stránky posbírané z internetu, knihy a jiné korpusy dat. Samozřejmě, pokud se neuronové síti budou předkládat chybné informace, naučí se odpovídat chybně. Je možné, že se naučí i chybně generalizovat, to teď vlastně ještě vůbec nevíme.
Ale jsem si téměř jistý, že se vývojáři jazykových modelů budou pokoušet chybovost vyřešit. Jedna z možných metod je pustit nad vygenerovanou odpovědí ještě před její publikací nějakou kontrolu správnosti. Každopádně to bude spíš ta jednodušší část celého procesu. Dekódování z jazykového modelu bude vždycky těžší.
Jak moc se konverzační modely změní tím, že budou napojeny na internet, že budou online?
Když jazykový model vygeneruje text, může si ještě předtím, než výsledek zobrazí uživateli, informace ověřit na internetu. Stačí k tomu řekněme nějakých 100–200 milisekund. S odpovědí, kterou dostane z vyhledávání, pak může nějakým způsobem dál pracovat při generování výsledného textu. Myslím, že největším klientem vyhledávačů budou do budoucna umělé inteligence.
V demech, která jsme zatím viděli, mě zaujalo to, že se vygenerovaný text uživateli zobrazuje postupně – bylo vidět, jak přibývají jednotlivá slova. Nemyslím si, že je to náhoda. Může jít o to, že hardwarové nároky na generování textu jsou v tuhle chvíli i se současnými hardwarovými prostředky příliš vysoké a je důležité uživateli informace dodávat postupně, aby viděl, že se něco děje, ale nemusel čekat u prázdné stránky, než se odpověď vygeneruje celá.
S chatboty nebo jazykovými systémy byl vždycky problém, že v jejich reakcích existovaly různé předsudky a dávaly někdy až šokující odpovědi. A teď Microsoft i Google říkají, že mají spoustu pojistek, které by tomu měly zabránit. Jak se to dá u neuronové sítě ošetřit?
Neznám detaily, jak to funguje konkrétně u ChatGPT nebo u Googlu, ale dokážu si představit v podstatě tři přístupy. Jeden je ten, že se filtrují data, která se neuronové síti při učení předloží. Druhým způsobem je, že se při učení nějakým způsobem penalizuje klasifikace, která vede k něčemu, co nechceme. A třetí způsob je, že se filtruje výstup.
Neuronová síť se dotrénovává. Jak to funguje? U ChatGPT se ukázalo, že tam byl obrovský vklad práce lidských pracovníků.
Jazykové modely mají zajímavou vlastnost, že je můžeš něco naučit a pak je na něčem doučit. Dáš jim knížky a internet a ony se opravdu naučí mluvit. A potom jen zjistíš, co jim nejde, a už jim stačí zlomek původního času, který potřebovaly k naučení, aby se tu danou doménu doučily.
Máme s tím zkušenosti i v Seznamu. Máme velký jazykový model, kterému říkáme BrowCzech. Natrénovali jsme ho na textech, což ale podle očekávání není dostatečné pro relevanci, a tak jsme se rozhodli ho doučit. Dělali jsme to tak, že jsme mu předhodili dvojice dotaz–dokument, které byly doplněny o hodnocení. Takových anotovaných dvojic jsme mu dali několik milionů a on se naučil objektivně lépe poznat, co je pro relevance důležité. Snaží se teď srovnávat vektory tak, aby dotazy pasovaly na dokumenty, spíš než aby trefoval obecné téma textu.
Jak tedy vlastně s neuronovými sítěmi pracuje vyhledávání Seznamu? Máte víc jazykových modelů?
Máme víc modelů, které se liší velikostí, a máme víc modelů, které se liší tím, na čem jsou dotrénované. Trénování stojí spoustu výpočetního času a obvykle taky docela dost elektrické energie, musí probíhat na silném hardwaru, takže si nemůžeme dovolit natrénovat úplně každou úlohu, na kterou si vzpomeneme. Řekl bych ale, že se nám daří pokrývat potřeby, které ve fulltextovém vyhledávání máme.
Ve chvíli, kdy přijde uživatelský dotaz, centrální query processor jej zakóduje do vektoru a ten se potom porovnává s dokumenty, které máme stažené z internetu. Hledáme dvěma metodami: jednak starou podle klíčových slov a jednak ve vektorových indexech. Množiny dokumentů se spojí a porovnává se, do jaké míry jsou vektory dokumentů podobné vektorům dotazů.
Má to samozřejmě řadu limitů a produktových rozhodnutí, které musíme řešit. Kdybychom neuronovou sítí proháněli celý index, tak to nikdy nespočítáme. Z některých dokumentů tak bereme třeba jenom začátek nebo jen některé věty, které se pak snažíme nějakým způsobem embedovat do vektorů. Dá se říct, že dnes už to jsou pro nás ty nejsilnější signály, které vyhledávání posouvají výrazně dopředu.
Letos v lednu jsme dokončili projekt, kterému jsme říkali ‚vsakování vektorů‘. Spočíval v tom, že jsme se snažili sloučit dvě technologie. Vektorové hledání jsme už měli před dvěma lety hotové v prototypu, ale kvůli agilnějšímu vývoji bylo oddělené od zbytku indexu. Loni jsme se naopak snažili přepsat vyhledávání tak, abychom jak vektory, tak staré invertované indexy měli v jednom velkém systému. A teď máme systém připravený na to, že do něj můžeme přidávat víc vektorů, a upravujeme jej tak, abychom si mohli dovolit počítat větší modely.
Dneska jsou naše modely, které používáme běžně na indexaci každé stránky, relativně hloupé, mají asi 20 milionů parametrů. Už zmíněný BrowCzech ale má 150 milionů parametrů. Je to velký skok. Musíme ještě udělat úpravy, aby se nám model vůbec vešel do paměti při indexaci.
A teď si vezmi, že GPT-3 nemá 150 milionů parametrů jako naše neuronka, kterou budeme indexovat běžný internet. Má 150 miliard parametrů. Nevěřím tomu, že Google nebo Bing takto velké modely používají k indexaci, to totiž podle mě nejde upočítat. To znamená, že mají asi taky nějaký menší model, kolem těch 150 nebo 200 milionů parametrů.
Takže hlavní omezení dnes spočívá ve výkonu, který jsi na trénování a provoz neuronové sítě ochotný nebo schopný dát?
Rozhodně. Strašně moc záleží na dostupné paměti, strašně moc na tom, jestli se model spustí na CPU, GPU, nebo TPU. Grafické karty jsou přímo připravené na to, že budou násobit velké vektory. Jenže když neuronku učíš na CPU, můžeš si dovolit to tzv. sparsifikovat. To znamená, že když nějaký z parametrů, kterých je několik miliard nebo milionů, vyjde blízko nule, tak ho zahodíš. Tyto tzv. sparsifikované modely pak mají méně parametrů a rychleji se inferují.
Hodně velké modely přitom není vůbec snadné inferovat rychle. Model má třeba 700 GB. A dnes běžně v serverovně nemáš stroj, který by měl tolik paměti. A když model rozchodíš v cloudu, tak tam sice dostatek paměti máš, ale kvůli silnému síťovému provozu to začne být pomalé.
Když jsou jazykové modely tak náročné na výkon, neznamená to, že si to tady za chvilku nikdo jiný nebude moci v takové míře dovolit? Kromě Microsoftu, Googlu a taky Baidu, který přispěchal s oznámením, že taky pracuje na svém konverzačním AI botu.
Je to tak. Osobně to prožívám negativně. Když vznikala organizace OpenAI, cílila na to, aby podobná situace nenastala. Nepovedlo se. Nakonec potřebovala strašně moc peněz, a tak se zavázala Microsoftu.
Nástup konverzačních AI má navíc myslím řadu dalších konsekvencí, ať už z pohledu autorského práva, nebo z pohledu toho, jak budou fungovat média. Vyhledávače se už dlouho snaží udržet uživatele na stránce s výsledky vyhledávání a čím dál tím víc informací nabízejí přímo na ní. A konverzační rozhraní bude další krok.
Někdy v roce 2002 jsme se s Markem Prokopem před hospodou filozoficky zamýšleli nad tím, proč vyhledávače vůbec někam odkazují. Shodli jsme se na tom, že to dělají, protože neumí samy zjistit odpovědi. A že až se to naučí, s odkazováním přestanou. Na tom, čemu se na Seznamu říká upoutávky nebo na Googlu Universal Search, je vidět, že řadu dotazů se snaží odbavovat samy – a začaly s tím ještě před tím, než přišly konverzační modely.
Mimochodem, tzv. feature snippets se taky vytvářejí pomocí velkých jazykových modelů a bez nich by to nešlo. Mají trochu jinou architekturu, ale na Googlu fungují už tak čtyři roky, na Seznamu asi rok. Umí poznat, že text na nalezené stránce dobře odpovídá na uživatelův dotaz.
Seznam každopádně považuje neuronové sítě za velmi perspektivní obor a pořád na tuto oblast hledá lidi. Aktuálně potřebujeme programátora/výzkumníka, který těmto tématům rozumí. Jsme schopni poskytnout celkem zajímavé prostředí a máme velmi pěkná data.