Nagy nyelvi modellek (LLM) szakértői szemmel, és gyakorlati alkalmazásuk példákkal! – 3. rész

Máté Kasó

2023-10-16

A közelmúltban nagy áttöréseket értek el a természetes nyelvű neurális hálózatok területén azzal, hogy nagyobb és mélyebb neurális modelleket használtak fel egy újfajta, gyorsan számítható: “transformers” figyelem mechanizmus architektúrával. Ez az eddigi, nagyon számítás igényes visszacsatolt (rekurrens) hálózat típusokat váltotta fel. Ezen neurális hálózatok feladata egy fix maximum hosszúságú szöveges bemenet következő tokenjének (“szótagjának”) megjósolása, amit iteratívan folytatva akármekkora szöveg generálható. A feladata alapján ez egy okos autocomplete-nek számít, de rájöttek, hogy ha elég nagy és mély hálót tanítanak be rá, elég sok adattal és iterációval, akkor a feladat emberi szintű megoldásához saját belső logikát épít ki a tokenek és velük együtt a szavak egymás közötti kapcsolatairól, valamint az általuk leírt világról! Ezzel a módszerrel emberi szintű megértésre és kommunikációs képességekre tettek szert.

Nyelvi modellek bemenete

Mint azt már láttuk, a neurális hálózatok esetén mindig le kell fordítanunk a problémát számszerűen, fix maximum számú bemeneti neuronoknak. Jelen esetben először tokenekre kell bontanunk a szöveget, amelyek többnyire rövid, gyakran előforduló szavak, esetleg szó részletek lesznek. A lényegük, hogy elég kicsik legyenek ahhoz, hogy individuálisan descriptívek legyenek, de még fel lehessen építeni belőlük bármilyen szöveget. A tokenek célja a szöveg struktúrájának és tartalmának megőrzése, ugyanakkor jobb szeparációt, megértést és erőforrás igényt biztosítva.

Minden egyes tokenhez hozzárendelhető egy számsor (vektor), amivel be tudjuk ágyazni (embedding) a bemeneti (input) szöveget. A szöveg tokenizált, majd vektorizált formája lesz a neurális hálózat inputja. Számos program könyvtár (library) áll rendelkezésre az ilyen lépések végrehajtásához, különösen Python környezetben. Különböző modellek és input problémák eltérő tokenizációt és embeddinget igényelnek, de szerencsére szinte mindegyikükhöz elérhető a specifikáció és van rá nyílt forráskódú (open source) konverziós megoldás!

State of the art modellek

A jelenlegi legjobb modellek zárt forráskódúak és csak nagy cégektől érhetőek el. Ezek betanításának csak az áramszámlája több millió dollár, a futtatásuk pedig szintén nem olcsó, mivel szuper számítógépet igényelnek. Ha a legjobb elérhető AI-t szeretnénk, sajnos használatonkénti díjat kell fizetni.

A legfejlettebb AI modell jelenleg a Chat GPT-4. Ennek felépítéséről nincs semmilyen elérhető információ, mindössze egy API-n keresztül tudunk kommunikálni vele, gyakorlatilag egy “black box”. A web böngészőből ingyenesen elérhető Chat GPT-3.5 hasonló (bár butább) képességekkel rendelkezik, viszont API-n át használva (más applikációkba integrálhatóan) már az is fizetős. Ebben az esetben viszont sokkal több fejlesztői funkcióhoz férünk hozzá: egyrészt személyre szabhatjuk a kezdeti promptot, ami a modell “viselkedését” és “személyiségét” írja le, valamint módosíthatjuk a generálási paramétereket, pl: mennyire lehet random (temperature), valamint mennyire térhet el a témától és lehet “kreatív” (Top p – nucleus sampling).

Limitációk és megoldási lehetőségeik

Gyakorlati felhasználás során a legnagyobb probléma az LLM alapú AI-okkal, hogy a válaszuk nem strukturált, valamint csak az alap, bárki számára elérhető, nyílt adatokból tanult emlékeire támaszkodhat, ami az emberekhez hasonlóan, elég megbízhatatlan olykor. Ekkor hajlamos valótlan dolgokat “hallucinálni”. Biztonsági okokból többnyire nem tanítanak nekik olyan adatokat amik a közelmúltban készültek, még az AI “forradalom” előtt. Ez egyrészt a szándékos félre informálást nehezíti, valamint így elkerülhető az AI álltal generált tartalmakkal való tanításból adódó visszafejlődés. Ezek mellett az aktív memóriája (max input token length) is korlátozott, így lehet, hogy nem tudunk neki egyszerre megadni minden forrás anyagot (pl: teljes könyvet, dokumentációkat vagy forráskódot), valamint generálhat potenciálisan sértő, vagy veszélyes dolgokat, ami problémás lehet egy vállalat számára.

