CPU versus GPU versus NPU: ontwerp, datatypes en energie-efficiëntie

Een CPU is een universele processor die alles kan uitvoeren en met een klein aantal complexe cores één taak zo snel mogelijk afrondt. Een GPU verwerkt met een groot aantal rekeneenheden grote hoeveelheden data parallel en wordt gebruikt voor uiteenlopende parallelle berekeningen, zoals graphics en het trainen van AI. Een NPU is een gespecialiseerd circuit voor de multiply-accumulate-bewerkingen op matrices die het grootste deel van de berekeningen in neurale netwerken uitmaken; door veel rekeneenheden met lage precisie zoals INT8 naast elkaar te plaatsen en data in geheugen op de chip te hergebruiken, voert het inferentie uit met zeer hoge energie-efficiëntie. Bewerkingen die het niet ondersteunt, liggen het daarentegen slecht.

KenmerkCPUGPUNPU
OntwerpfilosofieUniverseel, lage latentie. Eén taak zo snel mogelijk afrondenHoge doorvoer. Grote hoeveelheden parallelle berekeningen in één keer verwerkenGespecialiseerd in bewerkingen van neurale netwerken (vooral inferentie), met hoge prestaties per watt
Opbouw van de rekeneenhedenEnkele tot enkele honderden complexe cores, elk met SIMD-rekeneenhedenDuizenden eenvoudige rekeneenheden. Vaak ook met matrixrekeneenhedenEen grote array van multiply-accumulate-eenheden (zoals een systolische array) plus vectoreenheden voor onder meer activatiefuncties
BesturingPer instructie sprongvoorspelling en speculatieve uitvoering (out-of-order)Wisselt tussen veel threads om geheugenwachttijden te verbergenVolgt meestal een dataflow die vooraf door de compiler is vastgelegd, met weinig besturing per instructie
Sterk inTaken met veel vertakkingen, het besturingssysteem, applicatielogicaGraphics, training en inferentie van AI, wetenschappelijke berekeningenAI-inferentie die draait om convoluties en matrixvermenigvuldigingen
GeheugenGrote caches en hoofdgeheugen zoals DDRGeheugen met hoge bandbreedte zoals GDDR en HBMHergebruikt gewichten en tussenresultaten in SRAM-buffers op de chip. Ingebouwd in een SoC deelt het hoofdgeheugen met de CPU
Belangrijkste datatypesVooral FP64, FP32 en integers, maar vrijwel allesVooral FP32, FP16 en BF16. Voor training ook FP8 en dergelijkeVooral lage precisie zoals INT8, INT4 en FP16
PrestatiemaatKlokfrequentie, aantal cores, IPCFLOPS (zoals TFLOPS)TOPS (meestal de theoretische piekwaarde, geteld in INT8)
Energie-efficiëntie bij AI-inferentieLaagHoogHet hoogst. Soms meer dan een orde van grootte hoger dan een CPU
FlexibiliteitHet hoogst. Elk programma draait eropHoog. Breed inzetbaar voor paralleliseerbare takenLaag. Niet-ondersteunde bewerkingen worden teruggegeven aan de CPU of GPU
ProgrammeringGewone programmeertalen en compilersKernels schrijven in een parallel programmeermodel voor GPU'sGetrainde modellen worden met een AI-compiler of inferentieruntime omgezet en uitgevoerd. Direct programmeren is zeldzaam
Waar te vindenIn elke computerAls losse kaart of ingebouwd in een SoCVaak ingebouwd in de SoC van smartphones en pc's. Er zijn ook gespecialiseerde chips voor datacenters

De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.

Wanneer welke variant?

CPU
Taken met veel vertakkingen en sequentiële verwerking, en de besturing van het hele systeem. Ook voor kleine modellen en voor bewerkingen die de NPU niet ondersteunt.
GPU
Grootschalige parallelle berekeningen die keuze in precisie en flexibiliteit vragen, zoals AI-training, inferentie van grote modellen, graphics en wetenschappelijke berekeningen.
NPU
Wanneer inferentie zoals fotocorrectie, spraakherkenning of vertaling op een smartphone of pc continu moet draaien zonder de batterij leeg te trekken. Het model wordt gekwantiseerd en uitgevoerd in een formaat waarin de NPU sterk is, zoals INT8.

Veelgestelde vragen

Wat is het verschil tussen een NPU en een GPU?

Een GPU is een universele parallelle processor waarvan de vele rekeneenheden flexibel via programma's te gebruiken zijn, ook voor graphics en training. Een NPU is toegespitst op de multiply-accumulate-bewerkingen van inferentie in neurale netwerken en gebouwd rond rekeneenheden met lage precisie en geheugen op de chip; daardoor is hij voor ondersteunde taken zeer energie-efficiënt, maar liggen andere taken hem slecht.

Waarom is een NPU zo energie-efficiënt?

Een CPU zet per instructie veel schakelingen in, zoals sprongvoorspelling en het herordenen van instructies, terwijl een NPU daar veel van weglaat en een groot aantal kleine multiply-accumulate-eenheden voor onder meer INT8 naast elkaar plaatst. Bovendien hergebruikt hij gewichten en tussenresultaten in SRAM op de chip, waardoor er minder toegangen nodig zijn tot extern geheugen, die veel energie kosten.

Kan een NPU ook trainen?

NPU's in smartphones en pc's zijn vooral gemaakt voor inferentie. Training vereist het berekenen van gradiënten en een hoge precisie, en daarvoor worden doorgaans GPU's of trainingsaccelerators voor datacenters gebruikt.

