LLM-energieffektivitet beror på serving-stacken
Tech
AI
LLM Inference
Energy Efficiency
MLOps

LLM-energieffektivitet beror på serving-stacken

LLM-energieffektivitet förändras med trafik, serving-val, hårdvara och SLO:er. Använd denna fasmedvetna granskning innan du optimerar inference i produktion.

Uygar DuzgunUUygar Duzgun
Aug 9, 2026
Uppdaterad 10 aug. 2026
12 min read

LLM-energieffektivitet är inte en fast modeleegenskap. Samma modell kan förbruka mycket olika mängder energi per användbar förfrågan när du ändrar prefill-längd, output-längd, batchform, precision, tidpunkt för förfrågningar, GPU-klockfrekvenser eller serving-runtime. Mät dessa faktorer tillsammans med latens och kvalitet innan du kallar en konfiguration effektiv.

Den här guiden är för avancerade läsare som driver eller utvärderar LLM-inference. Den praktiska slutsatsen är enkel: samla in energi på enhets- eller nodnivå, förklara den med serving-telemetri och normalisera den mot nyttigt arbete på förfrågningsnivå. En enda wattmätning kan inte göra alla tre saker.

Skillnaden blir viktigare när reasoning-budgetar växer. Extra genererade tokens ökar beräkningsarbetet, men systemet runt dessa tokens avgör hur effektivt hårdvaran utför arbetet. Min tidigare analys av reasoning-tokens och deras beräkningskostnad täcker arbetsbelastningssidan. Den här artikeln fokuserar på energigranskning och serving-sidan.

LLM-energieffektivitet är ett resultat av serving-stacken

Energi är effekt integrerad över tid. Om en GPU i genomsnitt använder 400 watt i tio sekunder förbrukar den 4 000 joule. Den delen är enkel. Det svåra är att välja tidsfönster, hårdvarugräns och rapporteringsenhet.

”Energi per token” kan betyda minst tre olika saker:

MätvärdeAnvändbart förVad det kan dölja
---------
Joule per output-tokenDecode-tung chatt och genereringPromptbearbetning, misslyckade förfrågningar, kvalitetsskillnader
Joule per effektiv input-tokenPrefill och arbete med lång kontextOutput-arbete och värdet av förfrågan från början till slut
Joule per lyckad förfråganProdukt- och arbetsbelastningsjämförelserStora skillnader i prompt- och svarslängd
Förfrågningar per kilowattimmeKapacitet och operativ planeringFörfrågningarnas svårighetsgrad, kvalitet och latens

Ingen av dem är universellt korrekt. Välj den enhet som motsvarar tjänstekontraktet och rapportera sedan tillräckligt med kontext för att ett annat team ska kunna upprepa testet.

Hårdvarugränsen är lika viktig. NVIDIAs management-API exponerar energiräknare för enheter på hårdvara som stöds. Det kan ge en tydlig GPU-differens, men inkluderar som standard inte CPU-arbete, värdminne, lagring, nätverk, kylning eller effektomvandlingsförluster. CodeCarbon kan utöka gränsen med uppmätta och uppskattade delar, men dokumentationen beskriver reservuppskattningar för hårdvara som verktyget inte kan läsa av. ”Mätt av ett verktyg” betyder inte att varje del har mätts.

Fyra studier mätte olika delar av stacken

Ny forskning gör systemeffekten synlig. Procentsiffrorna nedan är ingen topplista. Varje studie använder en annan plattform, arbetsbelastning, baslinje och energigräns.

