Décomposer le Transformer

Modèles Transformer avec PyTorch

James Chapman

Curriculum Manager, DataCamp

L'article qui a tout changé…

 

  • « Attention Is All You Need » par Ashish Vaswani et al. (arXiv:1706.03762)
    • Mécanismes d'attention
    • Optimisé pour la modélisation de texte
    • Utilisé dans les Large Language Models (LLMs)

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

L'article qui a tout changé…

 

  • « Attention Is All You Need » par Ashish Vaswani et al.
    • Mécanismes d'attention
    • Optimisé pour la modélisation de texte
    • Utilisé dans les Large Language Models (LLMs)

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

L'article qui a tout changé…

 

  • « Attention Is All You Need » par Ashish Vaswani et al.
    • Mécanismes d'attention
    • Optimisé pour la modélisation de texte
    • Utilisé dans les Large Language Models (LLMs)

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

 

Bloc encodeur
  • Plusieurs couches identiques
  • Lecture et traitement de la séquence d'entrée
  • Génère des représentations numériques riches en contexte
  • Utilise la self-attention et des réseaux feed-forward

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

 

Bloc décodeur
  • Séquence encodée → séquence de sortie

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

 

Encodage positionnel
  • Encode la position de chaque jeton dans la séquence
  • L'ordre est crucial pour modéliser des séquences

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

Mécanismes d'attention
  • Se concentrent sur les jetons importants et leurs relations
  • Améliorent la génération de texte

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

Mécanismes d'attention
  • Se concentrent sur les jetons importants et leurs relations
  • Améliorent la génération de texte
Self-attention
  • Pondère l'importance des jetons
  • Capture des dépendances à longue portée

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

Mécanismes d'attention
  • Se concentrent sur les jetons importants et leurs relations
  • Améliorent la génération de texte
Self-attention
  • Pondère l'importance des jetons
  • Capture des dépendances à longue portée
Attention multi-têtes
  • Scinde l'entrée en plusieurs têtes
  • Les têtes saisissent des motifs distincts, pour des représentations plus riches

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Décortiquer le Transformer…

 

Réseaux feed-forward positionnels
  • Réseaux de neurones simples appliquant des transformations
  • Chaque jeton est transformé indépendamment
  • Indépendants de la position / « position-wise »

L'architecture Transformer telle que présentée dans l'article scientifique « Attention Is All You Need ».

Modèles Transformer avec PyTorch

Transformers dans PyTorch

 

  • d_model : dimension des entrées du modèle
  • nheads : nombre de têtes d'attention
  • num_encoder_layers : nombre de couches d'encodeur
  • num_decoder_layers : nombre de couches de décodeur
import torch.nn as nn


model = nn.Transformer(
d_model=512,
nhead=8,
num_encoder_layers=6,
num_decoder_layers=6
)
print(model)
Modèles Transformer avec PyTorch
Transformer(
  (encoder): TransformerEncoder(
    (layers): ModuleList(
      (0-5): 6 x TransformerEncoderLayer(
        (self_attn): MultiheadAttention(
          (out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
        )
        (linear1): Linear(in_features=512, out_features=2048, bias=True)
        (dropout): Dropout(p=0.1, inplace=False)
        (linear2): Linear(in_features=2048, out_features=512, bias=True)
        (norm1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
        (norm2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
        (dropout1): Dropout(p=0.1, inplace=False)
        (dropout2): Dropout(p=0.1, inplace=False)
      )
    )
    (norm): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
  )
  ...
Modèles Transformer avec PyTorch
  (decoder): TransformerDecoder(
    (layers): ModuleList(
      (0-5): 6 x TransformerDecoderLayer(
        (self_attn): MultiheadAttention(
          (out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
        )
        (multihead_attn): MultiheadAttention(
          (out_proj): NonDynamicallyQuantizableLinear(in_features=512, out_features=512, bias=True)
        )
        (linear1): Linear(in_features=512, out_features=2048, bias=True)
        (dropout): Dropout(p=0.1, inplace=False)
        (linear2): Linear(in_features=2048, out_features=512, bias=True)
        (norm1): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
        (norm2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
        (norm3): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
        (dropout1): Dropout(p=0.1, inplace=False)
        (dropout2): Dropout(p=0.1, inplace=False)
        (dropout3): Dropout(p=0.1, inplace=False)
      )
    )
    (norm): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
  )
)
Modèles Transformer avec PyTorch

Passons à la pratique !

Modèles Transformer avec PyTorch

Preparing Video For Download...