Avanzado 22 minRendimiento

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 →

Por Mohamed Meguedmi·Actualización 2026-08-27·Probado en Windows, macOS y Linux
Hardware recomendado

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.

¿Por qué esta elección? Nuestra ficha completa sobre GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395) →

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.
i
Regla empírica
Para un solo usuario y mayor simplicidad: reparto por capas (llama.cpp/Ollama). Para servir a varios usuarios y priorizar la tasa de procesamiento: paralelismo tensorial (vLLM).

#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

Distribución por capas
./build/bin/llama-cli \
  -m ./models/qwen3-coder-30b-a3b-q8_0.gguf \
  -ngl 99 \
  --split-mode layer \
  --tensor-split 0.5,0.5 \
  -p "..."

--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).

División por filas (a veces más rápida)
./build/bin/llama-cli \
  -m ./models/qwen3-coder-30b-a3b-q8_0.gguf \
  -ngl 99 \
  --split-mode row \
  ...

#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.

Variables útiles
# Limiter à certains GPU
export CUDA_VISIBLE_DEVICES=0,1

# Ou pour AMD
export ROCR_VISIBLE_DEVICES=0,1

systemctl restart ollama
Verificar la distribución
ollama ps
# Doit afficher le modèle réparti : PROCESSOR = 100% GPU,
# réparti sur les deux cartes vu par nvidia-smi

#3. Paralelismo tensorial con vLLM

Arrancar vLLM con 2 GPUs
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen3-Coder-30B-A3B-Instruct \
  --tensor-parallel-size 2 \
  --quantization awq \
  --dtype auto \
  --port 8000

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 %.

→
Tarjetas idénticas para vLLM
El paralelismo tensorial funciona idealmente con tarjetas idénticas. 2× RTX 3090 o 2× 4090: OK. Una 3090 + una 4070: vLLM tomará la más lenta como referencia y la más rápida quedará infrautilizada.

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.
!
Cuello de botella PCIe
Si una de tus tarjetas funciona con PCIe x4 (por ejemplo, en una ranura secundaria conectada al chipset), puedes perder un 40 % de rendimiento con el reparto por capas y aún más con el paralelismo tensorial. Compruébalo con nvidia-smi o GPU-Z antes de culpar al resto.
¿Esta guía te ha ayudado?

¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.