GPT Diffusion

AReA: atención training-free para generar más allá de la resolución nativa de FLUX.1

2026-10-15 · Devs #modelos#open-weights#arquitectura#optimizacion#benchmark

TL;DR

  • Verificado (HTML v1, §1 y §4): AReA —“Adaptive Receptive-Field Attention”, arXiv 2610.17227, University of Toronto + Vector Institute— sustituye la atención global uniforme de un diffusion transformer por un campo receptivo que va de grueso a fino siguiendo el denoising: primeros pasos con keys y values agrupados a 1/f² sobre una rejilla cercana a la resolución nativa, últimos con ventanas locales que se encogen paso a paso. Sin parámetros nuevos, sin reentrenar y sin extrapolación de RoPE.
  • Verificado (paper, Fig. 6 y Fig. 1): 3,2× de speedup de atención sobre atención global completa a 6144² en FLUX.1 (2,9× en Qwen-Image) e imágenes “de hasta 67 millones de píxeles” (Fig. 1). En latencia end-to-end de la Tabla 1, mis ratios calculados sobre sus propias cifras van del 1,24× al 2,55×.
  • Verificado (repo, a 15-oct-2026): código Apache-2.0 con soporte solo FLUX.1 (Qwen-Image, FLUX.2 e Ideogram 4: “Coming soon”), integración diffusers en tres líneas (area = AReA(pipe) … area.remove()), los 1.000 prompts de HRGen-1K en el repo y demo corriendo en Hugging Face Spaces.
  • Claim de los autores: que además de más rápido genera mejor —mejor ImageReward que UltraImage, DyPE, SigMa y SEGA en casi todos los ajustes de la Tabla 1—. Todo auto-reportado por un único grupo, en H100, con uno de los dos benchmarks diseñado por ellos mismos y sin estudio humano en v1.
  • El matiz incómodo: SEGA, el baseline más fuerte, es del mismo primer autor; y en Qwen-Image a 6144×2048 le gana a AReA en ImageReward (1,3047 vs 1,2752). Detalles y trampas abajo.

El problema: atención uniforme fuera de la resolución nativa

Generar por encima de la resolución de entrenamiento sigue siendo el punto débil de los modelos de difusión tipo transformer. La atención se aplica igual en todos los pasos y entre todos los tokens: cada token ve toda la imagen en cada paso del denoising, tanto si esa fase está decidiendo la composición como si está pintando textura de hierba. Eso tiene dos costes que crecen con la resolución. Uno es conocido: las interacciones escalan cuadráticamente con el número de tokens. El otro es el que interesa a este paper: a resoluciones altas, las distancias entre tokens quedan fuera del rango que el modelo vio en entrenamiento, y la atención global empuja al modelo fuera de distribución.

Las soluciones training-free existentes se reparten en dos familias. Los métodos multi-stage (DiffuseHigh, I-Max, HiFlow, ScaleDiff) generan a resolución nativa, reescalan y re-denoisan guiados por la imagen base: conservan estructura pero el techo de calidad lo marca el paso de baja resolución. Los direct-inference (UltraImage, DyPE, SigMa, SEGA) generan de principio a fin a la resolución objetivo, casi todos recalibrando RoPE para que las posiciones extremas vuelvan al rango de entrenamiento; el paper muestra en su Fig. 2 el resultado típico: sujetos estirados, fragmentados o duplicados mientras el layout aguanta.

AReA ataca la otra pata: no toca RoPE —las frecuencias quedan intactas y no hay extrapolación— sino lo que cada query alcanza a ver. La tesis es que la atención uniforme desperdicia cómputo y además es la fuente de los artefactos, porque da un campo receptivo global a pasos que solo necesitan contexto local.

El hallazgo: el campo receptivo ya se estrecha solo

