X86 CPU's scheiden juist in meer tiers meer soorten geheugen, we zien steeds meer "ringen" cache (denk aan 3D-cache op CPU's met meer ops/second dan wat dan ook, zodat cache-miss events waarvoor RAM/storage nodig is laag zijn). Ook zaken als latency zijn erg belangrijk in dit soort discussies, en waarom je juist een multi-tier oplossing wil.
Moderne GPU's hebben dat door ook eigen, los van de CPU zijnde, L1/L2 cache te hebben en in het geval van AMD accellerators zelfs een L3 "ring"-cache, voordat het dedicated VRAM (wat dus zonder extra bus overhead van bijvoorbeeld CoreLink wat in de ARM-spec als inter-CPU connect geld) hoeft te benaderen. Dat VRAM is bovendien ook nog eens lagere latency, én 100% zeker voor de GPU beschikbaar. VRAM en DRAM hebben erg andere kenmerken, het gebruik van GDDR voor general compute is ook niet bepaald optimaal omdat zaken als word/dword lengte minder geoptimaliseerd zijn.
Dedicated nVidia kaarten zijn dan ook voorzien van HBM, GDDR, en wat dan ook, met zelfs voor de consumer bandbreedtes die in de TB/s uitgedrukt kunnen worden zonder dat CPU/general purpose compute het kán vertragen. Door een volwassen PCIe implementatie kan het zelfs als "host" optreden om op eigen houtje los van de CPU en gewoon DRAM GPU-compute cache-misses op te vangen door de SSD te benaderen. Cache miss is een enorm dure operator waarbij eigenlijk een stuk data wordt opgevraagd bij de "volgende stap in de keten", waarbij de volgende stap bij voorkeur zo min mogelijk interconnects en andere cache-hebbende brokers benaderd. Dit is ook een van de redenen dat 3D-Vcache zo'n wonder is voor games.
"Niche" kaarten gaan we denk ik sowieso meer en sneller zien, en die gaan we ook meer en sneller met "eigen" geheugensetjes zien. Waar voor de integrated/simpele apparaten (denk aan handhelds en desktop macs) shared oplossingen prima zijn, en "trage" geheugen interfaces als "row of chips soldered" en "DIMM" ook goed kunnen zijn.
De specialistische apparatuur zal toch meer en meer kanalen willen hebben (denk aan 8 kanaals per module met eventueel server-grade CAMM modules ipv DIMM), zoveel RAM past namelijk nooit op een SOC zelf), en meer dedicated hardware willen hebben.
Gemiddelde AI node ziet er ook ongeveer zo uit:
- Dikke AMD Epyc met enorme hoeveelheden cache, en 8- tot 12-kanaals high speed, low latency geheugen, en een enorm dikke PCIe-based interconnect (minimale storage in de machine zelf), en een stuk of 4 videokaarten die niet via PCIe zijn aangesloten, maar via SXM. Elke GPU heeft in de interconnect al 900GB/sec connectiviteit (in vergelijking met PCIe: da's nogal veel). Het geheugen op een individuele GPU heeft zo'n 1,2TB/s connectiviteit, en er zitten zo'n 4 tot 8 sets op één GPU, dus zo'n 4,8 tot 9.6TB/s bandbreedte.
- Zodra de GPU zelfs met z'n 48GB en 9.6TB/s geheugen >NIET< aan de juiste data kan komen, en dus een cache miss heeft tijdens het uitvoeren van zijn programma, kan hij met infiniband (wat onder netwerk valt maar feitelijk PCIe als het ware gebruikt) rechtstreeks met een NAS praten met tot 800Gb/s aan connectie. Dat is eigenlijk een losse server vol met dus door GPU's vrijwel direct te benadren op lage latency SSD's.
En dan is een GPU zelf ook nog eens general compute. Wat we bij NPU's eigenlijk nu zien, en bij veel meer "smaakjes" hardware (begon al met de HPU die in de Microsoft Hololens zat) dat we steeds meer "specialisatie" hardware gaan zien. ASIC-achtige chips die zelfs nóg gespecialiseerder zijn dan een GPU. Wel weer verbonden aan een CPU, en bijgestaan door een GPU, maar meer gespecialiseerd in een specifieke taak.
NPU's zijn zo'n tussenweg: waar GPU's erg goed zijn om "flexibel" AI modellen te trainen (en dus ook training/validatiedata moeten toepassen), is een NPU meer een implementatie van het getrainde model. Veel training is bijvoorbeeld CUDA-only tegenwoordig (dus ook nVidia-only), maar het resultaat, een getraind model, is soms verpakt in de vorm van een "ONNX" executable (
https://onnx.ai/). ONNX is dus eigenlijk de runtime van een AI model wat getraind is op een andere set data, en "vrijer" is, het werkt op RyzenAI, Snapdragon AI, de Intel meuk, en je nVidia GPU kan het ook uitvoeren; als het maar een NPU die compatible is, en afhankelijk van het toegepaste model: aan bepaalde eisen voldoet (copilot PC programma van MS is eigenlijk een ONNX implementatie waarbij een minimale system requirement in hoeveel flops de NPU moet hebben in het uitvoeren van ONNX modellen, net zoals je vroeger minimaal een pentium van 100MHz moest hebben, hebben de AI modellen nu dus eisen).
Een spannende tijd, waarbij een "computer" als concept met een standaard CPU steeds vaker een "cluster" wordt van meerdere chips die elk hun eigen specialisatie - en ook dus geheugen - heeft. Alles echter op één shared set zetten, zoals Apple dat doet, werpt beperkingen op. Je merkt dat in de nieuwe datascience/AI zaken Apple eigenlijk niks "on metal" doet, maar dat de macs meer veredelde chromebooks zijn waarbij via VSCode of een webbrowser met "echte" hardware wordt gesproken. Los van alle specs, is de helaasheid van het "alles in één" design van Apple dat het hooguit een bepaald runtime niveau is (zonder een programma van minimale eisen zoals MS dat doet), en voor de rest dus een onvoorspelbaar design is wat bovendien niet uitbreidbaar/te segmenteren is.