Den Transformer zerlegen

Transformer-Modelle mit PyTorch

James Chapman

Curriculum Manager, DataCamp

Das Paper, das alles veränderte …

 

  • Attention Is All You Need von Ashish Vaswani et al. (arXiv:1706.03762)
    • Aufmerksamkeitsmechanismen
    • Für Textmodellierung optimiert
    • Eingesetzt in Large Language Models (LLMs)

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Das Paper, das alles veränderte …

 

  • Attention Is All You Need von Ashish Vaswani et al.
    • Aufmerksamkeitsmechanismen
    • Für Textmodellierung optimiert
    • Eingesetzt in Large Language Models (LLMs)

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Das Paper, das alles veränderte …

 

  • Attention Is All You Need von Ashish Vaswani et al.
    • Aufmerksamkeitsmechanismen
    • Für Textmodellierung optimiert
    • Eingesetzt in Large Language Models (LLMs)

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

 

Encoder-Block
  • Mehrere identische Schichten
  • Liest und verarbeitet die Eingabesequenz
  • Erzeugt kontextreiche numerische Repräsentationen
  • Nutzt Self-Attention und Feedforward-Netzwerke

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

 

Decoder-Block
  • Kodierte Eingabesequenz → Ausgabesequenz

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

 

Positionskodierung
  • Kodiert die Position jedes Tokens in der Sequenz
  • Reihenfolge ist für Sequenzen entscheidend

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

Aufmerksamkeitsmechanismen
  • Fokussieren auf wichtige Tokens und ihre Beziehungen
  • Verbessern die Textgenerierung

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

Aufmerksamkeitsmechanismen
  • Fokussieren auf wichtige Tokens und ihre Beziehungen
  • Verbessern die Textgenerierung
Self-Attention
  • Gewichtet die Wichtigkeit von Tokens
  • Erfasst Langzeitabhängigkeiten

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

Aufmerksamkeitsmechanismen
  • Fokussieren auf wichtige Tokens und ihre Beziehungen
  • Verbessern die Textgenerierung
Self-Attention
  • Gewichtet die Wichtigkeit von Tokens
  • Erfasst Langzeitabhängigkeiten
Multi-Head Attention
  • Teilt Eingaben in mehrere Heads
  • Heads erfassen unterschiedliche Muster und liefern reichere Repräsentationen

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Den Transformer entpacken …

 

Positionweise Feedforward-Netzwerke
  • Einfache NNs, die Transformationen anwenden
  • Jedes Token wird unabhängig transformiert
  • Positionsunabhängig/„position-weise"

Die Transformer-Architektur aus dem Paper „Attention Is All You Need".

Transformer-Modelle mit PyTorch

Transformer in PyTorch

 

  • d_model: Dimensionalität der Modelleingaben
  • nheads: Anzahl der Attention-Heads
  • num_encoder_layers: Anzahl der Encoder-Schichten
  • num_decoder_layers: Anzahl der Decoder-Schichten
import torch.nn as nn


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

Lass uns üben!

Transformer-Modelle mit PyTorch

Preparing Video For Download...