StudieOmfattning och metodRapporterat resultatGräns att hålla i åtanke
------------
AFlexDelar upp attention- och feed-forward-arbete och styr sedan provisionering, frekvens, batchstorlek och microbatching på A800-systemUpp till 49 % mindre energi per token än den testade disaggregated-baslinjen samtidigt som TTFT- och TPOT-målen uppfylldesTvå modellfamiljer, A800-hårdvara och utvärderade traces i produktionsstil
FestinaSamordnar placering, GPU-partitionering, driftspunkt, konsolidering och migrering för delad H100-inferenceUpp till 56 % lägre energiförbrukning, medan SLO-uppfyllelsen i den rapporterade konfigurationen hölls inom två procentenheterServerless-kontext med delade GPU:er; vinsterna minskar när prefill redan är beräkningsintensiv
EnerInferFörutspår throughput och effekt över NPU- och minnesinställningar och hanterar sedan styrinställningar under termiska begränsningarEnergieffektivitetsvinster på 65 % i telefoner, 12 % på en laptop och 24 % på ett edge-kortBesparingarna för hela enheten var mindre, 4,2–11 %, eftersom andra delar och faser fortfarande förbrukade energi
Understanding EfficiencyTestar kvantisering, batching, ankomstmönster och serving-val på H100-GPU:erContinuous batching minskade energin per förfrågan med 12,5× jämfört med studiens sekventiella baslinje; strukturerade ankomster nådde större vinster i ett fast testKorta promptar, två Llama-modellstorlekar, en acceleratorfamilj och huvudsakligen GPU-fokuserade energidata

Det gemensamma resultatet är starkare än någon enskild procentsiffra: orkestrering kan förändra energianvändningen tillräckligt mycket för att ogiltigförklara en modellbaserad uppskattning. Artiklarna visar också varför ”använd lägre precision” är ett ofullständigt råd. H100-studien fann att lägre precision hjälpte beräkningsbunden prefill, medan dequantization- och kernel-overhead kunde radera eller vända fördelen under minnesbunden decode.

Behandla varje ”upp till”-siffra som en egenskap hos författarnas experiment. AFlex bevisar inte en besparing på 49 % i ditt B200-kluster. EnerInfer bevisar inte en besparing på 65 % för hela enheten i varje telefon. Resultaten identifierar kontroller som är värda att testa, inte besparingar du kan kopiera in i en prognos.

Separera prefill från decode innan du optimerar

En LLM-förfrågan har två faser med olika flaskhalsar.

Prefill är vanligtvis beräkningsintensiv

Prefill bearbetar prompten och bygger key-value-cachen. Långa promptar skapar intensiva utbrott av parallellt matrisarbete. Precisionsändringar och högre klockfrekvenser kan hjälpa när denna fas är beräkningsbunden, men kortare time-to-first-token kan fortfarande komma med en högre effekttopp. Mät energi, inte bara effekt.

Decode är vanligtvis minnesintensiv

Decode producerar tokens ett steg i taget. Den läser upprepade gånger modellvikter och den växande KV-cachen, så minnestrafik och batchbildning dominerar ofta. Högre klockfrekvenser kan öka effekten utan proportionell throughput. Kvantisering kan också lägga till konverteringskostnader när kernels eller hårdvarusökvägen inte passar väl ihop.

Denna fasuppdelning förklarar varför ett genomsnitt över hela förfrågan kan vara missvisande. En konfiguration kan förbättra prefill för långa promptar och försämra decode för korta promptar. Rapportera åtminstone promptlängd, output-längd, batch eller samtidighet, precision och fasernas tidsmätningar tillsammans med varje energiresultat.

KV-cachen hör hemma i samma post. Min guide till misslyckanden vid KV-cache eviction förklarar tillförlitlighetssidan. För energiarbete kan cachetryck förändra minnestrafik, omberäkning, placering och antal omförsök. En körning med tysta evictions är inte jämförbar med en utan dem.

Genomför en energigranskning som skyddar latens-SLO:er

Granskningen behöver tre sammankopplade lager: resultat för förfrågningar, serving-kontext och energi på enhets- eller nodnivå.

Diagram i tre lager för mätning av LLM-energi över förfrågningar, serving-runtime och enheter
Diagram i tre lager för mätning av LLM-energi över förfrågningar, serving-runtime och enheter

*Ett användbart energiresultat behöver en tydlig enhet, serving-kontext och en uttrycklig hårdvarugräns.*

1. Lås en representativ arbetsbelastning

Skapa arbetsbelastningssegment i stället för ett enda syntetiskt genomsnitt. Separera åtminstone korta och långa promptar, korta och långa output, jämna och burstiga ankomster samt de kvalitetsnivåer som applikationen använder. Håll modell, tokenizer, sampling-policy och stoppregler fasta under en jämförelse.

