Qwen 3.8 27B: Cuantización de 4 bits, Paralelismo Tensorial vLLM y Análisis de VRAM/Contexto
Qwen 3.8 27B: Guía de Despliegue con vLLM y Paralelismo Tensorial
Qwen 3.8 27B es un modelo transformer denso con 27 mil millones de parámetros, 64 capas y una dimensión oculta de 5120. Utiliza Grouped-Query Attention (GQA) para reducir la memoria de la caché KV, lo que lo hace adecuado para contextos largos en configuraciones multi-GPU. En este artículo explicamos cómo cargar una versión cuantizada de 4 bits del modelo usando vLLM con paralelismo tensorial, calcular los requisitos de VRAM para pesos y caché KV, y estimar la longitud máxima del contexto en dos RTX 3090 y dos RTX 5090.
Cargar Qwen 3.8 27B en vLLM con Paralelismo Tensorial
vLLM admite paralelismo tensorial (TP) para distribuir el modelo en múltiples GPU. Con TP size 2, cada GPU contiene la mitad de los pesos del modelo y calcula la mitad de las operaciones por capa, sincronizando vía NCCL. El siguiente comando inicia un servidor compatible con OpenAI con un modelo cuantizado de 4 bits (p. ej., AWQ o GPTQ) y TP=2:
python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen3.8-27B --tensor-parallel-size 2 --gpu-memory-utilization 0.90 --kv-cache-dtype fp8
El flag --gpu-memory-utilization controla la fracción de VRAM utilizada para pesos, caché KV y contexto CUDA. Siempre elige el tamaño TP más pequeño que quepa el modelo para minimizar la sobrecarga de comunicación. Si el modelo cabe en una sola GPU, evita TP y ejecuta instancias separadas para mayor rendimiento.
Uso de VRAM: Pesos del Modelo y Caché KV
La VRAM es consumida por dos componentes principales: pesos del modelo y caché KV. Para un modelo cuantizado de 4 bits, cada parámetro ocupa aproximadamente 0.5 bytes (más una pequeña sobrecarga para escalas y ceros). El footprint de los pesos se calcula de la siguiente manera:
| Componente | Valor |
|---|---|
| Parámetros | 27 mil millones |
| Bytes por parámetro (4 bits) | 0.5 |
| VRAM pesos (bruto) | 13.5 GB |
| Contexto CUDA y buffer | 1-2 GB |
| Footprint total de pesos | ~15 GB |
El tamaño de la caché KV depende de la longitud del contexto, la precisión y la arquitectura del modelo. Para Qwen 3.8 27B con GQA, la fórmula es: 2 * num_layers * num_kv_heads * head_dim * seq_len * bytes_per_element. Con 64 capas, 8 cabezas KV y head_dim 128, podemos calcular la caché KV para un contexto de 32k.
| Precisión | Bytes/elemento | Tamaño caché KV |
|---|---|---|
| BF16 | 2 | ~6.8 GB |
| FP8 | 1 | ~3.4 GB |
Cálculo del Contexto Máximo en 2x RTX 3090 y 2x RTX 5090
Asumiendo una VRAM total de 48 GB para dos RTX 3090 (24 GB cada una) y 64 GB para dos RTX 5090 (32 GB cada una), restamos el footprint de los pesos (~15 GB) y la sobrecarga CUDA para encontrar la VRAM disponible para la caché KV. El contexto máximo se estima dividiendo la VRAM disponible por el tamaño de la caché KV por token.
| Hardware | VRAM total | Pesos | Disponible para KV | Contexto máx (FP8) |
|---|---|---|---|---|
| 2x RTX 3090 | 48 GB | 15 GB | 33 GB | ~300k tokens |
| 2x RTX 5090 | 64 GB | 15 GB | 49 GB | ~460k tokens |
Para caché KV en BF16, el contexto máximo sería aproximadamente la mitad de los valores FP8, es decir, ~150k tokens en 2x 3090 y ~230k tokens en 2x 5090. Estos números asumen batch size 1 y ningún otro overhead de memoria. En la práctica, vLLM reserva memoria para CUDA graphs y planificación, por lo que el contexto real puede ser ligeramente menor.
FP8 vs BF16 para Caché KV y Tipos de Almacenamiento FP8
BF16 ofrece mayor precisión pero consume el doble de memoria que FP8. Para inferencia, FP8 es la opción preferida porque duplica la capacidad de la caché KV con una pérdida de precisión insignificante. Dentro de FP8, hay dos formatos de almacenamiento: E4M3 y E5M2. E4M3 ofrece un mejor equilibrio entre rango y precisión y se recomienda para caché KV y pesos. E5M2 tiene menos precisión y se usa típicamente para gradientes en entrenamiento. En vLLM, puedes habilitar la caché KV FP8 con --kv-cache-dtype fp8.
| Formato | Bits de exponente | Bits de mantisa | Uso |
|---|---|---|---|
| E4M3 | 4 | 3 | Caché KV y pesos (recomendado) |
| E5M2 | 5 | 2 | Gradientes en entrenamiento (evitar para inferencia) |
En conclusión, Qwen 3.8 27B con cuantización de 4 bits puede desplegarse eficientemente en sistemas de doble GPU. Usar caché KV FP8 maximiza la longitud del contexto y el rendimiento. En 2x RTX 3090, puedes manejar ~300k tokens de contexto, mientras que 2x RTX 5090 ofrece ~460k tokens, lo que hace que ambas configuraciones sean excelentes para procesamiento de documentos largos y servicio de alta concurrencia.
Trabajemos juntos
¿Necesitas más información, ayuda con tu proyecto o desarrollar una idea?
Ya sea una pregunta sencilla, una duda rápida o una charla de 5 minutos, envíame un mensaje—no cuesta nada y siempre estoy listo para ayudar. Me gusta escuchar para entender el problema, ser creativo en las soluciones y centrarme en ideas simples, confiables y fáciles de implementar rápidamente.
Contáctame →