Cinco trucos para acelerar un MoE en una GTX 1070: el autoprefijo redujo la latencia de 13,3 a 6,1 s
El desarrollador del motor Strata ejecuta un modelo MoE grande en una GTX 1070 con 8 GB de VRAM y ha reunido cinco formas de acelerarlo. Cuatro ya existen en el motor, aunque a menudo están desactivadas: decodificación especulativa, KV-cache en RAM, batching y caché adaptativa de expertos. La quinta es un parche propio con detección automática del prefijo común, que redujo el tiempo hasta el primer token de 13,3 a 6,1 segundos.
Procesado por IA desde Habr AI; editado por Hamidun News
Si intentas ejecutar un MoE grande en una tarjeta gráfica doméstica, el cuello de botella no es el cómputo, sino la memoria. Los pesos de los expertos no caben en la VRAM, una parte pasa a la RAM y al SSD, y cada acceso a un experto «frío» cuesta unos preciados milisegundos. El autor del motor Strata, que ejecuta Qwen3.8-Flash-Next en una GTX 1070 de 8 GB, ha reunido cinco trucos que ayudan a combatirlo. Cuatro ya están integrados en el motor; el quinto lo escribió él mismo y ha publicado las mediciones.
Cuatro trucos que ya están en el motor
El primero es la decodificación especulativa (--spec N --mtp <ruta>). Una pequeña capa borrador predice varios tokens por adelantado y el modelo grande los verifica en una sola pasada. Si el borrador acierta, obtienes varios tokens al precio de uno. La ganancia suele ser de 1,3–1,6x. El borrador acierta bien con código y patrones repetitivos, y peor con prosa libre. El coste es algo de VRAM para la capa borrador y los búferes.
El segundo es --kv-resident N. En la VRAM solo queda una ventana deslizante de atención de N tokens, y toda la KV-cache pasa a RAM pinned. La atención en sí no se acelera por ello. La ganancia está en otro lado: la memoria liberada va a parar a la caché de expertos. En un MoE, un gigabyte extra para expertos residentes suele ser más útil que el ahorro en KV. Es fácil de comprobar: compara la tasa de aciertos de la expert cache en el log antes y después.
El tercero es el batching (--batch, --parallel). Es continuous batching: varias conversaciones se decodifican en ventanas compartidas y los pesos comunes se leen una sola vez para todas. En una sola tarjeta, el throughput por usuario incluso baja un poco. A cambio, nadie espera en la cola mientras se atiende al vecino. Si tienes varias GPU con layer-split o agentes en paralelo, consulta docs/BATCHING.md.
El cuarto es la residencia adaptativa de expertos (--adapt-every, --adapt-swaps). La caché reubica los pesos entre VRAM, RAM y SSD según la frecuencia de acceso, en plena generación. Según las mediciones del autor, la diferencia entre una caché estática y una «viva» fue de entre 1,5x y 2x, según la homogeneidad del flujo de prompts.
Quinto truco: prefijo común automático
Strata tiene un mecanismo, strata_prefix: el cliente indica explícitamente dónde termina la parte común del prompt, y el motor guarda un checkpoint en ese límite. Las siguientes peticiones con el mismo comienzo no lo releen. El problema es que casi ningún cliente lo hace, ni chatbots ni frameworks de agentes.
El autor añadió una capa de servidor (STRATA_AUTO_PREFIX=1, desactivada por defecto). Mantiene un radix-trie sobre los id de token de los prompts recientes y lleva un presupuesto del número de «pines» simultáneos. Cada pin quita VRAM a la caché de expertos: no existen pines gratuitos. Si llega una petición sin prefijo explícito, el servidor encuentra la coincidencia por sí mismo y fija el límite. El motor no nota la diferencia.
Medición: Strata 0.2.12, una GTX 1070 de 8 GB, Qwen3.8-Flash-Next UD-IQ4_XS, dos clientes con un mismo documento largo.
- Mediana de tokens releídos: 886 → 468.
- Mediana de tokens servidos desde la caché: 0 → 413.
- Mediana del tiempo hasta el primer token: 13,3 s → 6,1 s.
Son dos ejecuciones del mismo benchmark en la misma máquina, en las que solo cambia una variable de entorno.
Limitaciones y qué hacer
Primero, las salvedades. Todas las cifras proceden de una única configuración y de un único escenario con dos clientes, y la mejora del autoprefijo depende de cuánto comienzo común tengan tus peticiones. El parche está en una rama del fork y no ha sido aceptado en upstream. El autor abrió un issue, y no un PR, porque CONTRIBUTING.md exige acordar primero el scope. Los pines compiten con la caché de expertos por la VRAM, así que habrá que ajustar el presupuesto.
El orden práctico es este. Si tienes un MoE en una tarjeta modesta, empieza por --kv-resident y --spec/--mtp: es la ganancia más rápida sin escribir una sola línea de código. Después, comprueba que la adaptación de expertos esté activada. Si usas RAG o agentes con un prompt de sistema largo y común, merece la pena probar el autoprefijo con tu propio tráfico. La lección principal va más allá de un solo motor: con VRAM limitada, casi cualquier optimización se reduce a decidir en qué gastar cada gigabyte. Y eso hay que comprobarlo con mediciones, no con intuición.
- 19 jul 2026Cómo gestionan los agentes de IA la ventana de contexto en tareas largas: cinco estrategias
- 12 nov 2026Cinco formas de ajustar un LLM sin un clúster costoso: LoRA, QLoRA, Unsloth, DPO y la GPU adecuada
- 12 nov 2026Un desarrollador de Strata construye un mapa en vivo de 24 576 expertos MoE en una GTX 1070
- 12 nov 2026ElevenLabs integra Nemotron de NVIDIA: agentes de voz un 70 % más baratos que otros modelos abiertos
Preguntas frecuentes sobre la noticia
¿Qué se sabe sobre Cuatro trucos que ya están en el motor?
El primero es la decodificación especulativa (--spec N --mtp <ruta>). Una pequeña capa borrador predice varios tokens por adelantado y el modelo grande los verifica en una sola pasada. Si el borrador acierta, obtienes varios tokens al precio de uno. La ganancia suele ser de 1,3–1,6x. El borrador acierta bien con código y patrones repetitivos, y peor con prosa libre. El coste es algo de VRAM para la capa borrador y los búferes. El segundo es --kv-resident N.
¿Qué se sabe sobre Quinto truco: prefijo común automático?
Strata tiene un mecanismo, strata_prefix: el cliente indica explícitamente dónde termina la parte común del prompt, y el motor guarda un checkpoint en ese límite. Las siguientes peticiones con el mismo comienzo no lo releen. El problema es que casi ningún cliente lo hace, ni chatbots ni frameworks de agentes. El autor añadió una capa de servidor (STRATA_AUTO_PREFIX=1, desactivada por defecto).
¿Qué se sabe sobre Limitaciones y qué hacer?
Primero, las salvedades. Todas las cifras proceden de una única configuración y de un único escenario con dos clientes, y la mejora del autoprefijo depende de cuánto comienzo común tengan tus peticiones. El parche está en una rama del fork y no ha sido aceptado en upstream. El autor abrió un issue, y no un PR, porque CONTRIBUTING.md exige acordar primero el scope. Los pines compiten con la caché de expertos por la VRAM, así que habrá que ajustar el presupuesto. El orden práctico es este.
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
Lo esencial de la IA — una vez por semana
Siete historias que de verdad importaron, elegidas a mano. Sin ruido ni notas de prensa.
¡Listo! Revisa tu correo para la confirmación.