La decodificación especulativa de DFlash elabora bloques de tokens completos en paralelo para lograr un rendimiento hasta 15 veces mayor en NVIDIA Blackwell

Los modelos de lenguaje grandes autorregresivos generan texto un token a la vez. Cada token espera al anterior. Este bucle en serie deja a las GPU modernas infrautilizadas y mantiene la inferencia lenta. El costo empeora con los modelos de razonamiento de cadena de pensamiento largos. Sus largas emisiones hacen que la latencia sea la parte dominante de la generación.

La decodificación especulativa es la solución estándar. Un pequeño borrador de modelo propone tokens futuros. El modelo de destino grande verifica esos tokens en paralelo. Los tokens aceptados se conservan, por lo que la salida no genera pérdidas. Pero la mayoría de los métodos, incluido el moderno EAGLE-3, todavía se dibujan de forma autorregresiva. Ese dibujo en serie limita las aceleraciones en el mundo real a entre 2 y 3 veces.

DFlash, presentado por el equipo de investigación del equipo de UC San Diego (z-lab), toma una ruta diferente. Es un modelo de difusión de bloques liviano construido para dibujo. En lugar de redactar tokens uno por uno, propone un bloque completo en un solo pase hacia adelante. Luego, el modelo de destino verifica ese bloque en paralelo.

El equipo de investigación informa una aceleración sin pérdidas de más de 6 veces en una variedad de modelos y tareas. Alcanza una aceleración hasta 2,5 veces mayor que EAGLE-3. En NVIDIA Blackwell, el equipo de ingeniería de NVIDIA informa un rendimiento hasta 15 veces mayor para gpt-oss-120b. Esa cifra se mantiene en el mismo objetivo de interactividad del usuario.

https://developer.nvidia.com/blog/boost-inference-performance-up-to-15x-on-nvidia-blackwell-using-dflash-speculative-decoding/

Qué cambia la redacción de difusión en bloque

Los modelos de difusión de bloques eliminan el ruido de un bloque de tokens enmascarados a la vez. Combinan generación paralela con estructura de bloques autorregresivos. DFlash aplica esta idea sólo a la etapa de redacción. La verificación se realiza con el modelo objetivo autorregresivo confiable.

Esta división es importante para la calidad. Los LLM de difusión independientes a menudo van por detrás de los modelos autorregresivos en cuanto a precisión. También necesitan muchos pasos para eliminar el ruido, lo que ralentiza su velocidad de inferencia bruta. DFlash evita ambos problemas. El borrador sólo necesita ser lo suficientemente bueno para ser aceptado. La verificación paralela del objetivo garantiza la distribución del resultado final.

Un segundo beneficio es el costo de redacción. El coste de un redactor autorregresivo crece linealmente con el número de fichas especulativas. Un redactor de difusión genera todas las fichas en una pasada paralela. Por lo tanto, la latencia de redacción se mantiene prácticamente estable a medida que crece el bloque. Esto libera a DFlash para utilizar modelos de borrador más profundos y expresivos sin agregar latencia.

Esto separa a DFlash del trabajo anterior de redacción de difusión. Métodos como DiffuSpec y SpecDiff-2 utilizaron dibujantes masivos 7B, limitando las aceleraciones entre 3 y 4 ×. En cambio, DFlash utiliza un pequeño redactor de cinco capas (ocho capas para Qwen3-Coder).

La idea de que “el objetivo sabe más”

La idea central de DFlash es simple: el objetivo sabe más. Las características ocultas de los grandes modelos autorregresivos codifican información sobre múltiples tokens futuros. DFlash extrae estados ocultos de varias capas de destino. Los fusiona en una característica de contexto objetivo compacta. Esta característica condiciona entonces el borrador del modelo.

DFlash inyecta esta característica de manera diferente a EAGLE-3. EAGLE-3 fusiona características de destino únicamente en las incrustaciones de entrada del borrador. A medida que aumenta la profundidad del calado, esa señal se diluye. En cambio, DFlash inyecta la característica en las proyecciones de clave y valor de cada capa de borrador. Las características proyectadas se almacenan en la caché KV del borrador y persisten a lo largo de las iteraciones del borrador.

Esta inyección KV permite escalar la longitud de aceptación con la profundidad del calado. Un redactor DFlash de cinco capas que genera 16 tokens vence a EAGLE-3 que genera 8 tokens. Tiene una latencia más baja y una mayor aceptación en las pruebas del artículo. El modelo borrador se convierte efectivamente en un adaptador de difusión encima del objetivo.

Dos números de aceleración, medidos de manera diferente

El 6× de la investigación de DFlash es una aceleración sin pérdidas de flujo único. En Qwen3-8B con decodificación codiciosa (backend de Transformers), DFlash promedia una aceleración de 4,86×. EAGLE-3 tiene un promedio de 1,76× en un tamaño de árbol de 16 y 2,02× en un tamaño de árbol de 60. DFlash alcanza un máximo de 6,08× en MATH-500 (τ = 7,87) y un promedio de τ = 6,49 en todas las tareas.

