Vad händer när lokala AI-tjänster konkurrerar om acceleratorminnet?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

När lokala AI-tjänster konkurrerar om acceleratorminne minskar varje körtidsmiljö den kapacitet som är tillgänglig för andra modeller, förfrågningar, cacheminnen och temporära tensorer.

En hemmaserver kan köra chatt, embeddingar, bildgenerering, taligenkänning, text-till-tal, visionsdetektering och kameraanalys genom separata containrar eller processer. Deras instrumentpaneler kan verka inaktiva, samtidigt som modellvikter och allokeringspooler fortfarande finns kvar på samma GPU, NPU eller accelerator med delat minne. En ny förfrågan behöver då utrymme för prompttillstånd, aktiveringar och utdatabuffertar som det statiska modellavtrycket inte visade. Avsnitten nedan förklarar hur separata tjänster omvandlar acceleratorns nominella kapacitet till nekade förfrågningar och instabil latens.

Varje tjänst tar med sig mer än modellvikter

En inläst modell upptar parameterminne, men aktiv inferens behöver också körningsbibliotek, exekveringskontexter, temporära arbetsytor, indatabuffertar, aktiveringar och förfrågningsspecifikt tillstånd.

Forskning om servering av stora språkmodeller identifierar KV-cacheminne som en viktig begränsning för samtidighet, eftersom det växer med antalet aktiva sekvenser och kontextlängden. En modell som får plats i viloläge kan misslyckas när flera långa förfrågningar blir aktiva.

Visionstjänster, diffusionsmodeller, tal- och embeddingstjänster använder olika mönster för temporär minnesanvändning. Deras maximala allokeringar kan överlappa även när den genomsnittliga användningen förblir låg.

Separata processer duplicerar kontext och körningskostnader

Att köra varje AI-funktion i sin egen container förbättrar den operativa åtskillnaden, men separata processer kan skapa separata acceleratorkontexter, bibliotek, allokeringspooler och kopior av delade modellkomponenter.

System med flera modeller studerar servering av flera modeller, eftersom naiv placering med en tjänst per modell slösar både minne och beräkningskraft. Samordnad samplacering kan utnyttja kapaciteten effektivare än oberoende körningsmiljöer där varje miljö antar att den styr enheten.

Två tjänster som använder samma tokeniserare, visionskodare eller språkmodell delar inte automatiskt på en fysisk kopia. Delning kräver stöd i körningsmiljön och kompatibla processgränser.

Dupliceringskostnaden märks tydligast på små acceleratorer, där några hundra megabyte kontext- och biblioteksöverhead kan avgöra om ytterligare en modell kan startas.

Reserverade pooler kan dölja minne för andra körningsmiljöer

Ramverk behåller ofta frigjorda block så att senare förfrågningar slipper kostsam enhetsallokering och synkronisering. Tjänsten rapporterar mindre aktivt allokerat minne, men en annan process kan fortfarande inte använda det reserverade fysiska utrymmet.

System som statistisk multiplexering behandlar placering och belastningstoppar som ett globalt problem, i stället för att låta varje modellserver reservera utrymme för sitt eget värsta fall. Oberoende lokala tjänster saknar den globala överblicken om inte en orkestrator inför den.

Detta förklarar varför en accelerator kan visa låg beräkningsanvändning men ändå vägra en ny modell. Kapaciteten upptas av vikter, reserverade block eller fragmenterade lediga områden, snarare än av aktiva kärnor.

-15% OFF
Single board computer zimaboard2

Konflikter påverkar latensen innan de leder till ett OOM-fel

En körningsmiljö kan reagera på lågt minne genom att minska batchstorleken, tillåta färre samtidiga sekvenser, återskapa utkastat tillstånd, flytta lager till CPU-RAM eller avlasta en annan modell.

Aegaeon använder tokenbaserad schemaläggning för att samordna många modeller under föränderlig efterfrågan. En hemmaserver utan jämförbar samordning visar ofta bristen som långsam tid till första token, pauser, modellbyten eller oförutsägbar köbildning.

ZimaSpaces artikel om samtidig användning i familjer visar samma gräns på förfrågningsnivå: aktiva konversationer konkurrerar om minne och uppmärksamhet från schemaläggaren, även när tester med en användare känns snabba.

Undantag på grund av slut på minne är bara det slutliga felläget. Instabil latens och minskad genomströmning uppstår ofta tidigare.

Modellavlastning byter omedelbar respons mot kapacitet

Att avlasta en inaktiv modell frigör ett stort sammanhängande område för en annan tjänst. Nästa förfrågan till den avlastade tjänsten måste läsa in vikterna igen och återskapa körningstillståndet, vilket omvandlar minnestryck till en fördröjning vid kallstart.

WarmServe undersöker placering med hänsyn till avlastning, eftersom frekventa byten försämrar tiden till första token. Att hålla varje modell varm är bara snabbare när acceleratorn har tillräckligt med minne för deras sammanlagda permanenta och aktiva tillstånd.

För en hemmaserver bör policyn anpassas efter arbetsbelastningen. Röststyrning kan behöva vara permanent inläst, medan sporadisk bildgenerering kan acceptera en omladdning.

En enda resurshanterare kan upprätthålla verkliga kapacitetsgränser

Samordna tjänster genom en enda inferensserver när det är möjligt, eller tilldela uttryckliga minnesgränser per tjänst, synlighet för enheter, regler för modellens permanenta närvaro, gränser för samtidighet och prioriteringar.

Nyare forskning om minnesballongering visar varför statisk allokering slösar kapacitet när modellernas popularitet och belastningen från förfrågningar förändras. Dynamisk delning kan förbättra utnyttjandet, men kräver ett system som övervakar alla konkurrerande arbetsbelastningar.

Mät modellvikter, reserverat minne, aktiva allokeringar, KV-cache, samtidiga förfrågningar, kontextlängd, batchstorlek och frekvensen av modellbyten per tjänst. En global totalsiffra för enheten utan fördelning per tjänst kan inte förklara konflikten.

Skydda latenskänsliga tjänster först, schemalägg embeddingar och indexering under underhållsfönster och lämna outnyttjad marginal för tillfälliga toppar. Målet är inte att fylla varje byte i viloläge, utan att hålla den avsedda tjänstekombinationen stabil vid samtidig efterfrågan.

Vanliga frågor

Varför är acceleratorns minne fullt när GPU-användningen är låg?

Beräkningsanvändning mäter aktiv körning, medan modellvikter, kontexter, cacheminnen och reserverade allokeringsblock kan uppta minne mellan förfrågningar.

Kan containrar automatiskt införa GPU-minnesgränser?

Inte tillförlitligt för alla körningsmiljöer. Tilldelning av enheter och processisolering garanterar inte att flera ramverk samordnar sina interna reservationer.

Är en gemensam inferensserver alltid bättre?

Nej. Den kan minska duplicering och förbättra schemaläggningen, men tjänsteisolering, kompatibilitet mellan ramverk, säkerhet, återställning efter fel och modellstöd kan motivera separata körningsmiljöer.

Teknik- och AI-hubb

Mer att läsa

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.