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
| Geheugen | Bereik | Rol bij inference |
|---|---|---|
| Registers | Waarden die een thread gebruikt | Accumulatoren en tussenberekeningen |
| Gedeeld geheugen | Threads binnen één rekenblok | Gezamenlijk hergebruik van matrixtegels en reducties |
| L2-cache | Gedeeld door de hele GPU | Hergebruik tussen blokken zonder opnieuw uit het hoofdgeheugen te lezen |
| HBM | Hoofdgeheugen van de GPU | Weights, 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.