Hoe verandert het cachen van modellen de responstijd van AI-servers voor thuis?

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.

Modelcaching verandert de responstijd doordat herhaalde verzoeken gedownloade bestanden, gewichten in het geheugen, gecompileerde kernels of eerder verwerkte promptstatus opnieuw kunnen gebruiken.

Een AI-server voor thuis heeft niet één universele cache. Het modelartefact kan al op lokale opslag staan, bestandspagina’s kunnen in het systeem-RAM blijven, gewichten kunnen in het geheugen van de accelerator geladen blijven, gecompileerde uitvoercode kan opnieuw worden gebruikt en een herhaalde systeemprompt kan nog over een geldige KV-status beschikken. Elke laag verwijdert een ander deel van het aanvraagpad. In de onderstaande secties worden die lagen afzonderlijk behandeld, zodat een snelle tweede reactie niet wordt aangezien voor snellere modelgeneratie of betere hardware.

Modelcaching Verwijst naar Meerdere Onafhankelijke Lagen

Het eerste nuttige onderscheid is wat er precies is gecachet. Een gedownload checkpoint voorkomt netwerkoverdracht, de bestandspagin cache voorkomt dat sommige blokken opnieuw van de opslag moeten worden gelezen, aanwezige gewichten voorkomen dat het model opnieuw moet worden geladen, gecompileerde artefacten voorkomen voorbereidend werk en de prefixcache voorkomt dat gedeelde prompttokens opnieuw moeten worden berekend.

Onderzoek naar caching in meerdere lagen beschouwt het opstarten van een model als een verplaatsing door opslag, hostgeheugen en acceleratorgeheugen, in plaats van als één binaire toestand: koud of warm. Een aanvraag kan op de ene laag warm zijn en op een andere koud.

Dit verklaart waarom “het model is gecachet” onvolledig is. De server kan de bestanden lokaal hebben, maar moet mogelijk nog steeds VRAM toewijzen, gewichten laden, kernels compileren en de prompt verwerken voordat de eerste token wordt geproduceerd.

Een Artefactcache Verwijdert Download- en Repositoryvertraging

Wanneer modelbestanden al op de thuiss-server aanwezig zijn, hoeft het opstarten niet te wachten op authenticatie, controles van repositorymetadata, externe bandbreedte of het downloaden van shards van meerdere gigabytes. De runtime kan met de lokale kopie beginnen.

Netflix beschrijft caching van modelartefacten als noodzakelijk, omdat het downloaden van grote gewichten tijdens het opstarten de praktische latentie van de scheduler overschrijdt. Hetzelfde mechanisme is thuis relevant wanneer een container opnieuw wordt aangemaakt of een model na een opschoning wordt gestart.

De artefactcache garandeert geen snelle eerste token. Een lokaal checkpoint kan nog steeds op een trage schijf staan, uit veel shards bestaan, conversie vereisen of concurreren met lees- en schrijfbewerkingen op een NAS.

De Bestandscache Kan de Tweede Lading Veel Sneller Maken

Nadat het besturingssysteem modelbestanden heeft gelezen, kunnen schone bestandspagina’s in ongebruikt systeem-RAM blijven staan. Bij een volgende start kunnen die bytes uit het geheugen worden opgehaald, in plaats van opnieuw op het opslagapparaat te moeten wachten.

MAIO verbetert het opstarten van LLM's door het beleid voor de bestandscache tijdens het laden van modellen te optimaliseren. De resultaten laten zien waarom twee starts vanaf hetzelfde NVMe-pad verschillende leestijden kunnen hebben, afhankelijk van welke modelpagina’s in de cache zijn gebleven.

Deze cache kan worden teruggewonnen. Back-ups, bestandsservices, databases of een ander model kunnen die pagina’s verdringen. Daardoor kan een reactie die gisteren snel was, na geheugendruk of een herstart weer afhankelijk worden van de opslag.

Benchmarken zonder de toestand van de paginacache te definiëren, combineert twee opslagregimes en kan de verbetering door een schijfupgrade overschatten.

-15% OFF
Single board computer zimaboard2

Aanwezige Gewichten Verwijderen de Grootste Herlaadgrens

Door gewichten in RAM, unified memory of VRAM te houden, kan de runtime direct doorgaan naar promptverwerking. Als het model wordt uitgeladen, komt capaciteit vrij voor andere apps, maar moet het volgende verzoek opnieuw het laadpad doorlopen.

