Transformer-arkitekturen – en genomgång

Transformermodeller med PyTorch

James Chapman

Curriculum Manager, DataCamp

Artikeln som förändrade allt...

 

  • Attention Is All You Need av Ashish Vaswani et al. (arXiv:1706.03762)
    • Attentionmekanismer
    • Optimerad för textmodellering
    • Används i Large Language Models (LLMs)

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Artikeln som förändrade allt...

 

  • Attention Is All You Need av Ashish Vaswani et al.
    • Attentionmekanismer
    • Optimerad för textmodellering
    • Används i Large Language Models (LLMs)

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Artikeln som förändrade allt...

 

  • Attention Is All You Need av Ashish Vaswani et al.
    • Attentionmekanismer
    • Optimerad för textmodellering
    • Används i Large Language Models (LLMs)

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

 

Encoderblock
  • Flera identiska lager
  • Läser och bearbetar indatasekvensen
  • Skapar kontextrika numeriska representationer
  • Använder self-attention och feed-forward-nätverk

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

 

Decoderblock
  • Kodad indatasekvens → utdatasekvens

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

 

Positionskodning
  • Kodar varje tokens position i sekvensen
  • Ordningen är avgörande för sekvensmodellering

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

Attentionmekanismer
  • Fokuserar på viktiga tokens och deras relationer
  • Förbättrar textgenerering

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

Attentionmekanismer
  • Fokuserar på viktiga tokens och deras relationer
  • Förbättrar textgenerering
Self-attention
  • Viktar tokenernas betydelse
  • Fångar långväga beroenden

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

Attentionmekanismer
  • Fokuserar på viktiga tokens och deras relationer
  • Förbättrar textgenerering
Self-attention
  • Viktar tokenernas betydelse
  • Fångar långväga beroenden
Multi-head attention
  • Delar upp indata i flera heads
  • Varje head fångar distinkta mönster och ger rikare representationer

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformer-arkitekturen – del för del...

 

Positionsvisa feed-forward-nätverk
  • Enkla neurala nätverk som tillämpar transformationer
  • Varje token transformeras oberoende
  • Positionsoberoende/"positionsvist"

Transformer-arkitekturen som den visas i den akademiska artikeln Attention Is All You Need.

Transformermodeller med PyTorch

Transformers i PyTorch

 

  • d_model: Modellindatans dimensionalitet
  • nheads: Antal attention-heads
  • num_encoder_layers: Antal encoderlager
  • num_decoder_layers: Antal decoderlager
import torch.nn as nn


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

Nu kör vi en övning!

Transformermodeller med PyTorch

Preparing Video For Download...