CPU-offloading houdt een te groot model draaiende door een deel van de gewichten in het systeemgeheugen op te slaan, in plaats van te vereisen dat het volledige model in het geheugen van de accelerator blijft.
Op een AI-server thuis kan dit een model dat niet op één GPU kan worden geladen, veranderen in een bruikbare lokale service. De afweging is direct: de druk op het VRAM neemt af, maar CPU-geheugen, PCIe- of interconnectverkeer en soms CPU-uitvoering maken deel uit van het inferentiepad. Offloading is in de eerste plaats een capaciteitstechniek en pas een prestatietechniek wanneer de geheugenhiërarchie snel genoeg is.
Een te groot model faalt wanneer het snelle apparaat de benodigde toestand niet kan bevatten
Een lokaal model heeft ruimte nodig voor gewichten plus KV-cache, activaties, tijdelijke buffers en runtime-reserveringen. Als de accelerator de vereiste resident geheugenstatus niet kan bevatten, kan het laden mislukken voordat er bruikbare inferentie plaatsvindt.
Hugging Face Accelerate behandelt inferentie met grote modellen als een probleem van het verdelen van modelgewichten over beschikbare geheugenlagen. CPU-offloading voegt systeemgeheugen toe als een tragere opslaglaag voor de modelstatus.
Het model kan worden uitgevoerd omdat er op hetzelfde moment minder van in het VRAM hoeft te blijven, niet omdat de accelerator fysiek geheugen heeft gekregen.
Ge-offloade gewichten blijven in het systeemgeheugen totdat hun laag nodig is
Een runtime kan geselecteerde parametertensors op de CPU houden terwijl de huidige laag of groep lagen actief is op de GPU. Naarmate de uitvoering vordert, worden benodigde gewichten naar de accelerator overgebracht en kunnen oude gewichten weer worden teruggeplaatst of uit het apparaatgeheugen worden verwijderd.
DeepSpeed ZeRO-Inference kan modelgewichten in CPU- of NVMe-geheugen bewaren en ze laag voor laag naar de GPU streamen. Dit verlaagt de maximale geheugentoewijzing op de accelerator, maar maakt het overbrengen van gewichten onderdeel van de uitvoering.
Laagplaatsing kan ook statisch zijn: sommige lagen blijven op de CPU en worden daar uitgevoerd, terwijl andere op de GPU blijven. Beide strategieën verruilen druk op het apparaatgeheugen voor tragere geheugen- en overdrachtspaden.
Het PCIe- of unified-memory-pad wordt onderdeel van elk token
Als gewichten tijdens de forward-uitvoering via PCIe moeten worden overgebracht, staan overdrachtslatentie en bandbreedte rechtstreeks op het kritieke inferentiepad. Een model dat volledig in het VRAM past, kan resident gewichten hergebruiken met apparaatgeheugenbandbreedte; een ge-offload model moet mogelijk herhaaldelijk grote tensors ophalen.
PyTorch documenteert gepind hostgeheugen en het overdrachtsgedrag van CPU naar GPU en laat zien waarom verplaatsing tussen host en apparaat een afzonderlijk prestatiedomein is naast GPU-berekeningen.
Daarom kan CPU-offloading een out-of-memory-crash veranderen in een werkend maar trager model. De capaciteit wordt eerst opgelost; de doorvoer kan sterk afnemen.
Meer systeemgeheugen vergroot de capaciteit, maar garandeert geen hogere snelheid
Er is voldoende RAM nodig voor het ge-offloade gedeelte plus het besturingssysteem, de paginacache, containers, databases en andere services op de thuisserver. Zodra het model naar swap wordt verplaatst, kan een trage configuratie onpraktisch worden.
Linux documenteert geheugenreclamatie en swap als onderdeel van de systeemgeheugenhiërarchie. Een ge-offload model concurreert met elk ander proces om hetzelfde RAM-budget.
Een thuisserver die ook een NAS, foto-indexer en mediadatabase draait, moet echte reserve overlaten in plaats van het RAM alleen af te stemmen op de grootte van het modelbestand.
Quantization en offloading lossen verschillende delen van het pasvormprobleem op
Quantization verlaagt het aantal bytes dat door gewichten wordt gebruikt, waardoor zowel het GPU- als CPU-geheugengebruik kan afnemen en er minder hoeft te worden overgedragen. Offloading verandert waar die bytes tijdens de uitvoering staan.
NVIDIA NeMo documenteert post-training-quantization met FP8, INT8 en INT4 voor lager modelgeheugen. Een gequantiseerd model past mogelijk volledig op de GPU en heeft dan geen offloading nodig; een groter model kan beide technieken nog steeds nodig hebben.
De juiste volgorde is eerst de gewenste precisie en modelkwaliteit bepalen en daarna de plaatsing kiezen. Het offloaden van een onnodig grote representatie kan bandbreedte verspillen.
Gebruik CPU-offloading wanneer het uitvoeren van het model belangrijker is dan maximale doorvoer
De sterkste toepassing is een lokaal model dat af en toe wordt gebruikt, groter is dan het VRAM, maar nog steeds een aanvaardbare latentie biedt wanneer een deel van de status in het RAM staat. Het is minder aantrekkelijk voor een interactieve service met meerdere gebruikers, waarbij elk token herhaaldelijk over een trage verbinding moet worden verstuurd.
De handleiding van ZimaSpace over geheugen en accelerators voor AI-NAS-systemen vormt de planningslaag: offloading moet worden gezien als een capaciteitsfallback binnen de volledige werklast van de thuisserver.
Meet het VRAM-gebruik, RAM-gebruik, het aantal overgedragen bytes tussen host en apparaat, de tijd tot het eerste token, het aantal uitvoertokens per seconde en het effect op andere self-hosted services. Een configuratie die technisch gezien laadt maar swap afdwingt of de NAS laat stagneren, is geen bruikbare keuze.
De uitleg van ZimaSpace over modelresidentie en eviction behandelt de verwante afweging: het vrijmaken van acceleratorm-geheugen vergroot de capaciteit voor ander werk, maar kan ervoor zorgen dat het volgende verzoek opnieuw voor een laad- of overdrachtspad moet betalen.
Veelgestelde vragen
Combineert CPU-offloading RAM en VRAM tot één snelle geheugenpool?
Nee. De runtime kan de modelstatus over beide lagen verdelen, maar CPU-RAM en GPU-VRAM hebben verschillende bandbreedtes en latenties. Overdrachten ertussen kunnen de belangrijkste bottleneck van de inferentie worden.
Maakt extra RAM een ge-offload model sneller?
Alleen wanneer het huidige systeem te weinig RAM heeft, aan het pagineren is of de bedoelde ge-offload status niet resident kan houden. Extra ongebruikt RAM neemt de kosten van PCIe-overdrachten of CPU-uitvoering niet weg.
Is offloading naar een SSD hetzelfde als CPU-offloading?
Nee. Offloading naar een schijf voegt een nog tragere opslaglaag toe wanneer het RAM ontoereikend is. Het kan de capaciteit verder vergroten, maar modelpagina's moeten doorgaans eerst via de opslag en het systeemgeheugen gaan voordat ze op de accelerator worden uitgevoerd.
Tech & AI HUB
Meer om te lezen

Kunnen thuiscamera's gebeurtenissen synchroniseren zonder cloudtijdservices?
Een mechanismegerichte uitleg van cameratiijd zonder cloud, de afwegingen bij gedeelde bronnen, drie veelgestelde vragen over query-fan-out en een praktisch verificatieprotocol.

Kan een lokale AI-service beschadigde modellagen detecteren vóór de inferentie?
Een mechanismegerichte uitleg van detectie van beschadigingen in modellagen, de afwegingen rond gedeelde bronnen, drie veelgestelde vragen over query-fan-out en een praktisch verificatieprotocol.

Kan een RAG-systeem worden hersteld zonder elke embedding opnieuw te genereren?
Een mechanismegerichte uitleg van RAG-herstel zonder opnieuw te embedden, de afwegingen rond gedeelde bronnen, drie veelgestelde vragen over query-fan-out en een praktisch verificatieprotocol.

