De Transformer ontrafeld

Transformermodels met PyTorch

James Chapman

Curriculum Manager, DataCamp

De paper die alles veranderde...

 

  • Attention Is All You Need door Ashish Vaswani e.a. (arXiv:1706.03762)
    • Attention-mechanismen
    • Geoptimaliseerd voor tekstreeksen
    • Gebruikt in Large Language Models (LLM's)

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De paper die alles veranderde...

 

  • Attention Is All You Need door Ashish Vaswani e.a.
    • Attention-mechanismen
    • Geoptimaliseerd voor tekstreeksen
    • Gebruikt in Large Language Models (LLM's)

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De paper die alles veranderde...

 

  • Attention Is All You Need door Ashish Vaswani e.a.
    • Attention-mechanismen
    • Geoptimaliseerd voor tekstreeksen
    • Gebruikt in Large Language Models (LLM's)

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

 

Encoder-blok
  • Meerdere identieke lagen
  • Invoerreeks lezen en verwerken
  • Contextrijke numerieke representaties genereren
  • Gebruikt self-attention en feed-forward-netwerken

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

 

Decoder-blok
  • Gecodeerde invoerreeks → uitvoerreeks

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

 

Positionele codering
  • Encodeert de positie van elk token in de reeks
  • Volgorde is cruciaal voor sequentiemodellering

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

Attention-mechanismen
  • Focus op belangrijke tokens en hun relaties
  • Verbetert tekstgeneratie

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

Attention-mechanismen
  • Focus op belangrijke tokens en hun relaties
  • Verbetert tekstgeneratie
Self-attention
  • Weging van tokenbelang
  • Legt langeafstandsafhankelijkheden vast

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

Attention-mechanismen
  • Focus op belangrijke tokens en hun relaties
  • Verbetert tekstgeneratie
Self-attention
  • Weging van tokenbelang
  • Legt langeafstandsafhankelijkheden vast
Multi-head attention
  • Splitst invoer in meerdere heads
  • Heads vangen verschillende patronen voor rijkere representaties

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

De Transformer ontrafelen...

 

Position-wise feed-forward-netwerken
  • Eenvoudige NN's die transformaties toepassen
  • Elk token wordt afzonderlijk getransformeerd
  • Positie-onafhankelijk/"position-wise"

De Transformer-architectuur zoals getoond in de paper Attention Is All You Need.

Transformermodels met PyTorch

Transformers in PyTorch

 

  • d_model: Dimensie van modelinvoer
  • nheads: Aantal attention-heads
  • num_encoder_layers: Aantal encoderlagen
  • num_decoder_layers: Aantal decoderlagen
import torch.nn as nn


model = nn.Transformer(
d_model=512,
nhead=8,
num_encoder_layers=6,
num_decoder_layers=6
)
print(model)
Transformermodels met 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)
  )
  ...
Transformermodels met 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)
  )
)
Transformermodels met PyTorch

Laten we oefenen!

Transformermodels met PyTorch

Preparing Video For Download...