Pieter Edelman
31 mei

Met de opmars van kunstmatige intelligentie – met name deep learning – zijn bakken rekenkracht en geheugen gemoeid. De race om hier ic’s voor te ontwikkelen, is dan ook in volle gang.

Exponentiële groei in rekenkracht, geheugencapaciteit en bandbreedte was de technologische enabler die de opleving in kunstmatige intelligentie de laatste jaren mogelijk maakte. Maar ai begint nu zijn eigen technologische agenda te stellen. Elk zichzelf respecterend chipbedrijf werkt ondertussen aan ai-silicium en de bijbehorende softwareraamwerken, en tientallen startups proberen met vernieuwende architecturen te komen om ai-taken dramatisch te versnellen.

Synopsys-topman Aart de Geus noemde kunstmatige intelligentie onlangs zelfs de aanjager van de halfgeleiderindustrie de komende decennia. Ai vergt namelijk ontzettend veel rekenkracht en data, en hoe meer, hoe beter de prestaties. Tegelijkertijd is traditionele hardware helemaal niet zo goed geschikt voor ai-taken. Althans, het kan beter op een aantal fronten. Google concludeerde in 2013 dat het de capaciteit van zijn datacentra zou moeten verdubbelen als alle Android-bezitters drie minuten per dag spraakherkenning zouden gaan gebruiken.

Eerst maar even wat spraakverwarring uit de weg ruimen. Als we vandaag de dag spreken over ai, gaat het bijna altijd over deep learning ofwel diepe neurale netwerken. Bij deep learning draait het erom dat de systemen van bestaande data leren, en daarmee valt de aanpak binnen het veld van machine learning, samen met bijvoorbeeld de bayesiaanse algoritmes achter spamfilters. Machine learning is op zijn beurt weer een van de mogelijke aanpakken binnen het grotere veld van kunstmatige intelligentie, waar ook niet-lerende aanpakken in thuishoren zoals expertsystemen.

Nvidia is met zijn gpu’s op dit moment de belangrijkste speler in deep learning.

Feitelijk is deep learning dus maar een onderdeel van het hele ai-veld. Maar de belangrijke ai-successen van de afgelopen jaren zijn bijna allemaal te danken aan de inzet van deep learning – al dan niet in combinatie met andere ai-technieken, en de twee termen worden vaak door elkaar gebruikt.

Bij neurale netwerken worden simpele rekenknooppunten – neuronen – met elkaar verbonden in een lagenstructuur: elk neuron combineert de input van verschillende neuronen uit de vorige laag tot een nieuwe waarde, en die kan weer naar meerdere neuronen in de volgende laag worden verstuurd. Door genoeg lagen te gebruiken – met andere woorden: door de netwerken diep te maken – en door voldoende neuronen per laag in te zetten, blijken deze netwerken zeer accuraat patronen te kunnen herkennen. De diepte van de netwerken en de grootte van de trainingssets zijn de afgelopen jaren geëxplodeerd.

Maar met het uitdijen van de netwerken en het bigger worden van de data neemt ook de vraag naar computercapaciteit met rasse schreden toe. Er wordt daarom met warme belangstelling gekeken naar taakspecifieke hardware die deep learning kan versnellen. Zo is Google bezig met tensor processing units (tpu’s), claimt Apple een ‘neural engine’ in zijn Iphones te hebben ingebouwd en demonstreert Nvidia een auto die zelf heeft leren rijden met zijn gpu’s.

Training versus gebruik

Het is altijd goed om te kijken waarvoor dit soort chips precies bedoeld zijn: training of toepassing (of allebei)? Die twee processen zijn namelijk sterk asymmetrisch in hun eisen. Training bestaat in feite uit het doorrekenen van elk voorbeeld, het bepalen van de mate waarin het netwerk ernaast zat en het bijstellen van de parameters. Bij het gebruik, of inference, hoeft dat slechts eenmaal te worden gedaan.

Vanwege die asymmetrie is trainen van een netwerk een cloud-aangelegenheid; alleen de zware hardware in rekencentra kunnen die last aan. Bij inference gaat het vaak om mobiele systemen die zuinig moeten omspringen met hun batterij, maar ook beperkt zijn in datagebruik, warmteontwikkeling en domweg de fysieke ruimte.

Bij inference wordt er wel vaak gesmokkeld, want ook dat kan een bijzonder intensieve klus zijn. Voor een enkele inference zijn soms miljarden berekeningen nodig. En als je dat realtime op alle frames in een videostroom wilt doen, is dat ook weer iets voor de cloud. Maar het is natuurlijk een stuk aantrekkelijker als een smartphone, auto of drone inference – en het liefst ook de training – zelf kan doen.

