Waarom reserveert een lokale AI-runtime geheugen na een verzoek?

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Een lokale AI-runtime reserveert geheugen na een verzoek, zodat toekomstige tensors apparaatblokken opnieuw kunnen gebruiken zonder de herhaalde allocatie- en synchronisatiekosten te betalen.

Het zichtbare resultaat kan op een geheugenlek lijken: de GPU-berekening valt terug naar nul, het antwoord is voltooid, maar het proces neemt nog steeds het grootste deel van het acceleratiergeheugen in beslag. Een deel van die voetafdruk kan bestaan uit actieve modelgewichten of KV-status, terwijl een ander deel toebehoort aan een caching-allocator, uitvoeringscontext, grafiekopname, bibliotheekwerkruimte of keep-alivebeleid van het model. In de onderstaande secties wordt onderscheid gemaakt tussen actieve allocaties en herbruikbare reserveringen. Ook wordt uitgelegd wanneer permanent gereserveerd geheugen normaal of verspild is, of wijst op een echt lek.

Apparaatallocatie is duur genoeg om te cachen

Tensors voor afzonderlijke verzoeken worden herhaaldelijk aangemaakt en vrijgegeven. Elk blok teruggeven aan de driver kan synchronisatie veroorzaken en ervoor zorgen dat het volgende verzoek dezelfde geheugenindeling opnieuw moet opbouwen.

PyTorch’s CUDA-allocator maakt onderscheid tussen gecachete allocatorblokken en tensors die actief gealloceerd blijven.

Het binnen het proces houden van vrije blokken verbetert de latentie bij herhaalde verzoeken, maar een andere AI-service kan die bytes pas gebruiken nadat de allocator ze aan de driver heeft vrijgegeven.

Gealloceerd, gereserveerd en apparaatvrij geheugen zijn verschillende meetwaarden

Gealloceerd geheugen behoort toe aan actieve tensors. Gereserveerd geheugen wordt beheerd door de runtime-allocator en kan zowel actieve allocaties als momenteel ongebruikte, herbruikbare blokken bevatten.

Een runtime kan daardoor zelfs nadat tijdelijke tensors zijn vernietigd een verschil in gereserveerd geheugen tonen.

Apparaattools zoals nvidia-smi rapporteren de voor de driver zichtbare voetafdruk van het proces, niet welke blokken binnen het framework logisch vrij zijn.

Model- en runtimestatus kan bewust actief blijven

Het proces kan modelgewichten, tokenizerstatus, kernels, uitvoeringsgrafieken en acceleratorcontexten gereed houden, omdat het vrijgeven daarvan het volgende verzoek tot een koude start zou maken.

De uitleg van ZimaSpace over modelresidentie laat zien waarom een actieve service geheugen gebruikt, zelfs wanneer momenteel geen gebruiker tokens genereert.

Dit is een bewuste afweging tussen capaciteit en latentie. Vanuit het perspectief van berekeningen is het geheugen inactief, maar als gereedstaande status blijft het waardevol.

-15% OFF
Single board computer zimaboard2

Fragmentatie kan ervoor zorgen dat gereserveerde blokken slecht herbruikbaar zijn

Een pool kan in totaal genoeg ongebruikte bytes bevatten, terwijl de blokgroottes niet overeenkomen met het volgende verzoek. Variabele prompts, afbeeldingsvormen, batches en modelwissels kunnen een gefragmenteerd reserveringspatroon veroorzaken.

GMLake onderzoekt allocatorfragmentatie die wordt veroorzaakt door onregelmatige allocatiegroottes.

In dat geval is het behouden geheugen noch actief nuttig, noch beschikbaar voor andere processen. Een herstart van het proces kan tijdelijk een schonere indeling herstellen.

Meet of de voetafdruk stabiliseert of groeit

Voer hetzelfde vaste verzoek herhaaldelijk uit en registreer na elke voltooiing het gealloceerde geheugen, gereserveerde geheugen, de KV-cache, modelgewichten en het apparaatvrije geheugen.

Een stabiele hoge waterstand wijst op normaal cache- of keep-alivegedrag. Een voetafdruk die bij elk identiek verzoek groeit en oude blokken nooit opnieuw gebruikt, wijst op een lek, een onbegrensde cache, een behouden sessie of variatie in de werklast.

Test regelingen voor het vrijgeven van de cache pas nadat is vastgesteld welke status ze verwijderen. Het legen van ongebruikte allocatorblokken laadt actieve modelgewichten niet uit, en het uitladen van het model kan de responstijd verslechteren.

Stel voor een thuisserver met meerdere services per runtime een geheugenbudget en inactiefbeleid vast, zodat de reservering van de ene service niet ongemerkt verhindert dat een andere service start.

Tech & AI HUB

Meer om te lezen

Waarom veranderen AI-fotolabels na een modelupgrade?
Aug 08, 2026

Waarom veranderen AI-fotolabels na een modelupgrade?

Een modelupgrade verandert de representatie en rangschikking die worden gebruikt om labels toe te wijzen, waardoor dezelfde foto verschillende semantische of betrouwbaarheidsgrenzen kan overschrijden.

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.