Emberi visszajelzéses alapú tanítás (Reinforcement Learning from Human Feedback – HLRF)

Mivel az LLM modelleket alapból szabadon fellelhető szövegek folytatására tanították, kezdetben csak folytatták a kapott promptot, mintha az egy könyv, vagy cikk részlete lenne, valamint hajlamosak voltak eltérni a témától. A tudás, logika és intelligencia már ekkor is megvolt mögötte, mert a folytatott szöveg koherens és értelmes volt, de a valós használathoz nem ez a viselkedés volt az optimális. Meg kellett tanítani a modellnek, hogy válaszoljon chatbot stílusban a kérdésekre, valamint ne mondjon károsnak vélt, vagy sértő tartalmakat.

Ennek megoldására a kutatók kérdéseket írtak össze, amiket emberekkel választottak meg, egy chatbot stílusában. Ezután fine tuning tanítással addig finomhangolták a hálót azt emberi válaszokkal, amíg minden válaszát abban a stílusban írta. A nyíltan elérhető LLM hálózatok szinte mind átestek ezen a “kondicionáláson”.

Itt érdemes viszont észben tartani, hogy ez nem egy garantált megoldás! Mint ahogy a neurális hálózat maga is egy ismeretlen belső logikájú “fekete doboz”, úgy ennek a hatásait is csak gyakorlati tesztekkel tudjuk igazolni, ez viszont nem jelenti azt, hogy a háló tényleg az emberi példa válaszok logikája és világképe alapján működik; csak azt, hogy ezek szabályai szerint válaszol! A fine tuning csak a neurális háló utolsó rétegeit érinti, a mélyebb rétegekben lévő logikát és koncepciós kapcsolatokat nem, valamint a legkisebb hatás elve értelmében lehetséges, hogy a modell valódi, belső működése nem a HLRF által “sulykolta” működésre áll át, hanem egyszerűbb csak, ha aszerint viselkedik és félig szándékosan “hazudva” válaszol úgy, mert az sokkal egyszerűbb, mint a teljes működésének átszervezése. Vannak erre utaló jelek, mint pl: a különböző korlátozást kijátszó prompt “hackek” működő képessége, valamint az, hogy a túlzásba vitt HLRF-el romlik a modell kognitív képessége (mivel ellentétbe kerül az eddigi “világ képével” és belső logikájával).

 

Struktúrált válaszok függvény hívással (function call)

Mint azt már láthattuk a HLRF-el rávehetjük a hálót, hogy adott stílusú választ generáljon! Az OpenAI betanított egy olyan GPT variánst, ami a programozásban szabványos JSON formátumban ír választ, általunk előre megadott, szabványosított paraméterekkel! Ilyenkor egy természetes nyelvű, emberi kérdést kell feltennünk neki, majd ő hagyományos programoknak is könnyen értelmezhető JSON-ban válaszol, az adott kérdésnek megfelelően kitöltve a megadott részeket, Pl: egy film adatainak strukturált lekérdezése:

Függvény létrehozása és válasz struktúra kialakítása:

FunctionData(

              name: „get_movie_data”,

              description: „Get detailed movie data”,

              parameters: {

                „type”: „object”,

                „properties”: {

                  „release_date”: {

                    „type”: „string”,

                    „description”: „Release date of the movie in Day.Month.Year format”

                  },

                  „director”: {

                    „type”: „string”,

                    „description”: „Director of the movie”

                  },

                  „summary”: {

                    „type”: „string”,

                    „description”: „Provide a brief summary of the movie!”

                  },

                },

                „required”: [„release_date”, „director”, „summary”]

              }

)

 

Prompt:

“Give me informations about a movie called: Star Wars”

 

Chat GPT válasza JSON-ban:

„function_call”: {

          „name”: „get_movie_data”,

          „arguments”: {

            „release_date”: „25.05.1977”,

            „director”: „George Lucas”,

            „summary”: „Star Wars is a space opera film series created by George Lucas. The first film, later subtitled Episode IV – A New Hope, was released on May 25, 1977. It became a worldwide pop culture phenomenon and has since been followed by multiple sequels, prequels, spin-offs, and animated films.”

          }

}

 

Az így kapott adatokból akár hagyományos kód futtatására is nyílik lehetőség, az AI a prompt-nak megfelelően képes eldönteni, hogy szükséges e lefuttatni valamelyik, teljesen a mi kezünkben lévő függvényt (pl: belső adatbázis keresést), majd az eredményeit vissza adva neki képes azt összefüggő, szöveges válaszba formázni.

