Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Ring Attention

La atención en anillo divide una secuencia larga entre las GPU dispuestas en un anillo, que se pasan bloques de clave-valor mientras calculan, para ampliar el contexto a medida que aumenta el número de dispositivos.

La atención en anillo calcula la autoatención exacta en una secuencia demasiado larga para un acelerador, dividiéndola en bloques distribuidos entre dispositivos dispuestos en anillo. Cada dispositivo conserva un bloque de consultas y pasa bloques de claves y valores a su vecino; esa comunicación se solapa con el cálculo del bloque que ya tiene, de modo que la longitud máxima de secuencia que puede manejar un modelo aumenta proporcionalmente al número de dispositivos. Hao Liu, Matei Zaharia y Pieter Abbeel, de UC Berkeley, la presentaron en octubre de 2023 en Ring Attention with Blockwise Transformers for Near-Infinite Context, basándose en su Transformer paralelo por bloques anterior, y comunicaron entrenamiento e inferencia con ventanas de contexto de millones de tokens sin aproximar la atención.

Cómo funciona la atención en anillo#

Una secuencia se divide en N bloques, uno por GPU o TPU. Cada dispositivo conserva su bloque de consultas durante todo el cálculo. En cada uno de los N pasos, calcula la atención entre sus consultas y el bloque de claves y valores que tiene en ese momento, envía ese bloque al dispositivo siguiente y recibe otro del anterior:

Tras N pasos, cada bloque de consultas ha interactuado con todos los bloques de claves y valores. Ningún dispositivo almacena la matriz de atención completa ni el conjunto completo de claves y valores, por lo que la memoria por dispositivo depende del tamaño del bloque y no de la longitud de la secuencia. La transferencia queda oculta tras el cálculo siempre que calcular la atención sobre un bloque lleve más tiempo que enviarlo, lo que establece un tamaño mínimo de bloque para cada hardware. Los resultados parciales se combinan con la misma softmax acumulativa que utiliza la atención flash dentro de una sola GPU: cada dispositivo mantiene una suma acumulada de las puntuaciones exponenciadas y de los valores ponderados, y al final divide una por la otra. La simulación de cuatro dispositivos en una sola máquina muestra que el resultado es exacto:

import torch

torch.manual_seed(0)
n_devices, block, dim = 4, 8, 16
q, k, v = torch.randn(3, n_devices * block, dim)
q_blocks, k_blocks, v_blocks = q.chunk(n_devices), k.chunk(n_devices), v.chunk(n_devices)

outputs = []
for i in range(n_devices):  # device i keeps query block i for the whole computation
    numerator, denominator = torch.zeros(block, dim), torch.zeros(block, 1)
    for step in range(n_devices):
        j = (i - step) % n_devices  # key-value block that has arrived from the previous device
        p = torch.exp(q_blocks[i] @ k_blocks[j].T / dim**0.5)
        numerator += p @ v_blocks[j]
        denominator += p.sum(dim=-1, keepdim=True)
    outputs.append(numerator / denominator)

full = torch.softmax(q @ k.T / dim**0.5, dim=-1) @ v
print(f"Largest score block per device: {block}x{block}, full matrix: {len(q)}x{len(k)}")
print("Matches full attention:", torch.allclose(torch.cat(outputs), full, atol=1e-5))

Imprime Matches full attention: True: cada dispositivo solo llegó a tener un bloque de puntuaciones de 8 × 8 y, entre todos, generaron atención sobre la matriz completa de 32 × 32. Los kernels de producción también restan un máximo acumulado antes de calcular la exponencial para mantener la estabilidad numérica. Con una máscara causal, los dispositivos que contienen bloques de consultas iniciales omiten la mayoría de los bloques de claves y quedan inactivos; Striped Attention lo resuelve asignando a cada dispositivo tokens repartidos uniformemente por la secuencia, lo que aumenta hasta 1,45 veces el rendimiento del entrenamiento de principio a fin con 256K tokens.

Aplicaciones#

La atención en anillo es útil siempre que una entrada sea demasiado larga para un solo dispositivo, y el vídeo es el ejemplo más claro. El mismo grupo de Berkeley la utilizó para entrenar Large World Model (LWM), una familia de modelos de visión y lenguaje (VLM) de 7.000 millones de parámetros cuyo contexto creció progresivamente de 4K a 1 millón de tokens de texto y vídeo intercalados. LWM codifica cada fotograma como 256 tokens, por lo que una hora de vídeo muestreada a un fotograma por segundo equivale a 921.600 tokens, y el modelo respondió preguntas sobre recopilaciones de YouTube de una hora, una tarea de comprensión de vídeo a largo plazo. El entrenamiento de modelos de lenguaje grandes (LLM) que leen bases de código completas o colecciones de documentos en una sola indicación se topa con el mismo límite. La API context_parallel() de PyTorch sustituye la atención de producto escalar escalado por la atención en anillo dentro de su contexto, y el equipo TorchTitan la utilizó para entrenar Llama 3 8B con secuencias de 1 millón de tokens en 32 GPU H100.

Atención en anillo frente a otros tipos de paralelismo#

  • Paralelismo de contexto: Estrategia general para dividir una secuencia entre dispositivos. La atención en anillo es el algoritmo que utiliza la implementación de PyTorch, y DeepSpeed Ulysses es una alternativa que emplea intercambios de todos con todos para proporcionar a cada dispositivo todos los tokens de un subconjunto de cabezales de atención.
  • Paralelismo de tensores y paralelismo de canalización: Dividen los pesos del modelo dentro de las capas o entre ellas, lo que resulta útil cuando los parámetros superan la memoria de un dispositivo.
  • Atención flash: Kernel para un único dispositivo. La atención en anillo ejecuta un kernel por bloques de este tipo en cada dispositivo para su bloque local.

El paralelismo de datos divide el lote en lugar de la secuencia, y es el modo que utiliza Ultralytics YOLO26 para el entrenamiento con varias GPU: pasar device=[0, 1] inicia PyTorch DistributedDataParallel, que mantiene una copia completa del modelo en cada GPU, asigna a cada GPU la misma parte de cada lote de imágenes y promedia los gradientes después de cada paso.

Explore solutions

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático