Qwen Team lanza FlashQLA: una biblioteca de kernel de atención lineal de alto rendimiento que logra una aceleración de hasta 3 veces en las GPU NVIDIA Hopper

La carrera para hacer que los modelos de lenguaje grandes sean más rápidos y más baratos de ejecutar se ha librado en gran medida en dos niveles: la arquitectura del modelo y el hardware. Pero hay una tercera frontera, a menudo subestimada: el núcleo de la GPU. Un kernel es la rutina computacional de bajo nivel que realmente ejecuta una operación matemática en la GPU. Escribir uno bueno requiere comprender no sólo las matemáticas, sino también el diseño exacto de la memoria, la programación de instrucciones y las peculiaridades del hardware del chip al que se dirige. La mayoría de los profesionales de ML nunca escriben núcleos directamente; confían en bibliotecas como FlashAttention o Triton para hacerlo por ellos.

Conozca FlashQLA: una contribución de QwenLM a esta capa. Lanzada bajo la licencia MIT y construida en el marco del compilador TileLang, es una biblioteca de núcleo de atención lineal de alto rendimiento optimizada específicamente para el mecanismo de atención Gated Delta Network (GDN), la arquitectura de atención lineal que impulsa las familias de modelos Qwen3.5 y Qwen3.6.

¿Qué es la atención lineal y por qué es importante?

Para comprender qué resuelve FlashQLA, es útil comprender cuánto cuesta la atención estándar de softmax. En un transformador convencional, el mecanismo de atención tiene una complejidad O(n²), lo que significa que duplicar la longitud de la secuencia cuadriplica el cálculo. Este es el cuello de botella fundamental que encarece el procesamiento de documentos largos, archivos de código largos o conversaciones largas.

La atención lineal reemplaza el softmax con una formulación que lo reduce a una complejidad O(n), lo que hace que escale mucho más favorablemente con la longitud de la secuencia. La Gated Delta Network (GDN) es uno de esos mecanismos de atención lineal y se ha integrado en la arquitectura del modelo híbrido de Qwen, donde las capas de GDN se alternan con capas de atención completa estándar. Este diseño híbrido intenta obtener lo mejor de ambos mundos: la expresividad de la atención total donde más se necesita y la eficiencia de la atención lineal en cualquier otro lugar.

GDN utiliza lo que se llama una formulación “cerrada”: aplica una puerta que decae exponencialmente para controlar cuánto contexto pasado se traslada al futuro. Esta puerta es clave para que FlashQLA obtenga ganancias de rendimiento.

El problema con los núcleos existentes

Antes de FlashQLA, la implementación estándar para las operaciones de GDN provenía de la biblioteca Flash Linear Attention (FLA), que utiliza kernels Triton; Triton es el lenguaje de programación de GPU basado en Python de OpenAI. Si bien Triton hace que la creación de kernel sea más accesible, esto conlleva desventajas: los kernels que produce no siempre están programados de manera óptima para hardware específico, particularmente en la arquitectura Hopper de NVIDIA (la generación de GPU H100 y H200).

La arquitectura Hopper introdujo nuevas características como operaciones Tensor Core a nivel de warpgroup y canalizaciones de datos asincrónicas que Triton no siempre puede explotar en todo su potencial. Este es el vacío que FlashQLA está diseñado para llenar.

Qué hace FlashQLA de manera diferente

FlashQLA aplica la fusión de operadores y la optimización del rendimiento tanto al paso hacia adelante (utilizado durante la inferencia y el entrenamiento) como al paso hacia atrás (utilizado durante el entrenamiento para el cálculo de gradientes) de GDN Chunked Prefill. El resultado es una aceleración de 2 a 3 veces en pases hacia adelante y una aceleración de 2 veces en pases hacia atrás en comparación con el kernel FLA Triton en múltiples escenarios en las GPU NVIDIA Hopper.

Tres innovaciones técnicas impulsan estos beneficios:

1. Paralelismo de contexto intratarjeta automático impulsado por puerta: el paralelismo de contexto (CP) se refiere a dividir una secuencia larga en múltiples unidades de procesamiento para que puedan trabajar en diferentes partes simultáneamente. FlashQLA explota la propiedad de caída exponencial de la puerta GDN para hacer que esta división sea matemáticamente válida, porque la caída de la puerta significa que los tokens muy separados en una secuencia tienen una influencia cada vez menor entre sí. Esto permite a FlashQLA habilitar automáticamente el CP dentro de la tarjeta bajo paralelismo tensorial (TP), secuencia larga y configuraciones de recuento pequeño, mejorando la utilización del multiprocesador de transmisión de GPU (SM) sin requerir configuración manual.