Ezzel nem csak a válasz ambiguitást elimináljuk, hanem a pontosságot is növeljük, mert valós adatokat illesztünk az AI generált válaszba!

Saját adatokra tanítás fine tuning-al

Az OpenAI-nál lehetőségünk nyílik arra, hogy feltöltsük saját dokumentumainkat és generál hassunk egy saját, fine tuned GPT modellt, specifikus tudással! A szuperszámítógépeken ez viszonylag hamar lezajlik, a modell pedig aránylag jó tudással fog rendelkezni a dokumentumról. Az így betanított custom GPT-t ugyan úgy lehet API-n át hívni, mint az alapot, valamint ezt is lehet függvény hívásokhoz használni! Ez a technika aránylag költséges, de szinte bármennyi adat feldolgozható vele, nem kell a max prompt mérethez igazodni! További hátránya, hogy sajnos ugyan úgy hajlamos halucinálni.

Lang chain

Ebben az esetben a modell általános intelligenciáját használjuk fel, zero shot módon, hogy fine tuning nélkül kerüljük meg a max input token limitet! A Lang chain eljárás felosztja a szöveget a max prompt hossz szerű részletekre, majd egyesével átfut rajtuk, kiszedi az eredeti user prompt-nak megfelelő lényeget és ebből generál egy értelmes választ.

Ennek előnye, hogy nem szükséges betanítani, kevésbé hajlamos hallucinálni, mivel “friss” adatokból dolgozik, valamint könnyen cserélhető a használt neurális modell alatta. Hátránya, hogy ha a keresett információ töredezve található, vagy sokat számít a kontextus, akkor lehet nem találja meg. Ezen kívül sokkal többször kell végig futtatni (inferálni), hogy minden eredeti szöveg részletet újra láthasson. Ezt minden egyes user prompt-nál meg kell tenni, így a hosszú távú megtérülése egy optimum probléma a fine tuning és e között.

 

Mi szerepel egy szoftverfejlesztési projekt briefben
Ábra: Egy lokális gépen futtatott LLM (LLaMA2, 32B paraméteres), lang chain-el megadott dokumentum alapján válaszol specifikus kérdésekre belőle. Alapból semmit sem tudna a témában, de ezután már szakértői szinten válaszol!

Természetesen lehetséges egy fine tuned LLM-et használni lang chain technikával a maximális hatékonyságért! A jövő valószínűleg ezen irányba fog haladni, az AI emlékezete és válaszának helyessége ellenőrizhető hagyományos adatbázisokból és keresőkkel. Akár arra is fel lehet használni az AI-t, hogy a saját válasza és a keresési találatok alapján újra gondolja az álláspontját, majd így tovább, amíg meg nem bizonyosodik az igazáról. Ez az egyik fő hajtóereje a kereső óriás cégek AI iránti érdeklődésének! Itt már nem az információ megkeresése, hanem a tudás leszűrése a lényeg!

Lokálisan futtatható, open source fejlesztések

Mint láthattuk, az LLM alapú AI területe még erősen kutatás alatt áll! A fejlesztések java érdekes módon nem a zárt cégektől, hanem nyílt forráskódú fejlesztésekből származik. Szinte minden kutatás eredménye publikus, az erőforrás igények miatt nem a működési mechanizmus, hanem a gyakorlati betanítás és az adatok megszerzése a legnagyobb kihívás! A zárt fejlesztések aránylag hamar lemaradnak, mert nem tudnak hozzáférni a kutatók a világ többi részéről, így a legnagyobb szereplőkön kívül kénytelen mindenki “nyílt lapokkal játszani”. Ennek eredményeképp sok nyílt forrású, saját gépen is futtatható, valamint tanítható LLM AI modell létezik ma, amelyet fel lehet használni bármilyen célra! A legjobb ebből a Meta LLaMA2 modellje, amely legnagyobb változata 65 milliárd paramétert tartalmaz, a legkisebb 7-et. Referenciának: a ChatGPT 175 milliárddal rendelkezik! Tudását tekintve meglepően közel vannak egymáshoz, inkább tényszerű ismeretben van a különbség. Már a 7B-s modell is használható értelmi képességekkel rendelkezik, de a 13B-s már képes felvenni az emberekkel a versenyt bizonyos területeken!

