Näytönohjaimien uusi merkitys kielimallien kouluttamisessa 1.8.2023

Viimeisen vuoden aikana tekoäly ja kieliteknologiat kuten OpenAI:n ChatGPT ovat ampaisseet paitsi kaikkien huulille, myös näytönohjaimia valmistavan Nvidian osakekurssin huimaan nousuun. Monille näytönohjaimet ovat kuitenkin olleet tutumpia esimerkiksi pelaamiseen soveltuvista pöytätietokoneista. Nyt ne ovat nousseet aivan uudenlaiseen arvoon ja keskusteluun kieliteknologioiden suosion myötä – mutta miten nämä käytännössä liittyvät toisiinsa?

Näytönohjaimien lyhyt oppimäärä

Kuten mainittua, aiemmin näytönohjaimista on puhuttu usein tietokoneiden grafiikoiden yhteydessä, ja tehokkaita näytönohjaimia on tarvittu erityisesti pelaamiseen tai kuvankäsittelyyn. Näytönohjain on tietokoneessa se komponentti, joka mahdollistaa näyttävien graafisten applikaatioiden kuten videopelien tarkoituksenmukaisen toiminnan tietokoneella.

Vaikuttavien kolmiulotteisten grafiikoiden piirtämiseen ruudulle vaaditaan tietokoneen prosessorille haastavaa laskennallista matematiikkaa kuten vektorien ja matriisien kanssa suoritettavia laskutoimituksia. Vektorit voidaan ajatella rivinä lukuja ja matriisit taulukoina lukuja. Näille listoille ja taulukoille on määritelty omat yhteen- ja kertolaskutoimitukset, jotka eroavat hieman peruskoulussa opeteltavista.

matrix multiplication

Näytönohjaimet ovat kehitetty suoriutumaan näistä laskutoimituksista erityisen tehokkaasti, jolloin tietokoneen ei tarvitse käyttää juurikaan sisäisen prosessorin laskentatehoja.

Kuvitellaan tilanne, jossa videopelin huoneessa on lamppu, jalkapallo ja kamera.

Room

Kameran näkökentässä olevat asiat piirretään pelaajan näytölle. Lampusta palloa kohti lähtevän valonsäteen suuntaa ja voimakkuutta voidaan ajatella nuolena eli vektorina. Samoin pallon pinnalta kameraa kohti heijastuvaa valonsädettä. Yksityiskohtiin sen enempää takertumatta kyseisen nuolen suunnan tai pituuden muutokset tehdään kertomalla nuoli eli vektori muutosta vastaavalla matriisilla.

Samankaltaisia nuolia eli vektoreita käytetään myös muiden kolmiulotteisten objektien suunnan tai koon määrittämiseen. Samoin objektien ominaisuuksia kuten suuntaa tai kokoa voidaan muuttaa kertomalla ominaisuuksia kuvaavat vektorit muutoksia vastaavilla matriiseilla.

Näytönohjaimista tehoa kielimallien kouluttamiseen

Teknologioiden kuten ChatGPT:n taustalla ovat suuret kielimallit, jotka on kehitetty käsittelemään ja ymmärtämään luonnollista kieltä, jota jokainen ihminen käyttää kommunikoidessaan toisille. Ne toimivat niin kutsutulla neuroverkkoteknologialla, joka on alkujaan saanut inspiraationsa aivoissa sijaitsevista neuroneista. Yhtäläisyys tosin näiden kahden välillä on vain suuntaa antava, eikä ole mielekästä tehdä liian suuria johtopäätöksiä asiayhteyksien välillä. Neuroverkot ovat painoarvoista koostuvia verkkoja, joita voi kouluttaa suoriutumaan monenlaisista haastavistakin tehtävistä. Vasemmalta neuroverkon sisälle syötetty data kulkee verkkoa oikealle, jolloin sen painoarvot vaikuttavat yhdessä oikealta tulevaan lopputulokseen.

Neural net Havainnollistava kuva neuroverkosta, jossa on kaksi kerrosta painoja matriiseina W_1 ja W_2

Kielimallien taustalla olevat neuroverkot eivät kuitenkaan osaa sellaisenaan yhtään mitään, vaan ne täytyy erikseen kouluttaa