Använd verkliga förfrågningsformer när integritet och samtycke tillåter det. Om du använder syntetiska promptar ska du bevara de tokenlängds- och ankomstfördelningar som driver systemet. Slutrapporten ska märka syntetisk efterfrågan som syntetisk.

2. Registrera resultat på förfrågningsnivå

Fånga följande för varje förfrågan:

accepterade input-tokens och genererade output-tokens;
time to first token (TTFT) och time per output token (TPOT);
latens från början till slut och kötid;
status för lyckad förfrågan, timeout, avbrytning och omförsök;
en uppgiftsspecifik kvalitetskontroll eller regressionsresultat.

Ta inte bort misslyckanden från energitotalen. En konfiguration som förbrukar mindre energi på slutförda förfrågningar genom att låta de svåra löpa ut är inte effektivare.

3. Registrera serving-kontext

Logga de kontroller som kan förklara en förändring: prefill- och decode-varaktighet, batchstorlek, aktiva sekvenser, ködjup, precision, parallellism, cache-beläggning, placering, GPU-klockfrekvenser eller effektgräns samt belastning från samhyresgäster.

Denna telemetri fångar också idle- och bursteffekter. En runtime som håller CPU:er upptagna medan GPU:n väntar kan se bra ut i en GPU-mätning och sämre ut vid nod- eller fleet-gränsen. Trådar i open source-issue trackers är användbara för att hitta dessa fellägen, men de är anekdoter tills du återskapar dem i din stack.

4. Mät en uttrycklig energigräns

På NVIDIA-GPU:er som stöds exponerar NVML en total energiräknare i millijoule. En minimal Python-prob kan rama in en fast arbetsbelastning:

python from pynvml import ( nvmlDeviceGetHandleByIndex, nvmlDeviceGetTotalEnergyConsumption, nvmlInit, nvmlShutdown, )

nvmlInit() gpu = nvmlDeviceGetHandleByIndex(0) start_mj = nvmlDeviceGetTotalEnergyConsumption(gpu)

run_fixed_workload() # same requests, model, and stopping rules

end_mj = nvmlDeviceGetTotalEnergyConsumption(gpu) nvmlShutdown()

gpu_joules = (end_mj - start_mj) / 1_000 joules_per_output_token = gpu_joules / completed_output_tokens

NVML-dokumentationen för enhetsfrågor definierar räknaren och dess enheter. Kontrollera stöd på den exakta GPU:n och drivrutinen. Det kumulativa värdet återställs när drivrutinen laddas om, så avvisa en negativ eller trasig differens. För enheter utan energiräknare ska du sampla effekt med en frekvens som fångar korta förfrågningar och integrera kurvan över samma tidsfönster.

GPU-energi är en giltig gräns om du namnger den. För kapacitets-, kostnads- eller koldioxidredovisning ska du lägga till värd- och anläggningsdelar enligt vad beslutet kräver. CodeCarbon-dokumentationen kan bredda granskningen, men läs vilka värden verktyget mäter och vilka det uppskattar. Extern mätning vid rack eller vägg är fortfarande den starkare kontrollen för jämförelser av hela noder.

5. Normalisera resultatet på mer än ett sätt

Rapportera en liten uppsättning mätvärden i stället för ett enda vinnande tal:

GPU-joule per output-token;
nod-joule per lyckad förfrågan;
tokens eller förfrågningar per kilowattimme;
p50 och p95 för TTFT, TPOT och latens från början till slut;
andel fel och omförsök;
uppgiftskvalitet under samma utvärderingsuppsättning.

Ett mätvärde hjälper till att finjustera decode-sökvägen. Ett annat kopplar förändringen till produktvärde. Latens- och kvalitetsfälten hindrar en energioptimering från att i tysthet försvaga tjänsten.

6. Ändra en kontroll och spela sedan upp efterfrågan

Börja med isolerade experiment: precision, batch-policy, gruppering av förfrågningar, cache-konfiguration, GPU-effekt eller klockgräns samt placering. Kör upprepade försök efter uppvärmning. Ändra ordningen mellan försöken när värme eller tid på dagen kan snedvrida resultatet.