La motivación empírica está en la Fig. 3, y es medible: sobre FLUX.1 vanilla a 1024×1024, promediado entre cabezas, bloques y 24 prompts, la distancia query-key ponderada por atención sobre todas las keys solo se reduce 1,4× entre los pasos tempranos y los tardíos; pero sobre las keys dominantes (las que concentran al menos un cuarto de la atención máxima) se reduce 5,5×. Traducción: cuando el denoising avanza, las keys que de verdad importan ya están cerca de la query. El campo receptivo global en los pasos finales es capacidad que el modelo no está usando —de hecho es el mismo principio de atención adaptativa que aplican los LLM, donde MALA asigna el cómputo de atención a los tokens que lo necesitan, aquí con el eje temporal del denoising como señal.

Si eso es cierto, la respuesta no es un mecanismo nuevo: es una planificación. Dar campo global cuando se decide la composición y estrecharlo conforme emergen los detalles.

Las dos fases de AReA

Fase I — atención gruesa cross-scale (los primeros pasos). Las queries se quedan a resolución completa, pero las keys y values se agrupan a un token por bloque f×f, colocados sobre una rejilla (W/f)×(H/f) que devuelve las distancias relativas al rango nativo de entrenamiento: cada query sigue viendo toda la imagen, pero a 1/f² de coste de atención y sin que RoPE vea distancias fuera de distribución. Los tokens de texto nunca se agrupan —cada query atiende a todos—. El factor f decrece paso a paso desde f₀ hasta un suelo de f_min=2, ajustado a divisores válidos de la rejilla: a 4096×4096 (rejilla de 256×256 parches) la rampa queda [4,4,4,4,2,2,2,2], cuatro pasos con rejilla agrupada de 64×64 y cuatro a 128×128 (Ap. A.1). El cambio de fase se define por nivel de ruido σ*, no por contador de pasos: en la práctica, los primeros 8 pasos en FLUX.1 y los primeros 20 en Qwen-Image (Ap. A.3).

Fase II — ventanas locales adaptativas (los pasos finales). La atención se restringe a ventanas cuadradas que empiezan en ~70% del lado mayor de la rejilla —el mayor tamaño que aún sale más barato que un paso de atención completa— y se encogen geométricamente hasta el tamaño nativo (64×64 parches en FLUX.1) con tres correcciones para que el troceado no se note: un Halo de hasta δ_max=8 parches que extiende keys y values de cada ventana con vecinos del otro lado del borde; un puente global-KV con ρ=0,5 —cada ventana de lado w añade (ρ·w)² tokens distintivos del resto de la imagen, seleccionados por desviación respecto a la media global—; y splits por un mapa de detalle DWT: las ventanas sobre regiones lisas se parten en cuatro cuadrantes porque ahí ver más lejos no aporta nada. Los solapes se mezclan con media ponderada al centro y los bordes de ventana se desplazan aleatoriamente entre pasos para que ninguna costura se forme siempre en el mismo sitio.

El resultado neto: AReA nunca calcula atención completa a la resolución objetivo. Y al mantener queries, salidas y RoPE intactos, lo único que cambia del modelo es a qué atiende cada query.

Los números, con verificado y atribución

Consulta de fuentes: 15-oct-2026, a tres días del v1 (12-oct). Todas las cifras son mediciones de los autores (Rajabi, Roohi, Lindell, Taati) sobre NVIDIA H100 con sus implementaciones: los cuatro baselines direct-inference se ejecutaron con sus implementaciones oficiales (“All baselines are evaluated using their official implementations”, §4), no copiadas de otros papers. Repetirlos aquí no los convierte en datos independientes.

Latencia end-to-end e ImageReward de la Tabla 1 (FLUX.1, benchmark Aesthetic-4K, 195 prompts); la columna “ratio” la calculo yo dividiendo sus propias latencias:

AjusteBaseAReARatio (mi cálculo)ImageReward Base→AReA
2048×409697 s66 s1,47×-0,8696 → 1,0881
6144×2048185 s107 s1,73×-0,3800 → 1,0450
4096×4096314 s151 s2,08×-0,7177 → 1,3250
5120×5120685 s269 s2,55×-1,8620 → 1,2319

