Ja, maar betrouwbare CPU-failover moet worden ontworpen voordat het GPU-geheugen vol raakt; de meeste inferentieprocessen herstellen niet transparant van een onverwachte OOM.
Een AI-server voor thuis kan op zijn GPU snel antwoorden totdat een langere prompt, grotere batch, afbeeldingsverzoek of tweede model het resterende VRAM verbruikt. De volgende toewijzing kan mislukken, ook al zijn het systeem-RAM en de CPU niet belast. Of het verzoek wordt voortgezet, hangt af van de runtime: sommige kunnen gewichten vanaf het begin op de CPU plaatsen, terwijl andere een afzonderlijke CPU-worker en een router nodig hebben die veilig opnieuw probeert.
CPU-offload en CPU-failover lossen verschillende problemen op
CPU-offload is een strategie voor modelplaatsing. Geselecteerde lagen, tensors of pipelinecomponenten bevinden zich in het systeem-RAM en worden indien nodig naar de accelerator verplaatst, waardoor voor een normaal verzoek minder VRAM nodig is. CPU-failover is gedrag van een service: wanneer het GPU-pad niet beschikbaar is of een verzoek afwijst, accepteert een andere worker het verzoek en voert die een CPU-compatibel model uit zonder de taak te verliezen.
Hugging Face Accelerate biedt methoden voor CPU-offload die de modelstatus bewust verplaatsen tussen CPU-geheugen en een uitvoerapparaat. Dit is geplande heterogene uitvoering, geen noodreactie nadat een willekeurige CUDA-status is mislukt. Het model, de device map, hooks en geheugenlimiet worden voorbereid voordat de inferentie begint.
Een gedeeltelijk geoffload model kan de CPU al gebruiken terwijl het voor elke token nog steeds afhankelijk is van de GPU. Als de GPU uitvalt, kan dat proces niet noodzakelijk vanaf de onderbroken token op de CPU doorgaan. Echte failover start het verzoek doorgaans opnieuw op een CPU-klare worker. Dat onderscheid verklaart waarom een applicatie CPU-ondersteuning kan adverteren en toch een OOM-fout kan retourneren in plaats van het huidige verzoek te voltooien.
VRAM kan vol raken nadat een model succesvol is geladen
Modelgewichten vormen slechts één onderdeel van het geheugenbudget. De key-value-cache groeit met de actieve sequentielengte en gelijktijdigheid, tijdelijke kernels hebben werkruimte nodig, afbeeldings- of audio-encoders voegen tensors toe en een geheugenallocator kan blokken reserveren voor hergebruik. Een model dat bij het opstarten past, kan daarom mislukken bij een lange context of meerdere gelijktijdige gebruikers.
PyTorch gebruikt een caching-geheugenallocator, waardoor gereserveerd geheugen niet hetzelfde is als geheugen voor actieve tensors. Fragmentatie en toewijzingen buiten het framework kunnen de bruikbare marge verder verkleinen. Een failovertrigger moet afgewezen toewijzingen en de gezondheid van workers bewaken, en niet de veiligheid afleiden uit één dashboardwaarde of uit het feit dat het model succesvol is geladen.
Daarom is een statische regel als ‘modelgrootte kleiner dan VRAM’ onvolledig. Een service kan een lagere contextlimiet instellen, gelijktijdige sequenties beperken of een percentage van het VRAM ongebruikt laten om runtime-toewijzingen te beschermen. Deze maatregelen voorkomen meer storingen dan reactief overschakelen naar de CPU, omdat ze het GPU-proces in een bekende toestand houden en voorspelbare latentie bieden voor geaccepteerde verzoeken.
Automatisch opnieuw proberen is alleen veilig wanneer het verzoek opnieuw kan worden afgespeeld
Na een OOM kan de router de GPU-worker als ongezond markeren, deze vrijgeven of opnieuw starten en het oorspronkelijke verzoek opnieuw uitvoeren op een CPU-worker. Dit werkt voor gewone tekstgeneratie wanneer er geen extern neveneffect heeft plaatsgevonden. Het is lastiger bij streamingantwoorden, afbeeldingspipelines met willekeurige seeds of agents die mogelijk al een tool hebben aangeroepen.
Frameworks kunnen grote modellen ook vanaf het begin over meerdere apparaten verdelen. Accelerates big-modelinferentie ondersteunt device maps en plaatsing op CPU of schijf wanneer een model groter is dan één apparaat. Deze aanpak kan een verzoek binnen één geplande uitvoeringsgrafiek actief houden, maar ruilt snelheid in voor capaciteit en moet niet worden verward met het routeren van een mislukt verzoek naar een afzonderlijke service.
De failoverclaim gaat niet meer op wanneer de CPU niet genoeg RAM heeft, de runtime geen compatibele CPU-kernels heeft, het verzoek al een onomkeerbare actie heeft uitgevoerd of de verwachte CPU-latentie de time-out van de client overschrijdt. Geef in die gevallen een gecontroleerde capaciteitsfout terug of plaats het verzoek in een wachtrij. Stilzwijgend opnieuw proberen kan neveneffecten dupliceren of gebruikers veel langer laten wachten dan de interface belooft.
Bewijs failover met een doelbewuste geheugentest
Laat één GPU-worker en één CPU-worker achter een router draaien en stuur vervolgens een verzoek dat het GPU-profiel overschrijdt zonder het systeem-RAM te overschrijden. Leg de eerste fout, de beslissing om opnieuw te proberen, de starttijd op de CPU, de uiteindelijke uitvoer en de vraag of de clientverbinding actief blijft vast. Herhaal dit eerst met uitgeschakelde streaming en test daarna annulering, gelijktijdig verkeer en een agentverzoek met een gesimuleerde tool.
Gedeeltelijke GPU-uitvoering is een nuttige basislijn, omdat runtimes zoals llama.cpp-inferentie een configureerbaar deel van het modelwerk op accelerators kunnen plaatsen terwijl CPU-uitvoering behouden blijft. Vergelijk profielen met het model volledig op de GPU, een geplande CPU/GPU-verdeling en een onafhankelijke CPU-fallback. Een hybride AI-workload-model helpt om capaciteitsfallback te onderscheiden van routinematige cloudroutering.
Noem het ontwerp pas betrouwbaar als de retry één keer voltooit, de verzoekidentiteit behoudt, dubbele toolacties voorkomt en de GPU-worker herstelt zonder niet-gerelateerde taken te laten vallen. Als CPU-voltooiing te traag is, gebruik deze dan als een veiligheidsroute die de wachtrij behoudt, niet als interactief equivalent. Het operationele doel is gecontroleerde degradatie, niet doen alsof CPU- en GPU-serviceniveaus uitwisselbaar zijn.
| Gedrag | Voor OOM voorbereid? | Kan het huidige verzoek worden gered? |
|---|---|---|
| CPU/GPU-offload | Ja | Doorgaans, binnen de geplande grafiek |
| Lagere GPU-gelijktijdigheid | Ja | Voorkomt dat onveilig werk wordt toegelaten |
| Router probeert opnieuw op de CPU | Ja | Ja, als het verzoek opnieuw kan worden afgespeeld |
| Ongeplande omschakeling binnen het proces | Nee | Doorgaans niet |
Veelgestelde vragen
Creëert het leegmaken van de GPU-cache failover?
Nee. Het vrijgeven van de cache kan ongebruikte gereserveerde blokken beschikbaar maken, maar creëert geen CPU-uitvoering, herstelt geen beschadigde verzoekstatus en garandeert niet dat er genoeg aaneengesloten geheugen beschikbaar is voor de volgende toewijzing.
Levert CPU-fallback hetzelfde antwoord op?
Dat kan wanneer dezelfde gewichten, precisie, prompt, tokenizer en samplingstatus worden gebruikt. Verschillende kernels, kwantisatie, seeds of een opnieuw gestarte streamingstatus kunnen de exacte uitvoer alsnog veranderen.
Is een kleiner model beter dan CPU-failover?
Vaak wel voor interactieve services. Een kleiner GPU-model kan voorspelbare latentie leveren, terwijl CPU-failover de beschikbaarheid voor uitzonderlijke verzoeken beschermt. De twee mechanismen dienen verschillende servicedoelen en kunnen worden gecombineerd.
Tech & AI HUB
Meer om te lezen

Hoe geeft een geheime broker een AI-agent inloggegevens zonder ze in prompts bloot te stellen?
Volg workloadidentiteit, beleid, tokenuitgifte, requestinjectie, redactie, vervaldatum en intrekking binnen een secretless-architectuur voor een lokale AI-agent.

Hoe beperkt een tool-sandbox de neveneffecten van AI-agenten?
Ontdek hoe isolatie, bevoegdheidspoorten, wegwerpstatus, uitgaand verkeerbeheer, quota's en auditlogs de neveneffecten van AI-agenten beperken zonder te bewijzen dat acties veilig zijn.

Hoe produceert constrained decoding schema-geldige JSON?
Begrijp schema-compilatie, tokenmaskering, parserstatus, ondersteunde subsets, latentie, afkapping en waarom structurele geldigheid geen correcte waarden garandeert.