Spela sedan upp de bästa kandidaterna under blandade ankomster. Festina och AFlex samordnar båda flera kontroller eftersom lokala optimum samverkar. Ditt första steg bör isolera orsaker; det slutliga steget bör testa den kombinerade policyn under det verkliga SLO:t.

Optimera i den ordning som evidensen stöder

Den säkraste optimeringsordningen börjar med bortkastat arbete och går sedan mot stramare hårdvarukontroller.

Ta bort omförsök och undvikbara tokens. Misslyckade förfrågningar, duplicerade promptar och okontrollerad output-längd slösar arbete på varje lager.
Förbättra förfrågningsformning och continuous batching. Gruppera kompatibla förfrågningslängder och finjustera väntetider mot TTFT. H100-studien fann stora vinster från serving- och ankomstbeslut, men den bästa batchstorleken beror på trafikmixen och rapporteringsenheten.
Använd caching där återanvändning faktiskt finns. Prompt caching kan ta bort upprepat prefill-arbete. Mät träffgrad och invalideringsbeteende, inte bara leverantörens rabatt. Se guiden om ekonomin i prompt caching för kostnadssidan.
Testa precision per fas och hårdvarusökväg. Bekräfta kernel-stöd, minnesanvändning, latens, kvalitet och energi. Parameterbitbredden ensam förutsäger inte resultatet.
Finjustera klockfrekvenser eller effektgränser under ett SLO. AFlex, Festina och EnerInfer visar värdet av dynamisk styrning. En statisk lågeffektinställning kan misslyckas under burstar eller termiska övergångar.
Se över placering och konsolidering. Färre aktiva enheter kan minska idle-overhead, men migrering, cacheöverföring och konkurrens kan förbruka besparingen.

Om systemet betjänar olika kvalitetsnivåer ska du kombinera denna process med ett benchmark för verkligt arbete. Det praktiska arbetsflödet för modellbenchmarking håller kvalitet, latens och kostnad synliga medan du ändrar serving-sökvägen.

Blanda inte ihop energi, kostnad och koldioxid

Dessa mätvärden besvarar olika frågor.

Energi mäter fysiskt arbete, vanligtvis i joule eller kilowattimmar.
Effekt mäter energianvändningens hastighet, vanligtvis i watt.
Kostnad beror på prissättning, utnyttjandegrad, reservationer och leverantörsmarginaler.
Koldioxidutsläpp beror på energi, plats, tid, elmix och redovisningsgräns.

En lägre molnräkning bevisar inte lägre energiförbrukning. En lägre GPU-räknare bevisar inte lägre energiförbrukning i anläggningen. En körning med lägre energiförbrukning har inte automatiskt lägre utsläpp om den körs vid en annan tid eller på en annan plats.

Rapporteringsproblemet är tillräckligt aktuellt för att nå standardiseringsarbete. Ett ITU-T-arbetsobjekt om energieffektivitetsmått för AI-inference omfattar token-gränser, indikatorer för energi per token, koldioxidberäkningar och rapporteringsregler. Arbetet visar att token-enheter och systemgränser fortfarande är oklara. Det är inget färdigt benchmark.

Beslutsregeln för produktion

Godkänn en förändring av LLM-energieffektiviteten endast när den minskar energin för den avsedda enheten nyttigt arbete och håller förfrågningskontraktet inom budget.

Skriv kontraktet före testet:

Prompt — Copy & Paste
För arbetsbelastningssegment W får konfiguration B ersätta baslinje A om nodjoule per lyckad förfrågan minskar, p95 för TTFT och TPOT förblir inom sina SLO:er, uppgiftskvaliteten ligger inom det godkända intervallet och antalet fel inte ökar.

Denna regel förhindrar tre vanliga fel: att optimera watt i stället för joule, att optimera slutförda tokens samtidigt som fel döljs och att överföra en artikels ”upp till”-resultat till annan hårdvara.

Forskningen pekar mot en praktisk riktning, inte en universell inställning. Profilera prefill och decode separat. Håll posterna för förfrågning, runtime och hårdvara sammanlänkade. Mät den gräns du planerar att styra. Det är så ett energital blir till ett tekniskt beslut.

Källor

NVIDIA Management Library: Device Queries — officiell dokumentation.
CodeCarbon docs — officiell projektdokumentation.