El rendimiento 15× de NVIDIA con un objetivo de interactividad fijo. Se aplica a gpt-oss-120b en ocho GPU NVIDIA Blackwell en un sistema DGX B300, utilizando TensorRT-LLM. En el rango de 500 a 600 tokens/seg por usuario, DFlash ofrece más de 15 veces el rendimiento de la decodificación autorregresiva. Eso es aproximadamente 1,5 veces más que EAGLE-3 en el mismo punto.

La siguiente tabla muestra las aceleraciones por tarea del papel en Qwen3-8B a temperatura 0 (backend de Transformers).

Tarea (Qwen3-8B, temp=0)Línea baseEAGLE-3 (16)DFlash (16)DFlash τGSM8K1.00×1.94×5.15×6.54MATH-5001.00×1.81×6.08×7.87AIME251.00×1.79×5.62×7.08HumanEval1.00×1.89×5.14×6.50M BPP1.00×1.69×4.65×5.95LiveCodeBench1.00×1.57×5.51×7.27MT-Bench1.00×1.63×2.75×4.24Promedio1.00×1.76×4.86×6.49

Una comparación separada de NVIDIA Speed-Bench mide las aceleraciones de la interactividad en concurrencia coincidente. En gpt-oss-120b, DFlash promedia 2,3× frente a 1,7× de EAGLE-3. En Llama 3.1 8B Instruct, DFlash promedia 2,8× frente a 2,2× de EAGLE-3.

Casos de uso con ejemplos

DFlash apunta al servicio sensible a la latencia donde la generación token por token resulta perjudicial. Tres patrones encajan bien:

Agentes de codificación: la generación de código necesita respuestas rápidas e interactivas. En Gemma 4 31B con vLLM, NVIDIA informa hasta 5,8× en Math500 con simultaneidad 1. HumanEval alcanza 5,6×. Los borradores más rápidos significan tiempos de espera más cortos dentro de los bucles de agentes. Modelos de razonamiento: los rastros de largas cadenas de pensamiento dominan el tiempo de generación. Con el modo de pensamiento habilitado, DFlash tiene aproximadamente 4,5 × bajo decodificación codiciosa en Qwen3-4B y Qwen3-8B. Bajo muestreo, tiene alrededor de 3,9 ×. Esto reduce el costo de los resultados de razonamiento largos. Servicio y rendimiento: DFlash también aumenta el rendimiento del servicio. En SGLang con una GPU B200, alcanza hasta 5,1× en Qwen3-8B (Math500, simultaneidad 1). Las ganancias disminuyen a medida que aumenta la simultaneidad, pero se mantienen positivas, por lo que el costo del servicio aún disminuye.

Ejecutando DFlash

DFlash se entrega con puntos de control y soporte de marco, por lo que la adopción necesita poco código. En vLLM, cambia una configuración de EAGLE-3 por una de DFlash. No se requiere refactorización de la aplicación.

vllm sirve Qwen/Qwen3.5-27B \ –speculative-config ‘{“method”: “dflash”, “model”: “z-lab/Qwen3.5-27B-DFlash”, “num_speculative_tokens”: 15}’ \ –attention-backend flash_attn \ –max-num-batched-tokens 32768

El backend de Transformers admite los modelos Qwen3 y LLaMA-3.1. Expone una llamada spec_generate que empareja un modelo borrador con un modelo objetivo.

desde transformadores importe AutoModel, AutoModelForCausalLM, AutoTokenizer draft = AutoModel.from_pretrained( “z-lab/Qwen3-8B-DFlash-b16″, trust_remote_code=True, dtype=”auto”, device_map=”cuda:0″).eval() target = AutoModelForCausalLM.from_pretrained( “Qwen/Qwen3-8B”, dtype=”auto”, device_map=”cuda:0″).eval() tokenizer = AutoTokenizer.from_pretrained(“Qwen/Qwen3-8B”) mensajes = [{“role”: “user”, “content”: “How many positive whole-number divisors does 196 have?”}]
input_ids = tokenizer.apply_chat_template( mensajes, return_tensors=”pt”, add_generación_prompt=True, enable_thinking=False).to(draft.device) salida = draft.spec_generate( input_ids=input_ids, max_new_tokens=2048, temperatura=0.0, target=target, stop_token_ids=[tokenizer.eos_token_id]) print(tokenizer.decode(salida[0]skip_special_tokens=Falso))

Conclusiones clave

DFlash redacta un bloque de tokens completo en una sola pasada, no un token a la vez. Inyecta características ocultas de destino en la caché KV de cada capa de borrador, escalando la longitud de aceptación con la profundidad. Métricas de Research Paper: hasta 6,08× de aceleración sin pérdidas en Qwen3-8B; Prueba de NVIDIA: hasta 15 veces el rendimiento en Blackwell con interactividad fija. Un redactor liviano de cinco capas reemplaza a los redactores 7B que limitaban los métodos de difusión anteriores entre 3 y 4 veces.

Explicador interactivo