De gids van ZimaSpace over modelaanwezigheid in het geheugen laat het kenmerkende patroon zien: één langzaam verzoek na uitzetting, gevolgd door normale reacties zolang het model warm blijft.

Geheugenresidentie verandert vooral de beschikbaarheid en de tijd tot de eerste token. De snelheid waarmee outputtokens worden gegenereerd, neemt niet noodzakelijk toe zodra de generatie eenmaal loopt.

Als elk model resident wordt gehouden, kan dat bovendien de geheugendruk veroorzaken waardoor een ander model, een KV-cache of een thuisserverapp wordt uitgezet.

Compileer- en Kernelcaches Verwijderen Werk bij de Eerste Uitvoering

Sommige runtimes specialiseren kernels, leggen uitvoeringsgrafieken vast of compileren code voor het actieve model, de GPU-architectuur, tensorshapes en runtimeconfiguratie. Het eerste compatibele verzoek kan werk uitvoeren dat latere verzoeken opnieuw gebruiken.

Een praktische analyse van cold starts merkt op dat runtimecompilatie kan plaatsvinden tussen het laden van de gewichten en het aanbieden van de eerste reactie. Een permanente compileercache verschuift die kosten naar eerdere starts, totdat een wijziging in model, stuurprogramma, runtime of hardware de cache ongeldig maakt.

Hierdoor ontstaat nog een warme toestand: de bestanden en gewichten kunnen al aanwezig zijn, terwijl de eerste nieuwe shape of het eerste nieuwe uitvoeringspad toch een latentiespiek veroorzaakt.

Prefixcaching Vermindert Prefill, maar Niet het Decoderen van Nieuwe Tokens

Een herhaalde systeemprompt, een lang documentprefix of een gedeeld instructieblok moet normaal gesproken opnieuw worden verwerkt voordat de nieuwe gebruikersinvoer wordt bereikt. Een prefixcache bewaart herbruikbare aandachtsstatus van die eerdere prefill.

Het onderzoek naar Prompt Cache rapporteert een lagere latentie tot de eerste token wanneer verzoeken lange promptmodules hergebruiken. Het voordeel neemt toe met de lengte van het gedeelde prefix, omdat meer prefillberekeningen kunnen worden overgeslagen.

Dit maakt willekeurige nieuwe prompts niet sneller en verwijdert de kosten voor het decoderen van nieuwe outputtokens niet. Cachehits zijn afhankelijk van exact of ondersteund prefixhergebruik, beschikbare cachecapaciteit en het uitzettingsbeleid van de runtime.

Meet Koude en Warme Paden als Afzonderlijke Responscategorieën

Test één vaste aanvraag na een herstart, na het laden van het model, na een onmiddellijke herhaling, na een lange periode van inactiviteit en na een concurrerende werklast. Registreer het downloaden van artefacten, het lezen van opslag, het laden van het model, compilatie, prompt-evaluatie, de eerste token en de snelheid van outputtokens afzonderlijk.

Analyse van koude caches waarschuwt dat latentie bij een warme cache een tragere staart kan verbergen wanneer sommige aanvragen de cache missen. Een huishoudelijke assistent moet worden geëvalueerd op basis van de mix die gebruikers daadwerkelijk ervaren, niet alleen op basis van een onmiddellijk herhaalde benchmark.

Zodra de laag die de cache mist is vastgesteld, wordt de oplossing specifiek: modelbestanden vooraf ophalen, ruimte in de paginacache vrijhouden, de keep-alive-duur van het model verlengen, compileerartefacten bewaren of prefixhergebruik inschakelen voor stabiele gedeelde prompts.

Veelgestelde Vragen

Gebruikt een gecachet model altijd minder RAM?

Nee. Sommige caches gebruiken bewust RAM of VRAM om toekomstig werk te verminderen. Ze ruilen capaciteit in voor een lagere latentie, in plaats van het geheugengebruik te verlagen.

Waarom is de eerste reactie langzaam, maar zijn latere reacties snel?

Het eerste verzoek kan gewichten laden, runtime-status toewijzen, kernels compileren of een lange prompt verwerken. Latere verzoeken hergebruiken een of meer van die resultaten.

Kunnen gewiste caches onjuiste AI-antwoorden verhelpen?

In sommige gevallen kunnen ze verouderde of beschadigde runtimeartefacten herstellen, maar modelcaches hebben normaal gesproken invloed op het laden en het hergebruik van berekeningen, niet op de feitelijke kwaliteit van ongewijzigde gewichten en prompts.

Tech & AI HUB

Meer om te lezen

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.