SelfHostLLM - GPU Memory Calculator for LLM Inference
Extracto
Calculate GPU memory requirements and max concurrent requests for self-hosted LLM inference. Support for Llama, Qwen, DeepSeek, Mistral and more.
Resumen
Resumen Principal
El contenido presenta una fórmula y un desglose paso a paso para calcular el máximo de solicitudes concurrentes que un sistema de inferencia de modelos de lenguaje grandes (LLMs) puede soportar, basándose en la disponibilidad y gestión de la memoria VRAM. Este enfoque analítico es fundamental para la planificación de la infraestructura y la optimización del despliegue. El proceso inicia cuantificando la VRAM total disponible y luego ajustando la memoria del modelo en función de factores de cuantificación (como INT4), lo que reduce significativamente su tamaño y permite su carga única en memoria. Un componente crítico es el cálculo del KV Cache por solicitud, que representa la memoria necesaria para la caché de atención de cada petición activa y escala linealmente con la longitud del contexto. Tras deducir la memoria del modelo y la sobrecarga del sistema de la VRAM total, el resto constituye la memoria disponible para inferencia. Finalmente, dividiendo esta memoria disponible por el KV Cache por solicitud, se obtiene el número máximo de peticiones simultáneas. Este indicador es vital para evaluar la capacidad de servicio, clasificando desde capacidades básicas para uso personal hasta configuraciones robustas para despliegues a pequeña escala o entornos de producción con tráfico moderado.
Elementos Clave
- Cálculo del Consumo de Memoria por el Modelo y el KV Cache: La fórmula detalla cómo la memoria base del modelo se optimiza mediante la cuantificación (ej., INT4), reduciendo su huella en VRAM. Crucialmente, el KV Cache por solicitud se determina mediante la ecuación
(Longitud de Contexto × Memoria del Modelo Ajustada × Sobrecarga de KV) / 1000
, lo que subraya su dependencia directa del tamaño del contexto y la memoria ajustada del modelo para cada petición individual. - Determinación Precisa de la Memoria Disponible para Inferencia: La capacidad real del sistema para manejar concurrencia se establece al restar la **mem
Contenido
The Formula:
Max Concurrent Requests = Available Memory / KV Cache per Request
Step-by-Step Breakdown:
1. Total VRAM Available
Total VRAM = Number of GPUs × VRAM per GPU
Example: 2 × 24GB = 48GB total
2. Model Memory (Adjusted for Quantization)
Adjusted Model Memory = Base Model Memory × Quantization Factor
Example: 14GB (7B model) × 0.5 (INT4) = 7GB
The model weights are loaded once and stay in memory.
3. KV Cache per Request
KV Cache = (Context Length × Adjusted Model Memory × KV Overhead) / 1000
Example: (8192 × 7GB × 0.2) / 1000 = 11.47GB per request
This memory is needed for each active request's attention cache.
4. Available Memory for Inference
Available = Total VRAM - System Overhead - Model Memory
Example: 48GB - 2GB - 7GB = 39GB
This is what's left for KV caches after loading the model.
5. Maximum Concurrent Requests
Max Requests = Available Memory / KV Cache per Request
Example: 39GB / 11.47GB = 3.4 requests
What the Results Mean:
- < 1 request: Can't handle full context length, need smaller context or better GPU
- 1-2 requests: Basic serving capability, suitable for personal use
- 3-5 requests: Good for small-scale deployment
- 10+ requests: Production-ready for moderate traffic
Important Notes:
- This is a rough estimate - actual usage varies by model architecture
- Assumes worst-case scenario: All requests use the full context window. In reality, most requests use much less, so you may handle more concurrent requests
- KV cache grows linearly with actual tokens used, not maximum context
- Different attention mechanisms (MHA, MQA, GQA) affect memory usage
- Framework overhead and memory fragmentation can impact real-world performance
- Dynamic batching and memory management can improve real-world throughput
Fuente: SelfHostLLM