A legújabb kutatási trendek azt mutatják, hogy a modell méret növelésével már csökkenő hozammal nő a pontosság, az OpenAI is úgy döntött, hogy nem a méretet növelik tovább (túl drága lenne a futtatás), hanem a meglévő modellekből kell a legtöbbet kihozni új tanítási módszerekkel és jobb adat minőséggel. Ez remek hír számunkra, mivel azt jelenti, hogy a helyben futtatható AI modellek valid lehetőség maradnak a jövőben is, valamint kvázi logaritmikusan skálázódnak: a kis modellek nem sokkal butábbak a nagyoktól. Specifikus, expert modelleket lehet létrehozni velük, valamint fine tune tanítani egyéb feladatokra!

A nagy nyelvi modellek gyakorlati használata

Úgy kell tekintenünk rájuk mint interaktív tudás bázisokra! A programozás lényegében 3 nagy részre osztható: adatok megszerzése, feldolgozása és megjelenítése. A feldolgozáshoz garantáltan használhatóak, képesek fordítani, levonni a lényeget és következtetést, kérdésekre válaszolni szöveg alapján, valamint instrukció követésre. Tudnak sablon alapján új adatokat szintetizálni, vagy megismerni a felhasználó preferenciáit és okos ajánlatokat tenni. Felhasználhatóak egyszerűbb kommunikációra a felhasználókkal, segíthetnek személyre szabni tartalmakat, vagy bevonhatóak gépek vagy folyamatok okos irányításába, amit elmondás, vagy leírás alapján lehet szabályozni! Bevonhatóak egyszerűbb programok írására, vagy akár dokumentáció készítésére, vagy átnézésére. Minden területen ahol adatokkal dolgozunk, fel lehet használni valamire. Az AI meglévő elő ismereteire alapulva szinte bármilyen szöveges, vagy szám alapú feldolgozásra bevonható. Akár még egészségügyi adat analízisbe is, pl: EKG jelek diagnosztizálásához!

Akár még számszerű (idősor) értékek alapján történő előrejelzésre is használhatóak.



yoast plugin

Az alábbi ábrán egy GPT-vel generált, zero shot (elő tanítás nélküli) idősor előrejelzés látható. A zöld az eddigi, a piros az extrapolált rész. Tisztán látszik, ahogy az AI figyelembe vette a növekvő tendenciát és a periódusok struktúráját!

Végszó

A nagy nyelvi modellek, vagyis a Large Language Models (LLM), forradalmasították a természetes nyelvű feldolgozás területét, lehetővé téve számunkra, hogy interaktív tudásbázisokat és számos más alkalmazást hozzunk létre. Ezek az LLM-ek képesek a szöveg bontását és feldolgozását, válaszok generálását, sőt, akár struktúrált válaszokat is létrehozhatnak függvény hívások segítségével. Az emberi visszajelzéses tanítás és a fine tuning lehetővé teszi számunkra, hogy pontosabb és kifinomultabb válaszokat kapjunk tőlük.

Ugyanakkor fontos megjegyezni, hogy ezeknek a modelleknek is vannak korlátai. Az információk csak az alapvető adatokból származnak, és bizonyos esetekben hajlamosak lehetnek valótlan dolgokat „hallucinálni”. Biztonsági okokból nem tanítják nekik az aktuális, naprakész információkat, és az aktív memóriájuk is korlátozott. Azoknak a vállalatoknak, akik az iparban alkalmazzák ezeket az AI-kat, gondoskodniuk kell arról, hogy a válaszok megbízhatóak és biztonságosak legyenek.

Az open source fejlesztések és a lokálisan futtatható modellek lehetőséget adnak a közösség számára, hogy továbbfejlessze és testre szabja az LLM-eket saját igényeikre. A jövőben a modellek méretének további növelése helyett az adatminőség és a tanítási módszerek javítása lesz a fókusz, ami azt jelenti, hogy a helyben futtatható AI modellek továbbra is életképes megoldások maradnak.

Az LLM-eket interaktív tudásbázisokként kell kezelnünk, amelyek segítségével könnyebben dolgozhatunk az adatokkal, kommunikálhatunk a gépekkel, és sok más területen is felhasználhatjuk őket. Az AI fejlődése és alkalmazása még csak az elején jár, és izgalmas lehetőségeket hozhat a jövőben.

Az Arteries kollégái szívesen konzultálnak Veled arról, hogy hogyan alkalmazhatod egyedi módon a nagy nyelvi modelleket vállalkozásodban, termékedben vagy szolgáltatásodban. A lehetőségek szinte korlátlanok. 

Ha szakember kell, itt vagyunk.

Szeretnél még hasonló tartalmat olvasni a jövőben?

Ha tetszett cikkünk, iratkozz fel hírlevelünkre!