Wat is er nodig?

In zekere zin werd de deep learning-revolutie mogelijk gemaakt door de opkomst van gpu’s als ‘algemene’ processor. Die zijn veel beter toegesneden op neurale netwerken dan cpu’s, omdat de grafische processoren veel beter heel veel simpele berekeningen tegelijkertijd kunnen uitvoeren. Toch zijn ze niet ideaal.

Het hele eieren eten bij deep learning is de sterkte van de verbinding tussen twee neuronen, uitgedrukt als getal waarmee de output van de eerste wordt vermenigvuldigd om tot de input van de tweede te komen. De trainingsfase bestaat eruit al die sterktes in te stellen, en bij inference worden die getallen in het geheugen geladen om het netwerk door te rekenen. De hedendaagse neurale netwerken kunnen echter enorm groot zijn en de datasets kunnen tot in de honderden megabytes lopen. Dat kan een typische cpu of gpu niet in zijn cachegeheugen houden, dus moet hij steeds informatie uitwisselen met het relatief trage werkgeheugen.

Daarnaast verspillen cpu’s en gpu’s vanuit een deep learning-oogpunt veel transistoren aan zaken die helemaal niet relevant zijn. Het leeuwendeel van het werk komt op de schouders van een enkele bewerking: de multiply-accumulate (mac), waarbij getallen met elkaar worden vermenigvuldigd en opgeteld bij een totaal. Van complexe logica wordt weinig gebruikgemaakt.

Bovendien hoeven neurale netwerken niet met hele nauwkeurige getallen te werken. Integers van 32 of zelfs 16 bit leveren doorgaans even goede resultaten als precieze notaties met 64 bit floating points, althans voor inference. Dat is dubbel winst: minder bits betekent minder transistoren, maar integer-bewerkingen zijn ook nog eens veel simpeler dan floating point. En vaak werkt 8, 4 of 1 bit ook nog wel, of in elk geval goed genoeg om de uitruil te rechtvaardigen.

De basis van een deep learning-asic draait er dan ook om zo veel mogelijk lagenauwkeurigheid-macs zo dicht mogelijk op zo snel mogelijk geheugen te schroeven. Google’s eerste poging om een ai-asic te maken – en een van de weinige architecturen waarover details naar buiten zijn gebracht – was in feite niet veel meer dan een zee macs gekoppeld aan een hoop geheugen. De instructieset bestond uit slechts een dozijn operaties. Naar eigen zeggen van de zoekgigant leverde dat in zijn datacentra een versnelling op van een factor vijftien tot dertig, tegen een stuk lager energiegebruik.

Geheime verfijningen

Aan dat basale ontwerp valt natuurlijk nog veel te schaven. Chipontwerpers gebruiken geavanceerde concepten en verfrissende architecturen om bandbreedte, verbruik, warmteontwikkeling, parallellisme en siliciumoppervlak verder te optimaliseren, ondersteund met honderden miljoenen van investeerders en techbedrijven. Zo wist Google in de volgende iteraties van zijn tpu de prestaties flink op te schroeven. Het is echter grotendeels onduidelijk hoe het bedrijf dat heeft gedaan. Ontwikkelaars van dit soort deep learning-architecturen houden de details van hun trukendozen, begrijpelijkerwijs, angstvallig geheim. Ze willen wel praten over de algemene concepten waarmee nog winst te behalen valt.

De nauwkeurigheid van waardes blijft bijvoorbeeld interesse wekken. Voor training zijn nog steeds het grote dynamische bereik en de nauwkeurigheid van floating point-getallen nodig, maar dat hoeft niet per se met een resolutie van 64 of 32 bit. Er wordt dan ook volop geëxperimenteerd met kleinere of schaalbare notaties.

Ook kan het lonen om dieper in te gaan op de eigenschappen van specifieke taken. Zo gebeurt het regelmatig dat meerdere kopieën van dezelfde informatie in het geheugen worden geladen, zoals identieke filterparameters. Als een neurale processor die informatie kan hergebruiken, hoeft hij fors minder data uit te wisselen.

Verder wordt er vaak gewerkt met sparse data: de meeste waardes staan op nul en doen niet mee in de berekening. Als een ic daar slim gebruik van kan maken, kan dat ook enorm schelen in de berekeningen. En dan zijn er natuurlijk nog allerlei kleinere en grotere tweaks en trucs zoals comprimeren van data, slim herberekenen van tussenresultaten en wiskundige transformaties.

