Laitteisto, joka kirjoittaa nyt lauseita ja tunnistaa kasvaimia, on osan urastaan velkaa vanhemmalle ongelmalle: valtavan pikselimäärän piirtämiselle ennen kuin pelaaja huomaa maiseman latautuneen myöhässä.
Grafiikkasuorittimista tuli keskeinen osa modernia tekoälyä, koska neuroverkot sisältävät valtavan määrän matemaattista työtä, joka voidaan jakaa ja suorittaa rinnakkain. Grafiikka vaati samaa laaja-alaista kykyä. Ohjelmisto muutti erikoistuneen kuvankäsittelyprosessorin ohjelmoitavaksi moottoriksi matriiseille, malleille ja datalle.
Ensin tulivat pikselit
Moderni peli käsittelee jatkuvasti geometriaa, tekstuureja, valaistusta, värejä ja varjoja miljoonien pikselien alueella. Suuri osa tästä työstä voidaan jakaa moniksi samankaltaisiksi laskutoimituksiksi. Sen sijaan että yhtä erittäin kyvykästä työntekijää pyydettäisiin maalaamaan näyttö vasemmalta oikealle, grafiikkalaitteisto järjestää valtavan työpajan ja pitää monet pienemmät työntekijät kiireisinä yhdessä.
Suoritin on suunniteltu eri tavalla. Sen pienempi määrä tehokkaita ja joustavia ytimiä käsittelee käyttöjärjestelmän tehtäviä, sovelluslogiikkaa, haarautuvia päätöksiä ja tehtäviä, joissa seuraava vaihe riippuu edellisen tuloksesta. Kumpikaan arkkitehtuuri ei ole yleisesti ottaen parempi. Oikeussalissa ja keks itehtaassa työskentelee ihmisiä; se ei tarkoita, että ne hyötyisivät samasta henkilöstösuunnitelmasta.
Sitten pikseleistä tuli tensoreita
Neuroverkot yhdistävät toistuvasti suuria lukutaulukoita, suorittavat operaatioita ja välittävät tulokset monien kerrosten läpi. Koulutus säätää mallia; päättely käyttää sitä. Taustalla oleva työ voi olla erittäin monimutkaista, mutta suuri osa raskaasta aritmetiikasta voidaan silti jakaa rinnakkaisprosessorille.
Suoritin pystyy suorittamaan nämä laskutoimitukset. Grafiikkasuorittimen etu näkyy, kun tehtävässä on riittävästi sopivaa työtä sen rinnakkaisten resurssien pitämiseksi käytössä. Yhteys on tämä:
- grafiikka sisältää pikseleille, geometrialle ja näytteille jakautuvia toisiinsa liittyviä laskutoimituksia;
- tekoäly sisältää mallin painoarvoille, aktivaatioille ja datalle jakautuvia toisiinsa liittyviä laskutoimituksia;
- grafiikkasuoritin on rakennettu siirtämään suuri rinnakkainen työmäärä laitteen läpi.
Uranvaihto tapahtui neljässä näytöksessä
- Kiinteä grafiikkalaitteisto: varhaiset grafiikkasuorittimet nopeuttivat kuvien ja 3D-maisemien piirtämiseen tarvittavaa erikoistunutta työtä.
- Ohjelmoitavat varjostimet ja yleislaskenta: laitteistosta tuli riittävän joustava, jotta kehittäjät pystyivät ilmaisemaan laajempia rinnakkaisia ongelmia.
- Käytännölliset ohjelmistoalustat: CUDA:n ja ROCm:n kaltaiset järjestelmät tarjosivat ohjelmointimalleja, kääntäjiä, kirjastoja ja työkaluja.
- Syväoppiminen mittakaavassa: tutkimus, kuten AlexNet vuonna 2012, osoitti, kuinka grafiikkasuorittimilla laskeminen saattoi tehdä suuren kuvantunnistusverkon kouluttamisesta käytännöllistä.
Kierre vahvisti sitten itse itseään. Yhä useammat tutkijat käyttivät grafiikkasuorittimia laskentaan; ohjelmistot paranivat; sirusuunnittelijat lisäsivät koneoppimisen operaatioille tarkoitettuja ominaisuuksia; suuremmat työmäärät muuttuivat käytännöllisiksi; kysyntä rahoitti uuden laitesukupolven.
Ohjelmisto on syy siihen, että nopeasta sirusta tuli hyödyllinen
Raaka rinnakkainen aritmetiikka ei ole käyttökelpoinen ekosysteemi. Kehittäjät tarvitsevat kääntäjiä, ajonaikaisia ympäristöjä, profilointityökaluja ja kiihdytettyjä kirjastoja; tutkijat tarvitsevat kehyksiä, joilla mallin voi ilmaista kirjoittamatta jokaista matalan tason operaatiota käsin.
NVIDIAn CUDA Programming Guide kuvaa sen ohjelmointimallin ja suoritusympäristön. AMD:n ROCm-dokumentaatio käsittelee vastaavaa avointa ohjelmistopinoa tuetulle AMD-laitteistolle. Kehystuki on syy siihen, miksi kaksi teoriassa kyvykästä grafiikkasuoritinta voi olla käytännössä hyvin eriarvoinen yhdelle sovellukselle.
VRAM on tila, jossa työ tapahtuu
Mallin ja sen väliaikaisten työtietojen on mahduttava käytettävissä olevaan muistiin. Tehtävästä riippuen tähän sisältyvät painoarvot, kehotteet, kuvat, erät ja välitulokset. Grafiikkasuoritin voi olla teoriassa riittävän nopea ja silti epäonnistua työmäärän suorittamisessa, koska sille ei ole paikkaa, johon kaikki mahtuisi.
Tämä synnyttää käytetyn laitteiston erikoisuuden: vanhempi ammattilaiskortti, jossa on enemmän muistia, voi olla edelleen hyödyllinen mallille, joka ei mahdu uudemmalle ja nopeammalle pelinäytönohjaimelle. Myös päinvastainen pitää paikkansa. Jos aiottu ohjelmisto käyttää vähän muistia ja hyötyy uudemmista laskentaominaisuuksista, sellaisen kapasiteetin ostaminen, jota se ei koskaan käytä, on kallis tapa ihailla teknisiä tietoja.
Myös muistin kaistanleveydellä on merkitystä. Tuhannet rinnakkaiset työntekijät eivät ole tuottavia, kun data saapuu niille postiluukun kautta.
Tarvitseeko jokainen tekoälytehtävä grafiikkasuoritinta?
Ei. Pienet mallit voivat toimia suorittimilla. Puhelimissa ja uudemmissa tietokoneissa on yhä useammin NPU-yksiköitä, jotka on suunniteltu suorittamaan tuettuja neuroverkkolaskutoimituksia tehokkaasti. Suuret operaattorit rakentavat myös käyttötarkoitukseen suunniteltuja kiihdyttimiä, kuten Googlen Tensor Processing Units -yksiköitä.
Grafiikkasuoritin on edelleen tärkeä, koska siinä yhdistyvät suuri rinnakkaissuorituskyky, ohjelmoitavuus, paikallinen muisti ja kypsät työkalut. Tämä yhdistelmä sopii moniin tehtäviin, mutta se ei tee siitä oikeaa vastausta jokaiseen tehtävään, jonka nimessä esiintyvät kirjaimet A ja I.
Pelinäytönohjain voi suorittaa tekoälytehtäviä - kun ohjelmisto suostuu
Sopivat pelinäytönohjaimet voivat käsitellä kuvien luontia, litterointia, suurentamista ja pienempiä kielimalleja paikallisesti. Tarkista täsmällinen sovellus yleisen ”tekoälyvalmis”-väitteen sijaan:
- Tuetaanko grafiikkasuoritinta ja käyttöjärjestelmää?
- Kuinka paljon VRAM-muistia valittu malli ja erä tarvitsevat?
- Mitä numeerisia muotoja ja kiihdytyspolkuja on saatavilla?
- Riittävätkö virtalähde, kotelo ja jäähdytys kortille?
- Onko odotettu nopeus todella uuden laitteiston ostamisen arvoinen?
Käytännön esimerkki: haastattelun litterointi
Oletetaan, että haluat muuttaa tallenteet tekstiksi lataamatta niitä palveluun. Valitset litterointisovellusta, mallikokoa, hyväksyttävää tarkkuutta ja käsittelyaikaa - et vain ”tekoälygrafiikkakorttia”. Whisper-repository tarjoaa likimääräiset muistivaatimukset mallikokoineen, jotka ovat lähtökohta kyseiselle toteutukselle eivätkä yleispätevä lupaus jokaiselle sen ympärille rakennetulle sovellukselle.
Suurempi malli saattaa tarvita enemmän muistia. Pienempi voi jo valmistua riittävän tarkasti. Jos suoritin käsittelee satunnaisen tallenteen ennen kuin tarvitset sen valmiina, uusi grafiikkasuoritin ratkaisisi aikatauluongelman, jota ei ole olemassa.
Hyödyllinen historiallinen sattuma
Varhaista grafiikkalaitteistoa ei suunniteltu modernit kielimallit mielessä. Siitä tuli hyödyllistä, koska pikselien piirtämiseen rakennettu arkkitehtuuri sopi myös suureen osaan neuroverkkojen taustalla olevasta rinnakkaisesta matematiikasta. Ohjelmoitava ohjelmisto avasi tämän soveltuvuuden sattuman tutkijoille ja kehittäjille; vuosikymmenten grafiikkakysyntä kehitti laitteistoa jatkuvasti.
Grafiikkasuorittimet eivät vauhdittaneet tekoälybuumia vain siksi, että ne olivat nopeita. Ne olivat rinnakkaisia ja ohjelmoitavia, ja niitä ympäröi ohjelmisto, joka kykeni muuttamaan tämän rakenteen hyödylliseksi työksi.
Katso tekoälyyn ja koneoppimiseen tarkoitetut grafiikkasuorittimet, joita GPUsed käsittelee, lue mitä NPU tekee tai vertaile VRAM-kapasiteettia ja sen rajoituksia. Jos kyse on ostoksesta, aloita työmäärästä, älä suurimmasta mallinimestä.