Is een NPU met een hoger TOPS-getal altijd sneller?

Niet noodzakelijk. TOPS is meestal de theoretische piekwaarde, geteld in bijvoorbeeld INT8, en soms een waarde die uitgaat van ijle (sparse) data. De werkelijke snelheid hangt sterk af van de geheugenbandbreedte, de benutting van de rekeneenheden en de vraag of de bewerkingen van het model door de NPU worden ondersteund.

Test uw begrip

Wat is de belangrijkste reden dat een NPU in een SoC van een smartphone bij AI-inferentie energiezuiniger is dan een CPU?

  1. AOmdat een NPU met licht in plaats van elektriciteit rekent
  2. BOmdat veel multiply-accumulate-eenheden met lage precisie zoals INT8 zijn geplaatst en algemene schakelingen die niet voor AI-berekeningen nodig zijn zijn weggelaten
  3. COmdat een NPU altijd op een hogere klokfrequentie draait dan een CPU
Antwoord en toelichting tonen

Antwoord: B. Omdat veel multiply-accumulate-eenheden met lage precisie zoals INT8 zijn geplaatst en algemene schakelingen die niet voor AI-berekeningen nodig zijn zijn weggelaten

Een CPU kan alles uitvoeren en laat daarom per instructie veel schakelingen werken, zoals sprongvoorspelling en herordening van instructies. Een NPU is gespecialiseerd in matrix-multiply-accumulate, heeft veel rekeneenheden met lage precisie en is zo gebouwd dat data op de chip worden hergebruikt, zodat de energie per bewerking ordes van grootte kleiner is. In ruil daarvoor is hij minder geschikt voor andere dan AI-verwerking en voor niet-ondersteunde bewerkingen.

Welke speciale schakeling wordt in onder meer SoC's voor smartphones geplaatst om AI-inferentie snel en met laag vermogen uit te voeren?

  1. APLL (phase-locked loop)
  2. BAD-omzetter
  3. CNPU (neural processing unit)
Antwoord en toelichting tonen

Antwoord: C. NPU (neural processing unit)

Een NPU is een speciale schakeling die de vermenigvuldig-optelbewerkingen, het grootste deel van de berekeningen van neurale netwerken, in grote aantallen parallel verwerkt met lage precisie, zoals gehele getallen van 8 bit of minder. De prestaties per vermogen zijn meer dan een orde van grootte hoger dan bij een algemene CPU, zodat fotocorrectie, spraakherkenning en vertaling binnen de smartphone kunnen worden uitgevoerd. De prestaties worden uitgedrukt in TOPS (biljoenen bewerkingen per seconde) en NPU's worden ook steeds vaker in SoC's voor pc's opgenomen.

Welke opbouw rangschikt in AI-versnellers en dergelijke veel vermenigvuldig-optelelementen in een raster en berekent een matrixproduct terwijl gegevens achtereenvolgens naar de naburige rekeneenheid stromen?

  1. ASystolic array
  2. BCrossbar-schakelaar
  3. CRingbuffer
Antwoord en toelichting tonen

Antwoord: A. Systolic array

Een systolic array is een opbouw waarin vermenigvuldig-optelelementen (MAC's) tweedimensionaal zijn gerangschikt en berekeningen worden uitgevoerd terwijl gegevens regelmatig naar de naburige rekeneenheid worden doorgegeven; de naam is ontleend aan de samentrekking (systole) van het hart dat bloed rondpompt. Omdat eenmaal ingelezen gegevens door veel rekeneenheden worden hergebruikt, nemen de geheugentoegangen af en worden matrixbewerkingen efficiënt uitgevoerd. De TPU van Google heeft grote arrays zoals 128×128.

  1. Wat is de belangrijkste reden waarom een systolic array in AI-versnellers matrixproducten efficiënt kan berekenen?
  2. Wat is het belangrijkste voordeel van het omzetten (kwantiseren) van gewichten van FP32 naar INT8 bij AI-inferentie?
  3. Welke uitspraak over waar op moet worden gelet bij een waarde als "○○ TOPS" als prestatie van een AI-versneller is juist?

Oefenvragen over AI-hardware en softwarestack

Belangrijke termen uitgelegd

NPU (neural processing unit)
Speciale schakeling om inferentie van neurale netwerken voor AI snel en met laag energieverbruik uit te voeren. Zit in de SoC's van smartphones en pc's.
GPU
Afkorting van Graphics Processing Unit. Processor met veel eenvoudige rekeneenheden die grote hoeveelheden data parallel verwerkt. Naast beeldverwerking veel gebruikt voor training en inferentie van AI.
Systolische array
Opzet waarbij veel multiply-accumulate-eenheden in een raster staan en een matrixproduct wordt berekend terwijl gegevens achtereenvolgens naar de naburige eenheid stromen. Wordt gebruikt in AI-accelerators.
INT8
Geheel getal van 8 bits met teken (−128 tot 127). Bij AI-inferentie leiden het omzetten (kwantiseren) van gewichten en activaties naar INT8 met een schaalfactor tot sterk lagere reken- en geheugenlast, en kleine gehele-getalschakelingen kunnen het snel verwerken.
TOPS
Prestatie-indicator voor AI-versnellers die het aantal bewerkingen per seconde in biljoenen (tera) uitdrukt. Meestal een theoretisch maximum, geteld bij lage precisie.

Verwante vergelijkingen