2. Reformulación algebraica compatible con el hardware: FlashQLA reformula, hasta cierto punto, el cálculo matemático de los flujos hacia adelante y hacia atrás de GDN Chunked Prefill para reducir la sobrecarga en tres tipos de unidades de hardware de GPU: Tensor Cores (que manejan multiplicaciones de matrices), CUDA Cores (que manejan operaciones escalares y vectoriales) y la Unidad de Función Especial (SFU, que maneja operaciones como exponenciales y raíces cuadradas). Fundamentalmente, esto se hace sin sacrificar la precisión numérica, una garantía importante cuando la reformulación se utiliza para el entrenamiento de modelos.

3. TileLang fusionó núcleos especializados en warp: en lugar de descomponer el cálculo en núcleos secuenciales independientes (demasiado lentos) o fusionar todo en un único núcleo monolítico (demasiado rígido para optimizarlo), FlashQLA toma un camino intermedio. Utiliza TileLang para construir varios núcleos fusionados clave e implementa manualmente la especialización de warpgroup, una técnica que asigna diferentes warpgroups (grupos de 128 subprocesos en Hopper) a roles especializados, como un grupo warp que mueve datos de la memoria global a la memoria compartida mientras otro ejecuta simultáneamente multiplicaciones de matrices Tensor Core. Esta superposición del movimiento de datos, el cálculo de Tensor Core y el cálculo de CUDA Core es lo que permite a FlashQLA acercarse al rendimiento máximo teórico del hardware.

Puntos de referencia

FlashQLA se comparó con dos líneas de base: el kernel FLA Triton (versión 0.5.0, Triton 3.5.1) y FlashInfer (versión 0.6.9), utilizando TileLang 0.1.8, en GPU NVIDIA H200. Los puntos de referencia utilizaron las configuraciones de cabeza de las familias de modelos Qwen3.5 y Qwen3.6, con dimensiones de cabeza hv ∈ 64, 48, 32, 24, 16, 8, correspondientes a configuraciones de paralelismo tensorial de TP1 a TP8.

Los puntos de referencia directos (FWD) miden la latencia de un solo núcleo para diferentes modelos y configuraciones de TP en diferentes longitudes de lote. Los puntos de referencia hacia atrás (BWD) examinan la relación entre el recuento total de tokens dentro de un lote y la latencia durante un único paso de actualización.

https://qwen.ai/blog?id=flashqla

Conclusiones clave

FlashQLA es una biblioteca de núcleo de atención lineal de alto rendimiento creada por el equipo de Qwen en TileLang, específicamente optimizada para pases hacia adelante y hacia atrás de precarga fragmentada de Gated Delta Network (GDN). Logra una aceleración de 2 a 3 veces hacia adelante y 2 veces hacia atrás con respecto al kernel FLA Triton en múltiples escenarios en las GPU NVIDIA Hopper (SM90+), con ganancias de eficiencia más pronunciadas en el preentrenamiento y la inferencia agente del lado del borde. Tres innovaciones centrales impulsan las ganancias de rendimiento: paralelismo automático de contexto dentro de la tarjeta impulsado por puerta, reformulación algebraica amigable con el hardware que reduce la sobrecarga de Tensor Core, CUDA Core y SFU sin perder precisión numérica, y kernels especializados en warp fusionados de TileLang que se superponen al movimiento de datos, cálculo de Tensor Core y cálculo de CUDA Core. GDN es un mecanismo de atención lineal con complejidad O(n), que se utiliza en la arquitectura del modelo híbrido de Qwen junto con capas de atención completa estándar, lo que hace que los núcleos de GDN eficientes sean críticos tanto para el entrenamiento como para la inferencia de contexto largo a escala. FlashQLA es de código abierto bajo la licencia MIT y requiere SM90 o superior, CUDA 12.8+ y PyTorch 2.8+, con una instalación pip simple y API de Python de alto y bajo nivel disponibles para integración.

Consulte el repositorio de GitHub y los detalles técnicos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 130.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

¿Necesita asociarse con nosotros para promocionar su repositorio de GitHub O su página principal de Hugging O su lanzamiento de producto O seminario web, etc.? Conéctate con nosotros