Tres lecturas. Primera: el speedup de atención de los titulares (3,2×) es sobre la operación de atención, no sobre la generación completa; end-to-end, sobre las latencias H100 del propio paper, se queda en 1,24×–2,55× según ajuste, y crece con la resolución —que es justo el comportamiento que interesa—. Segunda: en 2048×4096, AReA gana en ImageReward y latencia a la vez (66 s/1,0881 frente a SEGA 98 s/0,7863 o DyPE 97 s/0,5927); ser el método más rápido y el mejor puntuado a la vez es lo raro en esta literatura. Tercera, la que modula las dos anteriores: en Qwen-Image a 6144×2048, SEGA supera a AReA en ImageReward (1,3047 vs 1,2752); AReA gana en el resto de ajustes de Qwen, pero el “mejor en todo” no es literal.

En HRGen-1K —benchmark de los propios autores, 1.000 prompts con escenas complejas, recuentos de objetos, reflexos y 125 prompts de renderizado de texto (Ap. H)— el modelo base se hunde: ImageReward -1,4649 a 4096×4096, frente a 0,6001 de AReA, 0,4422 de SEGA y 0,3280 de DyPE (Tabla 2). Es el benchmark donde más margen saca, y también el que ellos diseñaron; Aesthetic-4K, que es externa, confirma la dirección con menos margen.

Los ablations del §4 cierran el círculo y de paso dejan una lección sobre métricas: con ventanas fijas de 64 sin encoger (sin la planificación de Fase II), la imagen sale con el layout roto en regiones inconsistentes —“such outputs are unusable”— pero Aesthetic y CLIP apenas se inmutan; el fallo solo aparece en ImageReward, PickScore y FID. Quitar el puente global-KV duplica sujetos y sube el FID de 148,5 a 161,3 con el resto de métricas casi igual. Si evalúas tu propio pipeline de alta resolución con Aesthetic/CLIP, estás ciego al modo de fallo dominante.

Para quien venga de métodos multi-stage: la variante AReA-Bootstrap (solo FLUX.1) sustituye la Fase I por generación nativa + upsample + re-noise, y en el Ap. F es el más rápido de su comparativa contra DiffuseHigh, I-Max, HiFlow y ScaleDiff, aunque cede en algunas métricas no referenciadas ante ScaleDiff; el AReA completo queda primero en todas las métricas de calidad, alineación y fidelidad de esa tabla.

Cómo entra en tu pipeline

Adjunta el wrapper a un pipeline de diffusers y llámalo como siempre (ejemplo del README):

import torch
from diffusers import FluxPipeline
from area import AReA

pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-Krea-dev", torch_dtype=torch.bfloat16)
pipe.vae.enable_tiling()
pipe.to("cuda")              # o pipe.enable_model_cpu_offload()

area = AReA(pipe)

image = pipe(
    "A vibrant village with colorful houses and a picturesque castle",
    height=4096,
    width=4096,
    num_inference_steps=28,
    guidance_scale=4.5,
    generator=torch.Generator("cuda").manual_seed(0),
).images[0]
image.save("village.png")

area.remove()                # vuelve a la atención original

Letra pequeña del README que te ahorra sorpresas: los canvas por debajo o iguales a la resolución nativa mantienen la atención original (esto no acelera nada a 1024×1024); alto y ancho deben dividirse en parches enteros; y los dos conteos de parches deben compartir un factor de al menos 2, porque la Fase I agrupa bloques f×f. El checkpoint por defecto es black-forest-labs/FLUX.1-Krea-dev, gated: acepta la licencia y haz huggingface-cli login antes. Con menos de 60 GB de VRAM el repo descarga a CPU los modelos inactivos automáticamente. Los parámetros tunables son pocos: pooling (subsample/mean/medoid/random), phase1_steps, halo, bridge_ratio y seed —el seed controla el jitter de bordes, los anchos de Halo y el pooling aleatorio, no solo el ruido inicial—. También hay CLI (python generate.py --model flux1 --height 4096 --width 4096) y demo sin instalación en Hugging Face Spaces (FLUX.1, de 2K a 4K).

