Characterization of Request and Token Energy Costs for LLM Inference Workloads on GPU Platforms
Organizations: Electrical and Computer Engineering Department Carnegie Mellon University Pittsburgh, PA, USA
Abstract
Large language model (LLM) inference serving is priced by tokens, but GPU energy is consumed over inference windows. This accounting mismatch makes token-normalized metrics incomplete, since average output-token energy can decrease even when total request energy increases. We characterize this behavior with a decomposed energy model: a fixed one-time prefill with a fixed generation setup cost, while each output-token generation step adds marginal step energy. We evaluate this LLM inference energy model on NVIDIA H100 and H200 GPUs across dense and mixture-of-experts (MoE) models, reporting both request energy and token energy as functions of model type (M), phase (P), batch size (B), context length (C), and output length (N). For Llama-3.2-1B on H200 at batch-16 and context-4K, increasing output length from 10 to 512 tokens reduces token energy from 7.46 to 0.72 J/token while total batched inference-window energy increases from 1.19 to 5.93 kJ. Batching also reduces token energy, but the gain is context-bounded: at 10 output tokens, the batch-16 to batch-1 gain falls from 6.31x at context-512 to 1.17x at context-4K. MoE models amplify this effect: sparse routing and fragmented expert execution increase fixed energy at low concurrency, while batching spreads that energy across more generated tokens and substantially narrows the dense-vs.-MoE token-energy gap. These results show that energy-aware serving should jointly optimize both request energy and token energy, rather than only reducing per-token energy cost.
Figures & tables
| Work / Group | Focus | Phase | Batch | Ctx. | Out. | HW | MoE | Req./Token | Window |
| Energy benchmarks [ 13 , 10 , 12 ] | Power/energy measurement and token-normalized inference metrics. | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Serving and optimization [ 11 , 19 ] | Energy impact of frameworks, batching, decoding, hardware, and system control. | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Input/output models [ 17 , 14 , 18 ] | Energy models and operating curves over input/output token counts. | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Host-side overhead [ 7 , 8 , 6 ] | Kernel-launch and dispatch decomposition, execution-idle high-power states. | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| This Work | Abstraction of LLM inference energy costs by differentiating inference request energy and average token energy, and shows how schedulers should account for both for efficient inference service. | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Feature | H100 SXM | H200 NVL |
| Compute generation | Hopper (GH100) | Hopper (GH100) |
| Peak BF16/FP16 Tensor | 1,979 TFLOPS | 1,671 TFLOPS |
| GPU memory | 80 GB HBM3 | 141 GB HBM3e |
| Memory bandwidth | 3.35 TB/s | 4.8 TB/s |
| Maximum configurable TDP | 700 W | 600 W |
| Form factor | SXM | PCIe, dual-slot air-cooled |
| Model | Residual (%) | ||||||
| (J) | (mJ/token) | ||||||
| Llama-3.2-1B | 1 | 512 | 12.11 | 2163.56 | +38.79 | -4.09 | +0.26 |
| Llama-3.2-1B | 16 | 2048 | 276.78 | 351.06 | -5.34 | +2.53 | -0.18 |
| Llama-3.2-3B | 16 | 512 | 30.63 | 437.17 | -28.34 | +5.95 | -0.34 |
| Llama-3.1-8B | 16 | 512 | 83.73 | 604.84 | -27.81 | +7.38 | -0.42 |
| Model | ||||
| Llama-3.2-1B | 6.31 | 3.19 | 1.85 | 1.17 |
| Llama-3.2-3B | 4.67 | 2.66 | 1.70 | 1.22 |
| Llama-3.1-8B | 3.85 | 2.15 | 1.47 | OOM |
| OLMoE-1B-7B | 12.59 | 11.88 | 6.41 | 3.93 |
| Qwen1.5-MoE-A2.7B | 6.60 | 4.75 | 3.18 | 1.90 |
| Llama-3.2-3B | Llama-3.1-8B | |
| 128 | 337 mJ/token | 548 mJ/token |
| 512 | 372 mJ/token | 582 mJ/token |
| 1024 | 455 mJ/token | 691 mJ/token |
| 4096 | 945 mJ/token | 1,394 mJ/token |
| 8192 | 1,600 mJ/token | 2,358 mJ/token |
| (mJ) | TKLQT Avg. | TKLQT Sum | (ms) | Prompt tokens/J | |||
| 1 | 512 | 1 | 5,988.9 | 8.05 s | 6.76 ms | 25.18 | 85.49 |
| 2 | 512 | 1 | 6,810.4 | 24.38 s | 21.23 ms | 25.41 | 150.36 |
| 4 | 512 | 1 | 9,295.6 | 668.23 s | 581.89 ms | 28.73 | 220.32 |
| 8 | 512 | 1 | 33,905.2 | 9,507.70 s | 8,279.31 ms | 45.27 | 120.81 |
| 8 | 1024 | 1 | 71,897.2 | 40,383.57 s | 35,166.01 ms | 111.31 | 113.94 |
| 8 | 2048 | 1 | 191,210.2 | 145,693.76 s | 131,561.46 ms | 325.74 | 85.69 |
| Request Regime | TKLQT | Floor | Replay-active | |
| (Configuration) | Avg ( s) | (mJ) | share | share |
| Host-bound | 8.05 | 5,988.9 | 61.1% | 13.6% |
| Compute-heavy | 540,615.08 | 686,698.1 | 27.6% | 60.4% |
| Regime | Observed Energy Behavior | Strategy for Scheduler Actions |
| Short-context dense decode | Fixed energy dominates; batching strongly lowers token energy. | Use moderate batching when latency allows; tune the target by model scale, architecture, context length, and SLO rather than assuming a universal batch size. |
| Long-context dense decode | KV-cache traffic raises step energy; batch gain erodes with context length . | Avoid waiting too long for large batches; optimize latency and request energy jointly. |
| MoE decode at low concurrency | Low-concurrency MoE behavior is consistent with routing and fragmented dispatch overheads. | Batch MoE requests more aggressively than dense requests at the same context length. |
| Long-output decode | Token energy first improves as fixed energy is spread across more tokens, then can rise when step energy dominates. | Track both request energy and token energy; do not optimize tokens/J alone. |
| TTFT-oriented vs. long-output requests | TTFT-oriented windows are prefill-dominated; repeated generation dominates long-output request energy. | Track both TTFT-oriented and long-output request energy within the fixed-plus-marginal model. |
| Benchmark | Model | Cap | H100 Acc. | H100 Energy (J) | H100 Utility/J | H200 Acc. | H200 Energy (J) | H200 Utility/J |
| MATH-500 | Qwen3-8B | 64 | 26.0 | 316.8 | 0.000821 | 25.4 | 245.8 | 0.00103 |
| 256 | 39.0 | 1,024.7 | 0.000381 | 39.0 | 796.3 | 0.000490 | ||
| 1024 | 68.8 | 2,351.2 | 0.000293 | 68.2 | 1,845.8 | 0.000369 | ||
| DS-Qwen-7B | 64 | 9.4 | 640.7 | 0.000147 | 9.2 | 515.2 | 0.000179 | |
| 256 | 23.2 | 1,211.4 | 0.000192 | 21.4 | 977.9 | 0.000219 | ||
| 1024 | 38.0 | 3,148.8 | 0.000121 | 36.0 | 2,567.4 | 0.000140 |