Kouluttaminen tapahtuu tutkimalla virheellisestä vastauksesta, miten vääristyneitä neuronien painoarvot ovat ja tarvittaessa muuttaa niitä. Neuronit tosin muodostavat neuroverkossa monimutkaisen ja tiheän verkon, jolloin painoarvojen muuttaminen oikealla tavalla osoittautuu erittäin hankalaksi.

Kuvitellaan tilanne, jossa vaeltaja on eksynyt sumuiseen vuoristoon ilman kompassia ja karttaa. Näkyvyys on vain pari metriä ja vuoriston pohjalla laaksossa on majatalo, jonne vaeltaja haluaa löytää. Ainoa keino päästä majatalolle on pyrkiä mäkeä alas päin ja toivoa, että kyseinen alamäki johtaa juuri majatalolle.

Valley

Samalla tavalla neuronien painojen mahdollisia virhearvoja voidaan ajatella vuoristona, jossa vuorten huiput vastaavat suuria virheellisiä arvoja ja laakson pohjalla sijaitseva majatalo virheetöntä arvoa. Vaeltajan kulkusuuntaa lähtötilanteessa voidaan ajatella nuolena eli vektorina, joka osoittaa vähemmän virheellisten arvojen suuntaan. Kyseisen vektorin saa selville kertomalla syöte sanan rinnakkaisista painoarvoista koostuvalla matriisilla, vertaamalla saatua tulosta oikeaan arvoon ja muuttamalla sitä oikeammaksi.

Useasti neuroverkot sisältävät useita kerroksia, jolloin jonkin keskellä olevan neuronin painoarvon virheellisyyden selvittämiseksi joudumme käyttämään backpropagation-nimistä algoritmia. Lisäksi kouluttamiseen tarvitaan paljon dataa, jolloin kouluttaminen kannattaa tehdä näytönohjaimella, koska se on suunniteltu suoriutumaan tehtävästä erittäin tehokkaasti. Yksi näytönohjaimien antamista merkittävistä eduista on niiden kyky suorittaa useita laskutoimituksia rinnakkain samanaikaisesti.

Tarkemman selostuksen neuroverkoista saa paljon kehuja saaneen 3Blue1Brown Youtube-kanavan videosarjasta aiheesta.

Modernit videopelit sisältävät paljon eri valonlähteitä sekä objekteja kuten pelihahmoja, ja siksi niihin vaikuttavia muutoksia pitää pystyä laskemaan tehokkaasti näytönohjaimilla, kun niitä piirretään pelaajan ruudulle.

Nvidian etumatkalla kilpajuoksussa

Vaikka mediassa onkin pitkälti keskusteltu ChatGPT:stä ja sille kyvykkyydet antavista kielimalleista gpt-3.5-turbo ja gpt-4, markkinoille on myös noussut muita vakuuttavia ja kyvykkäitä kilpailijoita kuten LLaMa, PaLM tai Claude. Lisäksi avoimen lähdekoodin yhteisöt kuten Hugging Face tuottavat hämmästyttävää tahtia mitä mielenkiintoisempia kielimalleja ja niihin perustuvia sovelluksia.

Boomin myötä näytönohjaimilla tehostetun laskennan kysyntä on vain kasvanut viime vuosina ja niitä valmistavat yritykset ovat pyrkineet vastaamaan tarpeisiin. Erityisesti Nvidia on onnistunut tekemään oikeat ratkaisut oikeaan aikaan ja siksi saavuttanut johtoasemansa alan hardware kilpailussa, johon kukaan kilpailija ei ole pystynyt vastaamaan samalla kaliberilla. Nvidia on esimerkiksi onnistunut löytämään hyvän tasapainon tehokkaan laitteiston ja toimivan kehitysympäristön CUDA-työkalujen kanssa, jotka ovat nousseet alalla työskentelevien kehittäjien suureen suosioon. Kilpailijoiden kuten AMD:n laitteistot eivät välttämättä ole Nvidian laitteita yhtään huonompia, mutta AMD on saanut paljon kritiikkiä juuri hankalan ROCm-kehitysympäristön johdosta. Suurinta kritiikkiä Nvidia on lähinnä saanut näytönohjaimien korkeista hinnoista. Esimerkiksi Nvidian state-of-art A100 näytönohjain maksaa tätä kirjoittaessa yli 10 000 dollaria.