Longformer
Longformer associe l’attention par fenêtre glissante à quelques jetons globaux : son coût augmente donc de façon linéaire avec la longueur et il peut traiter des documents de 4 096 jetons.
Longformer est un transformeur destiné aux documents longs. Il remplace l’auto-attention complète par une attention à fenêtre glissante autour de chaque jeton, complétée par une attention globale sur quelques jetons choisis selon la tâche. Son coût augmente donc de façon linéaire avec la longueur de l’entrée, plutôt que de façon quadratique. Iz Beltagy, Matthew Peters et Arman Cohan, de l’Allen Institute for AI, l’ont présenté dans l’article de 2020 Longformer: The Long-Document Transformer. Les encodeurs tels que BERT et RoBERTa ne traitent que 512 jetons au maximum ; les textes plus longs devaient donc être découpés en segments qui perdaient les liens entre eux. Les modèles Longformer publiés traitent 4 096 jetons en une seule passe, soit une fenêtre de contexte huit fois plus longue.
Fonctionnement de l’attention de Longformer#
Chaque couche combine des motifs locaux et globaux au sein d’un même mécanisme d’attention :
- Attention à fenêtre glissante : Chaque jeton porte son attention sur une fenêtre fixe de jetons voisins, 256 de chaque côté dans les modèles publiés.
- Fenêtre glissante dilatée : Les intervalles entre les positions prises en compte permettent à une tête d’observer plus loin pour le même coût. Les auteurs ont utilisé la dilatation sur quelques têtes dans les couches supérieures de leurs modèles de langage au niveau caractère.
- Attention globale : Les jetons sélectionnés portent leur attention sur toutes les positions, et toutes les positions portent leur attention sur eux, grâce à des projections distinctes des requêtes, des clés et des valeurs. La tâche détermine leur sélection : le jeton
[CLS]pour la classification et les jetons de la question pour répondre à une question.
L’empilement des couches élargit la portée de la fenêtre, de la même manière que des convolutions empilées étendent le champ réceptif d’un réseau neuronal convolutif (CNN) : l couches de largeur de fenêtre w couvrent l × w jetons. Chaque couche calcule environ n × w scores d’attention au lieu de n × n. Le comptage des paires dans un masque Longformer met cette différence en évidence :
import torch
window = 512 # Longformer-base: 256 tokens on each side of every token
for n in (1024, 2048, 4096):
pos = torch.arange(n)
# Sliding window: each token attends to neighbors within window / 2 positions
mask = (pos[:, None] - pos[None, :]).abs() <= window // 2
# Global attention on token 0 ([CLS]): it sees every token and every token sees it
mask[0, :] = True
mask[:, 0] = True
print(f"{n} tokens: full attention {n * n / 1e6:.1f}M scores, Longformer {mask.sum().item() / 1e6:.1f}M")Il affiche 0,5 M, 1,0 M et 2,0 M scores Longformer, contre 1,0 M, 4,2 M et 16,8 M pour l’attention complète : chaque doublement de la taille de l’entrée double le travail d’attention de Longformer, mais quadruple celui de l’attention complète. Les implémentations réelles ne calculent que la bande de scores, ce qui permet d’économiser de la mémoire.
Entraînement et résultats#
Longformer part du point de contrôle de RoBERTa. Les auteurs ont copié huit fois ses 512 plongements positionnels appris pour couvrir 4 096 positions, puis ont poursuivi le préentraînement par modélisation du langage masqué sur des documents longs. Après l’affinage, il a systématiquement dépassé RoBERTa sur les tâches portant sur de longs documents et établi de nouveaux records sur les bancs d’essai de réponse aux questions WikiHop et TriviaQA. Le modèle de langage au niveau caractère a lui aussi établi de nouveaux résultats sur text8 et enwik8.
Longformer-Encoder-Decoder (LED) ajoute un décodeur pour le résumé de texte et d’autres tâches de génération de texte, comme l’illustre le résumé d’articles scientifiques complets provenant d’arXiv. Hugging Face Transformers implémente les deux modèles et reçoit les jetons globaux sous forme de global_attention_mask. Des variantes spécialisées ont suivi, comme Clinical-Longformer, préentraîné sur de grands corpus de textes cliniques et évalué sur 10 tâches, dont la reconnaissance d’entités nommées, la réponse aux questions et la classification de documents.
Longformer et modèles apparentés#
- Transformer-XL : Traite un long texte segment par segment et permet à chaque segment de prêter attention aux états cachés mis en cache du segment précédent, étendant le contexte par récurrence pour la génération de gauche à droite.
- BigBird : Modèle de Google de la même année, qui ajoute des liens d’attention aléatoires à l’attention par fenêtre et à l’attention globale, et traite lui aussi 4 096 jetons.
- Attention creuse : Famille plus générale de motifs d’attention fixes à laquelle appartient Longformer.
- Flash attention : Calcule l’attention complète exacte dans des blocs de mémoire sur puce. La mémoire augmente ainsi de façon linéaire avec la longueur, tandis que le nombre de scores reste quadratique.
Attention locale et globale en vision#
Les images haute résolution posent le même problème, car un transformeur de vision (ViT) convertit une image en milliers de jetons de patch. Le Swin Transformer répond à ce problème avec des fenêtres locales décalées. Le Segment Anything Model (SAM) de Meta, disponible dans le paquet Ultralytics, combine quant à lui l’attention par fenêtre et l’attention globale d’un bloc à l’autre pour la segmentation d’images : son encodeur d’image ViT-B applique l’attention dans des fenêtres non chevauchantes de 14 × 14 sur sa grille de 64 × 64 patches dans 8 de ses 12 blocs, et de façon globale sur les 4 096 patches dans les blocs 2, 5, 8 et 11.










