LLM multi-GPU con llama.cpp: tensor-split 2× RTX 3090
Una RTX 4090 de 24 GB no basta para ejecutar los mejores modelos de 2026 en Q8 a plena calidad con un contexto de 256k tokens. Dos RTX 3090 de segunda mano (48 GB) cumplen esa función por menos dinero. Pero hay que saber repartir el modelo entre las tarjetas, elegir entre split layer y tensor parallel y configurar el hardware para que mantenga un funcionamiento sostenido. Esta guía cubre las tres herramientas habituales (llama.cpp, Ollama, vLLM) y los problemas que conviene evitar.
¿Estás eligiendo un equipo? Nuestras opciones por presupuesto →
Buena relación calidad-precio para la IA local: un GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395).
Un mini-PC es una máquina completa: verifica la memoria disponible y la compatibilidad del motor. No sustituye a macOS/MLX o CUDA.
Comparar todas las opciones por presupuesto, de 800 a 3 500 € →
Presupuesto ajustado: RTX 5060 · Modelos grandes: RTX 5090 · Mac Studio.
Cuando te desplazas: qué portátil elegir para la IA local →
Enlaces de afiliados — posible comisión sin coste adicional para ti. Como socio de Amazon, QuelLLM obtiene un beneficio de las compras que cumplen las condiciones requeridas.
#¿Por qué usar múltiples GPUs?
- Modelos > VRAM de una tarjeta sola
- Qwen3-Coder 30B-A3B en Q8 = 32 GB, y con un contexto de 256k la caché KV eleva el consumo de memoria muy por encima de esa cifra. No cabe en una sola GPU de consumo, salvo en una RTX 5090 (32 GB), y aun así, sin margen para un contexto grande.
- Capacidad de procesamiento para equipos
- Dos tarjetas con paralelismo tensor mediante vLLM pueden atender a 2 veces más usuarios simultáneamente.
- Redundancia
- Una tarjeta falla, la otra continúa en modo degradado (modelo más pequeño).
- Fine-tuning
- Un LoRA sobre un modelo de 24B requiere 30 GB entre modelo + optimizador + gradientes. Dos GPU de 24 GB permiten trabajar con comodidad.
#Dos estrategias: split layer vs tensor parallel
- División por capas (layer parallelism)
- Las capas 1-40 en la GPU 0, las capas 41-80 en la GPU 1. Al pasar de una capa a otra, se copia un vector de activación. Latencia ligeramente mayor. Compatible con llama.cpp y Ollama.
- Paralelismo tensorial
- Cada capa se divide en fragmentos distribuidos entre las GPU en paralelo. Requiere una comunicación rápida entre tarjetas. Ofrece mayor rendimiento, pero es complejo. Compatible con vLLM y ExLlamaV2.
#Hardware: atención a los detalles
- PCIe
- Cada GPU debe tener al menos PCIe x8. Una placa base con 2× PCIe 5.0 x16 dedicados al CPU, no x16 + x4 a través del chipset.
- Alimentación
- 2× 3090 = 700 W solo para las GPU. A eso se suman la CPU, la RAM y el SSD: busca una fuente de alimentación de 1200-1600 W (80+ Gold o Platinum).
- Espaciado
- Las RTX 3090/4090 ocupan 3 ranuras. En una placa base de 7 ranuras, las dos tarjetas se tocan. Risers PCIe o refrigeración líquida para mantener el control.
- Ventilación
- Con 2 tarjetas bajo carga, una caja mal ventilada alcanza 85-90 °C. Thermal throttling = -30 % de rendimiento.
#1. Multi-GPU con llama.cpp
--tensor-split indica la proporción de capas por GPU. Para 2 tarjetas idénticas: 0.5,0.5. Para una 3090 de 24 GB y una 4070 de 12 GB: 0.67,0.33 (la 3090 se encarga de dos tercios).
#2. Multi-GPU con Ollama
Ollama detecta automáticamente varias GPU y reparte la carga entre todas las disponibles. Ofrece pocos ajustes, pero funciona sin configuración adicional.
#3. Paralelismo tensorial con vLLM
vLLM distribuye cada capa entre los 2 GPUs de forma paralela. El throughput agregado se duplica casi por completo respecto a 1 GPU, con un sobrecoste de comunicación de aproximadamente 10 %.
#NVLink: ¿útil o no?
NVLink permite una conexión entre GPU con un gran ancho de banda (112 GB/s en 3090). Algunas RTX 3090 tienen un conector NVLink; las 4090 ya no lo tienen; todas las RTX Quadro / A-series lo tienen.
- Impacto del split-layer de llama.cpp
- Muy reducido. Las transferencias entre capas son pequeñas.
- Impacto del paralelismo tensorial en vLLM
- Más significativo: +5 a +15 % de throughput con NVLink activado.
- Impacto del fine-tuning
- Alto: la comunicación de gradientes es intensiva. Se recomienda NVLink si planeas hacer fine-tuning con varias GPU.
#Rendimiento esperado
En 2× RTX 3090, Qwen3-Coder 30B-A3B Q8_0, llama.cpp con división de capas:
- Prompt único
- ~55 tok/s. El modelo en Q8 (32 GB) no cabría en una sola 3090. La velocidad sigue siendo alta: es un MoE con 3B de parámetros activos.
- Latencia del primer token
- ~200 ms (vs ~80 ms en un modelo pequeño con una GPU).
- Mismas tarjetas con vLLM tensor parallel
- ~65 tok/s con una sola solicitud, pero ~400 tok/s agregados con 10 solicitudes en paralelo.
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.