Qu’est-ce que l’architecture Transformer ?
Le Transformer est une architecture de réseau de neurones révolutionnaire introduite dans l’article de 2017 “Attention Is All You Need” par des chercheurs de Google. Elle a complètement changé le domaine du Traitement du Langage Naturel (PNL) en abandonnant les couches récurrentes et convolutionnelles traditionnellement utilisées dans les modèles séquence à séquence. À la place, elle repose entièrement sur un mécanisme appelé “auto-attention”, qui lui permet de pondérer l’importance des différents mots dans la séquence d’entrée pour produire la sortie. Cette conception permet une parallélisation beaucoup plus importante, autorisant les chercheurs à entraîner des modèles beaucoup plus grands sur des quantités de données sans précédent.
Fonctionnalités Clés
- Mécanisme d’Auto-Attention : Le cœur du Transformer. Il permet au modèle d’examiner d’autres mots dans la séquence d’entrée tout en traitant un mot spécifique, capturant les relations contextuelles quelle que soit leur distance les unes des autres.
- Attention Multi-Têtes : Une amélioration de l’auto-attention où le mécanisme d’attention est exécuté plusieurs fois en parallèle. Cela permet au modèle de prêter attention conjointement à des informations provenant de différents sous-espaces de représentation à différentes positions.
- Pile Encodeur-Décodeur : L’architecture originale se compose d’un encodeur pour traiter la séquence d’entrée et d’un décodeur pour générer la séquence de sortie. De nombreux modèles modernes, comme BERT (encodeur seul) et GPT (décodeur seul), n’utilisent qu’une partie de cette pile.
- Encodages Positionnels : Comme le modèle ne contient aucune récurrence, il injecte des informations sur la position relative ou absolue des jetons dans la séquence. Ces encodages sont ajoutés aux plongements d’entrée.
- Parallélisation : En supprimant la nature séquentielle des RNN, les Transformers peuvent traiter tous les jetons d’une séquence simultanément, ce qui entraîne des accélérations massives du temps d’entraînement.
Cas d’Utilisation
- Traduction Automatique : La tâche originale pour laquelle le Transformer a été conçu, où il a établi un nouvel état de l’art.
- Génération de Texte : Des modèles comme GPT utilisent le décodeur du Transformer pour générer un texte cohérent, contextuellement pertinent et de type humain.
- Résumé de Texte : Créer des résumés concis de longs documents en comprenant les points principaux.
- Fondation pour les LLM Modernes : L’architecture Transformer est le bloc de construction fondamental de la plupart des grands modèles de langage modernes, y compris BERT, GPT-3, T5 et bien d’autres.
Pour Commencer
Voici un exemple simplifié “Hello World” de la façon d’utiliser une couche d’encodeur et de décodeur Transformer en PyTorch. Cela démontre les composants de base en action.
```python import torch import torch.nn as nn
Define a simple Transformer model
class SimpleTransformer(nn.Module): def init(self, input_dim, model_dim, num_heads, num_layers): super(SimpleTransformer, self).init() self.embedding = nn.Embedding(input_dim, model_dim) self.pos_encoder = nn.Parameter(torch.zeros(1, 5000, model_dim)) # Positional Encoding
encoder_layers = nn.TransformerEncoderLayer(d_model=model_dim, nhead=num_heads)
self.transformer_encoder = nn.TransformerEncoder(encoder_layers, num_layers=num_layers)
self.fc_out = nn.Linear(model_dim, input_dim)
def forward(self, src):
src = self.embedding(src) + self.pos_encoder[:, :src.size(1), :]
output = self.transformer_encoder(src)
output = self.fc_out(output)
return output
Example Usage
Parameters
input_vocab_size = 1000 # Size of input vocabulary d_model = 512 # Embedding dimension n_heads = 8 # Number of heads in multi-head attention n_layers = 6 # Number of encoder layers
Create a model instance
model = SimpleTransformer(input_vocab_size, d_model, n_heads, n_layers)
Create a dummy input tensor (batch_size=1, sequence_length=10)
src_input = torch.randint(0, input_vocab_size, (1, 10))
Get the model output
output = model(src_input)
print(“Input Shape:”, src_input.shape) print(“Output Shape:”, output.shape)
Expected Output Shape: torch.Size([1, 10, 1000])
Ce code définit une pile d’encodeur Transformer de base, traite une séquence d’entrée et produit une sortie de la même longueur.
Tarification
Le Transformer est un concept de recherche et une architecture open-source. Son utilisation, sa mise en œuvre et sa modification sont gratuites. Les principaux coûts qui y sont associés ne concernent pas l’architecture elle-même, mais les ressources de calcul (GPU/TPU) nécessaires pour entraîner des modèles à grande échelle basés sur celle-ci et pour les exécuter en inférence.
L’article “Attention Is All You Need”
Le Transformer a été introduit dans un article intitulé “Attention Is All You Need”, publié en 2017. Cet article est l’un des travaux les plus cités en informatique moderne et est considéré comme une lecture incontournable pour quiconque travaille dans le domaine de l’IA et du PNL. Il a jeté les bases de la génération actuelle de grands modèles de langage et a fondamentalement changé la direction de la recherche en IA.