Niet voor al deze aanpassingen is een dedicated ic nodig. Nvidia, de heer en meester in deep learning, heeft allang lageprecisiebewerkingen en andere trucs geadopteerd om zijn gpu’s relevant te houden. De ai-capactiteiten waar mobiele-telefoonmakers mee schermen, bestaan grotendeels uit aanpassingen van de gpu’s, dsp’s en softwaredrivers in plaats van discreet silicium.

De geavanceerde gezichtsherkenning in de Iphone’s is gebaseerd op een ‘neural engine’ in de processor. Het is echter niet duidelijk of dit apart silicium is of dat het de bestaande dsp’s en gpu’s gebruikt.

Ruimte voor iedereen

Ai is op dit moment populair en techbedrijven proberen elkaar de loef af te steken om een voorsprong te krijgen. Toch worden de chips nog slechts mondjesmaat verscheept. De echt geavanceerde ontwerpen zijn veelal nog in ontwikkeling.

Dat komt wellicht doordat het er voorlopig niet op lijkt dat we de grote computerlasten van deep learning makkelijk de baas kunnen. Er ontstaat dus ruimte voor een grote verscheidenheid aan aanpakken. En chipmakers kunnen zich ook differentiëren door te kiezen voor een toepassing: het datacentrum, mobiele devices, voertuigen, realtime versus offline, alleen inference of ook training. Het kan bovendien nuttig zijn om te optimaliseren voor een specifieke taak zoals vision.

Bovendien speelt de manier waarop applicaties worden ontwikkeld de chipmakers in de kaart. Ai-ontwikkelaars zijn al volledig gewend aan Tensorflow, Caffe, Torch en een handvol andere raamwerken om hun neurale netwerken te bouwen. Iedereen die een toontje mee wil blazen binnen de ai-wereld, maakt dat hij aansluit op deze raamwerken. De ontwikkelaars van architecturen hoeven daarom niet zo bang te zijn dat een instructieset of raamwerk van de concurrent klandizie afsnoept.

De kans is dus niet groot dat er op korte termijn een bedrijf zoals Arm opstaat in de deep learning-wereld, dat met een enkele architectuur een stempel drukt op de hele markt. Het lijkt er eerder op dat de ai-markt sterk gefragmenteerd zal worden. Taken worden uitgesmeerd over een breed scala aan ai-specifieke ic’s, maar ook gewoon nog over gpu’s en dsp’s.

Dat kan zelfs gelden voor een enkele toepassing. Het is bijvoorbeeld niet ondenkbaar dat een smartphone een snel en zuinig ic krijgt dat alleen de stem van de eigenaar kan verwerken, terugvalt op een trager en verkwistender ic voor spraak van anderen en voor stemmen in een andere taal nog een cloud-backend inschakelt.

Afkijken bij de biologie

Er is mogelijk ook nog een troefkaart. Ons brein, waarnaar deep learning is gemodelleerd, is de meest geavanceerde processor, maar verbruikt slechts twintig watt. Hoewel veel ai-onderzoekers benadrukken dat kunstmatige neurale netwerken ver afstaan van biologische en na het afkijken van wat algemene principes een heel eigen ontwikkeling hebben doorgemaakt, hopen ze tegelijkertijd nog altijd die efficiëntie te kunnen dupliceren door inspiratie op te doen bij het biologische model.

Het brein gebruikt bijvoorbeeld helemaal geen klok zoals een digitale chip, maar reageert op prikkels. Als er niks gebeurt – of waar er niks gebeurt in een input – hoeft ook niks te worden berekend. Klokloze systemen zouden dan ook een stuk efficiënter kunnen zijn. Met name op het gebied van beeldverwerking wordt hier veel onderzoek naar gedaan. De camera’s voor dit soort systemen produceren geen frames, maar sturen signalen wanneer er iets in het beeld verandert.

Dergelijke ‘neuromorfische’ architecturen zouden deep learning fors efficiënter kunnen maken. Maar ze staan over het algemeen nog verder van de markt af dan de digitale ic’s, en er is nog veel onzekerheid over wat er wel en niet werkt. Biologische zenuwcellen gebruiken bijvoorbeeld frequenties van simpele binaire pulsjes om waardes te coderen, en er is veel belangstelling voor het nabootsen van deze aanpak. Maar het is maar zeer de vraag of dit echt iets oplevert; een digitaal register zou net zo efficiënt kunnen zijn.

Wellicht zullen de ic’s een vergelijkbaar traject volgen als de neurale netwerken zelf: met inspiratie uit het biologische principe, maar in een uitvoering die beter technisch realiseerbaar is. Er wordt bijvoorbeeld met veel interesse gekeken naar de memristor – de instelbare weerstand. Een grid van memristors kan de vermenigvuldig-en-optel-bewerking analoog uitvoeren als een voltage. Net als biologische neuronen, maar dan anders.