Lo que el titular no dice

Todo se midió en H100. “All experiments are conducted on NVIDIA H100 GPUs”, §4. En una GPU de consumidor los ratios absolutos serán otros; la forma (el ahorro crece con la resolución) debería mantenerse, pero es tu medición, no la de la Tabla 1.

El código de hoy solo hace FLUX.1. Los resultados multi-modelo del paper —incluido el 2,9× de Qwen-Image— son de los autores; tu reproducción local, por ahora, solo puede ser FLUX.1. Qwen-Image, FLUX.2 e Ideogram 4 están en “Coming soon” en el repo. Si tu pipeline es Qwen-Image en local, toca esperar al adapter.

HRGen-1K es suyo. El benchmark donde AReA más destaca lo diseñaron los autores para exprimir modos de fallo; el prompts.jsonl está en el repo y puedes usarlo, pero no lo leas como validación externa. Aesthetic-4K sí lo es.

SEGA, el baseline más fuerte, es del mismo primer autor (Rajabi et al., NeurIPS 2026). No es un conflicto oculto —el paper lo cita abiertamente y SEGA es la referencia de su grupo—, pero explica que la comparación más dura del paper sea también la más informada. Contexto, no acusación.

v1 preprint, sin venue, sin estudio humano. Tres días de vida al consultar las fuentes, 49 upvotes en la paper page de Hugging Face a 15-oct-2026, toda la evaluación con métricas automáticas y perceptuales. Ni réplica independiente ni preferencia humana medida todavía. Los números pueden moverse.

Qué haría yo

Antes de adoptarlo, tres verificaciones baratas, en orden de coste. Una: la demo de HF Spaces con tus propios prompts —los que de verdad lanzas en producción— mirando dos cosas concretas: renderizado de texto y recuentos de objetos, que son donde el paper claima la ventaja frente a métodos RoPE. Dos: en tu GPU, generate.py con tu checkpoint de FLUX.1 a 2048×4096 y tu propia latencia; compara contra tu pipeline actual, no contra la Tabla 1, que corre en otro hardware. Tres: evalúa con ImageReward/PickScore/FID en lugar de Aesthetic/CLIP —el ablation del propio paper demuestra que estas últimas no ven layouts rotos— y revisa a ojo costuras y duplicados, que es lo que el Halo y el puente global-KV existen para evitar.

Lo que yo no haría: esperar el 3,2× en tu generación completa —es speedup de atención—, usarlo a resolución nativa o por debajo (ahí no hace nada: mantiene la atención original), ni montar nada crítico sobre un método de tres días sin replicación externa. Si te dedicas a alta resolución, el experimento que de verdad responde preguntas es medir el trade-off latencia/IR en tus prompts; el resto es merchandising ajeno.

Fuentes

  • arXiv: AReA (2610.17227) (v1, 12-oct-2026) — abstract, autores (Javad Rajabi, Koorosh Roohi —contribución igual—, David B. Lindell, Babak Taati), afiliaciones (University of Toronto + Vector Institute).
  • HTML v1 del paper — §1 (Fig. 2 y 3), §3 (Fases I y II), §4 (Tabla 1, Tabla 2, Fig. 6, ablations), Apéndices A (rampa, σ*), F (AReA-Bootstrap) y H (HRGen-1K).
  • GitHub: KooroshRH/AReA — Apache-2.0; README con integración diffusers, requisitos de canvas, opciones y AReA-Bootstrap; HRGen-1K/prompts.jsonl (1.000 prompts).
  • Project page — University of Toronto + Vector Institute.
  • Demo en Hugging Face Spaces — FLUX.1, 2K→4K, corriendo a 15-oct-2026.
  • Paper page en Hugging Face — 49 upvotes a 15-oct-2026.
Cargando comentarios...