BF16 Component-Product Emulation of FP32 and FP64 GEMM on Intel AMX
Dit artikel presenteert een CPU-georiënteerd algoritme dat Intel AMX BF16-matrixproducten benut om hoogprecisie FP32- en FP64-GEMM-operaties te emuleren, waarbij competitieve doorvoer en instelbare nauwkeurigheid worden bereikt door operanden te deconstrueren in meerdere laagprecisiecomponenten en deze met een hogere precisie te accumuleren.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Moderne computers worden gebouwd met een groeiende splitsing in hun interne machinerie. Aan de ene kant zijn er krachtige motoren die specifiek zijn ontworpen voor kunstmatige intelligentie, die uitblinken in het uitvoeren van miljarden eenvoudige berekeningen zeer snel. Deze motoren werken het best met getallen die kort en eenvoudig zijn, waarbij ze een klein beetje detail opofferen voor enorme snelheid. Aan de andere kant leunt de wereld van wetenschappelijke ontdekking — het simuleren van weerpatronen, het modelleren van hoe atomen zich binden of het voorspellen van vloeistofstroming — nog steeds op getallen die lang en precies zijn. Deze wetenschappelijke berekeningen hebben elk beetje detail nodig om stabiel en nauwkeurig te blijven, maar de standaard computeronderdelen die deze verwerken, zijn vaak minder snel en efficiënt dan de nieuwe AI-motoren. Dit creëert een dilemma: wetenschappers hebben de snelheid van de nieuwe hardware nodig, maar zij kunnen de precisie die hun werk vereist niet missen.
Onderzoekers bij Maginfra Co., Ltd. in China hebben een manier verkend om deze kloof te overbruggen met behulp van een specifiek type computerchip genaamd Intel AMX. Hun doel was om te zien of de snelle, laag-precieze AI-motoren voor de gek konden worden gehouden om de trage, hoog-precieze wiskunde uit te voeren die vereist is voor de wetenschap. In plaats van de chip direct de moeilijke wiskunde te laten doen, braken ze het probleem af in kleinere, eenvoudigere stukjes. Stel je voor dat je een zeer lange afstand probeert te meten met een liniaal die alleen markeringen heeft voor hele inches. Je zou de hele inches kunnen meten, dan het resterende deel meten, en dan het piepkleine restje dat overblijft, en al deze delen bij elkaar optellen om een precieze totale afstand te krijgen. De onderzoekers pasten dezelfde logica toe op getallen. Ze namen een enkel complex getal en verdeelden dit in verschillende eenvoudigere delen die de snelle AI-motor gemakkelijk aan kan. Vervolgens voerden ze veel snelle berekeningen op deze delen uit en voegden de resultaten zorgvuldig weer samen om het uiteindelijke, zeer nauwkeurige antwoord te reconstrueren.
Het team testte deze aanpak op twee verschillende niveaus van precisie. Eerst pakten ze single-precision wiskunde aan, wat de standaard is voor veel wetenschappelijke toepassingen. Ze ontdekten dat door elk getal in drie delen te splitsen en zes specifieke berekeningen uit te voeren, ze resultaten konden bereiken die net zo nauwkeurig waren als de beste bestaande software, maar aanzienlijk sneller. Op de computerchips die ze testten, draaide deze methode tussen de 1,14 en 2,56 keer sneller dan de standaard manier van rekenen. De snelheidswinst was het meest merkbaar bij grotere datasets, waarbij de overhead van het splitsen en weer samenvoegen van de getallen minder belangrijk werd vergeleken met de pure snelheid van de berekeningen.
Toen ze overstapten naar double-precision wiskunde, die nog nauwkeuriger is en wordt gebruikt voor de meest veeleisende wetenschappelijke simulaties, nam de uitdaging toe. Hier moesten de onderzoekers elk getal in zes delen splitsen. Omdat de berekeningen met extreme zorg moeten worden samengevoegd, werd het proces ingewikkelder. Ze testten verschillende versies van deze methode, waarbij ze ergens tussen de zes en eenentwintig van de kleine rekenstukjes behielden. Ze ontdekten een duidelijke afruil: het bewaren van meer stukjes maakte het antwoord nauwkeuriger, maar vertraagde ook het proces. Met slechts zes stukjes was de methode snel genoeg om de standaardsoftware voor zeer grote problemen te verslaan, waarbij het tot 1,7 keer sneller draaide. Echter, naarmate ze meer stukjes toevoegden om de nauwkeurigheid te verbeteren, vrat de extra arbeid die nodig was om ze te beheren het snelheidsvoordeel op. Uiteindelijk maakte het proberen te houden van eenentwintig stukjes de methode langzamer dan de standaardbenadering, ook al was het nauwkeuriger.
De studie benadrukte ook dat deze techniek geen universele oplossing is voor elke situatie. Het werkt het best wanneer de getallen die worden berekend binnen een specifieke reeks blijven, vergelijkbaar met hoe een liniaal met een beperkte lengte geen afstand kan meten die te groot of te klein is zonder speciale aanpassingen. De onderzoekers merkten op dat hun methode niet werkt voor elk mogelijk type getal, met name niet voor getallen die extreem groot of extreem klein zijn, en het garandeert geen perfecte, bit-voor-bit overeenkomst met bestaande software. In plaats daarvan biedt het een nieuw hulpmiddel voor wetenschappers die hoge snelheid en hoge nauwkeurigheid nodig hebben, mits hun gegevens binnen de grenzen van de methode passen. Door aan te tonen dat laag-precieze hardware kan worden gebruikt om hoog-precieze wetenschappelijke problemen op te lossen, suggereert dit werk een toekomst waarin de gespecialiseerde motoren die voor kunstmatige intelligentie zijn gebouwd, ook het zware werk van wetenschappelijke ontdekkingen kunnen versnellen.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.