Transformer : définition, mécanisme d'attention et architecture
L'architecture de réseau de neurones derrière GPT, BERT, Claude ou Llama : le mécanisme d'attention, l'encodeur et le décodeur, les grandes familles de modèles et un exemple de code avec Hugging Face.
Par Équipe Blent· Mis à jour le · 15 min de lecture· Niveau intermédiaire
Transformer en bref
- Publication
- « Attention Is All You Need », 2017
- Auteurs
- Vaswani et al., Google
- Mécanisme central
- Self-attention multi-têtes
- Blocs
- Encodeur, décodeur, ou les deux
- Familles
- BERT (encodeur), GPT (décodeur), T5 (les deux)
- Tâche d'origine
- Traduction automatique
- Remplace
- Les réseaux récurrents (RNN, LSTM)
Définition : Transformer
Le Transformer est une architecture de réseau de neurones présentée en 2017 par des chercheurs de Google dans l'article « Attention Is All You Need ». Elle traite tous les tokens d'une séquence en parallèle grâce au mécanisme d'attention, qui permet à chaque élément de pondérer l'importance de tous les autres pour construire sa représentation en contexte. Conçu à l'origine pour la traduction automatique, avec un encodeur et un décodeur, le Transformer a remplacé les réseaux récurrents en traitement du langage. Il est aujourd'hui la base des LLM comme GPT, Claude ou Llama, de modèles d'analyse comme BERT et de nombreux modèles de vision et d'audio.
En une phrase : le Transformer est l'architecture de réseau de neurones qui, grâce au mécanisme d'attention, permet à chaque mot de tenir compte de tous les autres et sert de socle à tous les LLM actuels.
Dans cette définition
Qu'est-ce qu'un Transformer ?
Le Transformer est une architecture de réseau de neurones conçue pour traiter des séquences : phrases, lignes de code, signaux audio ou suites de patchs d'image. Son idée centrale tient en une phrase : pour comprendre un élément, il faut regarder tous les autres et décider lesquels comptent. Ce mécanisme, l'attention, remplace la lecture mot à mot des architectures précédentes par une vue d'ensemble de la séquence, calculée en parallèle.
L'architecture a été présentée en 2017 dans l'article « Attention Is All You Need », signé par Ashish Vaswani et sept coauteurs, chercheurs de Google pour la plupart. Elle visait la traduction automatique et se composait d'un encodeur, qui lit la phrase source, et d'un décodeur, qui génère la traduction. Ses résultats, et surtout sa capacité à s'entraîner beaucoup plus vite que les réseaux récurrents sur GPU, l'ont rapidement imposée. Dès 2018, Google publie BERT et OpenAI publie GPT, deux modèles qui n'en conservent chacun qu'une moitié.
Le Transformer est l'architecture des LLM et, plus largement, de la plupart des modèles de fondation. Il intervient après la tokenisation : le modèle ne voit jamais du texte brut, mais une suite d'identifiants de tokens qu'il transforme en vecteurs.
À retenir : le Transformer est un plan de construction, pas un modèle. GPT, BERT, Llama ou Whisper sont des modèles différents, entraînés sur des données différentes, mais bâtis sur cette même architecture.
Le mécanisme d'attention en détail
Prenons la phrase « Le chat n'a pas mangé sa pâtée car il était malade ». Pour représenter correctement « il », le modèle doit le relier à « chat » et non à « pâtée ». La self-attention permet ce lien direct, quelle que soit la distance entre les mots.
Pour chaque token, le modèle calcule trois vecteurs par projection linéaire de son embedding :
- une requête (query, Q) : ce que le token cherche ;
- une clé (key, K) : ce que le token offre aux autres ;
- une valeur (value, V) : l'information qu'il transmet s'il est sélectionné.
Le score entre deux tokens est le produit scalaire de la requête de l'un et de la clé de l'autre. Ces scores sont normalisés par une fonction softmax, puis servent à calculer une moyenne pondérée des valeurs :
Attention(Q, K, V) = softmax( Q · Kᵀ / √d_k ) · V
La division par la racine de la dimension des clés (d_k) évite que les scores deviennent trop grands et saturent la softmax. Le résultat est une nouvelle représentation de chaque token, enrichie du contexte qui lui est utile.
L'attention multi-têtes répète ce calcul plusieurs fois en parallèle, avec des projections différentes : l'article original utilise 8 têtes dans son modèle de base. Une tête peut suivre les accords grammaticaux, une autre les coréférences, une autre la proximité thématique. Leurs sorties sont concaténées puis projetées.
Dans un décodeur, un masque causal interdit à chaque token de regarder les tokens qui le suivent. C'est ce qui permet d'entraîner le modèle à prédire le token suivant sur toutes les positions d'un texte en une seule passe, puis de générer token par token à l'inférence.
Encodeur, décodeur : les trois familles de modèles
L'architecture originale associait un encodeur et un décodeur. Les modèles qui ont suivi ont souvent gardé une seule des deux parties, selon la tâche visée.
| Famille | Exemple fondateur | Attention | Objectif d'entraînement | Usages typiques |
|---|---|---|---|---|
| Encodeur seul | BERT (Google, 2018) | Bidirectionnelle : chaque token voit toute la phrase | Retrouver des mots masqués | Classification, extraction d'entités, embeddings pour la recherche |
| Décodeur seul | GPT (OpenAI, 2018) | Causale : chaque token ne voit que le passé | Prédire le token suivant | Génération de texte, LLM conversationnels, code |
| Encodeur-décodeur | T5 (Google, 2019) | Bidirectionnelle à l'encodage, causale au décodage | Transformer un texte en un autre texte | Traduction, résumé, transcription (Whisper) |
Les LLM actuels sont dans leur immense majorité des décodeurs seuls : cette famille passe le mieux à l'échelle et une seule tâche, prédire la suite, suffit à couvrir la traduction, le résumé ou la classification par simple consigne. Les encodeurs restent très utilisés pour produire des embeddings, par exemple dans un RAG.
Exemple : explorer un Transformer avec Hugging Face
La bibliothèque transformers de Hugging Face charge un modèle pré-entraîné en une ligne et donne accès à ses représentations internes. Ce script montre deux propriétés clés de l'architecture : les représentations contextuelles et les matrices d'attention.
import torch
from transformers import AutoModel, AutoTokenizer
name = "google-bert/bert-base-uncased" # encodeur : 12 couches, 12 têtes, vecteurs de 768
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModel.from_pretrained(name, attn_implementation="eager")
model.eval()
def encode(sentence: str, word: str):
inputs = tokenizer(sentence, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs, output_attentions=True)
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
vector = outputs.last_hidden_state[0, tokens.index(word)]
return vector, outputs
money, outputs = encode("I deposited cash at the bank.", "bank")
loan, _ = encode("The bank approved my loan.", "bank")
river, _ = encode("We had a picnic on the river bank.", "bank")
print(outputs.last_hidden_state.shape) # (1, nombre de tokens, 768)
print(len(outputs.attentions)) # 12 matrices d'attention, une par couche
print(outputs.attentions[0].shape) # (1, 12 têtes, nombre de tokens, nombre de tokens)
cos = torch.nn.functional.cosine_similarity
print("banque / banque :", cos(money, loan, dim=0).item())
print("banque / berge :", cos(money, river, dim=0).item())
Le même mot « bank » reçoit un vecteur différent selon la phrase : les deux occurrences au sens financier sont en général nettement plus proches entre elles que de l'occurrence au sens de berge. C'est l'attention qui injecte ce contexte. Pour un décodeur, la logique est la même ; seule la tête de sortie change :
from transformers import pipeline
generator = pipeline("text-generation", model="openai-community/gpt2")
result = generator("The Transformer architecture", max_new_tokens=25)
print(result[0]["generated_text"])
Où retrouve-t-on l'architecture Transformer ?
Né pour la traduction, le Transformer s'est imposé dans presque tous les domaines où les données peuvent être vues comme une séquence.
Grands modèles de langage
GPT, Claude, Gemini, Llama ou Mistral reposent tous sur des décodeurs Transformer.
Recherche sémantique
Les modèles d'embedding de type encodeur alimentent la recherche vectorielle et les RAG.
Classification de textes
Analyse de sentiment, détection d'intention, tri de documents avec des modèles de la famille BERT.
Traduction et résumé
Les architectures encodeur-décodeur transforment une séquence d'entrée en séquence de sortie.
Vision par ordinateur
Le Vision Transformer découpe une image en patchs traités comme des tokens.
Audio et parole
Transcription automatique et synthèse vocale, à l'image de Whisper, un encodeur-décodeur.
Quels sont les avantages du Transformer ?
Le succès du Transformer tient autant à ses qualités de modélisation qu'à son adéquation avec le matériel moderne.
- Traitement parallèle de toute la séquence, idéal pour les GPU et l'entraînement à grande échelle.
- Relations directes entre tokens éloignés, sans perte d'information au fil de la séquence.
- Performances qui progressent de façon régulière avec la taille du modèle et des données.
- Architecture générique, applicable au texte, à l'image, à l'audio ou au code.
- Représentations contextuelles : un même mot reçoit un vecteur différent selon la phrase.
- Écosystème mature de modèles pré-entraînés et de bibliothèques optimisées.
Quelles sont les limites du Transformer ?
Ses points forts ont une contrepartie, surtout lorsque les séquences s'allongent ou que les ressources sont comptées.
- Coût de l'attention quadratique avec la longueur de la séquence, en calcul comme en mémoire.
- Génération séquentielle côté décodeur : un token à la fois, ce qui pèse sur la latence.
- Cache des clés et valeurs volumineux pour les longs contextes, qui limite le nombre d'utilisateurs par GPU.
- Besoins massifs en données et en calcul pour un pré-entraînement de qualité.
- Fonctionnement interne difficile à interpréter, malgré les cartes d'attention.
Pourquoi le Transformer a remplacé les RNN
Avant 2017, le traitement du langage reposait sur les réseaux récurrents (RNN) et leurs variantes LSTM et GRU. Ils lisent la séquence un élément après l'autre et résument tout ce qui précède dans un état caché. Ce fonctionnement a deux défauts majeurs : il empêche de paralléliser le calcul sur la longueur de la séquence, et l'information des premiers mots s'estompe au fil de la lecture.
| Critère | RNN / LSTM | Transformer |
|---|---|---|
| Lecture de la séquence | Séquentielle, token par token | Parallèle, tous les tokens à la fois |
| Contexte lointain | S'estompe avec la distance | Lien direct entre deux tokens quelconques |
| Entraînement sur GPU | Peu parallélisable, donc lent | Très parallélisable, donc rapide |
| Passage à l'échelle | Limité | Gains réguliers avec la taille et les données |
| Coût selon la longueur | Linéaire | Quadratique pour l'attention |
| Pré-entraînement réutilisable | Rare | Standard (BERT, GPT, modèles de fondation) |
Le seul point où le RNN garde l'avantage, le coût linéaire, explique les nombreuses optimisations apportées depuis au Transformer : noyaux d'attention optimisés comme FlashAttention, attention à fenêtre glissante, partage des clés et valeurs entre têtes, ou mélange d'experts (MoE) pour augmenter le nombre de paramètres sans augmenter le calcul par token. Notre dossier sur les Transformers en deep learning revient sur ces évolutions.
Quand choisir un modèle Transformer ?
En traitement du langage, la question ne se pose presque plus. Ailleurs, le choix dépend de la nature des données et des contraintes.
Le Transformer s'impose
- Les données sont du texte, du code ou de la parole.
- Des modèles pré-entraînés existent pour votre domaine.
- Le contexte lointain compte pour bien interpréter chaque élément.
- Vous disposez de GPU pour l'inférence ou d'une API.
D'autres approches suffisent
- Les données sont tabulaires : le gradient boosting reste souvent meilleur.
- Le jeu de données est petit et aucun modèle pré-entraîné ne convient.
- Le matériel embarqué impose un modèle minuscule et très rapide.
- Une règle simple ou un modèle linéaire atteint déjà la qualité requise.
Bibliothèques et outils autour des Transformers
Peu d'équipes implémentent un Transformer de zéro : elles s'appuient sur des bibliothèques qui fournissent les architectures, les poids pré-entraînés et les optimisations.
- Plateforme
Hugging Face
Hub de modèles pré-entraînés et éditeur de la bibliothèque transformers.
- Bibliothèque Python
Transformers (bibliothèque)
Implémentations de référence de centaines d'architectures, avec chargement des poids en une ligne.
- Framework de deep learning
PyTorch
Le framework le plus utilisé pour entraîner et modifier des Transformers.
- Framework de deep learning
TensorFlow
Framework de Google, historiquement utilisé pour les premiers Transformers.
- Calcul GPU
CUDA
La plateforme de NVIDIA sur laquelle reposent les noyaux d'attention optimisés.
- Serveur d'inférence
vLLM
Service de décodeurs Transformer avec gestion optimisée du cache d'attention.
- Inférence locale
Ollama
Exécution locale de modèles Transformer quantifiés.
Les concepts à connaître pour comprendre le Transformer
Ces notions forment le vocabulaire de base de l'architecture et de ses usages.
- TokenisationLe découpage du texte en tokens, première étape avant le Transformer.
- EmbeddingLe vecteur qui représente un token ou un texte dans l'espace du modèle.
- RNNL'architecture récurrente que le Transformer a supplantée en NLP.
- Réseau de neuronesLe principe de base dont le Transformer est une architecture particulière.
- LLMLe décodeur Transformer géant, entraîné à prédire le token suivant.
- Modèle de fondationLe paradigme d'usage que l'architecture Transformer a rendu possible.
Ressources pour approfondir le Transformer
Trois articles pour comprendre l'architecture, ses fondations et ce qu'elle a remplacé.
- Dossier
Les Transformers, incontournables du Deep Learning
L'architecture en détail, de l'attention aux grandes familles de modèles.
Lire l'article - Fondamentaux
Word Embedding & NLP : définition, exemples
Comment les mots deviennent des vecteurs, la brique d'entrée du Transformer.
Lire l'article - Historique
Réseaux récurrents (RNN) : on vous explique tout
L'architecture qui dominait le NLP avant l'arrivée du Transformer.
Lire l'article
Questions fréquentes
Questions fréquentes
Expertise
À propos de l'auteur
Équipe Blent
Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des applications LLM, et forment chaque année des centaines de professionnels à l'IA générative.
Sources et méthodologie
- Vaswani et al., Attention Is All You Need, NeurIPS 2017
- Devlin et al., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2018
- Radford et al., Improving Language Understanding by Generative Pre-Training, OpenAI, 2018
- Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5), 2019
- Documentation de la bibliothèque transformers de Hugging Face
Comment fonctionne un Transformer ?
Qu'il s'agisse de BERT ou d'un LLM, le traitement d'une séquence suit le même enchaînement : le texte devient une suite de vecteurs, que des couches identiques empilées enrichissent progressivement du contexte de toute la phrase.
Découper et vectoriser
Le texte est découpé en tokens, puis chaque token est converti en vecteur par une table d'embeddings apprise. Une phrase devient une matrice : un vecteur de plusieurs centaines ou milliers de dimensions par token.
Ajouter l'information de position
L'attention ne tient pas compte de l'ordre des tokens. On injecte donc leur position, par des encodages sinusoïdaux dans l'article original, ou par des méthodes plus récentes comme les embeddings rotatifs (RoPE).
Calculer l'attention multi-têtes
Chaque token compare sa requête aux clés de tous les autres pour décider à quoi prêter attention, puis agrège leurs valeurs. Plusieurs têtes travaillent en parallèle et captent des relations différentes : syntaxe, coréférence, proximité de sens.
Transformer chaque position
Un petit réseau feed-forward traite ensuite chaque token séparément. Des connexions résiduelles et une normalisation entourent chaque sous-couche pour stabiliser l'entraînement de réseaux très profonds.
Empiler les couches et produire la sortie
Le bloc attention plus feed-forward est répété des dizaines de fois. En sortie, les vecteurs servent à classer un texte (encodeur) ou à prédire la probabilité de chaque token suivant (décodeur).