Разбираем Transformer

Трансформерные модели с PyTorch

James Chapman

Curriculum Manager, DataCamp

Статья, которая изменила всё...

 

  • Attention Is All You Need by Ashish Vaswani et al. (arXiv:1706.03762)
    • Механизмы внимания
    • Оптимизирован для моделирования текста
    • Используется в больших языковых моделях (LLMs)

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Статья, которая изменила всё...

 

  • Attention Is All You Need by Ashish Vaswani et al.
    • Механизмы внимания
    • Оптимизирован для моделирования текста
    • Используется в больших языковых моделях (LLMs)

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Статья, которая изменила всё...

 

  • Attention Is All You Need by Ashish Vaswani et al.
    • Механизмы внимания
    • Оптимизирован для моделирования текста
    • Используется в больших языковых моделях (LLMs)

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

 

Блок энкодера
  • Несколько одинаковых слоёв
  • Чтение и обработка входной последовательности
  • Формирует контекстно-насыщенные числовые представления
  • Использует самовнимание и сети прямого распространения

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

 

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

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

 

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

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

Механизмы внимания
  • Фокус на важных токенах и их связях
  • Улучшают генерацию текста

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

Механизмы внимания
  • Фокус на важных токенах и их связях
  • Улучшают генерацию текста
Самовнимание
  • Взвешивание важности токенов
  • Захватывает дальние зависимости

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

Механизмы внимания
  • Фокус на важных токенах и их связях
  • Улучшают генерацию текста
Самовнимание
  • Взвешивание важности токенов
  • Захватывает дальние зависимости
Многоголовое внимание
  • Разбивает вход на несколько голов
  • Каждая голова улавливает отдельные паттерны — это обогащает представления

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Разбираем Transformer...

 

Позиционно-независимые сети прямого распространения
  • Простые нейронные сети, выполняющие преобразования
  • Каждый токен преобразуется независимо
  • Не зависят от позиции — «position-wise»

Архитектура трансформера из статьи Attention Is All You Need.

Трансформерные модели с PyTorch

Трансформеры в 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)
Трансформерные модели с 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)
  )
  ...
Трансформерные модели с 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)
  )
)
Трансформерные модели с PyTorch

Давайте потренируемся!

Трансформерные модели с PyTorch

Preparing Video For Download...