FPGA-kiihdyttimien käyttö koneoppimisessa
Salmi, Ville (2023)
Salmi, Ville
2023
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-05-02
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202304274756
https://urn.fi/URN:NBN:fi:tuni-202304274756
Tiivistelmä
Koneoppimisen hyödyntäminen on nykyään suosittua monessa eri sovelluskohteessa. Erityisen suosittuja ovat neuroverkkomallit, joiden tarkkuus ja koko kasvavat vuosi vuodelta. Entistä suuremmat koneoppimismallit luovat tarpeen kasvattaa malleja käsittelevien laitteistojen laskentakapasiteettia, mikä yleensä toteutetaan käyttämällä laitteistokiihdyttimiä. Tässä tutkielmassa perehdytään kirjallisuuslähteiden avulla FPGA-pohjaisten koneoppimiskiihdyttimien rakenteeseen ja ominaisuuksiin, joita työssä vertaillaan muihin yleisesti käytettyihin kiihdytinteknologioihin. Työssä myös esitellään lyhyesti tutkielman aiheelle keskeisiä osa-alueita, kuten FPGA-piirit, koneoppiminen ja laitteistokiihdytys.
FPGA-pohjaiset koneoppimiskiihdyttimet koostuvat usein itse FPGA-piirin lisäksi kiihdyttimen toimintaa ohjaavasta keskusyksiköstä, keskusyksikön ja FPGA:n välisestä kommunikointiväylästä sekä ulkoisista muistikomponenteista. FPGA-piirille toteutettu kiihdytinyksikkö koostuu usein monesta erillisestä laskentayksiköstä, jotka suorittavat laskentaa rinnakkain. Tällaista rakennetta hyödyntää esimerkiksi neuroverkkojen kiihdyttämiseen suunniteltu DLAU-kiihdytin.
FPGA-pohjaisilla kiihdyttimillä saavutetaan suuri rinnakkaisuus, jonka avulla voidaan kiihdyttää neuroverkkorakenteiden laskentaa tehokkaasti. FPGA-piirit tarjoavat myös uudelleenohjelmoitavuudellaan paljon joustavuutta kiihdyttimen suunnitteluun, sillä FPGA-kiihdytin voidaan helposti muokata laskemaan esimerkiksi eri kokoisia neuroverkkoja. FPGA-piirit kuluttavat myös vähän virtaa, minkä vuoksi niitä voidaan hyödyntää sellaisissa kiihdytinsovelluksissa, joissa energiankulutus on pientä. FPGA-koneoppimiskiihdyttimissä haasteellista on kuitenkin suurien koneoppimismallien käsittely, sillä FPGA-piirien laskenta- ja muistiresurssit ovat hyvin rajallisia. Miljoonia parametrejä sisältävien mallien tallentamiseksi FPGA-pohjaisissa koneoppimiskiihdyttimissä joudutaan käyttämään piirin ulkopuolisia muistikomponentteja, mikä heikentää suorituskykyä. Haasteita kiihdyttimien suunnittelussa aiheuttaa myös yleiskäyttöisiä ohjelmointikieliä alempaa abstraktiotasoa olevien laitteistonkuvauskielien käyttö.
ASIC-koneoppimiskiihdyttimiin verrattuna FPGA-kiihdyttimet ovat suoritusteholtaan ja energiatehokkuudeltaan huonompia. ASIC-piirit eivät kuitenkaan ole FPGA-piirien tavoin uudelleenohjelmoitavia, mikä heikentää ASIC-kiihdyttimien joustavuutta. Grafiikkasuorittimilla toteutetut koneoppimiskiihdyttimet ovat FPGA-kiihdyttimiin verrattuna paljon tehokkaampia monimutkaisten koneoppimismallien laskennassa. Grafiikkasuoritinpohjaiset koneoppimiskiihdyttimet kuluttavat kuitenkin hyvin paljon virtaa, minkä vuoksi ne eivät sovellu FPGA-kiihdyttimien tavoin vähäisen energiankulutuksen sovelluksiin.
Tulevaisuudessa FPGA-koneoppimiskiihdyttimien suosion odotetaan kasvavan. Vähäistä
energiankulutusta vaativissa tulevaisuuden sovelluksissa, kuten sulautetuissa järjestelmissä ja pilvipalveluissa, käytettävien koneoppimismallien laskenta voidaan suorittaa joustavasti FPGA-pohjaisten koneoppimiskiihdyttimien avulla. FPGA-koneoppimiskiihdyttimet tulevat olemaan tulevaisuudessa suuressa roolissa myös reaaliaikaista prosessointia vaativissa sovelluksissa, kuten itseajavissa ajoneuvoissa.
FPGA-pohjaiset koneoppimiskiihdyttimet koostuvat usein itse FPGA-piirin lisäksi kiihdyttimen toimintaa ohjaavasta keskusyksiköstä, keskusyksikön ja FPGA:n välisestä kommunikointiväylästä sekä ulkoisista muistikomponenteista. FPGA-piirille toteutettu kiihdytinyksikkö koostuu usein monesta erillisestä laskentayksiköstä, jotka suorittavat laskentaa rinnakkain. Tällaista rakennetta hyödyntää esimerkiksi neuroverkkojen kiihdyttämiseen suunniteltu DLAU-kiihdytin.
FPGA-pohjaisilla kiihdyttimillä saavutetaan suuri rinnakkaisuus, jonka avulla voidaan kiihdyttää neuroverkkorakenteiden laskentaa tehokkaasti. FPGA-piirit tarjoavat myös uudelleenohjelmoitavuudellaan paljon joustavuutta kiihdyttimen suunnitteluun, sillä FPGA-kiihdytin voidaan helposti muokata laskemaan esimerkiksi eri kokoisia neuroverkkoja. FPGA-piirit kuluttavat myös vähän virtaa, minkä vuoksi niitä voidaan hyödyntää sellaisissa kiihdytinsovelluksissa, joissa energiankulutus on pientä. FPGA-koneoppimiskiihdyttimissä haasteellista on kuitenkin suurien koneoppimismallien käsittely, sillä FPGA-piirien laskenta- ja muistiresurssit ovat hyvin rajallisia. Miljoonia parametrejä sisältävien mallien tallentamiseksi FPGA-pohjaisissa koneoppimiskiihdyttimissä joudutaan käyttämään piirin ulkopuolisia muistikomponentteja, mikä heikentää suorituskykyä. Haasteita kiihdyttimien suunnittelussa aiheuttaa myös yleiskäyttöisiä ohjelmointikieliä alempaa abstraktiotasoa olevien laitteistonkuvauskielien käyttö.
ASIC-koneoppimiskiihdyttimiin verrattuna FPGA-kiihdyttimet ovat suoritusteholtaan ja energiatehokkuudeltaan huonompia. ASIC-piirit eivät kuitenkaan ole FPGA-piirien tavoin uudelleenohjelmoitavia, mikä heikentää ASIC-kiihdyttimien joustavuutta. Grafiikkasuorittimilla toteutetut koneoppimiskiihdyttimet ovat FPGA-kiihdyttimiin verrattuna paljon tehokkaampia monimutkaisten koneoppimismallien laskennassa. Grafiikkasuoritinpohjaiset koneoppimiskiihdyttimet kuluttavat kuitenkin hyvin paljon virtaa, minkä vuoksi ne eivät sovellu FPGA-kiihdyttimien tavoin vähäisen energiankulutuksen sovelluksiin.
Tulevaisuudessa FPGA-koneoppimiskiihdyttimien suosion odotetaan kasvavan. Vähäistä
energiankulutusta vaativissa tulevaisuuden sovelluksissa, kuten sulautetuissa järjestelmissä ja pilvipalveluissa, käytettävien koneoppimismallien laskenta voidaan suorittaa joustavasti FPGA-pohjaisten koneoppimiskiihdyttimien avulla. FPGA-koneoppimiskiihdyttimet tulevat olemaan tulevaisuudessa suuressa roolissa myös reaaliaikaista prosessointia vaativissa sovelluksissa, kuten itseajavissa ajoneuvoissa.
Kokoelmat
- Kandidaatintutkielmat [9156]