Transformer pod lupou

Transformer Models with PyTorch

James Chapman

Curriculum Manager, DataCamp

Článek, který změnil vše...

 

  • Attention Is All You Need od Ashishe Vaswaniho et al. (arXiv:1706.03762)
    • Mechanismy pozornosti
    • Optimalizováno pro modelování textu
    • Využíváno ve velkých jazykových modelech (LLMs)

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Článek, který změnil vše...

 

  • Attention Is All You Need od Ashishe Vaswaniho et al.
    • Mechanismy pozornosti
    • Optimalizováno pro modelování textu
    • Využíváno ve velkých jazykových modelech (LLMs)

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Článek, který změnil vše...

 

  • Attention Is All You Need od Ashishe Vaswaniho et al.
    • Mechanismy pozornosti
    • Optimalizováno pro modelování textu
    • Využíváno ve velkých jazykových modelech (LLMs)

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

 

Blok enkodéru
  • Více identických vrstev
  • Čtení a zpracování vstupní sekvence
  • Generuje kontextově bohaté číselné reprezentace
  • Využívá self-attention a dopředné sítě

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

 

Blok dekodéru
  • Zakódovaná vstupní sekvence → výstupní sekvence

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

 

Poziční kódování
  • Zakóduje pozici každého tokenu v sekvenci
  • Pořadí je pro modelování sekvencí klíčové

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

Mechanismy pozornosti
  • Zaměření na důležité tokeny a jejich vztahy
  • Zlepšují generování textu

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

Mechanismy pozornosti
  • Zaměření na důležité tokeny a jejich vztahy
  • Zlepšují generování textu
Self-attention
  • Vážení důležitosti tokenů
  • Zachycuje dlouhodobé závislosti

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

Mechanismy pozornosti
  • Zaměření na důležité tokeny a jejich vztahy
  • Zlepšují generování textu
Self-attention
  • Vážení důležitosti tokenů
  • Zachycuje dlouhodobé závislosti
Multi-head attention
  • Rozděluje vstup do více hlav
  • Hlavy zachycují různé vzory, což vede k bohatším reprezentacím

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformer pod lupou...

 

Poziční dopředné sítě
  • Jednoduché neuronové sítě provádějící transformace
  • Každý token je transformován nezávisle
  • Nezávislé na pozici / „poziční"

Architektura Transformeru z akademického článku Attention Is All You Need.

Transformer Models with PyTorch

Transformery v PyTorchi

 

  • d_model: Dimenzionalita vstupů modelu
  • nheads: Počet hlav pozornosti
  • num_encoder_layers: Počet vrstev enkodéru
  • num_decoder_layers: Počet vrstev dekodéru
import torch.nn as nn


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

Pojďme si procvičit!

Transformer Models with PyTorch

Preparing Video For Download...