DeepSeek V4 Flash en el cluster: la línea base que lo cambió todo
43,91 tok/s, TTFT 131ms y 1M de contexto: la primera configuración dual-spark que nos convenció. Cómo la medimos, qué flags importaban de verdad y cuál fue nuestra línea base del cluster.

El primer modelo que demostró que las dos sparks juntas valían la pena. Fue nuestra línea base de cluster durante semanas y el contraejemplo que descartó a un MoE de 295B. Ficha completa con el banco de pruebas.
La ficha
| Modelo | DeepSeek V4 Flash |
| Cuantización | UD-IQ3_XXS (97,1 GB) |
| Runtime | vLLM (receta dual DGX Spark) · antes llama.cpp |
| Cluster | 2× Spark, TP=2 |
| Contexto | 1M |
| Estado | probado en producción, rollback documentado |
Los números de la era cluster
| prueba | resultado |
|---|---|
| decode | 43,91 tok/s |
| TTFT | 131 ms |
| prefill 18K | ~426 tok/s |
| contexto | 1M tokens |
| carga desde frío | ~7-8 min (155 GiB por nodo) |
La historia de la medición
El baseline inicial fue con llama.cpp: 6 peticiones consecutivas correctas, carga de 7min30s, flash-attention activado, KV en F16. Ya ahí el DSpark (predicción de draft nativa del runtime) dio un salto: de ~14,9 a 139 tok/s de prefill en vLLM con la receta completa.
Lo interesante del proceso fueron los A/B:
- Sin drafter vs con drafter: ×3 en el mejor caso. El draft del propio runtime, sin modelo auxiliar.
- Flags “oficiales” de la receta vs config propia: 0,99x. No aportaban nada al decode. La receta completa de NVIDIA (marlin, kv fp8, mamba flashinfer+align, util 0.91) medía lo mismo que nuestra config simple. Lección: los flags venden, los números mandan.
- Prefill en frío vs caliente: el prefix cache multiplica ×8 el prefill en prompts repetidos. En frío real (prompt único), 426 tok/s.
Por qué marcó un antes y un después
- Primera vez que “repartir” fue la respuesta correcta: no cabía en un nodo, y las dos máquinas dieron 43,9 tok/s estables con herramientas.
- El TTFT de 131ms: para chat interactivo, ese es el número que se siente. Menos de un héctosegundo hasta la primera palabra.
- El contexto de 1M verificado con NIAH: la prueba de aguja en pajar 16/16 a fondo. Reservar el pool es fácil; recuperar la aguja es lo difícil.
Por qué lo rotamos (y no lo borramos)
GLM-5.3 Flash llegó con tool-eval superior (90/100 vs 82/100) y mejor calidad en español. El protocolo de rotación nos permitió cambiar sin drama: backup de receta, cartucho deshabilitado pero intacto, y el rollback documentado paso a paso. Los discos son finitos; los experimentos documentados no se borran.
Si vuelvo a deepseek-cluster será porque alguien necesite exactamente su perfil: el MoE más rápido que hemos medido con 1M verificado. Mientras tanto, su ficha y sus CSV siguen en la bóveda. 📊
Lo que aprendimos (para tu setup)
- La especulación nativa del runtime (DSpark/MTP) es la primera palanca: ×3 sin instalar nada
- Los flags “pro” de las recetas ajenas: pruébalos A/B antes de creerte el README
- El TTFT importa más que el tok/s para uso interactivo; el tok/s importa más para generación larga. Mide ambos.
- Rotar con protocolo, no con coraje: backup → cambio → smoke → rollback documentado