Dataflow-architectuur: rekenen zodra de data er is
Stel je een keuken voor waarin één kok een recept stap voor stap volgt: eerst de ui snijden, dan pas de knoflook, dan pas het vlees bakken, ook al staat de knoflook allang klaar terwijl de ui nog gesneden wordt. Dat is hoe de meeste computers al zeventig jaar werken. Een dataflow-architectuur werkt anders: het is een keuken vol koks die allemaal tegelijk aan de slag gaan zodra hún ingrediënten klaarliggen, ongeacht de volgorde in het recept. Wie het eerst zijn spullen heeft, kan beginnen.
In computertermen betekent dit dat een chip of een programma niet werkt met een vaste rij instructies die één voor één worden afgewerkt, maar met een netwerk van rekenstappen die pas 'afgaan' zodra hun invoergegevens beschikbaar zijn. Dat klinkt technisch, maar het idee is eenvoudig: laat het werk gebeuren waar en wanneer de data er klaar voor is, in plaats van te wachten op je beurt. Dit principe duikt tegenwoordig op twee plekken op: in de chips die kunstmatige intelligentie trainen en draaien, en in software die grote stromen data in real time verwerkt.
Wat is het precies?
Vrijwel elke computer die je kent, van je laptop tot een supercomputer, is gebouwd volgens het zogeheten von Neumann-model: een processor voert instructies één voor één uit, in de volgorde waarin ze in het geheugen staan, aangestuurd door een 'programmateller' die bijhoudt welke instructie aan de beurt is. Dat werkt goed, maar het betekent ook dat de processor vaak moet wachten: op data die nog uit het geheugen moet komen, of op een vorige stap die nog niet klaar is, terwijl elders in het programma prima alvast doorgewerkt zou kunnen worden.
Een dataflow-architectuur draait dit om. In plaats van een lijst instructies wordt een programma voorgesteld als een dataflow-graaf: een netwerk van knooppunten (rekenbewerkingen, zoals optellen of vermenigvuldigen) verbonden door lijnen die aangeven welke data van het ene knooppunt naar het andere stroomt. Een knooppunt 'vuurt' (voert zijn bewerking uit) zodra al zijn benodigde invoerwaarden zijn aangekomen, ongeacht wat er verder in het programma gebeurt. Er is geen centrale programmateller die de volgorde dwingend voorschrijft; de volgorde van uitvoering wordt bepaald door de beschikbaarheid van data.
Dit onderscheid bestaat op twee niveaus. Op hardwareniveau zijn er dataflow-processoren en -chips die fysiek zo zijn gebouwd dat rekenkernen data naar elkaar doorsturen zonder centrale klok die alles synchroniseert; elk onderdeel van de chip werkt zodra het zijn data heeft. Op softwareniveau bestaat een vergelijkbaar idee in programmeermodellen voor het verwerken van datastromen: een pijplijn van bewerkingen waarbij elk onderdeel begint te werken zodra er nieuwe data binnenkomt, zoals bij het verwerken van sensordata, financiële transacties of clicks op een website in real time. Beide vormen delen hetzelfde uitgangspunt: data bepaalt het tempo, niet een vooraf vastgelegde volgorde.
Wat wil men ermee bereiken?
De belangrijkste belofte van dataflow-architectuur is parallellisme: het gelijktijdig laten werken van veel rekeneenheden. Klassieke processoren proberen dit ook, met trucs als meerdere rekenkernen en slimme voorspellingen over welke instructies straks nodig zijn, maar botsen al snel op de beperkingen van het sequentiële model. Een dataflow-graaf maakt onafhankelijke bewerkingen expliciet zichtbaar: als twee rekenstappen niets met elkaar te maken hebben, kunnen ze letterlijk tegelijk worden uitgevoerd, zonder dat de ene op de andere hoeft te wachten.
Een tweede doel is het verminderen van onnodige databewegingen. In klassieke chips kost het verplaatsen van data tussen geheugen en rekeneenheid vaak meer energie dan de berekening zelf, een probleem dat bekendstaat als de geheugenmuur (memory wall). Dataflow-ontwerpen proberen data zo veel mogelijk direct van de ene rekeneenheid naar de andere te sturen, zonder omwegen via een centraal geheugen, wat energie kan besparen.
Dat maakt het principe bijzonder aantrekkelijk voor kunstmatige intelligentie. Neurale netwerken bestaan uit miljoenen bewerkingen die zich van nature laten voorstellen als een graaf van met elkaar verbonden rekenstappen, precies de vorm waar dataflow-hardware goed in is. Chipmakers hopen zo meer rekenkracht per watt te halen dan met klassieke processoren of zelfs met grafische kaarten (gpu's), die weliswaar al sterk parallel zijn maar toch nog altijd centrale sturing en geheugentoegang nodig hebben.
Voorbeelden uit de praktijk
Het idee is niet nieuw. Al in de jaren zeventig werkte onderzoeker Jack Dennis aan het Massachusetts Institute of Technology (MIT) aan de theoretische grondslagen van dataflow-computers, gevolgd door dynamische varianten waaraan onder anderen onderzoeker Arvind bijdroeg. In de jaren tachtig bouwde de Manchester Dataflow Machine aan de Universiteit van Manchester dit om tot werkende hardware, en in Japan ontwikkelde het Electrotechnical Laboratory de dataflow-supercomputer Sigma-1. Deze machines bewezen het principe, maar bleven wetenschappelijke experimenten: het programmeren ervan was lastig en de bouwtechniek van die tijd kon de beloofde snelheidswinst niet volledig waarmaken.
De laatste jaren is er een heropleving, gedreven door de vraag naar AI-rekenkracht. Het Amerikaanse SambaNova Systems, opgericht door onderzoekers verbonden aan Stanford University, bouwt chips die het bedrijf zelf een 'Reconfigurable Dataflow Unit' noemt: hardware die zich herconfigureert naar de vorm van de rekengraaf van een specifiek AI-model. Het eveneens Amerikaanse Cerebras Systems bouwt met zijn Wafer Scale Engine een extreem grote chip die gebruikmaakt van dataflow-sturing om berekeningen met veel nullen (zogeheten spaarzame, oftewel 'sparse', data) over te slaan en zo tijd te besparen. Het Canadees-Amerikaanse Tenstorrent, bekend van chipontwerper Jim Keller, bouwt processoren waarvan de rekenkernen data expliciet naar elkaar doorgeven volgens dataflow-achtige principes.
Niet elk verhaal is een succesverhaal: het Amerikaanse Wave Computing ontwikkelde een chip die het bedrijf een 'Dataflow Processing Unit' noemde, maar ging in 2020 failliet, een teken dat de weg van veelbelovend ontwerp naar commercieel succes lastig blijft. Op softwarevlak is dataflow allang gangbaar: Google Cloud Dataflow en het open source Apache Flink verwerken al sinds het midden van de jaren 2010 datastromen bij bedrijven wereldwijd volgens een dataflow-programmeermodel, ver buiten de experimentele fase.
Hoe ver is de techniek?
Dataflow als concept is dus meer dan veertig jaar oud, maar de status verschilt sterk tussen software en hardware. In de softwarewereld is het volwassen: dataflow-achtige verwerking van datastromen wordt dagelijks op grote schaal ingezet, bijvoorbeeld om financiële transacties of sensordata direct te analyseren.
In de hardwarewereld is het een nichetechniek die aan een tweede leven bezig is. Bedrijven als SambaNova, Cerebras en Tenstorrent hebben werkende, commercieel verkrijgbare systemen die in datacenters draaien, maar hun marktaandeel is klein vergeleken met de dominantie van Nvidia's gpu's in AI-training. De grootste obstakels zijn niet zozeer de chips zelf, maar de software eromheen: programmeurs zijn decennialang getraind in het sequentiële denken van klassieke processoren, en het ontbreekt dataflow-chips vaak aan de rijpe compilers, ontwikkelomgevingen en bibliotheken die concurrenten als Nvidia met zijn CUDA-platform wel hebben opgebouwd. Ook is het lastig te voorspellen welk deel van toekomstige AI-chips echt 'puur' dataflow zal zijn, en welk deel een hybride blijft die dataflow-ideeën combineert met klassieke elementen; de meeste huidige AI-versnellers zitten ergens op dat spectrum in plaats van aan een van beide uitersten.
Wie werken eraan?
Het historische fundament werd gelegd aan Amerikaanse en Britse universiteiten: het MIT met onderzoekers als Jack Dennis en Arvind, en de Universiteit van Manchester met de Manchester Dataflow Machine. In Japan bouwde het Electrotechnical Laboratory (ETL) mee aan vroege dataflow-supercomputers zoals Sigma-1.
Vandaag de dag wordt het onderzoek en de ontwikkeling vooral gedreven door gespecialiseerde Amerikaanse chipbedrijven zoals SambaNova Systems, Cerebras Systems en het Canadees-Amerikaanse Tenstorrent, vaak met wortels in universitair onderzoek zoals dat van Stanford University. Grote techbedrijven als Google dragen bij aan verwante software-dataflowsystemen zoals Cloud Dataflow en, via het Apache-softwareproject, aan Apache Flink. Europese en Nederlandse universiteiten doen op kleinere schaal onderzoek naar verwante onderwerpen zoals reconfigureerbare rekenarchitecturen, al is dit veld minder zichtbaar gebonden aan één specifiek instituut dan de Amerikaanse chipbedrijven; wie hier zeker over wil zijn, doet er goed aan de actuele onderzoeksprogramma's van technische universiteiten zelf te raadplegen.