Розбираємо Transformer

Моделі Transformer з PyTorch

James Chapman

Curriculum Manager, DataCamp

Стаття, що все змінила…

 

  • Attention Is All You Need, Ашиш Васвані та ін. (arXiv:1706.03762)
    • Механізми уваги
    • Оптимізовано для моделювання тексту
    • Використовується в Large Language Models (LLMs)

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Стаття, що все змінила…

 

  • Attention Is All You Need, Ашиш Васвані та ін.
    • Механізми уваги
    • Оптимізовано для моделювання тексту
    • Використовується в Large Language Models (LLMs)

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Стаття, що все змінила…

 

  • Attention Is All You Need, Ашиш Васвані та ін.
    • Механізми уваги
    • Оптимізовано для моделювання тексту
    • Використовується в Large Language Models (LLMs)

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

 

Блок енкодера
  • Кілька однакових шарів
  • Зчитує й обробляє вхідну послідовність
  • Створює контекстні числові подання
  • Використовує self-attention і прямі мережі

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

 

Блок декодера
  • Закодована вхідна послідовність → вихідна послідовність

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

 

Позиційне кодування
  • Кодує позицію кожного токена в послідовності
  • Порядок критично важливий для моделювання

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

Механізми уваги
  • Фокус на важливих токенах і їхніх зв'язках
  • Поліпшують генерацію тексту

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

Механізми уваги
  • Фокус на важливих токенах і їхніх зв'язках
  • Поліпшують генерацію тексту
Self-attention
  • Зважує важливість токенів
  • Уловлює далекі залежності

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

Механізми уваги
  • Фокус на важливих токенах і їхніх зв'язках
  • Поліпшують генерацію тексту
Self-attention
  • Зважує важливість токенів
  • Уловлює далекі залежності
Багатоголова увага
  • Ділить вхід на кілька голів
  • Голови виявляють різні патерни → багатші подання

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Розпаковуємо Transformer…

 

Позиційні прямі мережі
  • Прості НМ для перетворень
  • Кожен токен перетворюється незалежно
  • Незалежні від позиції/«position-wise»

Архітектура Transformer з наукової статті Attention Is All You Need.

Моделі Transformer з PyTorch

Transformer у PyTorch

 

  • d_model: Розмірність вхідних даних моделі
  • nheads: Кількість голів уваги
  • num_encoder_layers: Кількість шарів енкодера
  • num_decoder_layers: Кількість шарів декодера
import torch.nn as nn


model = nn.Transformer(
d_model=512,
nhead=8,
num_encoder_layers=6,
num_decoder_layers=6
)
print(model)
Моделі Transformer з 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 з 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 з PyTorch

Давайте потренуємось!

Моделі Transformer з PyTorch

Preparing Video For Download...