Hoe de GPU-geheugenhiërarchie de snelheid van LLM-inference beïnvloedt

Automatische vertaling

Dit artikel is automatisch vertaald vanuit de oorspronkelijke Engelse versie.

De GPU-geheugenhiërarchie beïnvloedt LLM-inference omdat het overbrengen van een tussentensor naar het hoofdgeheugen van de GPU meer kost dan hergebruik binnen een draaiende kernel. HBM bevat het grote model en de attention-cache. Registers, gedeeld geheugen en L2 bieden kleinere opslagruimtes voor hergebruik van gegevens tijdens de berekening.

Engineers die inference profileren, moeten onderscheid maken tussen geheugencapaciteit en geheugenverkeer. Dat een model in HBM past, bewijst niet dat de kernels gegevens efficiënt verplaatsen.

Wat elk geheugen bevat

GeheugenBereikRol bij inference
RegistersWaarden die een thread gebruiktAccumulatoren en tussenberekeningen
Gedeeld geheugenThreads binnen één rekenblokGezamenlijk hergebruik van matrixtegels en reducties
L2-cacheGedeeld door de hele GPUHergebruik tussen blokken zonder opnieuw uit het hoofdgeheugen te lezen
HBMHoofdgeheugen van de GPUWeights, KV cache, invoer, uitvoer en grotere tussenresultaten

Voor de H100 SXM vermeldt NVIDIA 80 GB HBM3 met 3.35 TB/s, 50 MB L2 en maximaal 228 KB gedeeld geheugen per streamingmultiprocessor. De hoeveelheid die voor één threadblok beschikbaar is, is kleiner en hangt af van de toewijzingsinstellingen. Deze specificaties gelden voor deze GPU-variant en zijn geen grenzen die alle H100-varianten delen. Zie de H100-specificaties en de Hopper-optimalisatiegids.

Waarom een tussentensor van belang is

Een reeks afzonderlijke kernels kan een tussenresultaat naar HBM schrijven en het in de volgende kernel teruglezen. Fusie kan dat resultaat in registers of gedeeld geheugen houden. FlashAttention past vergelijkbare principes voor gegevenshergebruik toe op attention en vermijdt grote scorematrices in HBM.

De opslag op de chip is beperkt. Een kernel die te veel registers of gedeeld geheugen gebruikt, kan het aantal blokken dat gelijktijdig draait verminderen. Het uitwijken naar geheugen bij onvoldoende registers kan extra geheugenverkeer veroorzaken. Meer fusie garandeert daarom geen snellere uitvoering.

Vergelijk bij het onderzoeken van een wijziging het aantal overgedragen HBM-bytes, het registergebruik, het gebruik van gedeeld geheugen, het uitwijken vanuit registers naar geheugen en het aantal actieve blokken. Houd het model, de tensorvormen, de precisie en de GPU-variant gelijk. Meet daarna het volledige verzoek: een snellere attention-kernel kan maar een klein deel van de totale latency uitmaken.

De engineeringgids: GPU-geheugenhiërarchie laat zien waar deze geheugens zich op een H100 SXM bevinden.