Rozkładanie Transformera na części

Modele Transformer w PyTorch

James Chapman

Curriculum Manager, DataCamp

Artykuł, który zmienił wszystko...

 

  • Attention Is All You Need – Ashish Vaswani i in. (arXiv:1706.03762)
    • Mechanizmy uwagi
    • Zoptymalizowany do modelowania tekstu
    • Stosowany w dużych modelach językowych (LLM)

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Artykuł, który zmienił wszystko...

 

  • Attention Is All You Need – Ashish Vaswani i in.
    • Mechanizmy uwagi
    • Zoptymalizowany do modelowania tekstu
    • Stosowany w dużych modelach językowych (LLM)

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Artykuł, który zmienił wszystko...

 

  • Attention Is All You Need – Ashish Vaswani i in.
    • Mechanizmy uwagi
    • Zoptymalizowany do modelowania tekstu
    • Stosowany w dużych modelach językowych (LLM)

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

 

Blok enkodera
  • Wiele identycznych warstw
  • Odczytuje i przetwarza sekwencję wejściową
  • Generuje bogate kontekstowo reprezentacje numeryczne
  • Używa self-attention i sieci feed-forward

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

 

Blok dekodera
  • Zakodowana sekwencja wejściowa → sekwencja wyjściowa

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

 

Kodowanie pozycyjne
  • Koduje pozycję każdego tokenu w sekwencji
  • Kolejność jest kluczowa przy modelowaniu sekwencji

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

Mechanizmy uwagi
  • Skupiają się na ważnych tokenach i ich relacjach
  • Poprawiają generowanie tekstu

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

Mechanizmy uwagi
  • Skupiają się na ważnych tokenach i ich relacjach
  • Poprawiają generowanie tekstu
Self-attention
  • Ważenie istotności tokenów
  • Uchwytuje zależności długozasięgowe

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

Mechanizmy uwagi
  • Skupiają się na ważnych tokenach i ich relacjach
  • Poprawiają generowanie tekstu
Self-attention
  • Ważenie istotności tokenów
  • Uchwytuje zależności długozasięgowe
Multi-head attention
  • Dzieli dane wejściowe na wiele głowic
  • Głowice wykrywają różne wzorce, tworząc bogatsze reprezentacje

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Anatomia Transformera...

 

Pozycyjne sieci feed-forward
  • Proste sieci neuronowe stosujące transformacje
  • Każdy token jest przekształcany niezależnie
  • Niezależne od pozycji / „position-wise"

Architektura Transformera przedstawiona w artykule naukowym „Attention Is All You Need".

Modele Transformer w PyTorch

Transformery w PyTorch

 

  • d_model: Wymiarowość wejść modelu
  • nheads: Liczba głowic uwagi
  • num_encoder_layers: Liczba warstw enkodera
  • num_decoder_layers: Liczba warstw dekodera
import torch.nn as nn


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

Czas na ćwiczenia!

Modele Transformer w PyTorch

Preparing Video For Download...