T5 (Text-to-Text Transfer Transformer)
Origine et philosophie
T5 a été présenté par Colin Raffel et al. dans le papier « Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer » (2019). Le projet avait un double objectif : proposer une architecture unifiée pour toutes les tâches NLP et mener une étude systématique des techniques de transfer learning de l’époque.
L’idée centrale est élégante : au lieu d’avoir des architectures et des couches de sortie différentes pour chaque tâche (classification, NER, traduction, résumé), on reformule chaque tâche comme une transformation texte-vers-texte. Par exemple :
Classification : "classify: This movie is great" → "positive"
Traduction : "translate English to French: Hello" → "Bonjour"
Résumé : "summarize: [long article]" → "[résumé court]"
Q&A : "question: What is AI? context: [texte]" → "AI is..."
Cette uniformisation simplifie considérablement le pipeline de développement NLP : un seul modèle, un seul format d’entrée/sortie, une seule procédure d’entraînement.
Architecture encoder-decoder
Contrairement à BERT (encodeur seul) ou GPT-2 (décodeur seul), T5 utilise l’architecture complète du Transformer original : un encodeur qui traite l’entrée et un décodeur qui génère la sortie token par token.
Encodeur
L’encodeur utilise l’auto-attention bidirectionnelle (comme BERT) : chaque token peut « voir » tous les autres tokens de l’entrée. Il produit une représentation contextuelle dense de l’entrée complète.
Décodeur
Le décodeur utilise l’auto-attention causale (comme GPT) : chaque token ne peut voir que les tokens précédents. Il utilise aussi la cross-attention pour « consulter » les représentations de l’encodeur à chaque étape de génération.
Tailles de modèle
| Variante | Paramètres | Couches Enc/Dec | Dimension | Têtes |
|---|---|---|---|---|
| T5-Small | 60M | 6 / 6 | 512 | 8 |
| T5-Base | 220M | 12 / 12 | 768 | 12 |
| T5-Large | 770M | 24 / 24 | 1024 | 16 |
| T5-3B | 3B | 24 / 24 | 1024 | 32 |
| T5-11B | 11B | 24 / 24 | 1024 | 128 |
Le corpus C4
Pour pré-entraîner T5, Google a créé le Colossal Clean Crawled Corpus (C4), un corpus de 750 Go de texte anglais nettoyé issu du Common Crawl. Le nettoyage incluait la suppression des pages dupliquées, du contenu inapproprié, des pages non anglaises et du code. C4 est devenu un corpus de référence pour le pré-entraînement de modèles de langage et reste largement utilisé.
Pré-entraînement
T5 est pré-entraîné avec un objectif de « span corruption » : des segments consécutifs de tokens sont masqués et remplacés par des tokens sentinelles, et le modèle doit générer les segments masqués. Par exemple :
Entrée : "Le chat [X] sur le [Y]."
Cible : "[X] dort [Y] canapé"
Cette approche est plus efficace que le MLM de BERT car le modèle apprend à générer des séquences complètes, pas seulement des tokens individuels.
Variantes et évolutions
Flan-T5 (Google, 2022). T5 fine-tuné sur un mélange de plus de 1 800 tâches avec des instructions (instruction tuning). C’est la variante la plus populaire en production car elle suit les instructions de manière naturelle, sans fine-tuning supplémentaire. Disponible de Flan-T5-Small à Flan-T5-XXL (11B).
mT5 (Google, 2020). Version multilingue de T5, pré-entraînée sur mC4 (un corpus couvrant 101 langues). Performances inférieures aux modèles monolingues mais utile pour le multilinguisme.
UL2 (Google, 2022). Unifie plusieurs objectifs de pré-entraînement (débruitage, autorégressif, prefix LM) dans un seul modèle. Successeur conceptuel de T5.
LongT5 (Google, 2022). Étend la fenêtre de contexte de T5 à 16K tokens grâce à des mécanismes d’attention locale et globale. Adapté aux documents longs.
Cas d’usage en production
Résumé automatique. T5 et Flan-T5 excellent en résumé de texte. Ils produisent des résumés abstractifs (reformulés, pas extraits) de bonne qualité.
Traduction. Bien que dépassé par les modèles spécialisés (NLLB, Google Translate), T5 reste un bon choix pour la traduction dans les pipelines multifonctions où un seul modèle gère plusieurs tâches.
Paraphrase et reformulation. T5 fine-tuné sur des jeux de paraphrases produit des reformulations naturelles et variées.
Extraction d’information structurée. Convertir du texte libre en JSON, XML ou tout format structuré. Flan-T5 suit les instructions de formatage de manière fiable.
Correction grammaticale. T5 fine-tuné sur des paires (texte erroné, texte corrigé) constitue un correcteur grammatical efficace et rapide.
Utilisation pratique
from transformers import T5ForConditionalGeneration, T5Tokenizer
# Charger Flan-T5 (la variante la plus pratique)
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-base")
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-base")
# Résumé
text = "summarize: " + long_article
inputs = tokenizer(text, return_tensors="pt", max_length=512, truncation=True)
outputs = model.generate(**inputs, max_new_tokens=150)
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Classification (zero-shot grâce à l'instruction tuning)
text = "Is the following review positive or negative? 'This product is amazing!'"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=10)
label = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(label) # "positive"
T5 vs GPT : encoder-decoder vs decoder-only
Le débat entre architectures encoder-decoder (T5) et decoder-only (GPT) a dominé le NLP entre 2019 et 2022. En 2026, le consensus est clair :
Decoder-only a gagné le scaling. Les plus grands LLM (GPT-4, Claude, Gemini) utilisent des architectures decoder-only. Cette architecture est plus simple à scaler et à entraîner sur de très grands corpus.
Encoder-decoder reste pertinent pour les tâches spécifiques. Pour le résumé, la traduction, l’extraction structurée et les tâches où l’entrée et la sortie ont des structures différentes, T5/Flan-T5 offre un excellent rapport qualité/coût dans des tailles de modèle modestes (220M-3B paramètres).
Questions fréquentes sur T5
Quelle est la différence entre T5 et BERT ?
BERT est un encodeur pur : il produit des représentations de texte mais ne génère pas de texte. T5 est un encoder-decoder complet : il prend du texte en entrée et génère du texte en sortie. T5 peut faire tout ce que BERT fait (classification, NER) en reformulant ces tâches comme de la génération de texte, et peut en plus faire du résumé, de la traduction et de la paraphrase.
Faut-il utiliser T5 ou Flan-T5 ?
Flan-T5 dans la grande majorité des cas. Flan-T5 est une version de T5 fine-tunée sur plus de 1 800 tâches avec des instructions. Il suit les instructions de manière naturelle sans fine-tuning supplémentaire (zero-shot et few-shot). T5 de base nécessite un fine-tuning spécifique pour chaque tâche.
T5 fonctionne-t-il pour le français ?
Le T5 original est entraîné principalement sur l’anglais (corpus C4). Pour le français, utilisez mT5 (version multilingue) ou des modèles communautaires fine-tunés pour le français. Flan-T5 comprend aussi le français grâce à ses données d’instruction tuning multilingues, mais ses performances sont meilleures en anglais.
Quelle taille de T5 choisir ?
T5-Base (220M) pour le prototypage et les déploiements CPU. T5-Large (770M) pour la production sur GPU modeste. T5-3B pour les tâches exigeantes avec un GPU dédié. T5-11B pour les benchmarks et les applications critiques avec infrastructure GPU conséquente. Flan-T5-XL (3B) est souvent le sweet spot entre qualité et coût.
T5 est-il encore utilisé en 2026 ?
Oui. Flan-T5 est largement déployé en production pour le résumé, l’extraction d’information, la correction grammaticale et les tâches text-to-text spécialisées. Son ratio performance/coût reste excellent pour les tâches qui ne nécessitent pas un LLM à plusieurs centaines de milliards de paramètres. Le corpus C4 qu’il a introduit reste aussi un standard de pré-entraînement.