Qwen3.6 27B: cuánta VRAM necesita realmente
Un modelo de 27B que consume la mitad del KV cache de un Llama 3 8B. La arquitectura híbrida rompe el cálculo habitual — y decide, por menos de 1 GB, qué tarjetas quedan fuera.
¿Con prisa? Pide el TL;DR a Claude — lee la página y la resume.
es Traducción automática por mistral-small3.2:24b, revisada por el autor. Leer el original en portugués
El Qwen3.6 27B salió en abril de 2026 como modelo denso, licencia Apache 2.0, 262 mil tokens de contexto nativo y entrada multimodal. Denso de 27B suele significar “olvida, no cabe en tu placa”.
Solo que al abrir el config.json de él la cuenta no cierra del modo esperado. Gasta la mitad del KV cache de un Llama 3 8B — un modelo tres veces y media más pequeño.
El motivo está en una línea de la configuración que casi nadie lee.
Qwen3.6-27B · del config.json oficial
- Parámetros
- 27,8 B (denso)
- Capas
- 64
- Atención plena
- solo 16 de ellas
- Cabeceras KV
- 4 (GQA 24:4)
- Dimensión de la cabecera
- 256
- Contexto nativo
- 262.144 tokens
La línea que lo cambia todo
En el config.json, entre las claves comunes, está esta:
"full_attention_interval": 4,
"layer_types": ["linear_attention", "linear_attention", "linear_attention", "full_attention", ...]
El modelo tiene 64 capas, pero solo una de cada cuatro usa atención plena. Las otras 48 usan atención lineal.
Esta distinción es la cosa más importante de este post, porque las dos se comportan de manera opuesta en la memoria:
- Atención plena guarda un par clave/valor por token, en cada capa. Es el KV cache, y él crece sin parar a medida que avanza la conversación.
- Atención lineal mantiene un estado de tamaño fijo, comprimiendo el pasado en un resumen de dimensión constante. Duplica el contexto y ese estado no cambia de tamaño.
O sea: 48 de las 64 capas simplemente no participan del crecimiento de memoria. Quien aplique la fórmula usual — la del post anterior sobre VRAM — sobre las 64 capas va a errar por un factor de cuatro.
El KV cache real
La fórmula sigue siendo la misma, cambiando solo cuántas capas entran en ella:
bytes por token = 2 × camadas_de_atenção_plena × cabeças_kv × dim_cabeça × bytes
2 × 16 × 4 × 256 × 2 = 65.536 bytes = 64 KiB por token
Sesenta y cuatro KiB. Para comparar, con la misma matemática:
| Modelo | Capas con KV | KiB/token | 128k de contexto (GB) |
|---|---|---|---|
| Llama 3 8B | 32 de 32 | 128 | 17,18 |
| Qwen3.6 27B (real) | 16 de 64 | 64 | 8,59 |
| Qwen3.6 27B si fuera denso | 64 de 64 | 256 | 34,36 |
Un modelo de 27 mil millones de parámetros con la mitad del costo de contexto de uno de 8 mil millones. Es contraintuitivo, y es la razón por la cual este modelo cabe donde no debería caber.
Los pesos
Con 27,8 mil millones de parámetros:
| Cuantización | Pesos (GB) |
|---|---|
| BF16 | 55,6 |
| Q8_0 | 29,5 |
| Q6_K | 22,9 |
| Q5_K_M | 19,8 |
| Q4_K_M | 17,0 |
¿Cabe en tu placa?
Aquí la cuenta encuentra el hardware. Pesos en Q4_K_M, más el KV cache del contexto, más 1 GB de margen para el runtime:
| Máquina | Memoria (GB) | Sobra p/ contexto (GB) | Contexto posible |
|---|---|---|---|
| RTX 5070 · 12 GiB | 12,9 | — | no cabe |
| RTX 5070 Ti · 16 GiB | 17,2 | — | falta 0,8 GB |
| RTX 4090 · 24 GiB | 25,8 | 7,7 | 118k |
| RTX 5090 · 32 GiB | 34,4 | 16,3 | 249k |
| MacBook Pro M4 Max · 48 GiB | 51,5 | 33,5 | 262k (techo) |
| Mini PC · 96 GiB | 103,1 | 85,1 | 262k (techo) |
Mire la segunda línea. La 5070 Ti se queda fuera por 0,8 GB — menos del 5% de la memoria de la placa. Los pesos solos ocupan 17,03 de los 17,18 GB que ella tiene; sobran 152 MB para runtime y contexto, lo que no da ni para cargar.
Es el tipo de margen que hace que alguien compre la placa equivocada, y la trampa tiene dos partes. La unidad engaña a favor de la placa: los “16 GB” de la caja son 16 GiB, o sea 17,18 GB decimales — y de repente un modelo “de 17 GB” parece caber. Los pesos sí caben. Lo que no cabe es lo que viene después de ellos: el KV cache y el overhead del runtime no son opcionales, y no aparecen en ninguna etiqueta.
Lo que se puede reproducir ahora
La parte aritmética de este post usted verifica solo, sin descargar 17 GB:
# La configuración oficial — la fuente de todo lo anterior
curl -sL https://huggingface.co/Qwen/Qwen3.6-27B/raw/main/config.json \
| python3 -c "
import json,sys
from collections import Counter
t = json.load(sys.stdin)['text_config']
tipos = Counter(t['layer_types'])
plenas = tipos['full_attention']
kv = 2 * plenas * t['num_key_value_heads'] * t['head_dim'] * 2
print('camadas:', t['num_hidden_layers'], dict(tipos))
print('KV por token:', kv, 'bytes =', kv // 1024, 'KiB')
"
Y, para verificar en su propia placa después de descargar:
ollama pull qwen3.6:27b
# Con contexto declarado — el patrón del tiempo de ejecución no es lo que vas a usar
OLLAMA_CONTEXT_LENGTH=131072 ollama run qwen3.6:27b "ok"
# Cuánto se reservó en realidad y si quedó algo en la CPU
ollama ps
nvidia-smi --query-gpu=memory.used,memory.total --format=csv
Lo que aún no sé
Siendo explícito sobre la frontera entre lo que este post prueba y lo que él solo sugiere.
Probado aquí: la arquitectura híbrida, el KV cache de 64 KiB/token y lo que la aritmética dice sobre cada máquina. Todo derivado del config.json oficial, reproducible por el comando arriba.
Aún no medido: el estado de las capas lineales, el consumo real en la GPU después de cargado, tokens por segundo en cada máquina, y lo que la atención lineal cobra en calidad en un contexto de 200 mil tokens — porque comprimir el pasado en un estado fijo no es gratis, y es justamente la prueba que interesa.
Esta última es la pregunta buena. Un modelo que promete 262k de contexto y cabe en una 4090 es noticia; si él recuerda lo que estaba en el token 30 mil cuando llega al 200 mil es otra conversación, y nadie responde eso con aritmética.
En el próximo post yo mido, en las seis máquinas. La cuenta dice lo que cabe; solo la medición dice lo que sirve.
Fuentes: config.json oficial en Hugging Face · anuncio del modelo · qwen3.6:27b en Ollama